summary refs log tree commit diff
path: root/gnu/packages/music.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/music.scm')
-rw-r--r--gnu/packages/music.scm377
1 files changed, 265 insertions, 112 deletions
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 2b246be758..23bd358240 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -34,7 +34,7 @@
 ;;; Copyright © 2019 Riku Viitanen <riku.viitanen0@gmail.com>
 ;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
 ;;; Copyright © 2021 Liliana Marie Prikler <liliana.prikler@gmail.com>
-;;; Copyright © 2021, 2022 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2021, 2022, 2023 Vinicius Monego <monego@posteo.net>
 ;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot>
 ;;; Copyright © 2021 Bonface Munyoki Kilyungi <me@bonfacemunyoki.com>
 ;;; Copyright © 2021 Frank Pursel <frank.pursel@gmail.com>
@@ -51,6 +51,7 @@
 ;;; Copyright © 2022 Jose G Perez Taveras <josegpt27@gmail.com>
 ;;; Copyright © 2022 jgart <jgart@dismail.de>
 ;;; Copyright © 2023 Jonathan Brielmaier <jonathan.brielmaier@web.de>
+;;; Copyright © 2023 Antero Mejr <antero@mailbox.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -112,6 +113,7 @@
   #:use-module (gnu packages curl)
   #:use-module (gnu packages cyrus-sasl)
   #:use-module (gnu packages datastructures)
+  #:use-module (gnu packages digest)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages emacs)
@@ -122,6 +124,7 @@
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages game-development)
+  #:use-module (gnu packages gcc)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages ghostscript)
@@ -140,6 +143,7 @@
   #:use-module (gnu packages image)
   #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages java)
+  #:use-module (gnu packages kde-frameworks)
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages libusb)
@@ -478,10 +482,74 @@ playing your music.")
                ;; qocoa is under MIT and CC by-sa for the icons.
                license:cc-by-sa3.0))))
 
