gnu: qjackctl: Remove unused qtx11extras input.
[jackhill/guix/guix.git] / gnu / packages / audio.scm
index a8ecd32..37a38ba 100644 (file)
@@ -11,7 +11,7 @@
 ;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2020 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2018 okapi <okapi@firemail.cc>
 ;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2020 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2018 okapi <okapi@firemail.cc>
-;;; Copyright © 2018, 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2018, 2020, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2018 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2018, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2018 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2018, 2019 Marius Bakke <mbakke@fastmail.com>
@@ -37,6 +37,8 @@
 ;;; Copyright © 2021 jgart <jgart@dismail.de>
 ;;; Copyright © 2021 Aleksandr Vityazev <avityazev@posteo.org>
 ;;; Copyright © 2022 Arjan Adriaanse <arjan@adriaan.se>
 ;;; Copyright © 2021 jgart <jgart@dismail.de>
 ;;; Copyright © 2021 Aleksandr Vityazev <avityazev@posteo.org>
 ;;; Copyright © 2022 Arjan Adriaanse <arjan@adriaan.se>
+;;; Copyright © 2022 Juliana Sims <jtsims@protonmail.com>
+;;; Copyright © 2022 Simon Streit <simon@netpanic.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
   #:use-module (gnu packages qt)
   #:use-module (gnu packages rdf)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages rdf)
   #:use-module (gnu packages readline)
+  #:use-module (gnu packages samba)
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages serialization)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages serialization)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages web)
   #:use-module (gnu packages webkit)
   #:use-module (gnu packages wxwidgets)
   #:use-module (gnu packages web)
   #:use-module (gnu packages webkit)
   #:use-module (gnu packages wxwidgets)
+  #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
@@ -232,7 +236,7 @@ promoting the market for advanced audio.")
        ("openal" ,openal)))
     (synopsis "Software Synthesizer")
     (description "WildMIDI is a simple software midi player which has a core
        ("openal" ,openal)))
     (synopsis "Software Synthesizer")
     (description "WildMIDI is a simple software midi player which has a core
-softsynth library that can be use with other applications.")
+softsynth library that can be used with other applications.")
     (home-page "https://www.mindwerks.net/projects/wildmidi/")
     (license
      (list
     (home-page "https://www.mindwerks.net/projects/wildmidi/")
     (license
      (list
@@ -255,17 +259,43 @@ softsynth library that can be use with other applications.")
         (base32 "1gsx7k77blfy171b6g3m0k0s0072v6jcawhmx1kjs9w5zlwdkzd0"))))
     (build-system gnu-build-system)
     (arguments
         (base32 "1gsx7k77blfy171b6g3m0k0s0072v6jcawhmx1kjs9w5zlwdkzd0"))))
     (build-system gnu-build-system)
     (arguments
-     ;; TODO: Move this to a snippet or remove with the upgrade to 1.0.
-     (if (target-riscv64?)
+     ;; TODO: Move this to a snippet/patch or remove with the upgrade to 1.0.
+     (if (or (target-riscv64?)
+             (target-powerpc?))
        (list
          #:phases
          #~(modify-phases %standard-phases
              (add-after 'unpack 'patch-source
        (list
          #:phases
          #~(modify-phases %standard-phases
              (add-after 'unpack 'patch-source
-               (lambda _
-                 (substitute* "webrtc/typedefs.h"
-                   (("defined\\(__aarch64__\\)" all)
-                    (string-append
-                      all " || (defined(__riscv) && __riscv_xlen == 64)")))))))
+               (lambda* (#:key inputs #:allow-other-keys)
+                 (let ((patch-file
+                        #$(local-file
+                           (search-patch
+                             "webrtc-audio-processing-big-endian.patch"))))
+                   (invoke "patch" "--force" "-p1" "-i" patch-file)
+                   (substitute* "webrtc/typedefs.h"
+                     (("defined\\(__aarch64__\\)" all)
+                      (string-append
+                        ;; powerpc-linux
+                        "(defined(__PPC__) && __SIZEOF_SIZE_T__ == 4)\n"
+                        "#define WEBRTC_ARCH_32_BITS\n"
+                        "#define WEBRTC_ARCH_BIG_ENDIAN\n"
+                        ;; powerpc64-linux
+                        "#elif (defined(__PPC64__) && defined(_BIG_ENDIAN))\n"
+                        "#define WEBRTC_ARCH_64_BITS\n"
+                        "#define WEBRTC_ARCH_BIG_ENDIAN\n"
+                        ;; aarch64-linux
+                        "#elif " all
+                        ;; riscv64-linux
+                        " || (defined(__riscv) && __riscv_xlen == 64)"
+                        ;; powerpc64le-linux
+                        " || (defined(__PPC64__) && defined(_LITTLE_ENDIAN))"))))))))
+       '()))
+    (native-inputs
+     (if (or (target-riscv64?)
+             (target-powerpc?))
+       (list
+         (local-file (search-patch "webrtc-audio-processing-big-endian.patch"))
+         patch)
        '()))
     (synopsis "WebRTC's Audio Processing Library")
     (description "WebRTC-Audio-Processing library based on Google's
        '()))
     (synopsis "WebRTC's Audio Processing Library")
     (description "WebRTC-Audio-Processing library based on Google's
@@ -336,7 +366,12 @@ Linux kernel.")
                 "07857vdkak306d9s5g6fhmjyxk7vijzjhkmqb15s7ihfxx9lx8xb"))))
     (build-system cmake-build-system)
     (arguments
                 "07857vdkak306d9s5g6fhmjyxk7vijzjhkmqb15s7ihfxx9lx8xb"))))
     (build-system cmake-build-system)
     (arguments
-     '(#:tests? #f))                    ; no check target
+     '(#:tests? #f                                ;no check target
+
+       ;; XXX: Building with '-fsanitize=undefined' leads to embedded C++ STL
+       ;; header file names in libgme.so, meaning that libgme retains a
+       ;; reference to GCC.  Disable UBSAN to avoid that.
+       #:configure-flags '("-DENABLE_UBSAN=OFF")))
     (home-page "https://bitbucket.org/mpyne/game-music-emu")
     (synopsis "Video game music file playback library")
     (description
     (home-page "https://bitbucket.org/mpyne/game-music-emu")
     (synopsis "Video game music file playback library")
     (description
@@ -396,13 +431,13 @@ Sega Master System/Mark III, Sega Genesis/Mega Drive, BBC Micro
     (inputs
      `(("alsa" ,alsa-lib)
        ("flac" ,flac)
     (inputs
      `(("alsa" ,alsa-lib)
        ("flac" ,flac)
-       ("mpg123" ,mpg123)
        ("portaudio" ,portaudio)
        ("pulseaudio" ,pulseaudio)
        ("sdl2" ,sdl2)
        ("portaudio" ,portaudio)
        ("pulseaudio" ,pulseaudio)
        ("sdl2" ,sdl2)
-       ("sndfile" ,libsndfile)
-       ("vorbis" ,libvorbis)
-       ("zlib" ,zlib)))
+       ("sndfile" ,libsndfile)))
+    (propagated-inputs
+     ;; In Requires.private
+     (list libogg libvorbis mpg123 zlib))
     (synopsis "Audio tracking library")
     (description "LibOpenMPT is a cross-platform C++ and C module playback
 library.  It is based on the player code of the Open ModPlug Tracker project.")
     (synopsis "Audio tracking library")
     (description "LibOpenMPT is a cross-platform C++ and C module playback
 library.  It is based on the player code of the Open ModPlug Tracker project.")
@@ -440,31 +475,6 @@ by MusicIP.")
     (home-page "https://code.google.com/archive/p/musicip-libofa/")
     (license license:gpl2+)))
 
     (home-page "https://code.google.com/archive/p/musicip-libofa/")
     (license license:gpl2+)))
 
-(define-public faac
-  (package
-    (name "faac")
-    (version "1.30")
-    (source
-     (origin
-       (method url-fetch)
-       (uri
-        (string-append "mirror://sourceforge/faac/faac-src"
-                       "/faac-" version "/faac-1_30.tar.gz"))
-       (sha256
-        (base32 "1lmj0dib3mjp84jhxc5ddvydkzzhb0gfrdh3ikcidjlcb378ghxd"))))
-    (build-system gnu-build-system)
-    (native-inputs
-     (list autoconf automake libtool pkg-config))
-    (synopsis "Freeware Advanced Audio Coder")
-    (description "FAAC is an MPEG-4 and MPEG-2 AAC encoder.")
-    (home-page "https://www.audiocoding.com/faac.html")
-    (license
-     (list
-      ;; ISO MPEG-4 reference code.
-      license:gpl2+
-      ;; Others.
-      license:lgpl2.0+))))
-
 (define-public libtimidity
   (package
     (name "libtimidity")
 (define-public libtimidity
   (package
     (name "libtimidity")
@@ -558,7 +568,7 @@ implementation of Adaptive Multi Rate Narrowband and Wideband
            liblo
            qtbase-5))
     (native-inputs
            liblo
            qtbase-5))
     (native-inputs
-     (list pkg-config qttools))
+     (list pkg-config qttools-5))
     (home-page "http://alsamodular.sourceforge.net/")
     (synopsis "Realtime modular synthesizer and effect processor")
     (description
     (home-page "http://alsamodular.sourceforge.net/")
     (synopsis "Realtime modular synthesizer and effect processor")
     (description
@@ -590,8 +600,7 @@ Filter) modules follow the convention of 1V / Octave.")
         "--enable-jack"
         "--enable-sndfile"
         "--enable-samplerate"
         "--enable-jack"
         "--enable-sndfile"
         "--enable-samplerate"
-        "--enable-avcodec")
-       #:python ,python-2))
+        "--enable-avcodec")))
     (inputs
      (list jack-1 libsndfile libsamplerate fftwf ffmpeg)) ; for libavcodec
     (native-inputs
     (inputs
      (list jack-1 libsndfile libsamplerate fftwf ffmpeg)) ; for libavcodec
     (native-inputs
@@ -847,6 +856,10 @@ engineers, musicians, soundtrack editors and composers.")
            (lambda* (#:key inputs #:allow-other-keys)
              (substitute* '("libraries/lib-files/FileNames.cpp")
                (("\"/usr/include/linux/magic.h\"") "<linux/magic.h>"))))
            (lambda* (#:key inputs #:allow-other-keys)
              (substitute* '("libraries/lib-files/FileNames.cpp")
                (("\"/usr/include/linux/magic.h\"") "<linux/magic.h>"))))
+         (add-after 'install 'delete-gratuitous-script
+           (lambda* (#:key outputs #:allow-other-keys)
+             (delete-file (string-append (assoc-ref outputs "out")
+                                         "/audacity"))))
          (add-after 'wrap-program 'glib-or-gtk-wrap
            (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))
        ;; The test suite is not "well exercised" according to the developers,
          (add-after 'wrap-program 'glib-or-gtk-wrap
            (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))
        ;; The test suite is not "well exercised" according to the developers,
@@ -1132,7 +1145,7 @@ envelope follower, distortion effects, tape effects and more.")
 (define-public snapcast
   (package
     (name "snapcast")
 (define-public snapcast
   (package
     (name "snapcast")
-    (version "0.24.0")
+    (version "0.26.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1141,7 +1154,7 @@ envelope follower, distortion effects, tape effects and more.")
               (file-name (git-file-name name version))
               (sha256
                (base32
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "13yz8alplnqwkcns3mcli01qbyy6l3h62xx0v71ygcrz371l4g9g"))))
+                "091gf3k1xv3k0m0kf2apr9bwiifw2czjcksd3vzwy544sfgrya08"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f))                    ; no included tests
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f))                    ; no included tests
@@ -1367,7 +1380,7 @@ object library.")
 (define-public csound
   (package
     (name "csound")
 (define-public csound
   (package
     (name "csound")
-    (version "6.14.0")
+    (version "6.16.2")
     (source
      (origin
        (method git-fetch)
     (source
      (origin
        (method git-fetch)
@@ -1376,7 +1389,7 @@ object library.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1sr9knfhbm2m0wpkjq2l5n471vnl51wy4p6j4m95zqybimzb4s2j"))))
+        (base32 "1lgasyk8j4cl9178vci1dph63nks3cgwhf8y1d04z9dc8gg15dyn"))))
     (build-system cmake-build-system)
     (native-inputs
      (list bison flex gettext-minimal zlib))
     (build-system cmake-build-system)
     (native-inputs
      (list bison flex gettext-minimal zlib))
@@ -1888,10 +1901,44 @@ also play midifiles using a Soundfont.")
      "Faust is a programming language for realtime audio signal processing.")
     (license license:gpl2+)))
 
      "Faust is a programming language for realtime audio signal processing.")
     (license license:gpl2+)))
 