+(define-public ctrlr
+  ;; The latest release from 2021 does not have a build system.
+  (let ((commit "8aa00d82127acda42ad9ac9b7b479461e9436aa4")
+        (revision "1"))
+    (package
+      (name "ctrlr")
+      (version (git-version "5.5.9" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/RomanKubiak/ctrlr")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1lpfkjp9y0wh2kj02isv8ixnxn3wyvrxhkx0rybwzswfiz5kqdlm"))))
+      (build-system cmake-build-system)
+      (arguments
+       (list
+        #:cmake cmake                   ;needs 3.25
+        #:tests? #false                 ;there are none
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'pre-configure
+              (lambda _
+                ;; Override default location of fonts.conf.  Without this no
+                ;; fonts will be rendered at all.
+                (substitute* "JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp"
+                  (("/usr/share/fonts/fonts.conf")
+                   "/run/current-system/profile/etc/fonts/fonts.conf"))
+                ;; Do not build the VST or AU plugins, because these require
+                ;; external proprietary SDKs.
+                (substitute* "CMakeLists.txt"
+                  (("juce_set_vst2_sdk_path.*") "")
+                  (("FORMATS VST3 VST AU Standalone")
+                   "FORMATS Standalone")
+                  ;; BFD also need -liberty.
+                  (("list\\(APPEND ctrlrLibs \"bfd\"\\)" m)
+                   (string-append m "
+list(APPEND ctrlrLibs \"iberty\")")))))
+            ;; The install target doesn't install ctrlr but JUCE helpers.
+            (replace 'install
+              (lambda _
+                (install-file "ctrlr_artefacts/RelWithDebInfo/Standalone/ctrlr"
+                              (string-append #$output "/bin")))))))
+      (inputs
+       (list alsa-lib
+             boost
+             eudev
+             freetype
+             libiberty
+             libx11
+             webkitgtk))
+      (native-inputs
+       (list pkg-config))
+      (home-page "https://ctrlr.org/")
+      (synopsis "Control any MIDI-enabled hardware")
+      (description "This package provides a tool to control any MIDI-enabled
+hardware such as synthesizers, drum machines, samplers, or effects.  It lets
+you create custom user interfaces for your MIDI hardware.")
+      (license (list license:gpl2+
+                     license:gpl3       ;JUCE
+                     license:bsd-3)))))
+
 (define-public strawberry
   (package
     (name "strawberry")
-    (version "1.0.15")
+    (version "1.0.17")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -490,7 +558,7 @@ playing your music.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "04ddplldlls0gxw8qppw6dsqhfnxamxfnnyq0i04mbs5hi83pcrz"))
+                "1xcf9jighb759kdh4p32wib2pipgcx3qdf5x7da6cjhxjbzgfrk7"))
               (modules '((guix build utils)
                          (ice-9 regex)))
               (snippet
@@ -503,8 +571,8 @@ playing your music.")
                      (let ((bundled '("singleapplication")))
                        (if (not
                             (string-match
-                              (string-append ".?*(" (string-join bundled "|") ")")
-                              dir))
+                             (string-append ".?*(" (string-join bundled "|") ")")
+                             dir))
                            (delete-file-recursively dir))))
                    (find-files "3rdparty"
                                (lambda (file stat)
@@ -516,23 +584,23 @@ playing your music.")
        #:phases
        (modify-phases %standard-phases
          (add-after 'install 'wrap-program
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((out             (assoc-ref outputs "out"))
-                   (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
-               (wrap-program (string-append out "/bin/strawberry")
-                 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))))
+           (lambda* (#:key outputs #:allow-other-keys)
+             (wrap-program (search-input-file outputs "bin/strawberry")
+               `("GST_PLUGIN_SYSTEM_PATH" ":" prefix
+                 (,(getenv "GST_PLUGIN_SYSTEM_PATH"))))))
          (add-before 'check 'pre-check
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((xorg-server (assoc-ref inputs "xorg-server")))
-               (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
-               (setenv "DISPLAY" ":1")
-               (setenv "HOME" (getcwd))))))))
+           (lambda* (#:key native-inputs inputs #:allow-other-keys)
+             (system (format #f "~a :1 &"
+                             (search-input-file (or native-inputs inputs)
+                                                "bin/Xvfb")))
+             (setenv "DISPLAY" ":1")
+             (setenv "HOME" (getcwd)))))))
     (native-inputs
-     `(("gettext" ,gettext-minimal)
-       ("googletest" ,googletest)
-       ("pkg-config" ,pkg-config)
-       ("qtlinguist" ,qttools)
-       ("xorg-server" ,xorg-server-for-tests)))
+     (list gettext-minimal
+           googletest
+           pkg-config
+           qttools
+           xorg-server-for-tests))
     (inputs
      (list alsa-lib
            boost
@@ -1543,9 +1611,6 @@ Because Abjad wraps the LilyPond music notation package, you can use Abjad to co
 typographic detail of symbols on the page.")
      (license license:expat)))
 
-(define-public python-abjad
-  (deprecated-package "python-abjad" abjad))
-
 (define-public abjad-ext-rmakers
   (package
     (name "abjad-ext-rmakers")
@@ -2198,7 +2263,7 @@ a JACK session.")
 (define-public mixxx
   (package
     (name "mixxx")
-    (version "2.3.3")
+    (version "2.3.4")
     (source
      (origin
        (method git-fetch)
@@ -2210,7 +2275,7 @@ a JACK session.")
         (search-patches "mixxx-link-qtscriptbytearray-qtscript.patch"
                         "mixxx-system-googletest-benchmark.patch"))
        (sha256
-        (base32 "0zrmy97lk0xdfnlvygshr8vradypmnypki3s1mhc296xhq96n6rm"))
+        (base32 "056zn0nxl7xrmg467ljdszsycrszsrzsc8k4s39mp4qxyd9qq4yn"))
        (modules '((guix build utils)))
        (snippet
         ;; Delete libraries that we already have or don't need.
@@ -2495,44 +2560,64 @@ reverb effects.")
                 "1pff51imfgmgqzc6mdgwd1v9fci0a8hj85fnkdsvkdzbnxdzvs9r"))))
     (build-system cmake-build-system)
     (arguments
-     (list #:tests? #f                            ;no test suite
-           #:phases
-           #~(modify-phases %standard-phases
-               (replace 'install
-                 (lambda _
-                   (let* ((bin (string-append #$output "/bin"))
-                          (lib (string-append #$output "/lib"))
-                          (share (string-append #$output "/share"))
-                          (clap (string-append lib "/clap"))
-                          (vst3 (string-append lib "/vst3")))
-                     (with-directory-excursion
-                         "PaulXStretch_artefacts/RelWithDebInfo"
-                       (install-file "Standalone/paulxstretch" bin)
-                       (install-file "CLAP/PaulXStretch.clap" clap)
-                       (mkdir-p vst3)
-                       (copy-recursively "VST3" vst3)
-                       (install-file (string-append
-                                      #$source
-                                      "/linux/paulxstretch.desktop")
-                                     (string-append share "/applications"))
-                       (install-file
-                        (string-append
-                         #$source
-                         "/images/paulxstretch_icon_1024_rounded.png")
-                        (string-append share "/pixmaps")))))))))
+     (list
+      #:tests? #f                       ;no test suite
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-paths
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "deps/juce/extras/Projucer/Source/ProjectSaving/\
+jucer_ProjectExport_CodeBlocks.h"
+                (("/usr/include/freetype2")
+                 (search-input-directory inputs "/include/freetype2")))
+              (substitute*
+                  "deps/juce/modules/juce_graphics/native/juce_linux_Fonts.cpp"
+                (("/etc/fonts")
+                 (search-input-directory inputs "/etc/fonts")))
+              (substitute*
+                  "deps/juce/modules/juce_gui_basics/native/x11/\
+juce_linux_XWindowSystem.cpp"
+                (("/usr/bin/dconf")
+                 (search-input-file inputs "/bin/dconf"))
+                (("/usr/bin/gsettings")
+                 (search-input-file inputs "/bin/gsettings")))))
+          (replace 'install
+            (lambda _
+              (let* ((lib (string-append #$output "/lib"))
+                     (share (string-append #$output "/share"))
+                     (clap (string-append lib "/clap"))
+                     (vst3 (string-append lib "/vst3")))
+                (with-directory-excursion
+                    "PaulXStretch_artefacts/RelWithDebInfo"
+                  (install-file "Standalone/paulxstretch"
+                                (string-append #$output "/bin"))
+                  (install-file "CLAP/PaulXStretch.clap" clap)
+                  (mkdir-p vst3)
+                  (copy-recursively "VST3" vst3)
+                  (install-file (string-append
+                                 #$source
+                                 "/linux/paulxstretch.desktop")
+                                (string-append share "/applications"))
+                  (install-file (string-append
+                                 #$source
+                                 "/images/paulxstretch_icon_1024_rounded.png")
+                                (string-append share "/pixmaps")))))))))
     (home-page "https://sonosaurus.com/paulxstretch/")
     (native-inputs (list pkg-config))
     (inputs (list alsa-lib
                   curl
+                  dconf
                   fftwf
+                  fontconfig
                   freetype
+                  `(,glib "bin")
                   jack-1
                   libx11
                   libxcursor
                   libxext
                   libxinerama
                   libxrandr))
-    (supported-systems '("x86_64-linux"))         ;pffft.c uses SIMD code
+    (supported-systems '("x86_64-linux")) ;pffft.c uses SIMD code
     (synopsis "Audio timestretching application and plugin")
     (description
      "PaulXStretch is an application/plugin is based on the PaulStretch
@@ -4874,7 +4959,7 @@ includes LV2 plugins and a JACK standalone client.")
 (define-public musescore
   (package
     (name "musescore")
-    (version "4.0.1")
+    (version "4.0.2")
     (source
      (origin
        (method git-fetch)
@@ -4883,7 +4968,7 @@ includes LV2 plugins and a JACK standalone client.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0x1aahpbvss3sjydcq6xdh198fmslgypixmd2gckfwjqzady662y"))
+        (base32 "1yri94xs4xw0lsvmk5q7bqnpgmdadchfn08r7bb2y07jsi8qgm6w"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -5019,7 +5104,7 @@ studio.")
 (define-public gsequencer
   (package
     (name "gsequencer")
-    (version "4.4.2")
+    (version "4.5.0")
     (source
      (origin
        (method git-fetch)
@@ -5028,7 +5113,7 @@ studio.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "01fy9jkbwj8h7p0cjpc9ghjvh2d8w6n7vs6w5jbacgs2i61jx6hh"))))
+        (base32 "0j66b8y1pyka2im5hbwz6yh3hip0wsw7fa3kwl2212wq1y2a4ys1"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:phases
@@ -6351,62 +6436,100 @@ and as an LV2 plugin.")
     ;; distros to make necessary changes to integrate the software into the
     ;; distribution.
     (name "zrythm")
-    (version "1.0.0-alpha.12.0.1")
+    (version "1.0.0-beta.4.5.62")
     (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "https://www.zrythm.org/releases/zrythm-"
-                            version ".tar.xz"))
-        (sha256
-          (base32
-           "1si4n8rdg0a3frlbj6yqpyzr4f20v3cpl4m6kv0yf7r25psyl5pk"))))
-   (build-system meson-build-system)
-   (arguments
-    `(#:glib-or-gtk? #t
-      #:configure-flags
-      `("-Dtests=true"
-        "-Dmanpage=true"
-        "-Ddseg_font=false"
-        "-Dgraphviz=enabled" ; for exporting routing graphs
-        "-Dguile=enabled" ; for Guile scripting
-        "-Djack=enabled" ; for JACK audio/MIDI backend
-        "-Drtmidi=enabled" ; for RtMidi backend (ALSA sequencer)
-        "-Dsdl=enabled"))) ; for SDL audio backend (which uses ALSA)
-   (inputs
-    `(("alsa-lib" ,alsa-lib)
-      ("jack" ,jack-1)
-      ("font-dseg" ,font-dseg)
-      ("fftw" ,fftw)
-      ("fftwf" ,fftwf)
-      ("gettext" ,gettext-minimal)
-      ("glibc" ,glibc)
-      ("graphviz" ,graphviz)
-      ("gtk+" ,gtk+)
-      ("gtksourceview" ,gtksourceview-4)
-      ("guile" ,guile-2.2)
-      ("libaudec" ,libaudec)
-      ("libcyaml" ,libcyaml)
-      ("libsamplerate" ,libsamplerate)
-      ("libsndfile" ,libsndfile)
-      ("libyaml" ,libyaml)
-      ("lilv" ,lilv)
-      ("lv2" ,lv2)
-      ("pulseaudio" ,pulseaudio)
-      ("reproc" ,reproc)
-      ("rubberband" ,rubberband)
-      ("rtmidi" ,rtmidi-4.0)
-      ("sdl2" ,sdl2)
-      ("xdg-utils" ,xdg-utils)
-      ("zstd" ,zstd "lib")))
-   (native-inputs
-     (list pkg-config help2man
-           `(,glib "bin"))) ; for 'glib-compile-resources'
-   (synopsis "Digital audio workstation focusing on usability")
-   (description "Zrythm is a digital audio workstation designed to be
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://www.zrythm.org/releases/zrythm-"
+                           version ".tar.xz"))
+       (sha256
+        (base32
+         "1nfb3h3aky8f8xslx6qzvcgcfrhlqa1v50kzanmpjxrx9dcllin7"))))
+    (build-system meson-build-system)
+    (arguments
+     (list #:tests? #f             ;123 pass, 3 fail. Appears network-related.
+           #:glib-or-gtk? #t
+           #:configure-flags
+           #~(list "-Dtests=true"
+                   "-Dmanpage=false"    ;fish-completions breaks this
+                   "-Ddseg_font=false"
+                   "-Dextra_optimizations=false" ;machine-specific
+                   "-Dgraphviz=enabled" ;for exporting routing graphs
+                   "-Dguile=enabled"    ;for Guile scripting
+                   "-Djack=enabled"     ;for JACK audio/MIDI backend
+                   "-Drtmidi=enabled"   ;for RtMidi backend (ALSA sequencer)
+                   "-Dsdl=enabled")   ;for SDL audio backend (which uses ALSA)
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-before 'build 'disable-guile-auto-compilation
+                 (lambda _
+                   (setenv "GUILE_AUTO_COMPILE" "0")))
+               (add-after 'install 'wrap-program
+                 (lambda _
+                   (wrap-program (string-append #$output "/bin/zrythm")
+                     ;; Wrapping GDK_PIXBUF_MODULE_FILE allows Zrythm to load
+                     ;; its own SVG icons in pure environments.
+                     `("GDK_PIXBUF_MODULE_FILE" =
+                       (,(getenv "GDK_PIXBUF_MODULE_FILE")))))))))
+    (inputs
+     (list alsa-lib
+           boost
+           carla-2.6
+           curl
+           fftw
+           fftwf
+           flex
+           font-dseg
+           gettext-minimal
+           glib-next
+           glibc
+           graphviz
+           gtk
+           gtksourceview
+           guile-2.2
+           jack-2
+           json-glib
+           libadwaita
+           libaudec
+           (module-ref
+            (resolve-interface '(gnu packages debug)) 'libbacktrace)
+           libcyaml
+           libpanel
+           (librsvg-for-system)
+           libsamplerate
+           libsndfile
+           libyaml
+           lilv
+           lv2
+           pango
+           pipewire
+           pulseaudio
+           reproc
+           rtmidi
+           rubberband
+           sdl2
+           vamp
+           xdg-utils
+           xxhash
+           zix
+           `(,zstd "lib")))
+    (native-inputs
+     ;; Zrythm require breeze-icons to be installed.  Having them listed in
+     ;; the native inputs cause them to be wrapped and made available via
+     ;; XDG_DATA_DIRS.
+     (list breeze-icons                 ;native because not executable
+           help2man
+           `(,glib-next "bin")          ;for 'glib-compile-resources'
+           pkg-config
+           python-sphinx
+           python-sphinx-intl
+           sassc))
+    (synopsis "Digital audio workstation focusing on usability")
+    (description "Zrythm is a digital audio workstation designed to be
 featureful and easy to use.  It offers unlimited automation options, LV2
 plugin support, JACK support and chord assistance.")
-   (home-page "https://www.zrythm.org")
-   (license license:agpl3+)))
+    (home-page "https://www.zrythm.org/en/index.html")
+    (license license:agpl3+)))
 
 (define-public dragonfly-reverb
   (package
@@ -6491,10 +6614,6 @@ to be bundled with the Zrythm @dfn{digital audio workstation} (DAW).")
     (home-page "https://www.zrythm.org/en/plugins.html")
     (license license:agpl3+)))
 
-(define-public zlfo
-  ;; The "zlfo" package is now included in zplugins
-  (deprecated-package "zlfo" zplugins))
-
 (define-public remid-lv2
   (package
     (name "remid-lv2")
@@ -7084,6 +7203,40 @@ Renoise, VCV Rack, or SuperCollider.")
       (home-page "https://100r.co/site/orca.html")
       (license license:expat))))
 
+(define-public samplebrain
+  (package
+    (name "samplebrain")
+    (version "0.18.5")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.com/then-try-this/samplebrain")
+                    (commit (string-append "v" version "_release"))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "17p6n16x89bbzlpn9r7w1lgr1ifxs45npn8gxymkdr3j16dhg4zy"))))
+    (build-system qt-build-system)
+    (arguments
+     (list #:tests? #f ;no tests
+           #:phases #~(modify-phases %standard-phases
+                        (replace 'configure
+                          (lambda _
+                            (substitute* "samplebrain.pro"
+                              (("\\/usr")
+                               #$output))
+                            (invoke "qmake"))))))
+    (inputs (list fftw liblo libsndfile portaudio))
+    (home-page "https://thentrythis.org/projects/samplebrain/")
+    (synopsis "Sample mashing synthesizer designed by Aphex Twin")
+    (description
+     "Samplebrain chops samples up into a 'brain' of
+interconnected small sections called blocks which are connected into a network
+by similarity.  It processes a target sample, chopping it up into blocks in
+the same way, and tries to match each block with one in its brain to play in
+realtime.")
+    (license license:gpl2+)))
+
 ;;;
 ;;; Avoid adding new packages to the end of this file. To reduce the chances
 ;;; of a merge conflict, place them above by existing packages with similar