+;; This version is needed to build older synths that require the lv2synth.cpp
+;; architecture file, such as sorcer.
+(define-public faust-0.9.67
+  (package
+    (inherit faust)
+    (name "faust")
+    (version "0.9.67")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/grame-cncm/faust")
+                    (commit (string-append "v"
+                                           (string-map (lambda (c)
+                                                         (if (char=? c #\.) #\- c))
+                                                       version)))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0856x666s6ymzk8v15f9gy402dbr8c9v2s40hyfadhraqljmqrm0"))
+              (snippet
+               ;; Remove prebuilt library
+               '(delete-file "architecture/android/libs/armeabi-v7a/libfaust_dsp.so"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:make-flags
+      #~(list (string-append "prefix=" #$output))
+      #:tests? #f
+      #:phases
+      '(modify-phases %standard-phases
+         ;; no "configure" script
+         (delete 'configure))))
+    (native-inputs (list unzip))))
+
 (define-public faust-2
   (package
     (inherit faust)
 (define-public faust-2
   (package
     (inherit faust)
-    (version "2.5.23")
+    (version "2.41.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/grame-cncm/faust/"
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/grame-cncm/faust/"
@@ -1899,15 +1946,29 @@ also play midifiles using a Soundfont.")
                                   "/faust-" version ".tar.gz"))
               (sha256
                (base32
                                   "/faust-" version ".tar.gz"))
               (sha256
                (base32
-                "1yz5jnr76hh7rmxkpdi7gyrw1wp4gyqfpq8zyl97qdi5ga5gjznq"))))
-    (build-system gnu-build-system)
+                "0gk8ifxrbykq7ay0nvjns8fjryhp0wfhv5npgrl8xpgw9wfmw53j"))))
+    (build-system cmake-build-system)
     (arguments
     (arguments
-     (substitute-keyword-arguments (package-arguments faust)
-       ((#:make-flags flags)
-        `(list (string-append "prefix=" (assoc-ref %outputs "out"))
-               "world"))))
+     `(#:tests? #f ; no tests
+       #:phases
+       (modify-phases %standard-phases
+         ;; The upstream package uses make to run cmake during the build stage.
+         ;; Here we ignore the Makefile and call cmake directly.
+         (replace 'configure
+           (lambda _
+             (chdir "build")
+             (invoke "cmake" "-C" "backends/all.cmake"
+                     (string-append "-DCMAKE_INSTALL_PREFIX="
+                      (assoc-ref %outputs "out")))))
+         ;; The sound2faust tool would be built in the Makefile's "world" target
+         (add-after 'install 'sound2faust
+           (lambda _
+             (chdir "../tools/sound2faust")
+             (setenv "PREFIX" (assoc-ref %outputs "out"))
+             (invoke "make")
+             (invoke "make" "install"))))))
     (native-inputs
     (native-inputs
-     `(("llvm" ,llvm-3.8)
+     `(("llvm" ,llvm)
        ("which" ,which)
        ("xxd" ,xxd)
        ("ctags" ,emacs-minimal)  ; for ctags
        ("which" ,which)
        ("xxd" ,xxd)
        ("ctags" ,emacs-minimal)  ; for ctags
@@ -1954,6 +2015,51 @@ patches that can be used with softsynths such as Timidity and WildMidi.")
     ;; GPLv2+ with exception for compositions using these patches.
     (license license:gpl2+)))
 
     ;; GPLv2+ with exception for compositions using these patches.
     (license license:gpl2+)))
 
+(define-public freepats-gm
+  (package
+    (name "freepats-gm")
+    (version "20210329")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://freepats.zenvoid.org/SoundSets/"
+                                  "FreePats-GeneralMIDI/FreePatsGM-SF2-"  version ".7z"))
+              (sha256
+               (base32
+                "19a1mp9yi33j2zff4mjvhrjz97dwwgjwzfdlf84j9xyydhx0crhc"))))
+    (build-system trivial-build-system)
+    (native-inputs
+     `(("p7zip" ,p7zip)))
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (let ((dir (string-append "FreePatsGM-SF2-" ,version))
+             (file (string-append "FreePatsGM-" ,version ".sf2"))
+             (out (string-append %output "/share/soundfonts"))
+             (doc (string-append %output "/share/doc/freepats-gm-" ,version)))
+         (use-modules (guix build utils))
+         (invoke (string-append (assoc-ref %build-inputs "p7zip") "/bin/7z")
+                 "e" (assoc-ref %build-inputs "source")
+                 (string-append dir "/" file)
+                 (string-append dir "/gpl.txt")
+                 (string-append dir "/cc0.txt")
+                 (string-append dir "/readme.txt"))
+         (mkdir-p out)
+         (copy-file file (string-append out "/FreePatsGM.sf2"))
+         (mkdir-p doc)
+         (for-each
+          (lambda (file)
+            (copy-file file (string-append doc "/" file)))
+          (find-files "." "\\.txt$"))
+         #t)))
+    (home-page "https://freepats.zenvoid.org/SoundSets/general-midi.html")
+    (synopsis "General MIDI sound set")
+    (description "FreePats is a project to create a free (as in free software)
+collection of digital instruments for music production.  This sound bank is a
+partial release of the General MIDI sound set.")
+    (license (list
+              license:gpl3+ ; with sampling exception
+              license:cc0))))
+
 (define-public guitarix
   (package
     (name "guitarix")
 (define-public guitarix
   (package
     (name "guitarix")
@@ -2168,23 +2274,23 @@ synchronous execution of all clients, and low latency operation.")
 ;; jack-2 implement the same API.  JACK2 is provided primarily as a client
 ;; program for users who might benefit from the D-BUS features.
 (define-public jack-2
 ;; jack-2 implement the same API.  JACK2 is provided primarily as a client
 ;; program for users who might benefit from the D-BUS features.
 (define-public jack-2
-  (package (inherit jack-1)
+  (package
+    (inherit jack-1)
     (name "jack2")
     (name "jack2")
-    (version "1.9.14")
+    (version "1.9.21")
     (source (origin
     (source (origin
-             (method url-fetch)
-             (uri (string-append "https://github.com/jackaudio/jack2/releases/"
-                                 "download/v" version "/jack2-"
-                                 version ".tar.gz"))
-             (file-name (string-append name "-" version ".tar.gz"))
-             (sha256
-              (base32
-               "0z11hf55a6mi8h50hfz5wry9pshlwl4mzfwgslghdh40cwv342m2"))))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/jackaudio/jack2")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0sbrffmdbajvrk7iqvsvrnwnpvmicvbjyq3f52r6ashdsznsz03b"))))
     (build-system waf-build-system)
     (arguments
     (build-system waf-build-system)
     (arguments
-     `(#:tests? #f  ; no check target
-       #:configure-flags '("--dbus"
-                           "--alsa")
+     `(#:tests? #f                      ; no check target
+       #:configure-flags '("--dbus" "--alsa")
        #:phases
        (modify-phases %standard-phases
          (add-before 'configure 'set-linkflags
        #:phases
        (modify-phases %standard-phases
          (add-before 'configure 'set-linkflags
@@ -2198,16 +2304,13 @@ synchronous execution of all clients, and low latency operation.")
                ((".*CFLAGS.*-Wall.*" m)
                 (string-append m
                                "    conf.env.append_unique('LINKFLAGS',"
                ((".*CFLAGS.*-Wall.*" m)
                 (string-append m
                                "    conf.env.append_unique('LINKFLAGS',"
-                               "'-Wl,-rpath=" %output "/lib')\n")))
-             #t))
+                               "'-Wl,-rpath=" %output "/lib')\n")))))
          (add-after 'install 'wrap-python-scripts
          (add-after 'install 'wrap-python-scripts
-           (lambda* (#:key inputs outputs #:allow-other-keys)
+           (lambda* (#:key outputs #:allow-other-keys)
              ;; Make sure 'jack_control' runs with the correct PYTHONPATH.
              ;; Make sure 'jack_control' runs with the correct PYTHONPATH.
-             (let* ((out (assoc-ref outputs "out"))
-                    (path (getenv "GUIX_PYTHONPATH")))
-               (wrap-program (string-append out "/bin/jack_control")
-                 `("GUIX_PYTHONPATH" ":" prefix (,path))))
-             #t)))))
+             (wrap-program (search-input-file outputs "bin/jack_control")
+               `("GUIX_PYTHONPATH" ":"
+                 prefix (,(getenv "GUIX_PYTHONPATH")))))))))
     (inputs
      (list alsa-lib
            dbus
     (inputs
      (list alsa-lib
            dbus
@@ -2234,17 +2337,15 @@ synchronous execution of all clients, and low latency operation.")
                 "05lycfq0f06zjp5xqvzjz9hx9kmqx72yng1lghh76hv63dw43lcj"))))
     (build-system waf-build-system)
     (arguments
                 "05lycfq0f06zjp5xqvzjz9hx9kmqx72yng1lghh76hv63dw43lcj"))))
     (build-system waf-build-system)
     (arguments
-     `(#:tests? #f                      ; no check target
-       #:python ,python-2))
+     `(#:tests? #f))                    ; no check target
     (inputs
     (inputs
-     `(("lv2" ,lv2)
-       ("lilv" ,lilv)
-       ("suil" ,suil)
-       ("gtk2" ,gtk+-2)
-       ("gtk3" ,gtk+)
-       ("gtkmm" ,gtkmm-2)
-       ("qtbase" ,qtbase-5)
-       ("jack" ,jack-1)))
+     (list lv2
+           lilv
+           suil
+           gtk
+           gtkmm
+           qtbase-5
+           jack-1))
     (native-inputs
      (list pkg-config))
     (home-page "https://drobilla.net/software/jalv/")
     (native-inputs
      (list pkg-config))
     (home-page "https://drobilla.net/software/jalv/")
@@ -2496,9 +2597,6 @@ compensation, (de)interleaving, and byte-swapping
 cross-platform audio input/output stream library.")
     (license license:expat)))
 
 cross-platform audio input/output stream library.")
     (license license:expat)))
 
-(define-public python2-pyaudio
-  (package-with-python2 python-pyaudio))
-
 (define-public python-pyliblo
   (package
     (name "python-pyliblo")
 (define-public python-pyliblo
   (package
     (name "python-pyliblo")
@@ -2525,9 +2623,6 @@ to send and receive OSC messages using a nice and simple Python API.  Also
 included are the command line utilities @code{send_osc} and @code{dump_osc}.")
     (license license:lgpl2.1+)))
 
 included are the command line utilities @code{send_osc} and @code{dump_osc}.")
     (license license:lgpl2.1+)))
 
-(define-public python2-pyliblo
-  (package-with-python2 python-pyliblo))
-
 (define-public python-soundfile
   (package
     (name "python-soundfile")
 (define-public python-soundfile
   (package
     (name "python-soundfile")
@@ -2688,6 +2783,38 @@ add functionality to support the needs of increasingly powerful audio
 software.")
     (license license:isc)))
 
 software.")
     (license license:isc)))
 
+(define-public ttl2c
+  (package
+    (name "ttl2c")
+    (version "1.0.0")
+    (source (origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/lvtk/ttl2c")
+                   (commit version)))
+             (file-name (git-file-name name version))
+             (sha256
+              (base32
+               "0aybx8i5i0sridi9130a3937xgmfmjkk8m48f9whvhlhbzwy3xbl"))))
+    (build-system waf-build-system)
+    (arguments
+     (list
+      #:tests? #false  ;no check target
+      #:phases
+      `(modify-phases %standard-phases
+         (add-before 'configure 'setup-waf
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((waf (assoc-ref inputs "python-waf")))
+               (copy-file (string-append waf "/bin/waf") "waf")))))))
+    (inputs (list boost))
+    (native-inputs (list python-waf))
+    (home-page "https://github.com/lvtk/ttl2c")
+    (synopsis "Turtle to C header conversion utility for LV2 plugins")
+    (description
+     "This package provides a conversion utility for LV2 Plugin developers to
+generate C headers from Turtle files.")
+    (license license:gpl3+)))
+
 (define-public lv2-mda-piano
   (package
     (name "lv2-mda-piano")
 (define-public lv2-mda-piano
   (package
     (name "lv2-mda-piano")
@@ -2711,7 +2838,7 @@ software.")
     (inputs
      (list lv2 lvtk))
     (native-inputs
     (inputs
      (list lv2 lvtk))
     (native-inputs
-     (list pkg-config))
+     (list pkg-config ttl2c))
     (native-search-paths
      (list (search-path-specification
             (variable "LV2_PATH")
     (native-search-paths
      (list (search-path-specification
             (variable "LV2_PATH")
@@ -2734,38 +2861,77 @@ software.")
     (synopsis "LV2 port of the mda EPiano plugin")
     (description "An LV2 port of the mda EPiano VSTi.")))
 
     (synopsis "LV2 port of the mda EPiano plugin")
     (description "An LV2 port of the mda EPiano VSTi.")))
 
-(define-public lvtk
-  (package
-    (name "lvtk")
-    (version "1.2.0")
-    (source (origin
-             (method git-fetch)
-             (uri (git-reference
-                   (url "https://github.com/lvtk/lvtk")
-                   (commit version)))
-             (file-name (git-file-name name version))
-             (sha256
-              (base32
-               "1b01zvzl70ana6l1kn8fgyr7msnn3c7x61cgw7fdpp50322352p8"))))
-    (build-system waf-build-system)
-    (arguments
-     `(#:tests? #f  ; no check target
-       #:python ,python-2
-       #:configure-flags
-       (list (string-append "--boost-includes="
-                            (assoc-ref %build-inputs "boost")
-                            "/include"))))
-    (inputs
-     (list boost gtkmm-2 lv2))
-    (native-inputs
-     (list pkg-config))
-    (home-page "https://github.com/lvtk/lvtk")
-    (synopsis "C++ libraries for LV2 plugins")
-    (description
-     "The LV2 Toolkit (LVTK) contains libraries that wrap the LV2 C API and
+(define-public lvtk-2
+  ;; Use the latest commit, as the latest release was made in 2014 and depends
+  ;; on Python 2.
+  (let ((commit "a73feabe772f9650aa071e6a4df660e549ab7c48")
+        (revision "0"))
+    (package
+      (name "lvtk")
+      (version (git-version "2" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/lvtk/lvtk")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0scmv8b4jlm88d21dqqchjy98wb93zclc9x960h213gdi871vsaj"))))
+      (build-system waf-build-system)
+      (arguments (list #:tests? #f))    ;no check target
+      (inputs (list boost gtkmm lv2))
+      (native-inputs (list pkg-config))
+      (home-page "https://github.com/lvtk/lvtk")
+      (synopsis "C++ libraries for LV2 plugins")
+      (description
+       "The LV2 Toolkit (LVTK) contains libraries that wrap the LV2 C API and
 extensions into easy to use C++ classes.  It is the successor of
 lv2-c++-tools.")
 extensions into easy to use C++ classes.  It is the successor of
 lv2-c++-tools.")
-    (license license:gpl3+)))
+      (license license:isc))))
+
+(define-public lvtk-1
+  ;; Use the latest commit, as the latest release was made in 2014 and depends
+  ;; on Python 2.
+  (let ((commit "23dd99531d88d7821b69f6f0d60516ef322a6729")
+        (revision "0"))
+    (package
+      (name "lvtk")
+      (version (git-version "1.2.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/lvtk/lvtk")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0iw7skvsn3whw69dhcxbbdns7mssaf6z6iyzxjav53607ibyfr8d"))))
+      (build-system waf-build-system)
+      (arguments
+       (list
+        #:tests? #false                 ;no check target
+        #:configure-flags
+        #~(list (string-append "--boost-includes="
+                               #$(this-package-input "boost")
+                               "/include"))
+        #:phases
+        `(modify-phases %standard-phases
+           (add-before 'configure 'setup-waf
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let ((waf (assoc-ref inputs "python-waf")))
+                 (copy-file (string-append waf "/bin/waf") "waf")))))))
+      (inputs (list boost gtkmm lv2))
+      (native-inputs (list pkg-config python-waf))
+      (home-page "https://github.com/lvtk/lvtk")
+      (synopsis "C++ libraries for LV2 plugins")
+      (description
+       "The LV2 Toolkit (LVTK) contains libraries that wrap the LV2 C API and
+extensions into easy to use C++ classes.  It is the successor of
+lv2-c++-tools.")
+      (license license:isc))))
+
+(define-public lvtk lvtk-1)
 
 (define-public openal
   (package
 
 (define-public openal
   (package
@@ -2902,21 +3068,25 @@ different audio devices such as ALSA or PulseAudio.")
 (define-public qjackctl
   (package
     (name "qjackctl")
 (define-public qjackctl
   (package
     (name "qjackctl")
-    (version "0.9.6")
+    (version "0.9.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/qjackctl/qjackctl/"
                                   version "/qjackctl-" version ".tar.gz"))
               (sha256
                (base32
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/qjackctl/qjackctl/"
                                   version "/qjackctl-" version ".tar.gz"))
               (sha256
                (base32
-                "0sqni9ppwadc01fnyqj6lkwy30ql1vccqglv9imd3zdchffjpjir"))))
+                "1rvxgxd7bbv7yazcpw3ily0jlra8ms5c0kkf7cybgivahw59zk87"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f))                    ; no check target
     (inputs
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f))                    ; no check target
     (inputs
-     (list jack-1 alsa-lib portaudio qtbase-5 qtx11extras))
+     (list alsa-lib
+           jack-1
+           portaudio
+           qtbase-5
+           qtsvg-5))
     (native-inputs
     (native-inputs
-     (list pkg-config qttools))
+     (list pkg-config qttools-5))
     (home-page "https://qjackctl.sourceforge.io/")
     (synopsis "Jack server control application")
     (description "Control a Jack server.  Allows you to plug various sources
     (home-page "https://qjackctl.sourceforge.io/")
     (synopsis "Jack server control application")
     (description "Control a Jack server.  Allows you to plug various sources
@@ -3037,7 +3207,7 @@ link REQUIRED)"))))))
                              (string-append ide "/bin"))
                (delete-file scide)))))))
     (native-inputs
                              (string-append ide "/bin"))
                (delete-file scide)))))))
     (native-inputs
-     (list ableton-link pkg-config qttools xorg-server-for-tests))
+     (list ableton-link pkg-config qttools-5 xorg-server-for-tests))
     (inputs (list jack-1
                   libsndfile
                   fftw
     (inputs (list jack-1
                   libsndfile
                   fftw
@@ -3051,12 +3221,12 @@ link REQUIRED)"))))))
                   boost-sync
                   yaml-cpp
                   qtbase-5
                   boost-sync
                   yaml-cpp
                   qtbase-5
-                  qtdeclarative
-                  qtsvg
-                  qtwebchannel
-                  qtwebsockets))
+                  qtdeclarative-5
+                  qtsvg-5
+                  qtwebchannel-5
+                  qtwebsockets-5))
     (propagated-inputs                  ;to get native-search-path
     (propagated-inputs                  ;to get native-search-path
-     (list qtwebengine))
+     (list qtwebengine-5))
     (home-page "https://github.com/supercollider/supercollider")
     (synopsis "Synthesis engine and programming language")
     (description "SuperCollider is a synthesis engine (@code{scsynth} or
     (home-page "https://github.com/supercollider/supercollider")
     (synopsis "Synthesis engine and programming language")
     (description "SuperCollider is a synthesis engine (@code{scsynth} or
@@ -3091,49 +3261,6 @@ using Guix System.")
     ;; GNU Library (not Lesser) General Public License.
     (license license:lgpl2.0+)))
 
     ;; GNU Library (not Lesser) General Public License.
     (license license:lgpl2.0+)))
 
-(define-public raul
-  (package
-    (name "raul")
-    (version "0.8.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://download.drobilla.net/raul-"
-                                  version ".tar.bz2"))
-              (sha256
-               (base32
-                "09ms40xc1x6qli6lxkwn5ibqh62nl9w7dq0b6jh1q2zvnrxwsd8b"))))
-    (build-system waf-build-system)
-    (arguments
-     `(#:python ,python-2
-       #:tests? #f)) ; no check target
-    (inputs
-     (list glib boost))
-    (native-inputs
-     (list pkg-config))
-    (home-page "https://drobilla.net/software/raul/")
-    (synopsis "Real-time audio utility library")
-    (description
-     "Raul (Real-time Audio Utility Library) is a C++ utility library primarily
-aimed at audio/musical applications.")
-    (license license:gpl2+)))
-
-(define-public raul-devel
-  (let ((commit "4db870b2b20b0a608ec0283139056b836c5b1624")
-        (revision "1"))
-    (package (inherit raul)
-      (name "raul")
-      (version (string-append "0.8.9-" revision "."
-                              (string-take commit 9)))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://git.drobilla.net/raul.git")
-                      (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
-                (sha256
-                 (base32
-                  "04fajrass3ymr72flx5js5vxc601ccrmx8ny8scp0rw7j0igyjdr")))))))
-
 (define-public resample
   (package
     (name "resample")
 (define-public resample
   (package
     (name "resample")
@@ -3197,7 +3324,7 @@ tempo and pitch of an audio recording independently of one another.")
 (define-public rtmidi
   (package
     (name "rtmidi")
 (define-public rtmidi
   (package
     (name "rtmidi")
-    (version "4.0.0")
+    (version "5.0.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.music.mcgill.ca/~gary/rtmidi"
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.music.mcgill.ca/~gary/rtmidi"
@@ -3205,7 +3332,7 @@ tempo and pitch of an audio recording independently of one another.")
               (file-name (string-append "rtmidi-" version ".tar.gz"))
               (sha256
                (base32
               (file-name (string-append "rtmidi-" version ".tar.gz"))
               (sha256
                (base32
-                "1k962ljpnwyjw9jjiky2372khhri1wqvrj5qsalfpys31xqzw31p"))))
+                "1ff2yfq3k4l209fr71v3w98fpjjv1chs09vkbmxj03lcikahxns8"))))
     (build-system gnu-build-system)
     (inputs
      (list jack-1 alsa-lib))
     (build-system gnu-build-system)
     (inputs
      (list jack-1 alsa-lib))
@@ -3219,6 +3346,19 @@ classes) that provide a common cross-platform API for realtime MIDI
 input/output.")
     (license license:expat)))
 
 input/output.")
     (license license:expat)))
 
+(define-public rtmidi-4.0
+  (package
+    (inherit rtmidi)
+    (version "4.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://www.music.mcgill.ca/~gary/rtmidi"
+                                  "/release/rtmidi-" version ".tar.gz"))
+              (file-name (string-append "rtmidi-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1k962ljpnwyjw9jjiky2372khhri1wqvrj5qsalfpys31xqzw31p"))))))
+
 (define-public sratom
   (package
     (name "sratom")
 (define-public sratom
   (package
     (name "sratom")
@@ -3447,19 +3587,19 @@ stretching and pitch scaling of audio.  This package contains the library.")
 (define-public libkeyfinder
   (package
     (name "libkeyfinder")
 (define-public libkeyfinder
   (package
     (name "libkeyfinder")
-    (version "2.2.6")
+    (version "2.2.7")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/mixxxdj/libkeyfinder")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/mixxxdj/libkeyfinder")
-             (commit (string-append "v" version))))
+             (commit version)))
        (file-name (git-file-name name version))
        (sha256
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0s7nqjmv44q5qjynfcs0j6h4a6qcz4mxzandkkdjjbnwv5rxc3zg"))))
+        (base32 "0nvhdzy0m3bchk3dpnspv2f518p2v9fjcrv36z1sva1pv9a2g35w"))))
     (build-system cmake-build-system)
     (native-inputs
     (build-system cmake-build-system)
     (native-inputs
-     (list catch-framework2))
+     (list catch2))
     (inputs
      (list fftw))
     (home-page "https://mixxxdj.github.io/libkeyfinder/")
     (inputs
      (list fftw))
     (home-page "https://mixxxdj.github.io/libkeyfinder/")
@@ -3752,7 +3892,7 @@ interface.")
     (arguments
      `(#:tests? #f))                    ; no "check" phase
     (native-inputs
     (arguments
      `(#:tests? #f))                    ; no "check" phase
     (native-inputs
-     (list qttools pkg-config))
+     (list qttools-5 pkg-config))
     (inputs
      (list fluidsynth qtbase-5 qtx11extras))
     (home-page "https://qsynth.sourceforge.io")
     (inputs
      (list fluidsynth qtbase-5 qtx11extras))
     (home-page "https://qsynth.sourceforge.io")
@@ -4202,7 +4342,7 @@ code, used in @code{libtoxcore}.")
 (define-public gsm
   (package
     (name "gsm")
 (define-public gsm
   (package
     (name "gsm")
-    (version "1.0.19")
+    (version "1.0.20")
     (source
      (origin
        (method url-fetch)
     (source
      (origin
        (method url-fetch)
@@ -4210,8 +4350,7 @@ code, used in @code{libtoxcore}.")
         (string-append "http://www.quut.com/" name "/" name
                        "-" version ".tar.gz"))
        (sha256
         (string-append "http://www.quut.com/" name "/" name
                        "-" version ".tar.gz"))
        (sha256
-        (base32
-         "1xkha9ss5g5qnfaybi8il0mcvp8knwg9plgh8404vh58d0pna0s9"))))
+        (base32 "1gwhmqs24c14gc9qr91iqb2jkbr3qqy4dvf27yf8j7mq322w65b3"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "tst"
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "tst"
@@ -4224,8 +4363,7 @@ code, used in @code{libtoxcore}.")
              ;; mediastreamer.
              (substitute* "Makefile"
                (("^CCFLAGS.*" all)
              ;; mediastreamer.
              (substitute* "Makefile"
                (("^CCFLAGS.*" all)
-                (string-append all "CCFLAGS += -fPIC\n")))
-             #t))
+                (string-append all "CCFLAGS += -fPIC\n")))))
          (add-before 'install 'pre-install
            (lambda _
              (let ((out (assoc-ref %outputs "out")))
          (add-before 'install 'pre-install
            (lambda _
              (let ((out (assoc-ref %outputs "out")))
@@ -4234,8 +4372,7 @@ code, used in @code{libtoxcore}.")
                (mkdir-p (string-append out "/man/man1"))
                (mkdir-p (string-append out "/man/man3"))
                (mkdir-p (string-append out "/bin"))
                (mkdir-p (string-append out "/man/man1"))
                (mkdir-p (string-append out "/man/man3"))
                (mkdir-p (string-append out "/bin"))
-               (mkdir-p (string-append out "/lib")))
-             #t))
+               (mkdir-p (string-append out "/lib")))))
          (add-after 'install 'post-install
            (lambda _
              (let ((out (assoc-ref %outputs "out")))
          (add-after 'install 'post-install
            (lambda _
              (let ((out (assoc-ref %outputs "out")))
@@ -4243,8 +4380,7 @@ code, used in @code{libtoxcore}.")
                             (string-append out "/include"))
                (mkdir-p (string-append out "/include/gsm"))
                (copy-recursively "inc"
                             (string-append out "/include"))
                (mkdir-p (string-append out "/include/gsm"))
                (copy-recursively "inc"
-                                 (string-append out "/include/gsm")))
-             #t))
+                                 (string-append out "/include/gsm")))))
          (delete 'configure))))         ; no configure script
     (synopsis "GSM 06.10 lossy speech compression library")
     (description "This C library provides an encoder and a decoder for the GSM
          (delete 'configure))))         ; no configure script
     (synopsis "GSM 06.10 lossy speech compression library")
     (description "This C library provides an encoder and a decoder for the GSM
@@ -4275,9 +4411,6 @@ It is currently fairly complete for PCM devices, and has some support for
 mixers.")
     (license license:psfl)))
 
 mixers.")
     (license license:psfl)))
 
-(define-public python2-pyalsaaudio
-  (package-with-python2 python-pyalsaaudio))
-
 (define-public ldacbt
   (package
     (name "ldacbt")
 (define-public ldacbt
   (package
     (name "ldacbt")
@@ -4561,37 +4694,44 @@ representations.")
               (file-name (git-file-name name version))
               (sha256
                (base32
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1mziklmqifhnb4kg9ia2r56r8wjn6xp40bkpf484hsgqvnrccl86"))))
+                "1mziklmqifhnb4kg9ia2r56r8wjn6xp40bkpf484hsgqvnrccl86"))
+              (modules '((guix build utils)))
+              (snippet
+               #~(begin
+                   (delete-file-recursively "iniparser")
+                   (substitute* "configure.ac"
+                     (("AC_CONFIG_FILES\\(iniparser/Makefile\\)") ""))
+                   (substitute* "Makefile.am"
+                     (("SUBDIRS = iniparser") ""))))))
     (build-system gnu-build-system)
     (build-system gnu-build-system)
-    (native-inputs
-     (list autoconf automake libtool))
-    (inputs
-     (list fftw ncurses pulseaudio))
+    (native-inputs (list autoconf automake libtool))
+    (inputs (list fftw ncurses pulseaudio iniparser))
     (arguments
     (arguments
-     `(#:configure-flags
-       (list (string-append "PREFIX=" %output)
-             (string-append "FONT_DIR=" %output "/share/consolefonts"))
-       #:make-flags
-       (let ((lib (string-append %output "/lib")))
-         (list (string-append "cava_LDFLAGS = -L" lib " -Wl,-rpath " lib)))
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'bootstrap
-           (lambda* (#:key outputs #:allow-other-keys)
-             (setenv "HOME" (getcwd))
-             (invoke "sh" "autogen.sh")))
-         (add-before 'build 'make-cava-ldflags
-           (lambda* (#:key outputs #:allow-other-keys)
-             (mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
-             #t))
-         (add-after 'install 'data
-           (lambda* (#:key outputs #:allow-other-keys)
-             (for-each (lambda (file)
-                         (install-file file
-                                       (string-append (assoc-ref outputs "out")
-                                                      "/share/doc/examples")))
-                       (find-files "example_files"))
-             #t)))))
+     (list #:configure-flags
+           #~(list (string-append "PREFIX="
+                                  #$output)
+                   (string-append "FONT_DIR="
+                                  #$output "/share/consolefonts"))
+           #:make-flags
+           #~(let ((lib (string-append #$output "/lib")))
+               (list (string-append "cava_LDFLAGS = -L" lib " -Wl,-rpath " lib " -lrt")))
+           #:phases
+           #~(modify-phases %standard-phases
+               (replace 'bootstrap
+                 (lambda _
+                   (setenv "HOME"
+                           (getcwd))
+                   (invoke "sh" "autogen.sh")))
+               (add-before 'build 'make-cava-ldflags
+                 (lambda _
+                   (mkdir-p (string-append #$output "/lib"))))
+               (add-after 'install 'data
+                 (lambda _
+                   (for-each (lambda (file)
+                               (install-file file
+                                             (string-append #$output
+                                              "/share/doc/examples")))
+                             (find-files "example_files")))))))
     (home-page "https://karlstav.github.io/cava/")
     (synopsis "Console audio visualizer for ALSA, MPD, and PulseAudio")
     (description "C.A.V.A. is a bar audio spectrum visualizer for the terminal
     (home-page "https://karlstav.github.io/cava/")
     (synopsis "Console audio visualizer for ALSA, MPD, and PulseAudio")
     (description "C.A.V.A. is a bar audio spectrum visualizer for the terminal
@@ -4919,50 +5059,47 @@ as is the case with audio plugins.")
         (base32 "01ngkmfcxyg1bb4qmfvlkkjbx4lx62akxqhizl8zmqnhfcy4p9bx"))))
     (build-system gnu-build-system)
     (arguments
         (base32 "01ngkmfcxyg1bb4qmfvlkkjbx4lx62akxqhizl8zmqnhfcy4p9bx"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f                      ; no "check" target
-       #:make-flags
-       (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)            ; no configure script
-         (add-before 'build 'set-CC-variable-and-show-features
-           (lambda _
-             (setenv "CC" "gcc")
-             (invoke "make" "features")))
-         (add-after 'install 'make-carla-executable
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (chmod (string-append out "/share/carla/carla") #o555)
-               #t)))
-         (add-after 'install 'wrap-executables
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (wrap-script (string-append out "/bin/carla")
-                            #:guile (search-input-file inputs "bin/guile")
-                            `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH"))))
-               #t))))))
+     (list #:tests? #f                  ; no "check" target
+           #:make-flags
+           #~(list (string-append "PREFIX=" #$output))
+           #:phases
+           #~(modify-phases %standard-phases
+               (delete 'configure)      ; no configure script
+               (add-before 'build 'set-CC-variable-and-show-features
+                 (lambda _
+                   (setenv "CC" #$(cc-for-target))
+                   (invoke "make" "features")))
+               (add-after 'install 'make-carla-executable
+                 (lambda _
+                   (chmod (string-append #$output "/share/carla/carla") #o555)))
+               (add-after 'install 'wrap-executables
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   (wrap-script (string-append #$output "/bin/carla")
+                                #:guile (search-input-file inputs "bin/guile")
+                                `("GUIX_PYTHONPATH" ":" prefix
+                                  (,(getenv "GUIX_PYTHONPATH")))))))))
     (inputs
     (inputs
-     `(("alsa-lib" ,alsa-lib)
-       ("ffmpeg" ,ffmpeg)
-       ("fluidsynth" ,fluidsynth)
-       ("file" ,file)
-       ("liblo" ,liblo)
-       ("libsndfile" ,libsndfile)
-       ("gtk2" ,gtk+-2)   ;needed for bridging GTK2 plugins in GTK3 hosts
-       ("gtk+" ,gtk+)
-       ("python-pyliblo" ,python-pyliblo)
-       ("python-pyqt" ,python-pyqt)
-       ("python-rdflib" ,python-rdflib)
-       ;; python-pyqt shows the following error without python-wrapper:
-       ;; Error while finding module specification for 'PyQt5.uic.pyuic'
-       ;; (ModuleNotFoundError: No module named 'PyQt5')
-       ("python-wrapper" ,python-wrapper)
-       ("libx11" ,libx11)
-       ("qtbase" ,qtbase-5)
-       ("zlib" ,zlib)
-
-       ;; For WRAP-SCRIPT above.
-       ("guile" ,guile-2.2)))
+     (list alsa-lib
+           ffmpeg
+           fluidsynth
+           file
+           liblo
+           libsndfile
+           libx11
+           gtk+-2              ;needed for bridging GTK2 plugins in GTK3 hosts
+           gtk+
+           python-pyliblo
+           python-pyqt
+           python-rdflib
+           ;; python-pyqt shows the following error without python-wrapper:
+           ;; Error while finding module specification for 'PyQt5.uic.pyuic'
+           ;; (ModuleNotFoundError: No module named 'PyQt5')
+           python-wrapper
+           qtbase-5
+           zlib
+
+           ;; For WRAP-SCRIPT above.
+           guile-2.2))
     (native-inputs
      (list pkg-config))
     (home-page "https://kx.studio/Applications:Carla")
     (native-inputs
      (list pkg-config))
     (home-page "https://kx.studio/Applications:Carla")
@@ -5307,11 +5444,11 @@ Rate} 3600x2250 bit/s vocoder used in various radio systems.")
            python ;for running tests
            portaudio ;for portaudio examples
            qtbase-5 ;for Qt examples
            python ;for running tests
            portaudio ;for portaudio examples
            qtbase-5 ;for Qt examples
-           qtdeclarative
-           qttools))
+           qtdeclarative-5
+           qttools-5))
     (inputs
      (list jack-1 ;for JACK examples
     (inputs
      (list jack-1 ;for JACK examples
-           qtquickcontrols)) ;for Qt examples
+           qtquickcontrols-5)) ;for Qt examples
     (propagated-inputs
      ;; This is because include/ableton/platforms/asio/AsioWrapper.hpp
      ;; contains '#include <asio.hpp>'.
     (propagated-inputs
      ;; This is because include/ableton/platforms/asio/AsioWrapper.hpp
      ;; contains '#include <asio.hpp>'.
@@ -5373,55 +5510,54 @@ while still staying in time.")
 (define-public butt
   (package
     (name "butt")
 (define-public butt
   (package
     (name "butt")
-    (version "0.1.32")
+    (version "0.1.34")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/butt/butt/butt-"
                                   version "/butt-" version ".tar.gz"))
               (sha256
                (base32
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/butt/butt/butt-"
                                   version "/butt-" version ".tar.gz"))
               (sha256
                (base32
-                "1qwllkx9p1gb3syhbbck3agrk375m82l18fb81aqygi4g3dg3s9r"))
+                "0zd1g1673pv8z437y34fllxska8dzpd7mygpham35pzwpdyc5c1p"))
               (modules '((guix build utils)))
               (snippet
                '(substitute* "src/butt.cpp"
                   ((".*zica.*") "")))))
     (build-system gnu-build-system)
     (arguments
               (modules '((guix build utils)))
               (snippet
                '(substitute* "src/butt.cpp"
                   ((".*zica.*") "")))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'install-documentation
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (manual (assoc-ref inputs "manual"))
-                    (doc (string-append out "/share/doc/" ,name "-" ,version)))
-               (install-file "README" doc)
-               (copy-file manual (string-append doc "/butt-manual.pdf"))))))))
-    (inputs
-     `(("dbus" ,dbus)
-       ("flac" ,flac)
-       ("fltk" ,fltk)
-       ("lame" ,lame)
-       ("libfdk" ,libfdk)
-       ("libsamplerate" ,libsamplerate)
-       ("libvorbis" ,libvorbis)
-       ("libx11" ,libx11)
-       ("libxext" ,libxext)
-       ("libxfixes" ,libxfixes)
-       ("libxft" ,libxft)
-       ("libxrender" ,libxrender)
-       ("ogg" ,libogg)
-       ("openssl" ,openssl)
-       ("opus" ,opus)
-       ("portaudio" ,portaudio)))
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'install 'install-documentation
+                 (lambda _
+                   (let ((doc (string-append #$output "/share/doc/" #$name)))
+                     (install-file "README" doc)
+                     (copy-file #$(this-package-native-input "manual")
+                                (string-append doc "/butt-manual.pdf"))))))))
     (native-inputs
      `(("pkg-config" ,pkg-config)
     (native-inputs
      `(("pkg-config" ,pkg-config)
-       ("manual" ,(origin
-                    (method url-fetch)
-                    (uri (string-append "https://danielnoethen.de/butt/butt-"
-                                        version "_manual.pdf"))
-                    (sha256
-                     (base32
-                      "0g70jyyxbx5nin3xs9q9zf878b2kyy7rn8gn9w91x1ychbjd6dhh"))))))
+       ("manual"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append "https://danielnoethen.de/butt/butt-"
+                               version "_manual.pdf"))
+           (sha256
+            (base32 "0kadqzzbk25n0aqxgbqhg4mq4hsbjq44phzcx5qj1b8847yzz8si"))))))
+    (inputs
+     (list dbus
+           flac
+           fltk
+           lame
+           libfdk
+           libsamplerate
+           libvorbis
+           libx11
+           libxext
+           libxfixes
+           libxft
+           libxrender
+           libogg
+           openssl
+           opus
+           portaudio))
     (home-page "https://danielnoethen.de/butt/")
     (synopsis "Audio streaming tool")
     (description "Butt is a tool to stream audio to a ShoutCast or
     (home-page "https://danielnoethen.de/butt/")
     (synopsis "Audio streaming tool")
     (description "Butt is a tool to stream audio to a ShoutCast or
@@ -5687,3 +5823,59 @@ source and extracts a 24-bit high resolution WAV file.  It handles both DST
 and DSD streams.")
    (home-page "https://tari.in/www/software/odio-sacd/")
    (license license:gpl3+)))
 and DSD streams.")
    (home-page "https://tari.in/www/software/odio-sacd/")
    (license license:gpl3+)))
+
+(define-public qpwgraph
+  (package
+    (name "qpwgraph")
+    (version "0.3.5")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.freedesktop.org/rncbc/qpwgraph")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "01f4zabn22dp0yl7szxck6gkbayk1p5iqajfgzls7mdkba7515b6"))))
+    (build-system cmake-build-system)
+    (arguments (list #:tests? #f)) ;; no tests
+    (inputs (list alsa-lib
+                  libxkbcommon
+                  pipewire-0.3
+                  qtbase
+                  qtsvg))
+    (native-inputs (list pkg-config))
+    (synopsis "PipeWire graph manager")
+    (description
+     "qpwgraph is a graph manager dedicated to PipeWire, using the Qt C++
+framework.  It provides a visual interface to audio and video connections
+managed by PipeWire.")
+    (home-page "https://gitlab.freedesktop.org/rncbc/qpwgraph")
+    (license license:gpl2)))
+
+(define-public streamripper
+  (package
+    (name "streamripper")
+    (version "1.64.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://sourceforge.net/projects/streamripper"
+                           "/files/streamripper%20(current)/"
+                           version "/streamripper-" version ".tar.gz"))
+       (sha256
+        (base32 "0hnyv3206r0rfprn3k7k6a0j959kagsfyrmyjm3gsf3vkhp5zmy1"))
+       (modules '((guix build utils)))
+       (snippet
+        ;; Delete bundled copy of libmad.
+        '(delete-file-recursively "libmad-0.15.1b"))))
+    (build-system gnu-build-system)
+    (native-inputs (list pkg-config))
+    (inputs (list faad2 glib libmad libvorbis))
+    (home-page "http://streamripper.sourceforge.net")
+    (synopsis "Record audio streams to your hard drive")
+    (description "Streamripper records shoutcast-compatible
+streams.  For shoutcast style streams it finds the “meta data” or track
+separation data, and uses that as a marker for where the track should
+be separated.")
+    (license license:gpl2+)))