projects/guix·blob javascript-team · refs

8749 lines · 331.2 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015-2026 Ricardo Wurmus <[email protected]>
3;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <[email protected]>
4;;; Copyright © 2015, 2025 Andreas Enge <[email protected]>
5;;; Copyright © 2015 Alex Kost <[email protected]>
6;;; Copyright © 2015, 2016 Mark H Weaver <[email protected]>
7;;; Copyright © 2016-2022, 2024 Efraim Flashner <[email protected]>
8;;; Copyright © 2016, 2017 Alex Griffin <[email protected]>
9;;; Copyright © 2016 Nikita <[email protected]>
10;;; Copyright © 2016 Lukas Gradl <[email protected]>
11;;; Copyright © 2016–2023 Tobias Geerinckx-Rice <[email protected]>
12;;; Copyright © 2018, 2020, 2024 Oleg Pykhalov <[email protected]>
13;;; Copyright © 2018 okapi <[email protected]>
14;;; Copyright © 2018, 2020, 2022-2026 Maxim Cournoyer <[email protected]>
15;;; Copyright © 2018 Clément Lassieur <[email protected]>
16;;; Copyright © 2018 Brett Gilio <[email protected]>
17;;; Copyright © 2018, 2019, 2022 Marius Bakke <[email protected]>
18;;; Copyright © 2018, 2021 Thorsten Wilms <[email protected]>
19;;; Copyright © 2018 Eric Bavier <[email protected]>
20;;; Copyright © 2018, 2022, 2023, 2024 Brendan Tildesley <[email protected]>
21;;; Copyright © 2019, 2021 Pierre Langlois <[email protected]>
22;;; Copyright © 2019, 2021 Leo Famulari <[email protected]>
23;;; Copyright © 2019 Rutger Helling <[email protected]>
24;;; Copyright © 2019, 2021 Arun Isaac <[email protected]>
25;;; Copyright © 2019 Mathieu Othacehe <[email protected]>
26;;; Copyright © 2019, 2020 Alexandros Theodotou <[email protected]>
27;;; Copyright © 2019 Christine Lemmer-Webber <[email protected]>
28;;; Copyright © 2019 Jan Wielkiewicz <[email protected]>
29;;; Copyright © 2019 Hartmt Goebel <[email protected]>
30;;; Copyright © 2019, 2021, 2025 Nicolas Goaziou <[email protected]>
31;;; Copyright © 2020 Vincent Legoll <[email protected]>
32;;; Copyright © 2020, 2021 Guillaume Le Vaillant <[email protected]>
33;;; Copyright © 2020 Jonathan Frederickson <[email protected]>
34;;; Copyright © 2020, 2024 Giacomo Leidi <[email protected]>
35;;; Copyright © 2020, 2021, 2023 Vinicius Monego <[email protected]>
36;;; Copyright © 2020 Michael Rohleder <[email protected]>
37;;; Copyright © 2021 jgart <[email protected]>
38;;; Copyright © 2021 Aleksandr Vityazev <[email protected]>
39;;; Copyright © 2022 Arjan Adriaanse <[email protected]>
40;;; Copyright © 2022, 2023 Juliana Sims <[email protected]>
41;;; Copyright © 2022, 2023 Simon Streit <[email protected]>
42;;; Copyright © 2022 Andy Tai <[email protected]>
43;;; Copyright © 2023 Sergiu Ivanov <[email protected]>
44;;; Copyright © 2023 David Thompson <[email protected]>
45;;; Copyright © 2023, 2025-2026 Sharlatan Hellseher <[email protected]>
46;;; Copyright © 2023 Gabriel Wicki <[email protected]>
47;;; Copyright © 2023 Zheng Junjie <[email protected]>
48;;; Copyright © 2023 Parnikkapore <[email protected]>
49;;; Copyright © 2024 hapster <[email protected]>
50;;; Copyright © 2024 mio <[email protected]>
51;;; Copyright © 2024 Nikita Domnitskii <[email protected]>
52;;; Copyright © 2024 Roman Scherer <[email protected]>
53;;; Copyright © 2024 Sughosha <[email protected]>
54;;; Copyright © 2025, 2026 Junker <[email protected]>
55;;; Copyright © 2025 Sughosha <[email protected]>
56;;; Copyright © 2025 Andrew Wong <[email protected]>
57;;; Copyright © 2025 Kjartan Oli Agustsson <[email protected]>
58;;; Copyright © 2024 Janneke Nieuwenhuizen <[email protected]>
59;;; Copyright © 2025 Antoine Côté <[email protected]>
60;;; Copyright © 2025 Isidor Zeuner <[email protected]>
61;;; Copyright © 2025 Evgenii Klimov <[email protected]>
62;;; Copyright © 2026 Luis Guilherme Coelho <[email protected]>
63;;; Copyright © 2026 Noé Lopez <[email protected]>
64;;; Copyright © 2026 Carlos Durán Domínguez <[email protected]>
65;;; Copyright © 2026 Daniel Martins <[email protected]>
66;;; Copyright © 2026 Artyom V. Poptsov <[email protected]>
67;;; Copyright © 2026 Evgeny Pisemsky <[email protected]>
68;;; Copyright © 2026 Konstantin Suntsov <[email protected]>
69;;;
70;;; This file is part of GNU Guix.
71;;;
72;;; GNU Guix is free software; you can redistribute it and/or modify it
73;;; under the terms of the GNU General Public License as published by
74;;; the Free Software Foundation; either version 3 of the License, or (at
75;;; your option) any later version.
76;;;
77;;; GNU Guix is distributed in the hope that it will be useful, but
78;;; WITHOUT ANY WARRANTY; without even the implied warranty of
79;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
80;;; GNU General Public License for more details.
81;;;
82;;; You should have received a copy of the GNU General Public License
83;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
84
85(define-module (gnu packages audio)
86 #:use-module (gnu packages)
87 #:use-module (gnu packages algebra)
88 #:use-module (gnu packages autotools)
89 #:use-module (gnu packages backup)
90 #:use-module (gnu packages base)
91 #:use-module (gnu packages bash)
92 #:use-module (gnu packages bison)
93 #:use-module (gnu packages boost)
94 #:use-module (gnu packages build-tools)
95 #:use-module (gnu packages check)
96 #:use-module (gnu packages cdrom)
97 #:use-module (gnu packages cmake)
98 #:use-module (gnu packages compression)
99 #:use-module (gnu packages cpp)
100 #:use-module (gnu packages crypto)
101 #:use-module (gnu packages curl)
102 #:use-module (gnu packages dbm)
103 #:use-module (gnu packages dns)
104 #:use-module (gnu packages documentation)
105 #:use-module (gnu packages elf)
106 #:use-module (gnu packages emacs)
107 #:use-module (gnu packages file)
108 #:use-module (gnu packages compiler-tools)
109 #:use-module (gnu packages fontutils)
110 #:use-module (gnu packages freedesktop)
111 #:use-module (gnu packages gcc)
112 #:use-module (gnu packages gettext)
113 #:use-module (gnu packages gl)
114 #:use-module (gnu packages glib)
115 #:use-module (gnu packages gnome)
116 #:use-module (gnu packages gnunet) ; libmicrohttpd
117 #:use-module (gnu packages gperf)
118 #:use-module (gnu packages graphviz)
119 #:use-module (gnu packages groff)
120 #:use-module (gnu packages gstreamer)
121 #:use-module (gnu packages gtk)
122 #:use-module (gnu packages guile)
123 #:use-module (gnu packages icu4c)
124 #:use-module (gnu packages image)
125 #:use-module (gnu packages libbsd)
126 #:use-module (gnu packages libffi)
127 #:use-module (gnu packages libusb)
128 #:use-module (gnu packages linphone)
129 #:use-module (gnu packages linux)
130 #:use-module (gnu packages llvm)
131 #:use-module (gnu packages logging)
132 #:use-module (gnu packages machine-learning)
133 #:use-module (gnu packages man)
134 #:use-module (gnu packages maths)
135 #:use-module (gnu packages mp3) ;taglib
136 #:use-module (gnu packages multiprecision)
137 #:use-module (gnu packages music)
138 #:use-module (gnu packages ncurses)
139 #:use-module (gnu packages networking)
140 #:use-module (gnu packages onc-rpc)
141 #:use-module (gnu packages oneapi)
142 #:use-module (gnu packages perl)
143 #:use-module (gnu packages pkg-config)
144 #:use-module (gnu packages pulseaudio) ;libsndfile, libsamplerate
145 #:use-module (gnu packages pretty-print)
146 #:use-module (gnu packages python)
147 #:use-module (gnu packages python-build)
148 #:use-module (gnu packages python-check)
149 #:use-module (gnu packages python-crypto)
150 #:use-module (gnu packages python-science)
151 #:use-module (gnu packages python-web)
152 #:use-module (gnu packages python-xyz)
153 #:use-module (gnu packages qt)
154 #:use-module (gnu packages rdf)
155 #:use-module (gnu packages readline)
156 #:use-module (gnu packages ruby)
157 #:use-module (gnu packages samba)
158 #:use-module (gnu packages sdl)
159 #:use-module (gnu packages serialization)
160 #:use-module (gnu packages sphinx)
161 #:use-module (gnu packages sqlite)
162 #:use-module (gnu packages telephony)
163 #:use-module (gnu packages tex)
164 #:use-module (gnu packages tls)
165 #:use-module (gnu packages toolkits)
166 #:use-module (gnu packages valgrind)
167 #:use-module (gnu packages version-control)
168 #:use-module (gnu packages video)
169 #:use-module (gnu packages vim) ;xxd
170 #:use-module (gnu packages web)
171 #:use-module (gnu packages webkit)
172 #:use-module (gnu packages wine)
173 #:use-module (gnu packages wxwidgets)
174 #:use-module (gnu packages xdisorg)
175 #:use-module (gnu packages xiph)
176 #:use-module (gnu packages xml)
177 #:use-module (gnu packages xorg)
178 #:use-module (guix build-system cargo)
179 #:use-module (guix build-system cmake)
180 #:use-module (guix build-system copy)
181 #:use-module (guix build-system glib-or-gtk)
182 #:use-module (guix build-system gnu)
183 #:use-module (guix build-system meson)
184 #:use-module (guix build-system pyproject)
185 #:use-module (guix build-system qt)
186 #:use-module (guix build-system trivial)
187 #:use-module (guix build-system waf)
188 #:use-module (guix download)
189 #:use-module (guix gexp)
190 #:use-module (guix git-download)
191 #:use-module ((guix licenses) #:prefix license:)
192 #:use-module (guix packages)
193 #:use-module (guix utils)
194 #:use-module (srfi srfi-1)
195 #:use-module (srfi srfi-26)
196 #:use-module (ice-9 match))
197
198(define-public adplug
199 (package
200 (name "adplug")
201 (version "2.4")
202 (source (origin
203 (method git-fetch)
204 (uri (git-reference
205 (url "https://github.com/adplug/adplug")
206 (commit (string-append "adplug-" version))))
207 (file-name (git-file-name name version))
208 (sha256
209 (base32
210 "0l31ya42g3q7ry2m0y5djgjb9ax8ciy8jn86252vdjkjswwqgscd"))))
211 (build-system cmake-build-system)
212 (arguments
213 (list #:configure-flags
214 #~(list "-DBUILD_SHARED_LIBS=ON")
215 #:modules
216 '((guix build cmake-build-system)
217 (guix build utils)
218 (srfi srfi-26)) ;for cute
219 #:phases
220 #~(modify-phases %standard-phases
221 (add-after 'install 'install-headers
222 (lambda _
223 (for-each (cute install-file <>
224 (string-append #$output "/include/adplug"))
225 (find-files "../source/src" "\\.h$")))))))
226 (propagated-inputs
227 (list libbinio))
228 (home-page "https://adplug.github.io/")
229 (synopsis "AdLib sound player library")
230 (description
231 "AdPlug is a hardware independent AdLib sound player library, mainly
232written in C++. AdPlug plays sound data, originally created for the AdLib
233(OPL2/3) audio board, on top of an OPL2/3 emulator or by using the real
234hardware. No OPL2/3 chips are required for playback.")
235 (license license:lgpl2.1+)))
236
237(define-public opensles
238 (package
239 (name "opensles")
240 (version "1.1.0")
241 (source
242 (origin
243 (method git-fetch)
244 (uri
245 (git-reference
246 (url "https://github.com/KhronosGroup/OpenSL-ES-Registry")
247 (commit "ea5104bf37bf525c25e6ae2386586048179d0fda")))
248 (file-name (git-file-name name version))
249 (sha256
250 (base32 "0j5bm7h3ahz66f23i9abwc0y10agfkpksnj6y078x2nichq66h4f"))
251 (patches
252 (search-patches "opensles-add-license-file.patch"))))
253 (build-system copy-build-system)
254 (arguments
255 `(#:phases
256 (modify-phases %standard-phases
257 (add-after 'install 'clean
258 (lambda* (#:key outputs #:allow-other-keys)
259 (let* ((out (assoc-ref outputs "out")))
260 (mkdir-p (string-append out "/etc"))
261 (mkdir-p (string-append out "/include"))
262 (mkdir-p (string-append out "/share"))
263 (rename-file
264 (string-append out "/api/1.1/OpenSLES_IID.c")
265 (string-append out "/etc/OpenSLES_IID.c"))
266 (rename-file
267 (string-append out "/api/1.1/OpenSLES.h")
268 (string-append out "/include/OpenSLES.h"))
269 (rename-file
270 (string-append out "/api/1.1/OpenSLES_Platform.h")
271 (string-append out "/include/OpenSLES_Platform.h"))
272 (rename-file
273 (string-append out "/api/1.1/README.txt")
274 (string-append out "/share/README.txt"))
275 (rename-file
276 (string-append out "/LICENSE.txt")
277 (string-append out "/share/LICENSE.txt"))
278 (for-each delete-file-recursively
279 (list
280 (string-append out "/api")
281 (string-append out "/specs")))
282 (for-each delete-file
283 (list
284 (string-append out "/CODE_OF_CONDUCT.md")
285 (string-append out "/index.php")
286 (string-append out "/README.md"))))
287 #t)))))
288 (synopsis "Embedded Audio Acceleration")
289 (description "OpenSLES is a royalty-free, cross-platform,
290hardware-accelerated audio API tuned for embedded systems. It provides a
291standardized, high-performance, low-latency method to access audio
292functionality for developers of native applications on embedded mobile
293multimedia devices, enabling straightforward cross-platform deployment of
294hardware and software audio capabilities, reducing implementation effort, and
295promoting the market for advanced audio.")
296 (home-page "https://www.khronos.org/opensles/")
297 (license (license:non-copyleft "file:///LICENSE.txt"))))
298
299(define-public python-sounddevice
300 (package
301 (name "python-sounddevice")
302 (version "0.5.3")
303 (source
304 (origin
305 (method url-fetch)
306 (uri (pypi-uri "sounddevice" version))
307 (sha256
308 (base32 "0b4vcaj79sy9aqsrgcszkp35x2fc0i4pqzk96d2viflg35h2pb6b"))))
309 (build-system pyproject-build-system)
310 (arguments
311 (list #:tests? #false ; no tests
312 #:phases
313 #~(modify-phases %standard-phases
314 (add-after 'patch-generated-file-shebangs 'add-path-to-portaudio
315 (lambda* (#:key inputs #:allow-other-keys)
316 (substitute* "sounddevice.py"
317 (("_find_library\\(_libname\\)")
318 (string-append "\""
319 (search-input-file inputs
320 "/lib/libportaudio.so.2")
321 "\""))))))))
322 (inputs (list portaudio))
323 (propagated-inputs (list python-cffi python-numpy))
324 (native-inputs (list python-setuptools))
325 (home-page "https://python-sounddevice.readthedocs.io/")
326 (synopsis "Play and record sound with Python")
327 (description "This Python module provides bindings for the PortAudio
328library and a few convenience functions to play and record NumPy arrays
329containing audio signals.")
330 (license license:expat)))
331
332(define-public wildmidi
333 (package
334 (name "wildmidi")
335 (version "0.4.6")
336 (source
337 (origin
338 (method git-fetch)
339 (uri
340 (git-reference
341 (url "https://github.com/Mindwerks/wildmidi")
342 (commit (string-append name "-" version))))
343 (file-name (git-file-name name version))
344 (sha256
345 (base32 "0cc8vg2alyzakmm132vljx228arisqcnfqh8xyjnnczr5vryqa5k"))))
346 (build-system cmake-build-system)
347 (arguments
348 `(#:tests? #f ; No target
349 #:configure-flags
350 (list
351 "-DWANT_ALSA=ON"
352 "-DWANT_OSS=ON"
353 "-DWANT_OPENAL=ON")))
354 (inputs
355 `(("alsa" ,alsa-lib)
356 ("openal" ,openal)))
357 (synopsis "Software Synthesizer")
358 (description "WildMIDI is a simple software midi player which has a core
359softsynth library that can be used with other applications.")
360 (home-page "https://www.mindwerks.net/projects/wildmidi/")
361 (license
362 (list
363 ;; Library.
364 license:lgpl3+
365 ;; Player.
366 license:gpl3+))))
367
368(define-public alsa-midi-latency-test
369 (let ((version "0.0.5")
370 (revision "0")
371 (commit "07e43f8a1e6fd6d3bd97a00f2ee5afb74cb66f95"))
372 (package
373 (name "alsa-midi-latency-test")
374 (version (git-version version revision commit))
375 (source
376 (origin
377 (method git-fetch)
378 (uri (git-reference
379 (url "https://github.com/koppi/alsa-midi-latency-test")
380 (commit commit)))
381 (file-name (git-file-name name version))
382 (sha256
383 (base32 "0b3xd4z7zx6mmh6q2q7wnyd0hzikny2cikwzhaab3q86b551vb9n"))))
384 (build-system gnu-build-system)
385 (arguments
386 (list
387 #:tests? #f ;there are no tests
388 #:phases #~(modify-phases %standard-phases
389 (replace 'bootstrap
390 (lambda _
391 (invoke "sh" "./autogen.sh"))))))
392 (native-inputs (list automake autoconf libtool))
393 (inputs (list alsa-lib))
394 (synopsis "Measure the roundtrip time of MIDI messages")
395 (description
396 "@code{alsa-midi-latency-test} measures the roundtrip time of a MIDI
397message in the alsa subsystem of the Linux kernel using a high precision timer.
398It calculates the worst case roundtrip time of all sent MIDI messages and
399displays a histogram of the roundtrip time jitter.")
400 (home-page "https://github.com/koppi/alsa-midi-latency-test")
401 (license license:gpl2+))))
402
403(define-public webrtc-audio-processing
404 (package
405 (name "webrtc-audio-processing")
406 (version "2.1")
407 (source
408 (origin
409 (method url-fetch)
410 (uri
411 (string-append "http://freedesktop.org/software/pulseaudio/"
412 name "/" name "-" version ".tar.gz"))
413 (sha256
414 (base32 "0lrjzhshwj1rkh4fxh7sq2dkkfimlyjs2ha7s3ribsh2dnc6ps1m"))
415 (patches (search-patches "webrtc-audio-processing-abseil-cpp.patch"
416 "webrtc-audio-processing-gcc-14.patch"))))
417 (build-system meson-build-system)
418 (arguments
419 (list #:configure-flags (if (target-x86-32?)
420 #~(list "-Dinline-sse=false")
421 #~'())))
422 (native-inputs (list pkg-config))
423 (propagated-inputs (list abseil-cpp))
424 (synopsis "WebRTC's Audio Processing Library")
425 (description "WebRTC-Audio-Processing library based on Google's
426implementation of WebRTC.")
427 (home-page
428 "https://freedesktop.org/software/pulseaudio/webrtc-audio-processing/")
429 (license (license:non-copyleft "file:///COPYING"))))
430
431;; webrtc-audio-processing doesn't a have stable API, so we need to multiple
432;; versions of it.
433(define-public webrtc-audio-processing-0.3
434 (package
435 (inherit webrtc-audio-processing)
436 (version "0.3.1")
437 (source
438 (origin
439 (method url-fetch)
440 (uri
441 (string-append "http://freedesktop.org/software/pulseaudio/"
442 "webrtc-audio-processing/webrtc-audio-processing-"
443 version ".tar.xz"))
444 (sha256
445 (base32 "1gsx7k77blfy171b6g3m0k0s0072v6jcawhmx1kjs9w5zlwdkzd0"))
446 (patches (search-patches "webrtc-audio-processing-big-endian.patch"))))
447 (build-system gnu-build-system)
448 (arguments
449 (if (or (target-riscv64?)
450 (target-powerpc?))
451 (list
452 #:phases
453 #~(modify-phases %standard-phases
454 (add-after 'unpack 'patch-source
455 (lambda* (#:key inputs #:allow-other-keys)
456 (substitute* "webrtc/typedefs.h"
457 (("defined\\(__aarch64__\\)" all)
458 (string-append
459 ;; powerpc-linux
460 "(defined(__PPC__) && __SIZEOF_SIZE_T__ == 4)\n"
461 "#define WEBRTC_ARCH_32_BITS\n"
462 "#define WEBRTC_ARCH_BIG_ENDIAN\n"
463 ;; powerpc64-linux
464 "#elif (defined(__PPC64__) && defined(_BIG_ENDIAN))\n"
465 "#define WEBRTC_ARCH_64_BITS\n"
466 "#define WEBRTC_ARCH_BIG_ENDIAN\n"
467 ;; aarch64-linux
468 "#elif " all
469 ;; riscv64-linux
470 " || (defined(__riscv) && __riscv_xlen == 64)"
471 ;; powerpc64le-linux
472 " || (defined(__PPC64__) && defined(_LITTLE_ENDIAN))")))))))
473 '()))
474 (native-inputs (list pkg-config))))
475
476(define-public vo-aacenc
477 (package
478 (name "vo-aacenc")
479 (version "0.1.3")
480 (source
481 (origin
482 (method url-fetch)
483 (uri
484 (string-append "https://sourceforge.net/projects/opencore-amr/files/"
485 name "/" name "-" version ".tar.gz"))
486 (sha256
487 (base32 "0dhghm3c8pqrriwwyj5x9i0yf52fmdfijbgqqkvqvwarldvp86p5"))))
488 (build-system gnu-build-system)
489 (synopsis "VisualOn AAC Encoder")
490 (description "VO-AACENC is the VisualOn implementation of Advanced Audio
491Coding (AAC) encoder.")
492 (home-page "https://sourceforge.net/projects/opencore-amr/")
493 (license license:asl2.0)))
494
495(define-public tinyalsa
496 (package
497 (name "tinyalsa")
498 (version "2.0.0")
499 (source
500 (origin
501 (method git-fetch)
502 (uri
503 (git-reference
504 (url "https://github.com/tinyalsa/tinyalsa")
505 (commit (string-append "v" version))))
506 (file-name (git-file-name name version))
507 (sha256
508 (base32 "1p9khz3bdpdcrnc9p6w522a0ankdchj4nxd3ki41z9401rxmnljq"))))
509 (build-system gnu-build-system)
510 (arguments
511 `(#:tests? #f ; No target
512 #:phases
513 (modify-phases %standard-phases
514 (delete 'configure))
515 #:make-flags
516 (list
517 (string-append "PREFIX=" (assoc-ref %outputs "out")))))
518 (synopsis "ALSA interfacing library")
519 (description "TinyALSA is a small library to interface with ALSA in the
520Linux kernel.")
521 (home-page "https://github.com/tinyalsa/tinyalsa")
522 (license (license:non-copyleft "file:///NOTICE"))))
523
524(define-public fmsynth-lv2
525 (let ((commit "b989b5c0efd46b312ce4edd89808d34dc5135bb4")
526 (revision "0"))
527 (package
528 (name "fmsynth-lv2")
529 (version (git-version "0.0.0" revision commit))
530 (source (origin
531 (method git-fetch)
532 (uri (git-reference
533 (url "https://github.com/Themaister/libfmsynth")
534 (commit commit)))
535 (file-name (git-file-name name version))
536 (sha256
537 (base32
538 "0nck4ih0rxyr8b2vw6m119lybfnmzmas859m784i73ind3rcy44k"))))
539 (properties '((tunable? . #true)))
540 (build-system gnu-build-system)
541 (arguments
542 (list
543 #:tests? #false ;no check target
544 #:make-flags
545 #~(list "CC=gcc"
546 (string-append "INSTALL_DIR=" #$output "/lib/lv2"))
547 #:phases
548 #~(modify-phases %standard-phases
549 (add-after 'unpack 'do-not-tune
550 (lambda _
551 (substitute* "GNUmakefile"
552 (("-march=native") ""))))
553 (add-after 'do-not-tune 'chdir
554 (lambda _ (chdir "lv2")))
555 (add-before 'install 'make-target-directory
556 (lambda _
557 (mkdir-p (string-append #$output "/lib/lv2"))))
558 (delete 'configure))))
559 (inputs (list gtkmm-2 lv2 lvtk))
560 (native-inputs (list pkg-config))
561 (home-page "https://github.com/Themaister/libfmsynth")
562 (synopsis "Frequency modulation synthesizer plugin")
563 (description
564 "fmsynth is an LV2 plugin which implements an @dfn{FM} (Frequency
565Modulation) synthesizer. Unlike most FM synth implementations in software,
566this FM synthesizer does not aim to emulate or replicate a particular
567synth (like DX7) or FM chip.")
568 (license license:expat))))
569
570(define-public libgme
571 (package
572 (name "libgme")
573 (version "0.6.5")
574 (source
575 (origin
576 (method git-fetch)
577 (uri
578 (git-reference
579 (url "https://github.com/libgme/game-music-emu")
580 (commit version)))
581 (file-name (git-file-name name version))
582 (sha256
583 (base32 "093pz3avnj6a230bqbwwzqlzcjxnxidfxipnn7zirwp3h396szff"))))
584 (build-system cmake-build-system)
585 (arguments
586 '(#:tests? #f ;no check target
587
588 ;; XXX: Building with '-fsanitize=undefined' leads to embedded C++ STL
589 ;; header file names in libgme.so, meaning that libgme retains a
590 ;; reference to GCC. Disable UBSAN to avoid that.
591 #:configure-flags '("-DENABLE_UBSAN=OFF")))
592 (home-page "https://github.com/libgme/game-music-emu/wiki")
593 (synopsis "Video game music file playback library")
594 (description
595 "Game-music-emu is a collection of video game music file emulators that
596support the following formats and systems:
597@table @code
598@item AY
599ZX Spectrum/Asmtrad CPC
600@item GBS
601Nintendo Game Boy
602@item GYM
603Sega Genesis/Mega Drive
604@item HES
605NEC TurboGrafx-16/PC Engine
606@item KSS
607MSX Home Computer/other Z80 systems (doesn't support FM sound)
608@item NSF/NSFE
609Nintendo NES/Famicom (with VRC 6, Namco 106, and FME-7 sound)
610@item SAP
611Atari systems using POKEY sound chip
612@item SPC
613Super Nintendo/Super Famicom
614@item VGM/VGZ
615Sega Master System/Mark III, Sega Genesis/Mega Drive, BBC Micro
616@end table")
617 (license (list license:lgpl2.1+
618 ;; demo and player directories are under the Expat license
619 license:expat))))
620
621(define-public libopenmpt
622 (package
623 (name "libopenmpt")
624 (version "0.7.12")
625 (source
626 (origin
627 (method url-fetch)
628 (uri
629 (string-append "https://download.openmpt.org/archive/libopenmpt/src/"
630 "libopenmpt-" version "+release.autotools.tar.gz"))
631 (sha256
632 (base32 "160cbvbzv8wc9jlclfbxycr31h40dh14z56cnljya096czikravr"))))
633 (build-system gnu-build-system)
634 (arguments
635 `(#:configure-flags
636 (list (string-append "--docdir=" (assoc-ref %outputs "out")
637 "/share/doc/" ,name "-" ,version))
638 #:phases
639 (modify-phases %standard-phases
640 (add-after 'install 'delete-static-libraries
641 (lambda* (#:key outputs #:allow-other-keys)
642 (let* ((out (assoc-ref outputs "out"))
643 (lib (string-append out "/lib")))
644 (for-each delete-file (find-files lib "\\.a$"))
645 #t))))))
646 (native-inputs
647 (list doxygen perl pkg-config))
648 (inputs
649 `(("alsa" ,alsa-lib)
650 ("flac" ,flac)
651 ("portaudio" ,portaudio)
652 ("pulseaudio" ,pulseaudio)
653 ("sdl2" ,sdl2)
654 ("sndfile" ,libsndfile)))
655 (propagated-inputs
656 ;; In Requires.private
657 (list libogg libvorbis libmpg123 zlib))
658 (synopsis "Audio tracking library")
659 (description "LibOpenMPT is a cross-platform C++ and C module playback
660library. It is based on the player code of the Open ModPlug Tracker project.")
661 (home-page "https://openmpt.org/")
662 (license (license:non-copyleft "file:///LICENSE"))))
663
664(define-public libofa
665 (package
666 (name "libofa")
667 (version "0.9.3")
668 (source
669 (origin
670 (method url-fetch)
671 (uri
672 (string-append "https://storage.googleapis.com/"
673 "google-code-archive-downloads/v2/code.google.com/"
674 "musicip-libofa/" name "-" version ".tar.gz"))
675 (sha256
676 (base32 "184ham039l7lwhfgg0xr2vch2xnw1lwh7sid432mh879adhlc5h2"))
677 (patches
678 (search-patches
679 "libofa-ftbfs-1.diff"
680 "libofa-curl.diff"
681 "libofa-ftbfs-2.diff"))))
682 (build-system gnu-build-system)
683 (native-inputs
684 (list pkg-config))
685 (inputs
686 (list curl expat))
687 (propagated-inputs
688 (list fftw))
689 (synopsis "Open Fingerprint Architecture")
690 (description "LibOFA is an audio fingerprint library, created and provided
691by MusicIP.")
692 (home-page "https://code.google.com/archive/p/musicip-libofa/")
693 (license license:gpl2+)))
694
695(define-public libtimidity
696 (package
697 (name "libtimidity")
698 (version "0.2.7")
699 (source
700 (origin
701 (method url-fetch)
702 (uri
703 (string-append "https://sourceforge.net/projects/" name "/files/"
704 name "/" version "/" name "-" version ".tar.gz"))
705 (sha256
706 (base32 "0sif6lxa058b1mg19zwjm8rl2sg8cg0443k4dgi65clz0jy7qi16"))))
707 (build-system gnu-build-system)
708 (arguments
709 `(#:tests? #f)) ; XXX: LibTiMidity could not be initialised
710 (native-inputs
711 (list pkg-config))
712 (inputs
713 (list ao))
714 (synopsis "MIDI to WAVE converter library")
715 (description "LibTiMidity is a MIDI to WAVE converter library that uses
716Gravis Ultrasound-compatible patch files to generate digital audio data from
717General MIDI files.")
718 (home-page "https://libtimidity.sourceforge.net/")
719 (license
720 ;; This project is dual-licensed.
721 ;; Either of the following licenses can be exercised.
722 (list
723 license:lgpl2.1+
724 license:artistic2.0))))
725
726(define-public vo-amrwbenc
727 (package
728 (name "vo-amrwbenc")
729 (version "0.1.3")
730 (source
731 (origin
732 (method url-fetch)
733 (uri
734 (string-append "https://sourceforge.net/projects/opencore-amr/files/"
735 name "/" name "-" version ".tar.gz"))
736 (sha256
737 (base32 "0klx3nkidc6b8aawchpk19n3xlrzgnc046w4gd0rdqphw28v6ljn"))))
738 (build-system gnu-build-system)
739 (synopsis "Adaptive Multi Rate Codec")
740 (description "VO-AMR is a library of VisualOn implementation of
741Adaptive Multi Rate Narrowband and Wideband (AMR-NB and AMR-WB) speech codec.")
742 (home-page "https://sourceforge.net/projects/opencore-amr/")
743 (license license:asl2.0)))
744
745(define-public opencore-amr
746 (package
747 (name "opencore-amr")
748 (version "0.1.5")
749 (source
750 (origin
751 (method url-fetch)
752 (uri
753 (string-append "https://sourceforge.net/projects/opencore-amr/files/"
754 name "/" name "-" version ".tar.gz"))
755 (sha256
756 (base32 "0hfk9khz3by0119h3jdwgdfd7jgkdbzxnmh1wssvylgnsnwnq01c"))))
757 (build-system gnu-build-system)
758 (synopsis "Adaptive Multi Rate Codec")
759 (description "OpenCore-AMR is a library of OpenCORE Framework
760implementation of Adaptive Multi Rate Narrowband and Wideband
761(AMR-NB and AMR-WB) speech codec.")
762 (home-page "https://sourceforge.net/projects/opencore-amr/")
763 (license license:asl2.0)))
764
765(define-public alsa-modular-synth
766 (package
767 (name "alsa-modular-synth")
768 (version "2.2.1")
769 (source (origin
770 (method url-fetch)
771 (uri (string-append "mirror://sourceforge/alsamodular/alsamodular"
772 "/" version "/ams-" version ".tar.bz2"))
773 (sha256
774 (base32
775 "0l8lwa4wfw98fgidzwkmg0zzq60djrpfg6znzrpfxhr9x23149ps"))))
776 (build-system gnu-build-system)
777 (inputs
778 (list alsa-lib
779 ;; We cannot use zita-alsa-pcmi (the successor of clalsadrv) due to
780 ;; license incompatibility.
781 clalsadrv
782 fftw
783 jack-1
784 ladspa
785 liblo
786 qtbase-5))
787 (native-inputs
788 (list pkg-config qttools-5))
789 (home-page "https://alsamodular.sourceforge.net/")
790 (synopsis "Realtime modular synthesizer and effect processor")
791 (description
792 "AlsaModularSynth is a digital implementation of a classical analog
793modular synthesizer system. It uses virtual control voltages to control the
794parameters of the modules. The control voltages which control the frequency
795e.g. of the VCO (Voltage Controlled Oscillator) and VCF (Voltage Controlled
796Filter) modules follow the convention of 1V / Octave.")
797 (license license:gpl2)))
798
799(define-public aubio
800 (package
801 (name "aubio")
802 (version "0.4.9")
803 (source (origin
804 (method url-fetch)
805 (uri (string-append
806 "https://aubio.org/pub/aubio-" version ".tar.bz2"))
807 (sha256
808 (base32
809 "1npks71ljc48w6858l9bq30kaf5nph8z0v61jkfb70xb9np850nl"))
810 (patches (search-patches "aubio-waflib-python312-compat.patch"))))
811 (build-system waf-build-system)
812 (arguments
813 (list
814 #:tests? #f ; no check target
815 #:configure-flags
816 #~(list
817 (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib")
818 "--enable-fftw3f"
819 "--enable-jack"
820 "--enable-sndfile"
821 "--enable-samplerate"
822 "--enable-avcodec")
823 #:phases
824 '(modify-phases %standard-phases
825 (add-after 'unpack 'python3.11-compatibility
826 (lambda _
827 (substitute* '("waflib/Context.py"
828 "waflib/ConfigSet.py")
829 (("'rU'") "'r'")))))))
830 (inputs
831 (list jack-2
832 libsndfile
833 libsamplerate
834 ffmpeg-4 ;for libavcodec
835 fftwf))
836 (native-inputs
837 (list pkg-config))
838 (home-page "https://aubio.org/")
839 (synopsis "Library for audio labelling")
840 (description
841 "aubio is a tool designed for the extraction of annotations from audio
842signals. Its features include segmenting a sound file before each of its
843attacks, performing pitch detection, tapping the beat and producing MIDI
844streams from live audio.")
845 (license license:gpl3+)))
846
847(define-public dexed
848 (package
849 (name "dexed")
850 (version "1.0.1")
851 (source (origin
852 (method git-fetch)
853 (uri (git-reference
854 (url "https://github.com/asb2m10/dexed")
855 (commit (string-append "v" version))
856 ;; This is a JUCE project and so it bundles a particular
857 ;; version of the JUCE repository and the sources of
858 ;; other libraries.
859 (recursive? #true)))
860 (file-name (git-file-name name version))
861 (sha256
862 (base32
863 "1n604cvkjs11wqnaxnqzx8fgjj1klz85fnka15nnmhz49lqdlipl"))))
864 (build-system cmake-build-system)
865 (arguments
866 (list
867 #:tests? #false ;there are none
868 #:modules '((guix build utils)
869 (guix build cmake-build-system)
870 (guix base32)
871 (ice-9 string-fun)
872 (ice-9 regex)
873 (rnrs bytevectors))
874 #:imported-modules `((guix base32)
875 (guix build cmake-build-system)
876 ,@%default-gnu-imported-modules)
877 #:configure-flags
878 ;; We extract the build identifer from the output prefix. This is more
879 ;; useful than setting it to a constant string.
880 #~(let ((build-id
881 (lambda (out)
882 (let* ((nix-store (string-append
883 (or (getenv "NIX_STORE") "/gnu/store")
884 "/"))
885 (filename
886 (string-replace-substring out nix-store ""))
887 (hash (match:substring (string-match "[0-9a-z]{32}"
888 filename)))
889 (bv (nix-base32-string->bytevector hash)))
890 (format #f "0x~x"
891 (bytevector-u32-ref bv 0 (endianness big)))))))
892 (list (string-append "-DBUILD_ID=" (build-id #$output))))
893 #:phases
894 #~(modify-phases %standard-phases
895 ;; HOME must be defined for .vst3
896 (add-after 'unpack 'set-home-directory
897 (lambda _ (setenv "HOME" "HOME")))
898 (add-after 'unpack 'patch-libraries
899 (lambda* (#:key inputs #:allow-other-keys)
900 (substitute* "libs/JUCE/modules/juce_gui_basics/native/juce_XSymbols_linux.h"
901 (("libX11.so.6")
902 (search-input-file inputs "/lib/libX11.so.6"))
903 (("libXext.so.6")
904 (search-input-file inputs "/lib/libXext.so.6"))
905 (("libXcursor.so.1")
906 (search-input-file inputs "/lib/libXcursor.so.1"))
907 (("libXinerama.so.1")
908 (search-input-file inputs "/lib/libXinerama.so.1"))
909 (("libXrender.so.1")
910 (search-input-file inputs "/lib/libXrender.so.1"))
911 (("libXrandr.so.2")
912 (search-input-file inputs "/lib/libXrandr.so.2")))))
913 (add-after 'unpack 'enable-lv2-format
914 (lambda _
915 (substitute* "Source/CMakeLists.txt"
916 (("set\\(DEXED_JUCE_FORMATS Standalone\\).*" m)
917 (string-append m "
918if(NOT DEXED_SKIP_LV2)
919 list(APPEND DEXED_JUCE_FORMATS LV2)
920endif()
921"))
922 (("PRODUCT_NAME \"Dexed\".*" m)
923 (string-append m "
924LV2URI \"https://github.com/asb2m10/dexed\"
925")))))
926 (replace 'install
927 (lambda* (#:key build-type #:allow-other-keys)
928 (with-directory-excursion "Source/Dexed_artefacts"
929 (install-file (string-append build-type "/Standalone/Dexed")
930 (string-append #$output "/bin"))
931 (mkdir-p (string-append #$output:clap "/lib"))
932 (copy-recursively (string-append build-type "/CLAP")
933 (string-append #$output:clap "/lib"))
934 (mkdir-p (string-append #$output:lv2 "/lib"))
935 (copy-recursively (string-append build-type "/LV2")
936 (string-append #$output:lv2 "/lib"))
937 (mkdir-p (string-append #$output:vst3 "/lib"))
938 (copy-recursively (string-append build-type "/VST3")
939 (string-append #$output:vst3 "/lib"))))))))
940 (inputs
941 (list alsa-lib
942 freetype
943 gtk+
944 jack-2
945 libx11
946 libxcursor
947 libxext
948 libxinerama
949 libxrandr
950 libxrender
951 lv2
952 mesa))
953 (native-inputs
954 (list pkg-config))
955 (outputs '("out" "lv2" "clap" "vst3"))
956 (home-page "https://asb2m10.github.io/dexed/")
957 (synopsis "Frequency modulation (FM) plugin synthesizer")
958 (description
959 "Dexed is a multi-platform, multi-format plugin synthesizer. The sound
960engine is closely modeled on the original Yamaha DX7 characteristics. Dexed
961is also a MIDI cartridge librarian/manager for the DX7. Features include:
962
963@enumerate
964@item 144 DAW automatable DX7 parameters available from one single panel;
965@item It fully supports DX7 input and output Sysex messages; including
966 controller change. This means that you can use this with a native DX7/TX7 as
967 a patch editor and sysex manager.
968@item Every FM operator has a realtime VU meter to know which one is active.
969@item It can load/save any DX7/TX7 sysex programs. It is also possible to
970 save a single program into a different sysex file.
971@end enumerate
972
973Dexed can be configured to use some of the original math limitation of a DX
974synthesizer. This does not only apply to the DAC, it also involves the bit
975resolution of the sine waves and the way that the amplitude is applied to each
976operator. Dexed comes with three engine types:
977
978@enumerate
979@item Modern: this is the original 24-bit implementation.
980@item Mark I: Based on the OPL Series but at a higher resolution (LUT are
981 10-bits). The target of this engine is to be closest to the real DX7.
982@item OPL Series: this is an experimental 8-bit implementation of the reversed
983 engineered OPL family chips.
984@end enumerate
985")
986 (license license:gpl3+)))
987
988(define-public dsp
989 (package
990 (name "dsp")
991 (version "2.0")
992 (source (origin
993 (method git-fetch)
994 (uri (git-reference
995 (url "https://github.com/bmc0/dsp")
996 (commit (string-append "v" version))))
997 (file-name (git-file-name name version))
998 (sha256
999 (base32
1000 "1kzjv972qbvzh7nml3brrdf6qmjmcapldbikbn2gxhpmkgxzhhar"))))
1001 (build-system gnu-build-system)
1002 (arguments
1003 (list
1004 #:tests? #false ;no tests
1005 #:make-flags
1006 #~(list (string-append "CC=" #$(cc-for-target)))
1007 #:phases
1008 #~(modify-phases %standard-phases
1009 (replace 'configure
1010 (lambda _
1011 (invoke "sh" "configure"
1012 (string-append "--prefix=" #$output)
1013 "--disable-pulse"))))))
1014 (inputs
1015 (list alsa-lib
1016 ao
1017 ffmpeg
1018 ladspa
1019 libmad
1020 libsndfile
1021 fftw
1022 fftwf
1023 zita-convolver))
1024 (native-inputs
1025 (list libtool pkg-config))
1026 (home-page "https://github.com/bmc0/dsp")
1027 (synopsis "Audio processing program with an interactive mode")
1028 (description
1029 "dsp is an audio processing program with an interactive mode.")
1030 (license license:isc)))
1031
1032(define-public qm-dsp
1033 (package
1034 (name "qm-dsp")
1035 (version "1.7.1")
1036 (source (origin
1037 (method git-fetch)
1038 (uri (git-reference
1039 (url "https://github.com/c4dm/qm-dsp")
1040 (commit (string-append "v" version))))
1041 (file-name (git-file-name name version))
1042 (sha256
1043 (base32
1044 "1vkb1xr2hjcaw88gig7rknlwsx01lm0w94d2z0rk5vz9ih4fslvv"))))
1045 (build-system gnu-build-system)
1046 (arguments
1047 (list
1048 #:make-flags
1049 #~(list #$(string-append "-f" "build/"
1050 (match (or (%current-target-system)
1051 (%current-system))
1052 ("x86_64-linux" "linux/Makefile.linux64")
1053 ("i686-linux" "linux/Makefile.linux32")
1054 (target
1055 (if (string-suffix? "-mingw32" target)
1056 "mingw32/Makefile.mingw32"
1057 "general/Makefile.inc"))))
1058 (string-append "CC=" #$(cc-for-target)))
1059 #:phases
1060 #~(modify-phases %standard-phases
1061 (delete 'configure) ;no configure script
1062 (replace 'install
1063 (lambda* (#:key outputs #:allow-other-keys)
1064 (let* ((lib (string-append #$output "/lib"))
1065 (include (string-append #$output "/include")))
1066 (install-file "libqm-dsp.a" lib)
1067 (mkdir-p include)
1068 (for-each (lambda (file)
1069 (unless (or (string-prefix? "./build" file)
1070 (string-prefix? "./include" file))
1071 (install-file file (string-append include "/"
1072 (dirname file)))))
1073 (find-files "." "\\.h$"))))))
1074 #:test-target "tests"))
1075 (home-page "https://code.soundsoftware.ac.uk/projects/qm-dsp")
1076 (synopsis "C++ library of functions for DSP and Music Informatics purposes")
1077 (description
1078 "QM-DSP is a C++ library of functions for DSP and Music Informatics
1079purposes developed at Queen Mary, University of London.")
1080 (license license:gpl2+)))
1081
1082(define-public jamesdsp
1083 (let ((commit "53cf0989681ba38755208c8aec063f29ed8586d3")
1084 (revision "0"))
1085 (package
1086 (name "jamesdsp")
1087 (version (git-version "2.7.0" revision commit))
1088 (source
1089 (origin
1090 (method git-fetch)
1091 (uri
1092 (git-reference
1093 (url "https://github.com/Audio4Linux/JDSP4Linux")
1094 (commit commit)
1095 ;; Recurse GraqhicEQWidget, FlatTabWidget, LiquidEqualizerWidget and
1096 ;; EELEditor.
1097 (recursive? #t)))
1098 (file-name (git-file-name name version))
1099 (sha256
1100 (base32 "1b5612gr2gfmj1h5hdzfa9xxdwixia06a34n2zs04cra94clif9i"))
1101 (modules '((guix build utils)))
1102 (snippet
1103 ;; Unbundle 3rd party libraries.
1104 '(begin
1105 ;; Delete the bundled 3rd party libraries.
1106 (for-each delete-file-recursively
1107 (list "3rdparty"
1108 "src/subprojects/EELEditor/3rdparty"
1109 "src/subprojects/EELEditor/QCodeEditor"
1110 "src/subprojects/EELEditor/src/EELEditor-Linker.pri"))
1111 (with-directory-excursion "src"
1112 (substitute* "src.pro"
1113 ;; Do not use bundled 3rd party libraries.
1114 ((".*3rdparty.*") "")
1115 ;; Link required libraries from system.
1116 (("-ldl")
1117 (string-join '("-ldl"
1118 "-lasync++"
1119 "-lQCodeEditor"
1120 "-lqcustomplot"
1121 "-lqtadvanceddocking-qt6"
1122 "-lqtcsv"
1123 "-lwaf")
1124 " ")))
1125 ;; Fix including WAF headers.
1126 (substitute* "MainWindow.cpp"
1127 (("<Animation") "<WAF/Animation"))
1128 ;; Do not use resources from the bundled docking-system.
1129 (substitute* '("interface/fragment/AppManagerFragment.ui")
1130 ((".*location.*3rdparty.*") "")
1131 ((" resource=.*>") ">"))
1132 (with-directory-excursion "subprojects/EELEditor/src"
1133 ;; Do not use bundled QCodeEditor and docking-system.
1134 (substitute* "EELEditor.pri"
1135 ((".*(QCodeEditor|docking-system).*") ""))
1136 ;; Do not link to bundled docking-system.
1137 (substitute* "src.pro"
1138 ((".*EELEditor-Linker.*") ""))
1139 ;; Fix including headers from the system.
1140 (substitute* (find-files "." "\\.(cpp|h)$")
1141 (("#include <Dock") "#include <qtadvanceddocking-qt6/Dock")
1142 (("#include <FloatingDock")
1143 "#include <qtadvanceddocking-qt6/FloatingDock")
1144 (("#include <QSyntaxStyle")
1145 "#include <QCodeEditor/QSyntaxStyle")
1146 (("#include <QStyleSyntaxHighlighter")
1147 "#include <QCodeEditor/QStyleSyntaxHighlighter")
1148 (("#include <QHighlightRule")
1149 "#include <QCodeEditor/QHighlightRule")
1150 (("#include <QLanguage") "#include <QCodeEditor/QLanguage")
1151 (("#include <QCodeEditor\\.hpp")
1152 "#include <QCodeEditor/QCodeEditor.hpp"))))))))
1153 (build-system qt-build-system)
1154 (arguments
1155 (list #:qtbase qtbase
1156 #:tests? #f ;no tests
1157 #:parallel-build? #f ;fails on some systems
1158 #:modules '((guix build qt-build-system)
1159 ((guix build gnu-build-system) #:prefix gnu:)
1160 (guix build utils))
1161 #:phases
1162 #~(modify-phases %standard-phases
1163 ;; Configure using qmake.
1164 (replace 'configure
1165 (lambda _
1166 (invoke "qmake" (string-append "PREFIX=" #$output))))
1167 (replace 'build (assoc-ref gnu:%standard-phases 'build))
1168 (replace 'check (assoc-ref gnu:%standard-phases 'check))
1169 (replace 'install (assoc-ref gnu:%standard-phases 'install))
1170 (add-after 'install 'install-icon
1171 (lambda _
1172 (let ((pixmaps (string-append #$output "/share/pixmaps")))
1173 (mkdir-p pixmaps)
1174 (copy-file "resources/icons/icon.png"
1175 (string-append pixmaps "/jamesdsp.png")))))
1176 (add-after 'install-icon 'create-desktop-entry-file
1177 (lambda _
1178 (make-desktop-entry-file
1179 (string-append #$output
1180 "/share/applications/jamesdsp.desktop")
1181 #:name "JamesDSP"
1182 #:comment "Audio effect processor"
1183 #:keywords '("equalizer" "audio" "effect")
1184 #:categories '("AudioVideo" "Audio")
1185 #:exec (string-append #$output "/bin/jamesdsp")
1186 #:icon (string-append #$output
1187 "/share/pixmaps/jamesdsp.png")
1188 #:startup-notify #f))))))
1189 (native-inputs
1190 (list pkg-config))
1191 (inputs
1192 (list asyncplusplus
1193 glibmm-2.66
1194 libarchive
1195 pipewire
1196 qcodeeditor
1197 qcustomplot
1198 qt-advanced-docking-system
1199 qtcsv
1200 qtpromise
1201 qtsvg
1202 qtwidgetanimationframework))
1203 (home-page "https://github.com/Audio4Linux/JDSP4Linux")
1204 (synopsis "Audio effect processor for PipeWire and PulseAudio clients")
1205 (description "JamesDSP is an audio effect processor for PipeWire and
1206PulseAudio clients, featuring:
1207@itemize
1208@item Automatic bass boost: Frequency-detecting bass-boost
1209@item Automatic dynamic range compressor: automated multiband dynamic range
1210 adjusting effect
1211@item Complex reverberation IIR network (Progenitor 2)
1212@item Interpolated FIR equalizer with flexible bands
1213@item Arbitrary response equalizer (also known as GraphicEQ from EqualizerAPO)
1214@item AutoEQ database integration (requires network connection)
1215@item Partitioned convolver (Auto segmenting convolution): Mono, stereo,
1216 full/true stereo (LL, LR, RL, RR) impulse response
1217@item Crossfeed: Realistic surround effects
1218@item Soundstage wideness: A multiband stereo wideness controller
1219@item ViPER-DDC: Parametric equalization on audio and creating VDC input files
1220@item Analog modeling: An aliasing-free even harmonic generator
1221@item Output limiter
1222@item Scripting engine: Live programmable DSP using the EEL2 scripting language
1223@item Scripting IDE featuring syntax highlighting, basic code completion,
1224 dynamic code outline window, console output support and detailed error
1225 messages with inline code highlighting
1226@end itemize")
1227 (license license:gpl3+))))
1228
1229(define ardour-bundled-media
1230 (origin
1231 (method url-fetch)
1232 (uri "http://stuff.ardour.org/loops/ArdourBundledMedia.zip")
1233 (sha256
1234 (base32
1235 "0k135sm559yywfidrya7h5cddwqa2p2abhimrar2khydf43f03d0"))))
1236
1237(define-public ardour
1238 (package
1239 (name "ardour")
1240 (version "9.2")
1241 (source (origin
1242 (method git-fetch)
1243 (uri (git-reference
1244 (url "git://git.ardour.org/ardour/ardour.git")
1245 (commit version)))
1246 (snippet
1247 ;; Ardour expects this file to exist at build time. The revision
1248 ;; is the output of
1249 ;; git describe HEAD | sed 's/^[A-Za-z]*+//'
1250 `(call-with-output-file
1251 "libs/ardour/revision.cc"
1252 (lambda (port)
1253 (format port ,(string-append "#include \"ardour/revision.h\"
1254namespace ARDOUR { const char* revision = \"" version "\" ; const char* date = \"\"; }")))))
1255 (sha256
1256 (base32
1257 "14s6cq3x7l7b682ah9k8cdr6plfirlgm882dc2nm51lxwl91zcfd"))
1258 (file-name (git-file-name name version))))
1259 (build-system waf-build-system)
1260 (arguments
1261 (list
1262 #:configure-flags
1263 '(list "--optimize"
1264 "--no-phone-home" ;don't contact ardour.org
1265 "--freedesktop" ;build .desktop file
1266 "--test" ;build unit tests
1267 "--use-external-libs") ;use system libraries
1268 #:phases
1269 #~(modify-phases %standard-phases
1270 (add-after 'unpack 'set-rpath-in-LDFLAGS
1271 (lambda _
1272 (let ((libdir (string-append #$output
1273 "/lib/ardour"
1274 #$(version-major version))))
1275 (substitute* "wscript"
1276 (("linker_flags = \\[\\]")
1277 (string-append "linker_flags = [\""
1278 "-Wl,-rpath="
1279 libdir ":"
1280 libdir "/backends" ":"
1281 libdir "/engines" ":"
1282 libdir "/panners" ":"
1283 libdir "/surfaces" ":"
1284 libdir "/vamp" "\"]"))))))
1285 (add-after 'build 'build-i18n
1286 (lambda _
1287 (invoke "python" "waf" "i18n")))
1288 (add-after 'install 'install-freedesktop-files
1289 (lambda _
1290 (let ((share (string-append #$output "/share"))
1291 (ver #$(version-major version)))
1292 (for-each
1293 (lambda (size)
1294 (let ((dir (string-append share "/icons/hicolor/"
1295 size "x" size "/apps")))
1296 (mkdir-p dir)
1297 (copy-file
1298 (string-append "gtk2_ardour/resources/Ardour-icon_"
1299 size "px.png")
1300 (string-append dir "/ardour" ver ".png"))))
1301 '("16" "22" "32" "48" "256"))
1302 (install-file (string-append "build/gtk2_ardour/ardour"
1303 ver ".desktop")
1304 (string-append share "/applications/"))
1305 (install-file (string-append "build/gtk2_ardour/ardour"
1306 ver ".appdata.xml")
1307 (string-append share "/appdata/")))))
1308 (add-after 'install 'install-man-page
1309 (lambda _
1310 (install-file "ardour.1" (string-append #$output
1311 "/share/man/man1"))))
1312 (add-after 'install 'install-bundled-media
1313 (lambda _
1314 (invoke "unzip" "-d" (string-append #$output
1315 "/share/ardour"
1316 #$(version-major version)
1317 "/media/")
1318 #$ardour-bundled-media))))
1319 #:test-target "test"))
1320 (inputs
1321 (list alsa-lib
1322 atkmm
1323 aubio
1324 cairomm
1325 curl
1326 dbus
1327 eudev
1328 fftw
1329 fftwf
1330 flac
1331 fluidsynth
1332 glibmm
1333 gtkmm-2
1334 hicolor-icon-theme
1335 hidapi
1336 jack-2
1337 libarchive
1338 libart-lgpl
1339 libgnomecanvasmm
1340 liblo
1341 libltc
1342 libogg
1343 libsamplerate
1344 libsndfile
1345 libusb
1346 libvorbis
1347 libwebsockets
1348 libxinerama
1349 libxml2
1350 libxrandr
1351 lilv
1352 lrdf
1353 lv2
1354 openssl ; Required by libwebsockets.
1355 pangomm
1356 python-rdflib
1357 pulseaudio
1358 qm-dsp
1359 readline
1360 redland
1361 rubberband
1362 serd
1363 sord
1364 soundtouch
1365 sratom
1366 suil
1367 taglib
1368 vamp))
1369 (native-inputs
1370 (list boost
1371 cppunit
1372 gettext-minimal
1373 itstool
1374 perl
1375 pkg-config
1376 unzip))
1377 (native-search-paths
1378 (list (search-path-specification
1379 (variable "LADSPA_PATH")
1380 (files '("lib/ladspa")))
1381 (search-path-specification
1382 (variable "LV2_PATH")
1383 (files '("lib/lv2")))
1384 (search-path-specification
1385 (variable "LXVST_PATH")
1386 (files '("lib/lxvst")))))
1387 (home-page "https://ardour.org")
1388 (synopsis "Digital audio workstation")
1389 (description
1390 "Ardour is a multi-channel digital audio workstation, allowing users to
1391record, edit, mix and master audio and MIDI projects. It is targeted at audio
1392engineers, musicians, soundtrack editors and composers.")
1393 (license (list license:gpl2+
1394 license:cc0 ;used by MIDI Beats
1395 license:expat)))) ;used by MIDI Chords and Progressions
1396
1397(define-public audacity
1398 (package
1399 (name "audacity")
1400 (version "3.7.7")
1401 (source
1402 (origin
1403 (method git-fetch)
1404 (uri (git-reference
1405 (url "https://github.com/audacity/audacity")
1406 (commit (string-append "Audacity-" version))))
1407 (file-name (git-file-name name version))
1408 (sha256
1409 (base32 "0h2xdhbx6bjhlk2mxqalpbpzjcdj0sb8wf1rp3vj0fbgvxy1y92k"))
1410 (patches (search-patches "audacity-ffmpeg-fallback.patch"))
1411 (modules '((guix build utils)))
1412 (snippet
1413 ;; Remove bundled libraries.
1414 '(begin
1415 (for-each
1416 (lambda (dir)
1417 (delete-file-recursively (string-append "lib-src/" dir)))
1418 '("libsoxr" "libvamp" "lv2" "soundtouch" "sqlite" "twolame"
1419 ;; FIXME: these libraries have not been packaged yet:
1420 ;; "libnyquist"
1421 ;; "libscorealign"
1422 ;; "portburn"
1423 ;; "portsmf"
1424 ;; "portmixer"
1425
1426 ;; FIXME: we have this library, but it differs in that the Slide
1427 ;; class does not have a member "getInverseStretchedTime".
1428 ;; "sbsms"
1429 ))))))
1430 (build-system cmake-build-system)
1431 (inputs
1432 (list wxwidgets
1433 gtk+
1434 alsa-lib
1435 jack-1
1436 expat
1437 lame
1438 flac
1439 ffmpeg
1440 libid3tag
1441 libjpeg-turbo
1442 ;;("libsbsms" ,libsbsms) ;bundled version is modified
1443 libsndfile
1444 libmpg123
1445 opusfile
1446 rapidjson
1447 soundtouch
1448 soxr ;replaces libsamplerate
1449 sqlite
1450 twolame
1451 vamp
1452 libvorbis
1453 lv2
1454 lilv ;for lv2
1455 suil ;for lv2
1456 portaudio
1457 portmidi
1458 wavpack))
1459 (native-inputs
1460 (list autoconf
1461 automake
1462 gettext-minimal ;for msgfmt
1463 libtool
1464 pkg-config
1465 python
1466 which))
1467 (arguments
1468 `(#:configure-flags
1469 (list
1470 "-Daudacity_conan_enabled=off"
1471 "-Daudacity_lib_preference=system"
1472 ;; Disable support for VST 3 SDK, which is not yet in Guix (and has
1473 ;; a dubious licensing agreement despite GPL code).
1474 "-Daudacity_has_vst3=off"
1475 ;; TODO: enable this flag once we've packaged all dependencies
1476 ;; "-Daudacity_obey_system_dependencies=on"
1477 ;; disable crash reports, updates, ..., anything that phones home
1478 "-Daudacity_has_networking=off"
1479 ;; When building from Git — even from a release tag — this is undefined,
1480 ;; and Audacity assumes that is is an ‘alpha’ version and includes debug
1481 ;; symbols and extra code. Force level 2, ‘release’.
1482 "-DAUDACITY_BUILD_LEVEL=2")
1483 #:imported-modules ((guix build glib-or-gtk-build-system)
1484 ,@%cmake-build-system-modules)
1485 #:modules
1486 ((guix build utils)
1487 (guix build cmake-build-system)
1488 ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:))
1489 #:phases
1490 (modify-phases %standard-phases
1491 (add-after 'unpack 'fix-cmake-rpath
1492 (lambda* (#:key outputs #:allow-other-keys)
1493 (substitute* "src/CMakeLists.txt"
1494 ;; Despite the name, this script breaks rpath. Don't run it.
1495 (("install.*linux/fix_rpath\\.cmake.*")
1496 "")
1497 (("-Wl,--disable-new-dtags") "-Wl,--enable-new-dtags"))))
1498 (add-after 'unpack 'use-upstream-headers
1499 (lambda* (#:key inputs #:allow-other-keys)
1500 (substitute* '("libraries/lib-files/FileNames.cpp")
1501 (("\"/usr/include/linux/magic.h\"") "<linux/magic.h>"))))
1502 (add-after 'install 'glib-or-gtk-wrap
1503 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))
1504 ;; The test suite is not "well exercised" according to the developers,
1505 ;; and fails with various errors. See
1506 ;; <http://sourceforge.net/p/audacity/mailman/message/33524292/>.
1507 #:tests? #f))
1508 (native-search-paths
1509 (list (search-path-specification
1510 (variable "AUDACITY_MODULES_PATH")
1511 (files '("lib/audacity/modules")))
1512 (search-path-specification
1513 (variable "AUDACITY_PATH")
1514 (files '("share/audacity")))))
1515 (home-page "https://www.audacityteam.org/")
1516 (synopsis "Software for recording and editing sounds")
1517 (description
1518 "Audacity is a multi-track audio editor designed for recording, playing
1519and editing digital audio. It features digital effects and spectrum analysis
1520tools.")
1521 (license license:gpl2+)))
1522
1523(define-public tenacity
1524 (package
1525 (name "tenacity")
1526 (version "1.3.5")
1527 (source
1528 (origin
1529 (method git-fetch)
1530 (uri (git-reference
1531 (url "https://codeberg.org/tenacityteam/tenacity")
1532 (commit (string-append "v" version))
1533 ;; TODO Unbundle vcpkg when packaged in Guix.
1534 (recursive? #t)))
1535 (file-name (git-file-name name version))
1536 (sha256
1537 (base32 "10xplrnhw8b8yq2gar1183if01hq9bckwnsmcd23y1d8ql2khg5k"))))
1538 (build-system cmake-build-system)
1539 (arguments
1540 (list
1541 #:imported-modules `((guix build glib-or-gtk-build-system)
1542 ,@%cmake-build-system-modules)
1543 #:modules
1544 '((guix build utils)
1545 (guix build cmake-build-system)
1546 ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:))
1547 #:phases
1548 #~(modify-phases %standard-phases
1549 (add-after 'unpack 'use-upstream-headers
1550 (lambda* (#:key inputs #:allow-other-keys)
1551 (substitute* '("libraries/lib-files/FileNames.cpp")
1552 (("\"/usr/include/linux/magic.h\"") "<linux/magic.h>"))))
1553 (add-after 'unpack
1554 'i-spy-with-my-little-eye-something-in-the-wrong-folder
1555 (lambda _
1556 (symlink (string-append (getcwd) "/images")
1557 "src/images")
1558
1559 (symlink (string-append (getcwd) "/images")
1560 "src/tracks/images"))
1561 )
1562 (add-after 'unpack 'fix-cmake-rpath
1563 (lambda* (#:key outputs #:allow-other-keys)
1564 (substitute* "CMakeLists.txt"
1565 (("\\$ORIGIN/\\.\\./\\$\\{_PKGLIB\\}")
1566 (string-append (assoc-ref outputs "out") "/lib/tenacity"))
1567 (("CMAKE_BUILD_WITH_INSTALL_RPATH [A-Z]*")
1568 "CMAKE_BUILD_WITH_INSTALL_RPATH TRUE")
1569 (("CMAKE_INSTALL_RPATH_USE_LINK_PATH [A-Z]*")
1570 "CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE"))
1571 (substitute* "src/CMakeLists.txt"
1572 ;; Despite the name, this script breaks rpath. Don't run it.
1573 (("install.*linux/fix_rpath\\.cmake.*")
1574 "")
1575 (("-Wl,--disable-new-dtags") "-Wl,--enable-new-dtags"))))
1576 (replace 'configure
1577 (lambda args
1578 (define %configure (assoc-ref %standard-phases 'configure))
1579 (with-exception-handler
1580 (lambda (error)
1581 (unless (invoke-error? error)
1582 (raise error))
1583 ;; Have you tried turning it off and on again?
1584 (apply invoke (invoke-error-program error)
1585 (invoke-error-arguments error)))
1586 (lambda ()
1587 (apply %configure args))
1588 #:unwind? #t)))
1589 (add-after 'install 'glib-or-gtk-wrap
1590 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))
1591 ;; Test suite? Which test suite?
1592 #:tests? #f))
1593 (inputs
1594 (list wxwidgets
1595 gtk+
1596 alsa-lib
1597 jack-1
1598 expat
1599 lame
1600 flac
1601 ffmpeg
1602 libid3tag
1603 libjpeg-turbo
1604 ;;("libsbsms" ,libsbsms) ;bundled version is modified
1605 libsndfile
1606 libmpg123
1607 soundtouch
1608 soxr ;replaces libsamplerate
1609 sqlite
1610 twolame
1611 vamp
1612 libebml
1613 libmatroska
1614 libvorbis
1615 lv2
1616 lilv ;for lv2
1617 suil ;for lv2
1618 portaudio
1619 portmidi
1620 wavpack))
1621 (native-inputs
1622 (list gettext-minimal ;for msgfmt
1623 libtool
1624 pkg-config
1625 python
1626 which))
1627 (native-search-paths
1628 (list (search-path-specification
1629 (variable "TENACITY_MODULES_PATH")
1630 (files '("lib/tenacity/modules")))
1631 (search-path-specification
1632 (variable "TENACITY_PATH")
1633 (files '("share/tenacity")))))
1634 (home-page "https://tenacityaudio.org/")
1635 (synopsis "Software for recording and editing sounds")
1636 (description
1637 "Tenacity is a multi-track audio editor designed for recording, playing
1638and editing digital audio. It features digital effects and spectrum analysis
1639tools.")
1640 (license license:gpl2+)))
1641
1642(define-public audiofile
1643 (package
1644 (name "audiofile")
1645 (version "0.3.6")
1646 (source
1647 (origin
1648 (method url-fetch)
1649 (uri (string-append
1650 "https://audiofile.68k.org/audiofile-" version ".tar.gz"))
1651 (sha256
1652 (base32 "0rb927zknk9kmhprd8rdr4azql4gn2dp75a36iazx2xhkbqhvind"))
1653 (patches
1654 ;; CVE references according to nixpgs
1655 (search-patches
1656 "audiofile-fix-datatypes-in-tests.patch"
1657 "audiofile-fix-sign-conversion.patch"
1658 "audiofile-hurd.patch"
1659 "audiofile-CVE-2015-7747.patch"
1660 ;; CVE-2017-6829:
1661 "audiofile-Fix-index-overflow-in-IMA.cpp.patch"
1662 ;; CVE-2017-6827, CVE-2017-6828, CVE-2017-6832, CVE-2017-6835,
1663 ;; CVE-2017-6837:
1664 "audiofile-check-number-of-coefficients.patch"
1665 ;; CVE-2017-6839:
1666 "audiofile-overflow-in-MSADPCM.patch"
1667 ;; CVE-2017-6830, CVE-2017-6834, CVE-2017-6836, CVE-2017-6838:
1668 "audiofile-multiply-overflow.patch"
1669 "audiofile-function-signature.patch"
1670 ;; CVE-2017-6831:
1671 "audiofile-Fail-on-error-in-parseFormat.patch"
1672 ;; CVE-2017-6833:
1673 "audiofile-division-by-zero.patch"
1674 "audiofile-CVE-2018-13440.patch"
1675 "audiofile-CVE-2018-17095.patch"
1676 "audiofile-CVE-2022-24599.patch"))))
1677 (properties `((lint-hidden-cve . ("CVE-2017-6829"
1678
1679 "CVE-2017-6827" "CVE-2017-6828"
1680 "CVE-2017-6832" "CVE-2017-6835"
1681 "CVE-2017-6837"
1682
1683 "CVE-2017-6839"
1684
1685 "CVE-2017-6830" "CVE-2017-6834"
1686 "CVE-2017-6836" "CVE-2017-6838"
1687
1688 "CVE-2017-6831" "CVE-2017-6833"))))
1689 (build-system gnu-build-system)
1690 (inputs
1691 (list alsa-lib))
1692 (home-page "https://audiofile.68k.org/")
1693 (synopsis "Library to handle various audio file formats")
1694 (description "This is a free software version of SGI's audiofile library.
1695It provides a uniform programming interface for processing of audio data to
1696and from audio files of many common formats.
1697
1698Currently supported file formats include AIFF/AIFF-C, WAVE, and NeXT/Sun
1699.snd/.au, BICS, and raw data. Supported compression formats are currently
1700G.711 mu-law and A-law.")
1701 (license license:lgpl2.1+)))
1702
1703(define-public autotalent
1704 (package
1705 (name "autotalent")
1706 (version "0.2")
1707 (source (origin
1708 (method url-fetch)
1709 (uri (string-append "http://tombaran.info/autotalent-"
1710 version ".tar.gz"))
1711 (sha256
1712 (base32
1713 "1n04qm66f14195ly6gsy3ra7v2j7zad5n19d8dwfmh0qs6h9hphh"))))
1714 (build-system gnu-build-system)
1715 (arguments
1716 `(#:tests? #f ; no check target
1717 #:phases
1718 (modify-phases %standard-phases
1719 ;; no configure script
1720 (delete 'configure)
1721 (add-before 'install 'prepare-target-directory
1722 (lambda* (#:key outputs #:allow-other-keys)
1723 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1724 #t))
1725 (add-after 'unpack 'override-target-directory
1726 (lambda* (#:key outputs #:allow-other-keys)
1727 (substitute* "Makefile"
1728 (("/usr/lib64/ladspa")
1729 (string-append (assoc-ref outputs "out") "/lib/ladspa")))
1730 #t)))))
1731 (inputs
1732 (list ladspa))
1733 (home-page "http://tombaran.info/autotalent.html")
1734 (synopsis "Pitch-correction LADSPA audio plugin")
1735 (description
1736 "Autotalent is a LADSPA plugin for real-time pitch-correction. Among its
1737controls are allowable notes, strength of correction, LFO for vibrato and
1738formant warp.")
1739 ;; All code except the FFT routine is licensed under GPLv2+.
1740 ;; The FFT routine is under BSD-3.
1741 (license license:gpl2+)))
1742
1743(define-public azr3
1744 (let ((commit "3391a0a509e7fa3fb46c7627fd5979b67e468038")
1745 (revision "1"))
1746 (package
1747 (name "azr3")
1748 (version (git-version "1.2.3" revision commit))
1749 (source (origin
1750 (method git-fetch)
1751 (uri (git-reference
1752 (url "https://git.savannah.gnu.org/git/ll-plugins/azr3-jack.git")
1753 (commit commit)))
1754 (file-name (git-file-name name version))
1755 (sha256
1756 (base32
1757 "09wy0z4kiid7mwf5b5j8rzzgxafi4mg88xs550n7864p0n351chx"))
1758 (patches (search-patches "azr3.patch"
1759 "azr3-remove-lash.patch"))))
1760 (build-system gnu-build-system)
1761 (arguments
1762 (list
1763 #:tests? #f ; no check target
1764 #:make-flags
1765 #~(list "LV2PEG=ttl2c"
1766 (string-append "prefix=" #$output)
1767 (string-append "pkgdatadir=" #$output "/share/azr3-jack"))
1768 #:phases
1769 #~(modify-phases %standard-phases
1770 (replace 'bootstrap
1771 (lambda _
1772 (call-with-output-file "Makefile.config"
1773 (lambda (port) (display "" port)))
1774 (substitute* "Makefile"
1775 (("^PACKAGE_VERSION =.*")
1776 (string-append "PACKAGE_VERSION = \"" #$version "\"\n")))))
1777 (add-before 'install 'fix-timestamp
1778 (lambda _
1779 (let ((early-1980 315619200)) ; 1980-01-02 UTC
1780 (utime "azr3.1" early-1980 early-1980)))))))
1781 (inputs
1782 (list gtkmm-2 jack-2 lvtk))
1783 (native-inputs
1784 (list pkg-config))
1785 (home-page "https://ll-plugins.nongnu.org/azr3/")
1786 (synopsis "Tonewheel organ synthesizer")
1787 (description
1788 "AZR-3 is a port of the free VST plugin AZR-3. It is a tonewheel organ
1789with drawbars, distortion and rotating speakers. The organ has three
1790sections, two polyphonic sections with nine drawbars each and one monophonic
1791bass section with five drawbars. A standalone JACK application and LV2
1792plugins are provided.")
1793 (license license:gpl2))))
1794
1795(define-public bankstown-lv2
1796 (package
1797 (name "bankstown-lv2")
1798 (version "1.1.0")
1799 (source
1800 (origin
1801 (method url-fetch)
1802 (uri (crate-uri "bankstown-lv2" version))
1803 (file-name (string-append name "-" version ".tar.gz"))
1804 (sha256
1805 (base32 "1bcrn0b4b9v1mksaldhrdb6ncqlwldfwqxjlfp4gcpvl661qdmcb"))))
1806 (build-system cargo-build-system)
1807 (arguments
1808 (list
1809 #:phases
1810 #~(modify-phases %standard-phases
1811 (replace 'install
1812 (lambda* (#:key outputs #:allow-other-keys)
1813 (setenv "LIBDIR" (string-append (assoc-ref outputs "out") "/lib"))
1814 (invoke "make" "install"))))))
1815 (inputs (cargo-inputs 'bankstown-lv2))
1816 (home-page "https://github.com/chadmed/bankstown")
1817 (synopsis "Barebones, fast LV2 bass enhancement plugin.")
1818 (description
1819 "This package provides a barebones, fast LV2 bass enhancement plugin.")
1820 (license license:expat)))
1821
1822(define-public cable
1823 (package
1824 (name "cable")
1825 (version "0.9.21")
1826 (source (origin
1827 (method git-fetch)
1828 (uri (git-reference
1829 (url "https://github.com/magillos/Cable")
1830 (commit version)))
1831 (file-name (git-file-name name version))
1832 (sha256
1833 (base32
1834 "1c7fy92nwp2m96asls460s83xapzcc6pqvplmg5rqds1rddiva2h"))))
1835 (build-system pyproject-build-system)
1836 (arguments
1837 (list
1838 #:tests? #false ;there is no test target
1839 #:phases
1840 #~(modify-phases %standard-phases
1841 (add-after 'unpack 'patch-hardcoded-file-names
1842 (lambda _
1843 (substitute* "cable_core/process.py"
1844 (("/usr/share/cable")
1845 (string-append #$output "/share/cable/"))
1846 (("connection-manager.py")
1847 "cables/launch-connection-manager.py"))
1848 (rename-file "connection-manager.py"
1849 "cables/launch-connection-manager.py")))
1850 (add-after 'install 'install-more
1851 (lambda _
1852 (install-file "jack-plug.svg"
1853 (string-append #$output "/share/icons/hicolor/scalable/apps/"))
1854 (install-file "com.github.magillos.cable.desktop"
1855 (string-append #$output "/share/applications/")))))))
1856 (inputs
1857 (list python
1858 python-dbus-1.2
1859 python-jack-client
1860 python-pyqt-6
1861 python-requests))
1862 (native-inputs
1863 (list guile-3.0 pkg-config python-setuptools python-wheel))
1864 (home-page "https://github.com/magillos/Cable")
1865 (synopsis "GUI for pipewire and wireplumber settings and connections")
1866 (description
1867 "This is a PyQT GUI application to dynamically modify Pipewire and
1868Wireplumber settings at runtime, such as quantum. sample rate, latency offset
1869setting, services restart and more. It features side-by-side and graph style
1870connections manager, pw-top wrapper, simple ALSA mixer and jack_delay GUI.")
1871 (license license:gpl3+)))
1872
1873(define-public calf
1874 (package
1875 (name "calf")
1876 (version "0.90.8")
1877 (source (origin
1878 (method git-fetch)
1879 (uri (git-reference
1880 (url "https://github.com/calf-studio-gear/calf")
1881 (commit version)))
1882 (file-name (git-file-name name version))
1883 (sha256
1884 (base32
1885 "0wzkshqazw26w73h1lva5wr8v2bq0a20kjd6lfvbi1pj3ql3azk5"))))
1886 (build-system cmake-build-system)
1887 (arguments (list #:tests? #false)) ;there is no test target
1888 (inputs
1889 (list fluidsynth
1890 expat
1891 glib
1892 gtk+-2
1893 cairo
1894 jack-2
1895 lv2
1896 ladspa
1897 fftw))
1898 (native-inputs
1899 (list pkg-config))
1900 (home-page "https://calf-studio-gear.org/")
1901 (synopsis "Audio plug-in pack for LV2 and JACK environments")
1902 (description
1903 "Calf Studio Gear is an audio plug-in pack for LV2 and JACK environments.
1904The suite contains lots of effects (delay, modulation, signal processing,
1905filters, equalizers, dynamics, distortion and mastering effects),
1906instruments (SF2 player, organ simulator and a monophonic synthesizer) and
1907tools (analyzer, mono/stereo tools, crossovers).")
1908 ;; calfjackhost is released under GPLv2+
1909 ;; The plugins are released under LGPLv2.1+
1910 (license (list license:lgpl2.1+ license:gpl2+))))
1911
1912(define-public caps-plugins-lv2
1913 (package
1914 (name "caps-plugins-lv2")
1915 (version "0.9.26")
1916 (source
1917 (origin
1918 ;; The Github project hasn't tagged a release.
1919 (method git-fetch)
1920 (uri (git-reference
1921 (url "https://github.com/moddevices/caps-lv2.git")
1922 (commit "5d52a0c6e8863c058c2aab2dea9f901a90d96eb9")))
1923 (file-name (git-file-name name version))
1924 (sha256
1925 (base32
1926 "0hdl7n3ra5gqgwkdfqkw8dj9gb1cgb76bn1v91w06d2w4lj9s8xa"))))
1927 (build-system gnu-build-system)
1928 (arguments
1929 `(#:tests? #f ; no check target
1930 #:phases
1931 (modify-phases %standard-phases
1932 ;; no configure script
1933 (delete 'configure)
1934 (add-after 'unpack 'override-target-directory
1935 (lambda* (#:key outputs #:allow-other-keys)
1936 (substitute* (find-files "plugins" "Makefile")
1937 (("/usr/local")(assoc-ref outputs "out")))
1938 #t)))))
1939 (inputs
1940 (list lv2))
1941 ;; home-page of the original LADSPA version: http://quitte.de/dsp/caps.html
1942 (home-page "https://github.com/moddevices/caps-lv2")
1943 (synopsis "LV2 port of the CAPS audio plugin collection")
1944 (description
1945 "LV2 port of CAPS, a collection of audio plugins comprising basic virtual
1946guitar amplification and a small range of classic effects, signal processors and
1947generators of mostly elementary and occasionally exotic nature.")
1948 (license license:gpl3+)))
1949
1950(define-public chow-tape-model
1951 (package
1952 (name "chow-tape-model")
1953 (version "2.11.4")
1954 (source
1955 (origin
1956 (method git-fetch)
1957 (uri (git-reference
1958 (url "https://github.com/jatinchowdhury18/AnalogTapeModel")
1959 (commit (string-append "v" version))
1960 (recursive? #true)))
1961 (file-name (git-file-name name version))
1962 (sha256
1963 (base32
1964 "0qrqhlfzc2m5iwrkfzb53x8hll2ndn1fygh1mwn11shqmy5qgf2s"))))
1965 (build-system cmake-build-system)
1966 (arguments
1967 (list
1968 #:configure-flags
1969 (let ((libs "-lX11 -lXext -lXcursor -lXinerama -lXrandr"))
1970 `(list "-DBUILD_HEADLESS=ON"
1971 ,(string-append "-DCMAKE_SHARED_LINKER_FLAGS=" libs)
1972 ,(string-append "-DCMAKE_EXE_LINKER_FLAGS=" libs)))
1973 #:phases
1974 #~(modify-phases %standard-phases
1975 (add-after 'unpack 'build-manual
1976 (lambda _
1977 (with-directory-excursion "Manual"
1978 (invoke "make" "all"))))
1979 (add-after 'build-manual 'install-manual
1980 (lambda _
1981 (with-directory-excursion "Manual"
1982 (install-file "ChowTapeManual.pdf"
1983 (string-append #$output:doc "/share/doc/")))))
1984 (add-after 'install-manual 'chdir
1985 (lambda _ (chdir "Plugin")))
1986 (add-after 'chdir 'fix-includes
1987 (lambda _
1988 (substitute* "modules/JUCE/modules/juce_core/juce_core.h"
1989 (("#define JUCE_CORE_H_INCLUDED" all)
1990 (string-append all "\n#include <utility>")))))
1991 (replace 'check
1992 (lambda* (#:key tests? build-type #:allow-other-keys)
1993 (when tests?
1994 (with-directory-excursion
1995 (string-append "Source/Headless/ChowTapeModel_Headless_artefacts/" build-type)
1996 (invoke "./ChowTapeModel_Headless" "--unit-tests" "--all")))))
1997 (replace 'install
1998 (lambda* (#:key build-type #:allow-other-keys)
1999 (with-directory-excursion
2000 (string-append "CHOWTapeModel_artefacts/" build-type)
2001 (mkdir-p (string-append #$output:lv2 "/lib/lv2/"))
2002 (mkdir-p (string-append #$output "/bin/"))
2003 (install-file "Standalone/CHOWTapeModel"
2004 (string-append #$output "/bin/"))
2005 (install-file "CLAP/CHOWTapeModel.clap"
2006 (string-append #$output:clap "/lib/clap/"))
2007 (copy-recursively "LV2/CHOWTapeModel.lv2"
2008 (string-append #$output:lv2
2009 "/lib/lv2/CHOWTapeModel.lv2"))
2010 (copy-recursively "VST3/CHOWTapeModel.vst3"
2011 (string-append #$output:vst3
2012 "/lib/vst3/CHOWTapeModel.vst3"))))))))
2013 (outputs '("out" "doc" "clap" "lv2" "vst3"))
2014 (inputs
2015 (list alsa-lib
2016 freeglut
2017 freetype
2018 jack-2
2019 libxcursor
2020 libxext
2021 libxinerama
2022 libxrandr
2023 lv2))
2024 (native-inputs
2025 (list pkg-config
2026 (texlive-local-tree
2027 (list texlive-geometry
2028 texlive-xetex
2029 texlive-collection-pictures))))
2030 (home-page "https://chowdsp.com/products.html")
2031 (synopsis "Physical modeling for analog tape machines")
2032 (description
2033 "CHOW Tape is an analog tape machine physical model, originally based on
2034the Sony TC-260. The current version can be used to emulate a wide variety of
2035reel-to-reel tape machines.")
2036 (license license:gpl3)))
2037
2038(define-public iir
2039 (package
2040 (name "iir")
2041 (version "1.10.0")
2042 (source
2043 (origin
2044 (method git-fetch)
2045 (uri (git-reference
2046 (url "https://github.com/berndporr/iir1")
2047 (commit version)))
2048 (file-name (git-file-name name version))
2049 (sha256
2050 (base32 "0p64l0fmr7mfjhfxg6yc4f06aacbr6bb8kjmb5ffm95sq12rzdss"))))
2051 (build-system cmake-build-system)
2052 (arguments
2053 (list
2054 #:phases
2055 #~(modify-phases %standard-phases
2056 (add-after 'install 'delete-static-library
2057 (lambda* (#:key outputs #:allow-other-keys)
2058 (let ((out (assoc-ref outputs "out")))
2059 (delete-file (string-append out "/lib/libiir_static.a"))))))))
2060 (home-page "https://berndporr.github.io/iir1/")
2061 (synopsis
2062 "Real-time C++ @acronym{IIR, infinite impulse response} filter library")
2063 (description
2064 "This C++ library implements the Butterworth, RBJ, and Chebychev
2065@acronym{IIR, infinite impulse response} filters. Samples are processed one by
2066one, in real time. It can easily import coefficients generated with Python
2067(@code{scipy}). It also avoids memory leaks by allocating memory at compile
2068time, using templates, instead of calling @code{malloc()} or @code{new}.")
2069 (license license:expat)))
2070
2071(define-public infamous-plugins
2072 (package
2073 (name "infamous-plugins")
2074 (version "0.3.2")
2075 (source (origin
2076 (method git-fetch)
2077 (uri (git-reference
2078 (url "https://github.com/ssj71/infamousPlugins")
2079 (commit (string-append "v" version))))
2080 (file-name (git-file-name name version))
2081 (sha256
2082 (base32
2083 "1ay66lly6bgqr3nzb0y4b29rgl5y1slk6wf73kr3xiw2p62bh582"))))
2084 (build-system cmake-build-system)
2085 (arguments
2086 `(#:tests? #f ; there are no tests
2087 #:phases
2088 (modify-phases %standard-phases
2089 (add-after 'unpack 'remove-compiler-flags
2090 (lambda _
2091 (substitute* (find-files "." "CMakeLists.txt")
2092 (("-msse2 -mfpmath=sse") "")))))))
2093 (inputs
2094 (list cairo fftwf lv2 ntk zita-resampler))
2095 (native-inputs
2096 (list pkg-config))
2097 (home-page "https://ssj71.github.io/infamousPlugins")
2098 (synopsis "LV2 plugins for live use")
2099 (description
2100 "The infamous plugins are a collection of LV2 audio plugins for live
2101performances. The plugins include a cellular automaton synthesizer, an
2102envelope follower, distortion effects, tape effects and more.")
2103 (license license:gpl2+)))
2104
2105(define-public omins-lv2
2106 (let ((commit "058f341053067b69a84d4081107fda5058290ff9")
2107 (revision "1"))
2108 (package
2109 (name "omins-lv2")
2110 ;; No release despite being perfectly usable. 0.0.0 seems to be the only
2111 ;; version the author ever specified:
2112 (version (git-version "0.0.0" revision commit))
2113 (source
2114 (origin (method git-fetch)
2115 (uri
2116 (git-reference
2117 (url "https://git.drobilla.net/cgit.cgi/omins.lv2.git/")
2118 (commit commit)))
2119 (file-name (git-file-name name version))
2120 (sha256
2121 (base32
2122 "01hnx4hhbz3ap3bw15s42q4q1mw1mhdjwygq4550wvjfg6k4ga8w"))))
2123 (build-system waf-build-system)
2124 (arguments
2125 (list
2126 #:tests? #false ;There are no tests.
2127 #:phases
2128 '(modify-phases %standard-phases
2129 (add-after 'unpack 'python3.12-compatibility
2130 (lambda _
2131 (substitute* "waflib/Context.py"
2132 (("imp.new_module") "types.ModuleType")
2133 (("import os, re, imp, sys")
2134 "import os, re, types, sys")))))))
2135 (inputs (list lv2))
2136 (native-inputs (list pkg-config))
2137 (home-page "https://git.drobilla.net/cgit.cgi/omins.lv2.git/")
2138 (synopsis "LV2 audio plugins for modular synthesis")
2139 (description
2140 "Omins-lv2 is a small collection of LV2 audio plugins for modular
2141synthesis.")
2142 (license license:gpl2+))))
2143
2144(define-public snapcast
2145 (package
2146 (name "snapcast")
2147 (version "0.35.0")
2148 (source (origin
2149 (method git-fetch)
2150 (uri (git-reference
2151 (url "https://github.com/badaix/snapcast")
2152 (commit (string-append "v" version))))
2153 (file-name (git-file-name name version))
2154 (sha256
2155 (base32
2156 "1sm8xgijc6nd5zqwwahj2rzawpzfbjf2xxhiwb7hiij21b4khk4i"))))
2157 (build-system cmake-build-system)
2158 (arguments '(#:tests? #f)) ;no included tests
2159 (inputs
2160 (list alsa-lib
2161 avahi
2162 boost
2163 expat
2164 flac
2165 libvorbis
2166 openssl
2167 opus
2168 pulseaudio
2169 soxr))
2170 (native-inputs (list pkg-config))
2171 (home-page "https://github.com/badaix/snapcast")
2172 (synopsis "Synchronous multiroom audio player")
2173 (description
2174 "Snapcast is a multi-room client-server audio player. Clients are time
2175synchronized with the server to play synced audio.")
2176 (license license:gpl3+)))
2177
2178(define-public swh-plugins
2179 (package
2180 (name "swh-plugins")
2181 (version "0.4.17")
2182 (source (origin
2183 (method git-fetch)
2184 (uri (git-reference
2185 (url "https://github.com/swh/ladspa")
2186 (commit (string-append "v" version))))
2187 (file-name (git-file-name name version))
2188 (sha256
2189 (base32
2190 "1c98z2xxz9pgcb4dg99gz8qrylh5cnag0j18a52d88ifsy24isvq"))))
2191 (native-inputs
2192 (list autoconf
2193 automake
2194 gettext-minimal ;for autopoint
2195 libtool
2196 perl
2197 pkg-config
2198 which))
2199 (inputs
2200 (list fftwf perl-xml-parser))
2201 (build-system gnu-build-system)
2202 (home-page "http://plugin.org.uk")
2203 (synopsis "The SWH Plugins package for the LADSPA plugin system")
2204 (description "This package provides Steve Harris's LADSPA plugins.")
2205 (license license:gpl2+)))
2206
2207(define-public swh-plugins-lv2
2208 (package
2209 (name "swh-plugins-lv2")
2210 (version "1.0.16")
2211 (source (origin
2212 (method git-fetch)
2213 (uri (git-reference
2214 (url "https://github.com/swh/lv2")
2215 (commit (string-append "v" version))))
2216 (file-name (git-file-name name version))
2217 (sha256
2218 (base32
2219 "0y7nnww864mm4k6ayy2lhcws3wlbhb2gkyjbrwk921fvc18qk9mz"))))
2220 (build-system gnu-build-system)
2221 (arguments
2222 `(#:tests? #f ; no check target
2223 #:make-flags (list "CC=gcc"
2224 (string-append "PREFIX="
2225 (assoc-ref %outputs "out")))
2226 #:phases
2227 (modify-phases %standard-phases
2228 ;; no configure script
2229 (delete 'configure)
2230 (add-after 'unpack 'patch-makefile-and-enter-directory
2231 ;; The default install target doesn't install, but the
2232 ;; "install-system" target does.
2233 (lambda _
2234 (substitute* "Makefile"
2235 (("install:") "install: install-system"))
2236 #t)))))
2237 (inputs
2238 (list lv2 fftwf))
2239 (native-inputs
2240 (list libxslt pkg-config))
2241 (home-page "http://plugin.org.uk")
2242 (synopsis "SWH plugins in LV2 format")
2243 (description
2244 "Swh-plugins-lv2 is a collection of audio plugins in LV2 format. Plugin
2245classes include: dynamics (compressor, limiter), time (delay, chorus,
2246flanger), ringmodulator, distortion, filters, pitchshift, oscillators,
2247emulation (valve, tape), bit fiddling (decimator, pointer-cast), etc.")
2248 (license license:gpl3+)))
2249
2250(define-public libdjinterop
2251 (package
2252 (name "libdjinterop")
2253 (version "0.24.3")
2254 (source
2255 (origin
2256 (method git-fetch)
2257 (uri (git-reference
2258 (url "https://github.com/xsco/libdjinterop")
2259 (commit version)))
2260 (file-name (git-file-name name version))
2261 (sha256
2262 (base32 "0g0yfmwmrkvrkvynx84bays6jph3wq2hq1md5ylr7n5a8g0c17hn"))))
2263 (build-system cmake-build-system)
2264 (arguments
2265 (list #:tests? #f))
2266 (native-inputs
2267 (list boost pkg-config))
2268 (inputs
2269 (list sqlite zlib))
2270 (home-page "https://github.com/xsco/libdjinterop")
2271 (synopsis "C++ library for access to DJ record libraries")
2272 (description
2273 "@code{libdjinterop} is a C++ library that allows access to database
2274formats used to store information about DJ record libraries.")
2275 (license license:lgpl3+)))
2276
2277(define-public tao
2278 (package
2279 (name "tao")
2280 (version "1.0-beta-10May2006")
2281 (source (origin
2282 (method url-fetch)
2283 (uri (string-append "mirror://sourceforge/taopm/Tao/"
2284 "tao-" version "/"
2285 "tao-" version ".tar.gz"))
2286 (sha256
2287 (base32
2288 "156py3g6mmglldfd0j76bn7n242hdwf49diaprjpj7crp8vgf2pz"))
2289 (patches
2290 (search-patches "tao-add-missing-headers.patch"
2291 "tao-fix-parser-types.patch"))
2292 (modules '((guix build utils)))
2293 (snippet
2294 '(substitute* "configure"
2295 (("SHELL=/bin/sh") "")))))
2296 (build-system gnu-build-system)
2297 (arguments
2298 '(#:configure-flags '("TAO_RELEASE=-beta")
2299 #:phases
2300 (modify-phases %standard-phases
2301 (add-after 'unpack 'fix-references
2302 (lambda* (#:key outputs #:allow-other-keys)
2303 (substitute* "user-scripts/tao.in"
2304 (("taoparse")
2305 (string-append (assoc-ref outputs "out") "/bin/taoparse"))
2306 (("grep") (which "grep"))
2307 (("sed -f \\$distdir/user-scripts/")
2308 (string-append (which "sed") " -f $distdir/"))
2309 (("distdir=.*")
2310 (string-append "distdir="
2311 (assoc-ref outputs "out") "/share/tao")))))
2312 (add-after 'install 'install-extra-files
2313 (lambda* (#:key outputs #:allow-other-keys)
2314 (let* ((out (assoc-ref outputs "out"))
2315 (share (string-append out "/share/tao/"))
2316 (inc (string-append out "/include/tao/")))
2317 (mkdir-p share)
2318 (mkdir-p inc)
2319 (install-file "user-scripts/error.parse" share)
2320 (copy-recursively "examples" (string-append share "examples"))
2321 (for-each (lambda (file) (install-file file inc))
2322 (find-files "include" "\\.h"))))))))
2323 (inputs
2324 (list audiofile
2325 libxi
2326 libxmu
2327 mesa
2328 freeglut
2329 flex
2330 bison
2331 sed
2332 grep))
2333 (home-page "https://taopm.sourceforge.net/")
2334 (synopsis "Sound Synthesis with Physical Models")
2335 (description "Tao is a software package for sound synthesis using physical
2336models. It provides a virtual acoustic material constructed from masses and
2337springs which can be used as the basis for building quite complex virtual
2338musical instruments. Tao comes with a synthesis language for creating and
2339playing instruments and a C++ API for those who would like to use it as an
2340object library.")
2341 (license license:gpl2+)))
2342
2343(define-public tao-synth
2344 (let ((commit "f3aedd81efbc775574e591081b57ae1c08427064")
2345 (revision "1"))
2346 (package
2347 (name "tao-synth")
2348 (version (git-version "0" revision commit))
2349 (source (origin
2350 (method git-fetch)
2351 (uri (git-reference
2352 (url "https://github.com/lucasw/tao_synth")
2353 (commit commit)))
2354 (file-name (git-file-name name version))
2355 (sha256
2356 (base32
2357 "1jds2l3cb96b02jxd7lmrjjl9s7mylnrvg6fpw0j8c141bk8vyg3"))
2358 (patches
2359 (search-patches "tao-synth-include-string-you-use.patch"))))
2360 (build-system cmake-build-system)
2361 (arguments (list #:tests? #false)) ;there are no tests
2362 (inputs
2363 (list glfw freeglut))
2364 (home-page "https://github.com/lucasw/tao_synth")
2365 (synopsis "Sound synthesis with physical models")
2366 (description "Tao is a software package for sound synthesis using physical
2367models. It provides a virtual acoustic material constructed from masses and
2368springs which can be used as the basis for building quite complex virtual
2369musical instruments. Tao comes with a synthesis language for creating and
2370playing instruments and a C++ API for those who would like to use it as an
2371object library.")
2372 (license license:lgpl2.0+))))
2373
2374(define-public csound
2375 (package
2376 (name "csound")
2377 (version "6.16.2")
2378 (source
2379 (origin
2380 (method git-fetch)
2381 (uri (git-reference
2382 (url "https://github.com/csound/csound")
2383 (commit version)))
2384 (file-name (git-file-name name version))
2385 (sha256
2386 (base32 "1lgasyk8j4cl9178vci1dph63nks3cgwhf8y1d04z9dc8gg15dyn"))))
2387 (build-system cmake-build-system)
2388 (arguments
2389 '(#:configure-flags '("-DBUILD_STATIC_LIBRARY=ON"))) ; required to build tests
2390 (native-inputs
2391 (list bison flex gettext-minimal zlib))
2392 (inputs
2393 (list alsa-lib
2394 boost
2395 cunit
2396 jack-1
2397 ladspa
2398 liblo
2399 libsndfile
2400 pulseaudio))
2401 (home-page "https://csound.com/")
2402 (synopsis "Sound and music computing system")
2403 (description
2404 "Csound is a user-programmable and user-extensible sound processing
2405language and software synthesizer.")
2406 (license license:lgpl2.1+)))
2407
2408(define-public midicomp
2409 ;; The latest tagged release is 9 years old and there have been
2410 ;; unreleased fixes, so we take the last commit.
2411 (let ((commit "70f76963cb0cdb3cbe03ec6e7246b1fb885d3c68")
2412 (revision "1"))
2413 (package
2414 (name "midicomp")
2415 (version (git-version "0.0.8" revision commit))
2416 (source
2417 (origin
2418 (method git-fetch)
2419 (uri (git-reference
2420 (url "https://github.com/markc/midicomp")
2421 (commit commit)))
2422 (file-name (git-file-name name version))
2423 (sha256
2424 (base32
2425 "12zh247c6v88ssy4l8v7yirh4bl2jcc1ch7f4gdry79a82kai1gf"))))
2426 (build-system cmake-build-system)
2427 (arguments
2428 `(#:tests? #f)) ; no "check" target
2429 (synopsis "Convert SMF MIDI files to and from plain text")
2430 (description
2431 "midicomp can manipulate SMF (Standard MIDI File) files. It can both
2432 read and write SMF files in 0 or format 1 and also read and write its own
2433 plain text format. This means a SMF file can be turned into easily
2434 parseable text, edited with any text editor or filtered through any script
2435 language, and recompiled back into a binary SMF file.")
2436 (home-page "https://github.com/markc/midicomp")
2437 (license license:agpl3))))
2438
2439(define-public mt32emu
2440 (package
2441 (name "mt32emu")
2442 (version "2.7.1")
2443 (source
2444 (origin
2445 (method git-fetch)
2446 (uri (git-reference
2447 (url "https://github.com/munt/munt")
2448 (commit
2449 (string-append "libmt32emu_"
2450 (string-replace-substring version "." "_")))))
2451 (file-name (git-file-name name version))
2452 (sha256
2453 (base32 "06d3jzx69nwy9jj6jv9q6rhq5399mp51w6d5mijg3fmwr4al13fd"))))
2454 (build-system cmake-build-system)
2455 (arguments (list
2456 #:tests? #f ;no tests.
2457 #:configure-flags #~(list "-Dmunt_WITH_MT32EMU_SMF2WAV=FALSE"
2458 "-Dmunt_WITH_MT32EMU_QT=FALSE")))
2459 (home-page "https://sourceforge.net/projects/munt/")
2460 (synopsis "Pre-GM Roland MIDI device emulator")
2461 (description
2462 "libmt32emu is a C/C++ library which approximately emulates
2463the Roland MT-32, CM-32L and LAPC-I synthesizer modules. It is part of the
2464Munt project.")
2465 (license license:gpl2+)))
2466
2467(define-public clalsadrv
2468 (package
2469 (name "clalsadrv")
2470 (version "2.0.0")
2471 (source (origin
2472 (method url-fetch)
2473 (uri (string-append
2474 "http://kokkinizita.linuxaudio.org"
2475 "/linuxaudio/downloads/clalsadrv-"
2476 version ".tar.bz2"))
2477 (sha256
2478 (base32
2479 "0bsacx3l9065gk8g4137qmz2ij7s9x06aldvacinzlcslw7bd1kq"))))
2480 (build-system gnu-build-system)
2481 (arguments
2482 `(#:tests? #f ; no "check" target
2483 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
2484 #:phases
2485 (modify-phases %standard-phases
2486 (add-after 'unpack 'patch-makefile-and-enter-directory
2487 (lambda _
2488 (substitute* "libs/Makefile"
2489 (("/sbin/ldconfig") "true")
2490 (("^LIBDIR =.*") "LIBDIR = lib\n"))
2491 (chdir "libs")
2492 #t))
2493 (add-after 'install 'install-symlink
2494 (lambda _
2495 (symlink "libclalsadrv.so"
2496 (string-append (assoc-ref %outputs "out")
2497 "/lib/libclalsadrv.so.2"))
2498 #t))
2499 ;; no configure script
2500 (delete 'configure))))
2501 (inputs
2502 (list alsa-lib fftw))
2503 (home-page "https://kokkinizita.linuxaudio.org")
2504 (synopsis "C++ wrapper around the ALSA API")
2505 (description
2506 "clalsadrv is a C++ wrapper around the ALSA API simplifying access to
2507ALSA PCM devices.")
2508 (license license:gpl2+)))
2509
2510(define-public amb-plugins
2511 (package
2512 (name "amb-plugins")
2513 (version "0.8.1")
2514 (source (origin
2515 (method url-fetch)
2516 (uri (string-append
2517 "http://kokkinizita.linuxaudio.org"
2518 "/linuxaudio/downloads/AMB-plugins-"
2519 version ".tar.bz2"))
2520 (sha256
2521 (base32
2522 "0x4blm4visjqj0ndqr0cg776v3b7lvplpc8cgi9n51llhavn0jpl"))))
2523 (build-system gnu-build-system)
2524 (arguments
2525 `(#:tests? #f ; no "check" target
2526 #:phases
2527 (modify-phases %standard-phases
2528 ;; no configure script
2529 (delete 'configure)
2530 (add-before 'install 'prepare-target-directory
2531 (lambda* (#:key outputs #:allow-other-keys)
2532 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
2533 #t))
2534 (add-after 'unpack 'override-target-directory-and-tool-paths
2535 (lambda* (#:key outputs #:allow-other-keys)
2536 (substitute* "Makefile"
2537 (("/usr/lib/ladspa")
2538 (string-append (assoc-ref outputs "out") "/lib/ladspa"))
2539 (("/usr/bin/install") (which "install"))
2540 (("/bin/rm") "#"))
2541 #t)))))
2542 (home-page "https://kokkinizita.linuxaudio.org")
2543 (synopsis "LADSPA ambisonics plugins")
2544 (description
2545 "The AMB plugins are a set of LADSPA ambisonics plugins, mainly to be
2546used within Ardour. Features include: mono and stereo to B-format panning,
2547horizontal rotator, square, hexagon and cube decoders.")
2548 (license license:gpl2+)))
2549
2550(define-public mcp-plugins
2551 (package
2552 (name "mcp-plugins")
2553 (version "0.4.0")
2554 (source (origin
2555 (method url-fetch)
2556 (uri (string-append
2557 "http://kokkinizita.linuxaudio.org"
2558 "/linuxaudio/downloads/MCP-plugins-"
2559 version ".tar.bz2"))
2560 (sha256
2561 (base32
2562 "06a9r1l85jmg7l1cvc3788mk8ra0xagjfy1rmhw3b80y4n0vlnvc"))))
2563 (build-system gnu-build-system)
2564 (arguments
2565 `(#:tests? #f ; no "check" target
2566 #:phases
2567 (modify-phases %standard-phases
2568 ;; no configure script
2569 (delete 'configure)
2570 (add-before 'install 'prepare-target-directory
2571 (lambda* (#:key outputs #:allow-other-keys)
2572 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
2573 #t))
2574 (add-after 'unpack 'override-target-directory
2575 (lambda* (#:key outputs #:allow-other-keys)
2576 (substitute* "Makefile"
2577 (("/usr") (assoc-ref outputs "out")))
2578 #t)))))
2579 (home-page "https://kokkinizita.linuxaudio.org")
2580 (synopsis "Chorus, phaser, and vintage high-pass and low-pass filters")
2581 (description
2582 "This package provides various LADSPA plugins. @code{cs_chorus} and
2583@code{cs_phaser} provide chorus and phaser effects, respectively;
2584@code{mvclpf24} provides four implementations of the low-pass filter used in
2585vintage Moog synthesizers; @code{mvchpf24} is based on the voltage-controlled
2586high-pass filter by Robert Moog. The filters attempt to accurately emulate
2587the non-linear circuit elements of their original analog counterparts.")
2588 (license license:gpl2+)))
2589
2590(define-public rev-plugins
2591 (package
2592 (name "rev-plugins")
2593 (version "0.8.1")
2594 (source (origin
2595 (method url-fetch)
2596 (uri (string-append
2597 "http://kokkinizita.linuxaudio.org"
2598 "/linuxaudio/downloads/REV-plugins-"
2599 version ".tar.bz2"))
2600 (sha256
2601 (base32
2602 "1yhnvjgr14qr0ni0n2x8dhlzbx1qfgyrnffbaaq0d5xbzfgrq543"))))
2603 (build-system gnu-build-system)
2604 (arguments
2605 (list #:tests? #f ; no "check" target
2606 #:phases
2607 #~(modify-phases %standard-phases
2608 ;; no configure script
2609 (delete 'configure)
2610 (add-after 'unpack 'change-directory
2611 (lambda _
2612 (chdir "source")))
2613 (add-after 'change-directory 'override-target-directory
2614 (lambda _
2615 (substitute* "Makefile"
2616 (("/usr") #$output))))
2617 (add-before 'install 'prepare-target-directory
2618 (lambda _
2619 (mkdir-p (string-append #$output "/lib/ladspa")))))))
2620 (home-page "https://kokkinizita.linuxaudio.org")
2621 (synopsis "LADSPA reverb plugin")
2622 (description
2623 "This package provides a stereo reverb LADSPA plugin based on the
2624well-known greverb.")
2625 (license license:gpl2+)))
2626
2627(define-public fil-plugins
2628 (package
2629 (name "fil-plugins")
2630 (version "0.3.0")
2631 (source (origin
2632 (method url-fetch)
2633 (uri (string-append
2634 "http://kokkinizita.linuxaudio.org"
2635 "/linuxaudio/downloads/FIL-plugins-"
2636 version ".tar.bz2"))
2637 (sha256
2638 (base32
2639 "1scfv9j7jrp50r565haa4rvxn1vk2ss86xssl5qgcr8r45qz42qw"))))
2640 (build-system gnu-build-system)
2641 (arguments
2642 `(#:tests? #f ; no "check" target
2643 #:phases
2644 (modify-phases %standard-phases
2645 ;; no configure script
2646 (delete 'configure)
2647 (add-before 'install 'prepare-target-directory
2648 (lambda* (#:key outputs #:allow-other-keys)
2649 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
2650 #t))
2651 (add-after 'unpack 'override-target-directory
2652 (lambda* (#:key outputs #:allow-other-keys)
2653 (substitute* "Makefile"
2654 (("/usr") (assoc-ref outputs "out")))
2655 #t)))))
2656 (home-page "https://kokkinizita.linuxaudio.org")
2657 (synopsis "LADSPA four-band parametric equalizer plugin")
2658 (description
2659 "This package provides a LADSPA plugin for a four-band parametric
2660equalizer. Each section has an active/bypass switch, frequency, bandwidth and
2661gain controls. There is also a global bypass switch and gain control.
2662
2663The 2nd order resonant filters are implemented using a Mitra-Regalia style
2664lattice filter, which is stable even while parameters are being changed.
2665
2666All switches and controls are internally smoothed, so they can be used @code{live}
2667without any clicks or zipper noises. This makes this plugin suitable for use
2668in systems that allow automation of plugin control ports, such as Ardour, or
2669for stage use.")
2670 (license license:gpl2+)))
2671
2672(define-public ste-plugins
2673 (package
2674 (name "ste-plugins")
2675 (version "0.0.2")
2676 (source (origin
2677 (method url-fetch)
2678 (uri (string-append
2679 "http://kokkinizita.linuxaudio.org"
2680 "/linuxaudio/downloads/STE-plugins-"
2681 version ".tar.bz2"))
2682 (sha256
2683 (base32
2684 "0s3c9w5xihs87cnd1lh9xgj3maabjdyh6bl766qp5lhkg3ax8zy6"))))
2685 (build-system gnu-build-system)
2686 (arguments
2687 `(#:tests? #f ; no "check" target
2688 #:phases
2689 (modify-phases %standard-phases
2690 ;; no configure script
2691 (delete 'configure)
2692 (add-before 'install 'prepare-target-directory
2693 (lambda* (#:key outputs #:allow-other-keys)
2694 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
2695 #t))
2696 (add-after 'unpack 'override-target-directory
2697 (lambda* (#:key outputs #:allow-other-keys)
2698 (substitute* "Makefile"
2699 (("/usr") (assoc-ref outputs "out")))
2700 #t)))))
2701 (home-page "https://kokkinizita.linuxaudio.org")
2702 (synopsis "LADSPA stereo width plugin")
2703 (description
2704 "This package provides a LADSPA plugin to manipulate the stereo width of
2705audio signals.")
2706 (license license:gpl2+)))
2707
2708(define-public vco-plugins
2709 (package
2710 (name "vco-plugins")
2711 (version "0.3.0")
2712 (source (origin
2713 (method url-fetch)
2714 (uri (string-append
2715 "http://kokkinizita.linuxaudio.org"
2716 "/linuxaudio/downloads/VCO-plugins-"
2717 version ".tar.bz2"))
2718 (sha256
2719 (base32
2720 "1xzqdg3b07r7zww05y9bb737l9dxvfkv28m3fyak1aazaci3rsgl"))))
2721 (build-system gnu-build-system)
2722 (arguments
2723 `(#:tests? #f ; no "check" target
2724 #:phases
2725 (modify-phases %standard-phases
2726 ;; no configure script
2727 (delete 'configure)
2728 (add-before 'install 'prepare-target-directory
2729 (lambda* (#:key outputs #:allow-other-keys)
2730 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
2731 #t))
2732 (add-after 'unpack 'override-target-directory
2733 (lambda* (#:key outputs #:allow-other-keys)
2734 (substitute* "Makefile"
2735 (("/usr") (assoc-ref outputs "out"))
2736 (("/bin/cp") (which "cp")))
2737 #t)))))
2738 (home-page "https://kokkinizita.linuxaudio.org")
2739 (synopsis "LADSPA plugin for synthesizer oscillators")
2740 (description
2741 "The @code{blvco} LADSPA plugin provides three anti-aliased oscillators:
2742
2743@enumerate
2744@item Pulse-VCO, a dirac pulse oscillator with flat amplitude spectrum
2745@item Saw-VCO, a sawtooth oscillator with 1/F amplitude spectrum
2746@item Rec-VCO, a square / rectangle oscillator
2747@end enumerate\n
2748
2749All oscillators are low-pass filtered to provide waveforms similar to the
2750output of analog synthesizers such as the Moog Voyager.")
2751 (license license:gpl2+)))
2752
2753(define-public wah-plugins
2754 (package
2755 (name "wah-plugins")
2756 (version "0.1.0")
2757 (source (origin
2758 (method url-fetch)
2759 (uri (string-append
2760 "http://kokkinizita.linuxaudio.org"
2761 "/linuxaudio/downloads/WAH-plugins-"
2762 version ".tar.bz2"))
2763 (sha256
2764 (base32
2765 "1wkbjarxdhjixkh7d5abralj11dj2xxg644fz3ycd7qyfgfvjfgd"))))
2766 (build-system gnu-build-system)
2767 (arguments
2768 `(#:tests? #f ; no "check" target
2769 #:phases
2770 (modify-phases %standard-phases
2771 ;; no configure script
2772 (delete 'configure)
2773 (add-before 'install 'prepare-target-directory
2774 (lambda* (#:key outputs #:allow-other-keys)
2775 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
2776 #t))
2777 (add-after 'unpack 'override-target-directory
2778 (lambda* (#:key outputs #:allow-other-keys)
2779 (substitute* "Makefile"
2780 (("/usr") (assoc-ref outputs "out")))
2781 #t)))))
2782 (home-page "https://kokkinizita.linuxaudio.org")
2783 (synopsis "LADSPA Autowah effect plugin")
2784 (description
2785 "This package provides a LADSPA plugin for a Wah effect with envelope
2786follower.")
2787 (license license:gpl2+)))
2788
2789(define-public g2reverb
2790 (package
2791 (name "g2reverb")
2792 (version "0.7.1")
2793 (source (origin
2794 (method url-fetch)
2795 (uri (string-append
2796 "http://kokkinizita.linuxaudio.org"
2797 "/linuxaudio/downloads/g2reverb-"
2798 version ".tar.bz2"))
2799 (sha256
2800 (base32
2801 "18wb8vj1kky5glr76s34awbi8qzplsmf3wjbd7a12hfv4j0bkwrj"))))
2802 (build-system gnu-build-system)
2803 (arguments
2804 `(#:tests? #f ; no "check" target
2805 #:phases
2806 (modify-phases %standard-phases
2807 ;; no configure script
2808 (delete 'configure)
2809 (add-before 'install 'prepare-target-directory
2810 (lambda* (#:key outputs #:allow-other-keys)
2811 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
2812 #t))
2813 (add-after 'unpack 'override-target-directory
2814 (lambda* (#:key outputs #:allow-other-keys)
2815 (substitute* "Makefile"
2816 (("/usr") (assoc-ref outputs "out")))
2817 #t)))))
2818 (home-page "https://kokkinizita.linuxaudio.org")
2819 (synopsis "LADSPA stereo reverb plugin")
2820 (description
2821 "This package provides a LADSPA plugin for a stereo reverb effect.")
2822 (license license:gpl2+)))
2823
2824(define-public fluidsynth
2825 (package
2826 (name "fluidsynth")
2827 (version "2.4.8")
2828 (source (origin
2829 (method git-fetch)
2830 (uri (git-reference
2831 (url "https://github.com/FluidSynth/fluidsynth")
2832 (commit (string-append "v" version))))
2833 (file-name (git-file-name name version))
2834 (sha256
2835 (base32
2836 "1zx9pvarizjm98kqw47jzbiysywxl2z46sl8cr2vjnhdbm2yiqxc"))))
2837 (build-system cmake-build-system)
2838 (arguments
2839 '(#:tests? #f ; no check target
2840 #:phases
2841 (modify-phases %standard-phases
2842 (add-after 'unpack 'fix-libdir
2843 (lambda _
2844 ;; Install libraries to /lib, not /lib64.
2845 (substitute* "CMakeLists.txt"
2846 (("LIB_SUFFIX \\$\\{_init_lib_suffix\\}")
2847 "LIB_SUFFIX \"\"")))))))
2848 (inputs
2849 (list ladspa))
2850 (native-inputs
2851 (list pkg-config))
2852 (propagated-inputs
2853 ;; In Libs.private of fluidsynth.pc.
2854 (list alsa-lib
2855 glib
2856 jack-1
2857 pipewire
2858 libsndfile
2859 readline))
2860 (home-page "https://www.fluidsynth.org/")
2861 (synopsis "SoundFont synthesizer")
2862 (description
2863 "FluidSynth is a real-time software synthesizer based on the SoundFont 2
2864specifications. FluidSynth reads and handles MIDI events from the MIDI input
2865device. It is the software analogue of a MIDI synthesizer. FluidSynth can
2866also play midifiles using a Soundfont.")
2867 (license license:lgpl2.1+)))
2868
2869(define-public faac
2870 (package
2871 (name "faac")
2872 (version "2.2")
2873 (source
2874 (origin
2875 (method git-fetch)
2876 (uri (git-reference
2877 (url "https://github.com/FreewareAdvancedAudio/faac")
2878 (commit (string-append "faac-" version))))
2879 (file-name (git-file-name name version))
2880 (sha256
2881 (base32 "1gwjhlpxs26pjk7p5fj47cgqq0fdhcvkxy1ngd4c5q13494i0xrb"))))
2882 (build-system meson-build-system)
2883 (home-page "https://freewareadvancedaudio.github.io/docs/faac")
2884 (synopsis "Freeware Advanced Audio Codec")
2885 (description
2886 "FAAC is a dependency-free @acronym{AAC, Advanced Audio Coding} encoder.")
2887 (license license:lgpl2.1+)))
2888
2889(define-public faad2
2890 (package
2891 (name "faad2")
2892 (version "2.11.4")
2893 (source
2894 (origin
2895 (method git-fetch)
2896 (uri (git-reference
2897 (url "https://github.com/FreewareAdvancedAudio/faad2")
2898 (commit version)))
2899 (file-name (git-file-name name version))
2900 (sha256
2901 (base32 "1lgdmix73i3649xn9jpdc2m0jrlznr35wncgrbswck3gnjd65q4n"))))
2902 (build-system cmake-build-system)
2903 (arguments (list #:tests? #f)) ;no tests
2904 (home-page "https://freewareadvancedaudio.github.io/docs/faad")
2905 (synopsis "MPEG-4 and MPEG-2 AAC decoder")
2906 (description
2907 "FAAD2 is an MPEG-4 and MPEG-2 AAC decoder
2908supporting LC, Main, LTP, SBR, -PS, and DAB+.")
2909 (license license:gpl2+)))
2910
2911(define-public faust
2912 (package
2913 (name "faust")
2914 (version "0.9.90")
2915 (source (origin
2916 (method git-fetch)
2917 (uri (git-reference
2918 (url "https://github.com/grame-cncm/faust")
2919 (commit (string-append "v"
2920 (string-map (lambda (c)
2921 (if (char=? c #\.) #\- c))
2922 version)))))
2923 (file-name (string-append "faust-" version "-checkout"))
2924 (sha256
2925 (base32
2926 "0qc6iwjd3i80jdyjc186c6ywipmjzl8wlsp4050pbr56q4rlkd4z"))))
2927 (build-system gnu-build-system)
2928 (arguments
2929 `(#:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
2930 #:tests? #f
2931 #:phases
2932 (modify-phases %standard-phases
2933 ;; no "configure" script
2934 (delete 'configure)
2935 ;; Files appear under $out/share/faust that are read-only. The
2936 ;; install phase tries to overwrite them and fails, so we change
2937 ;; the permissions first.
2938 (add-before 'install 'fix-permissions
2939 (lambda _
2940 (for-each (lambda (file)
2941 (chmod file #o644))
2942 (find-files "architecture/max-msp" ".*"))
2943 #t)))))
2944 (native-inputs
2945 (list unzip))
2946 (home-page "https://faust.grame.fr/")
2947 (synopsis "Signal processing language")
2948 (description
2949 "Faust is a programming language for realtime audio signal processing.")
2950 (license license:gpl2+)))
2951
2952(define-public faust-2
2953 (package
2954 (inherit faust)
2955 (version "2.81.10")
2956 (source (origin
2957 (method url-fetch)
2958 (uri (string-append "https://github.com/grame-cncm/faust/"
2959 "releases/download/" version
2960 "/faust-" version ".tar.gz"))
2961 (sha256
2962 (base32
2963 "0mj7gn7xp6mzr94nqcyrrkcmzm81chq6qb1n76wspah71lw7g6f6"))))
2964 (build-system cmake-build-system)
2965 (arguments
2966 (list
2967 ;; There are tests, but they are unit/regression tests scattered in 17
2968 ;; different test directories, and little information indicating whether
2969 ;; they are worth running for Guix. Ignore tests for now.
2970 #:tests? #f
2971 #:configure-flags
2972 #~(list "-C" "backends/all.cmake"
2973 (string-append "-DCMAKE_INSTALL_PREFIX=" #$output))
2974 #:phases
2975 #~(modify-phases %standard-phases
2976 ;; The upstream package uses make to run cmake during the build stage.
2977 ;; Here we ignore the Makefile and call cmake directly.
2978 (replace 'configure
2979 (lambda* (#:key configure-flags #:allow-other-keys)
2980 (chdir "build")
2981 (apply invoke "cmake" configure-flags)))
2982 ;; The sound2faust tool would be built in the Makefile's "world" target
2983 (add-after 'install 'sound2faust
2984 (lambda _
2985 (chdir "../tools/sound2faust")
2986 (setenv "PREFIX" #$output)
2987 (invoke "make")
2988 (invoke "make" "install"))))))
2989 (native-inputs
2990 (list llvm-18 pkg-config which))
2991 (inputs
2992 (list libsndfile libmicrohttpd ncurses openssl zlib))))
2993
2994(define-public freepats
2995 (package
2996 (name "freepats")
2997 (version "20060219")
2998 (source (origin
2999 (method url-fetch)
3000 (uri (string-append "http://freepats.zenvoid.org/freepats-"
3001 version ".tar.bz2"))
3002 (sha256
3003 (base32
3004 "12iw36rd94zirll96cd5k0va7p5hxmf2shvjlhzihcmjaw8flq82"))))
3005 (build-system trivial-build-system)
3006 (arguments
3007 `(#:modules ((guix build utils))
3008 #:builder (begin
3009 (use-modules (guix build utils))
3010 (let ((out (string-append %output "/share/freepats")))
3011 (setenv "PATH" (string-append
3012 (assoc-ref %build-inputs "bzip2") "/bin:"
3013 (assoc-ref %build-inputs "tar") "/bin"))
3014 (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
3015 (chdir "freepats")
3016 ;; Use absolute pattern references
3017 (substitute* "freepats.cfg"
3018 (("Tone_000") (string-append out "/Tone_000"))
3019 (("Drum_000") (string-append out "/Drum_000")))
3020 (mkdir-p out)
3021 (copy-recursively "." out)
3022 #t))))
3023 (native-inputs
3024 (list tar bzip2))
3025 (home-page "https://freepats.zenvoid.org")
3026 (synopsis "GUS compatible patches for MIDI players")
3027 (description
3028 "FreePats is a project to create a free and open set of GUS compatible
3029patches that can be used with softsynths such as Timidity and WildMidi.")
3030 ;; GPLv2+ with exception for compositions using these patches.
3031 (license license:gpl2+)))
3032
3033(define-public freepats-gm
3034 (package
3035 (name "freepats-gm")
3036 (version "20210329")
3037 (source (origin
3038 (method url-fetch)
3039 (uri (string-append "https://freepats.zenvoid.org/SoundSets/"
3040 "FreePats-GeneralMIDI/FreePatsGM-SF2-" version ".7z"))
3041 (sha256
3042 (base32
3043 "19a1mp9yi33j2zff4mjvhrjz97dwwgjwzfdlf84j9xyydhx0crhc"))))
3044 (build-system trivial-build-system)
3045 (native-inputs
3046 `(("p7zip" ,p7zip)))
3047 (arguments
3048 `(#:modules ((guix build utils))
3049 #:builder
3050 (let ((dir (string-append "FreePatsGM-SF2-" ,version))
3051 (file (string-append "FreePatsGM-" ,version ".sf2"))
3052 (out (string-append %output "/share/soundfonts"))
3053 (doc (string-append %output "/share/doc/freepats-gm-" ,version)))
3054 (use-modules (guix build utils))
3055 (invoke (string-append (assoc-ref %build-inputs "p7zip") "/bin/7z")
3056 "e" (assoc-ref %build-inputs "source")
3057 (string-append dir "/" file)
3058 (string-append dir "/gpl.txt")
3059 (string-append dir "/cc0.txt")
3060 (string-append dir "/readme.txt"))
3061 (mkdir-p out)
3062 (copy-file file (string-append out "/FreePatsGM.sf2"))
3063 (mkdir-p doc)
3064 (for-each
3065 (lambda (file)
3066 (copy-file file (string-append doc "/" file)))
3067 (find-files "." "\\.txt$"))
3068 #t)))
3069 (home-page "https://freepats.zenvoid.org/SoundSets/general-midi.html")
3070 (synopsis "General MIDI sound set")
3071 (description "FreePats is a project to create a free (as in free software)
3072collection of digital instruments for music production. This sound bank is a
3073partial release of the General MIDI sound set.")
3074 (license (list
3075 license:gpl3+ ; with sampling exception
3076 license:cc0))))
3077
3078(define-public guitarix
3079 (package
3080 (name "guitarix")
3081 (version "0.44.1")
3082 (source (origin
3083 (method url-fetch)
3084 (uri (string-append
3085 "mirror://sourceforge/guitarix/guitarix/guitarix2-"
3086 version ".tar.xz"))
3087 (sha256
3088 (base32
3089 "063cdvrzrpnj08dm22z651hy5cz5bnsywf1z8b2kib2i9xskvs3p"))))
3090 (build-system waf-build-system)
3091 (arguments
3092 (list #:tests? #f ; no "check" target
3093 #:configure-flags
3094 #~(list
3095 ;; Add the output lib directory to the RUNPATH.
3096 (string-append "--ldflags=-Wl,-rpath=" #$output "/lib"))
3097 #:phases
3098 '(modify-phases %standard-phases
3099 (add-after 'unpack 'fix-includes
3100 (lambda _
3101 (substitute* "src/LV2/DSP/gx_common.h"
3102 (("#include <cstdlib>" all)
3103 (string-append all "\n#include <cstdint>")))))
3104 (add-after 'unpack 'python3.11-compatibility
3105 (lambda _
3106 (substitute* "wscript"
3107 (("'rU'") "'r'")))))))
3108 (inputs
3109 (list libsndfile
3110 boost-1.83
3111 curl
3112 avahi
3113 eigen
3114 lv2
3115 lilv
3116 ladspa
3117 jack-1
3118 gtkmm-3
3119 gtk+
3120 fftwf
3121 lrdf
3122 zita-resampler
3123 zita-convolver))
3124 (native-inputs
3125 (list gperf
3126 faust
3127 intltool
3128 gettext-minimal
3129 pkg-config
3130 sassc))
3131 (home-page "https://guitarix.org/")
3132 (synopsis "Virtual guitar amplifier")
3133 (description "Guitarix is a virtual guitar amplifier running JACK.
3134Guitarix takes the signal from your guitar as a mono-signal from your sound
3135card. The input is processed by a main amp and a rack-section. Both can be
3136routed separately and deliver a processed stereo-signal via JACK. You may
3137fill the rack with effects from more than 25 built-in modules including stuff
3138from a simple noise gate to modulation effects like flanger, phaser or
3139auto-wah.")
3140 (license license:gpl2+)))
3141
3142(define-public guitarix-lv2
3143 (package (inherit guitarix)
3144 (name "guitarix-lv2")
3145 (arguments
3146 (substitute-keyword-arguments arguments
3147 ((#:configure-flags flags)
3148 `(cons "--no-standalone" ,flags))))))
3149
3150(define-public rakarrack
3151 (package
3152 (name "rakarrack")
3153 (version "0.6.1")
3154 (source (origin
3155 (method url-fetch)
3156 (uri (string-append "mirror://sourceforge/rakarrack/rakarrack/"
3157 "rakarrack-" version "/rakarrack-"
3158 version ".tar.bz2"))
3159 (sha256
3160 (base32
3161 "1rpf63pdn54c4yg13k7cb1w1c7zsvl97c4qxcpz41c8l91xd55kn"))
3162 (modules '((guix build utils)))
3163 (snippet
3164 '(begin
3165 (substitute* '("src/process.C"
3166 "src/global.h")
3167 (("#include <Fl/") "#include <FL/"))
3168 #t))))
3169 (build-system gnu-build-system)
3170 (inputs
3171 (list alsa-utils
3172 fltk-1.3
3173 libx11
3174 libxext
3175 libxfixes
3176 libxft
3177 libxrender
3178 libxpm
3179 fontconfig
3180 freetype
3181 jack-1
3182 alsa-lib
3183 libsndfile
3184 libsamplerate
3185 zlib))
3186 (home-page "https://rakarrack.sourceforge.net/")
3187 (synopsis "Audio effects processor")
3188 (description
3189 "Rakarrack is a richly featured multi-effects processor emulating a
3190guitar effects pedalboard. Effects include compressor, expander, noise gate,
3191equalizers, exciter, flangers, chorus, various delay and reverb effects,
3192distortion modules and many more. Most of the effects engine is built from
3193modules found in the excellent software synthesizer ZynAddSubFX. Presets and
3194user interface are optimized for guitar, but Rakarrack processes signals in
3195stereo while it does not apply internal band-limiting filtering, and thus is
3196well suited to all musical instruments and vocals.")
3197 ;; The code is explicitly licensed under the GPL version 2 only.
3198 (license license:gpl2)))
3199
3200(define-public ir
3201 (package
3202 (name "ir")
3203 (version "1.3.4")
3204 (source (origin
3205 (method git-fetch)
3206 (uri (git-reference
3207 (url "https://github.com/tomszilagyi/ir.lv2")
3208 (commit version)))
3209 (file-name (git-file-name name version))
3210 (sha256
3211 (base32
3212 "0svmjhg4r6wy5ci5rwz43ybll7yxjv7nnj7nyqscbzhr3gi5aib0"))))
3213 (build-system gnu-build-system)
3214 (arguments
3215 `(#:tests? #f ; no tests
3216 #:make-flags
3217 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
3218 (string-append "INSTDIR="
3219 (assoc-ref %outputs "out") "/lib/lv2"))
3220 #:phases
3221 (modify-phases %standard-phases
3222 (delete 'configure) ; no configure script
3223 ;; See https://github.com/tomszilagyi/ir.lv2/pull/20
3224 (add-after 'unpack 'fix-type
3225 (lambda _
3226 (substitute* '("ir_gui.cc" "lv2_ui.h")
3227 (("_LV2UI_Descriptor") "LV2UI_Descriptor"))
3228 #t)))))
3229 (inputs
3230 (list libsndfile
3231 libsamplerate
3232 lv2
3233 glib
3234 gtk+-2
3235 zita-convolver))
3236 (native-inputs
3237 (list pkg-config))
3238 (home-page "https://tomszilagyi.github.io/plugins/ir.lv2")
3239 (synopsis "LV2 convolution reverb")
3240 (description
3241 "IR is a low-latency, real-time, high performance signal convolver
3242especially for creating reverb effects. It supports impulse responses with 1,
32432 or 4 channels, in any soundfile format supported by libsndfile.")
3244 (license license:gpl2+)))
3245
3246;; Packages depending on JACK should always prefer jack-2.
3247;; JACK1 is provided for legacy applications
3248(define-public jack-1
3249 (package
3250 (name "jack")
3251 (version "0.125.0")
3252 (source
3253 (origin
3254 (method url-fetch)
3255 ;; jackaudio.org/downloads/jack-audio-connection-kit-0.125.0.tar.gz
3256 ;; no longer exists (404). Use an unofficial mirror.
3257 (uri (string-append "https://crux.ster.zone/downloads/"
3258 "jack-audio-connection-kit/"
3259 "jack-audio-connection-kit-" version ".tar.gz"))
3260 (sha256
3261 (base32 "0i6l25dmfk2ji2lrakqq9icnwjxklgcjzzk65dmsff91z2zva5rm"))))
3262 (build-system gnu-build-system)
3263 (arguments
3264 `(#:configure-flags
3265 '("CFLAGS=-g -O2 -Wno-error=incompatible-pointer-types")
3266 #:phases (modify-phases %standard-phases
3267 (add-after 'unpack 'patch-configure
3268 (lambda _
3269 (substitute* "configure"
3270 ;; Install to <out/lib> regardless of platform.
3271 (("libnn=lib64") "libnn=lib")))))))
3272 (inputs
3273 (list alsa-lib readline))
3274 ;; uuid.h is included in the JACK type headers
3275 ;; db.h is included in the libjack metadata headers
3276 (propagated-inputs
3277 `(("libuuid" ,util-linux "lib")
3278 ("bdb" ,bdb)))
3279 (native-inputs
3280 (list pkg-config))
3281 (home-page "https://jackaudio.org/")
3282 (synopsis "JACK audio connection kit")
3283 (description
3284 "JACK is a low-latency audio server. It can connect a number of
3285different applications to an audio device, as well as allowing them to share
3286audio between themselves. JACK is different from other audio server efforts
3287in that it has been designed from the ground up to be suitable for
3288professional audio work. This means that it focuses on two key areas:
3289synchronous execution of all clients, and low latency operation.")
3290 ;; Most files are licensed under the GPL. However, the libjack/ tree is
3291 ;; licensed under the LGPL in order to allow for proprietary usage.
3292 (license (list license:gpl2+ license:lgpl2.1+))))
3293
3294;; Packages depending on JACK should always prefer jack-2. Both jack-1 and
3295;; jack-2 implement the same API.
3296(define-public jack-2
3297 (package
3298 (inherit jack-1)
3299 (name "jack2")
3300 ;; 1.9.22 does not compile with Python 3.12, use the latest commit instead.
3301 (properties '((commit . "17959465a722225a36a8b612aed26764036f258e")
3302 (revision . "0")))
3303 (version (git-version "1.9.22"
3304 (assoc-ref properties 'revision)
3305 (assoc-ref properties 'commit)))
3306 (source (origin
3307 (method git-fetch)
3308 (uri (git-reference
3309 (url "https://github.com/jackaudio/jack2")
3310 (commit (assoc-ref properties 'commit))))
3311 (file-name (git-file-name name version))
3312 (sha256
3313 (base32
3314 "18dbjq9y8mcp27j9aaqdlg4976hrisr7b88lk84ck09gmzlwqalp"))))
3315 (build-system waf-build-system)
3316 (arguments
3317 `(#:tests? #f ; no check target
3318 #:configure-flags '("--dbus" "--alsa")
3319 #:phases
3320 (modify-phases %standard-phases
3321 (add-before 'configure 'set-linkflags
3322 (lambda _
3323 ;; Ensure -lstdc++ is the tail of LDFLAGS or the simdtests.cpp
3324 ;; will not link with undefined reference to symbol
3325 ;; '__gxx_personality_v0@@CXXABI_1.3'
3326 (setenv "LDFLAGS" "-lstdc++")
3327 ;; Add $libdir to the RUNPATH of all the binaries.
3328 (substitute* "wscript"
3329 ((".*CFLAGS.*-Wall.*" m)
3330 (string-append m
3331 " conf.env.append_unique('LINKFLAGS',"
3332 "'-Wl,-rpath=" %output "/lib')\n")))))
3333 (add-after 'install 'wrap-python-scripts
3334 (lambda* (#:key outputs #:allow-other-keys)
3335 ;; Make sure 'jack_control' runs with the correct PYTHONPATH.
3336 (wrap-program (search-input-file outputs "bin/jack_control")
3337 `("GUIX_PYTHONPATH" ":"
3338 prefix (,(getenv "GUIX_PYTHONPATH")))))))))
3339 (inputs
3340 (list alsa-lib
3341 bash-minimal
3342 dbus
3343 expat
3344 libsamplerate
3345 opus
3346 python-dbus
3347 readline))
3348 (native-inputs
3349 (list pkg-config))
3350 ;; Most files are under GPLv2+, but some headers are under LGPLv2.1+
3351 (license (list license:gpl2+ license:lgpl2.1+))))
3352
3353(define-public jack-example-tools
3354 (package
3355 (name "jack-example-tools")
3356 (version "3")
3357 (source (origin
3358 (method git-fetch)
3359 (uri (git-reference
3360 (url "https://github.com/jackaudio/jack-example-tools")
3361 (commit version)))
3362 (file-name (git-file-name name version))
3363 (sha256
3364 (base32
3365 "0x684clxqib1bq3zvvrqlh7hb3arb1bf672xyx1jbwv76dcmm5mh"))))
3366 (build-system meson-build-system)
3367 (inputs
3368 (list alsa-lib
3369 jack-2
3370 libsndfile
3371 opus
3372 readline))
3373 (native-inputs
3374 (list pkg-config))
3375 (home-page "https://github.com/jackaudio/jack-example-tools")
3376 (synopsis "Tools for JACK connections")
3377 (description "This package provides tools for managing JACK connections
3378and testing or configuring the JACK session. Tools include @code{jack_lsp},
3379@code{jack_connect}, and @code{jack_transport}.")
3380 ;; Most files are under GPLv2+, but zalsa is GPLv3+.
3381 (license (list license:gpl2+ license:gpl3+))))
3382
3383(define-public jacktrip
3384 (package
3385 (name "jacktrip")
3386 (version "2.7.1")
3387 (source (origin
3388 (method git-fetch)
3389 (uri (git-reference
3390 (url "https://github.com/jacktrip/jacktrip/")
3391 (commit (string-append "v" version))))
3392 (file-name (git-file-name name version))
3393 (sha256
3394 (base32 "1d9cn4nny3kbf3f9x0bcsrqb0ir1h789nv7s72xmhf7r5rfd9xm4"))))
3395 (build-system gnu-build-system)
3396 (arguments
3397 (list
3398 #:phases
3399 '(modify-phases %standard-phases
3400 (replace 'configure
3401 (lambda* (#:key outputs #:allow-other-keys)
3402 (invoke "qmake"
3403 (string-append "PREFIX="
3404 (assoc-ref outputs "out"))
3405 "-config" "novs"
3406 "-config" "noupdater"
3407 "jacktrip.pro"))))))
3408 (inputs
3409 (list jack-2
3410 python
3411 python-jinja2
3412 python-pyyaml
3413 qtbase
3414 qtwayland
3415 rtaudio))
3416 (native-inputs
3417 (list pkg-config))
3418 (home-page "https://jacktrip.github.io/jacktrip/")
3419 (synopsis "Multi-machine audio system for network music performance")
3420 (description
3421 "JackTrip is a multi-machine audio system used for network music
3422performance over the Internet. It supports any number of channels (as many as
3423the computer/network can handle) of bidirectional, high quality, uncompressed
3424audio signal streaming.")
3425 (license (list license:gpl3+ license:lgpl3 license:expat))))
3426
3427(define-public jack-mixer
3428 (package
3429 (name "jack-mixer")
3430 (version "19")
3431 (source
3432 (origin
3433 (file-name (git-file-name name version))
3434 (method git-fetch)
3435 (uri (git-reference
3436 (url "https://github.com/jack-mixer/jack_mixer")
3437 (commit (string-append "release-" version))))
3438 (sha256
3439 (base32 "18m6a9asbwaslw418i2w04kgc6jgdpw01i3kawdqy903kw66hnhj"))))
3440 (build-system meson-build-system)
3441 (arguments
3442 (list
3443 #:build-type "release"
3444 #:phases #~(modify-phases %standard-phases
3445 (add-after 'unpack 'path-patch
3446 (lambda _
3447 (substitute* '("meson.build")
3448 (("'/', 'etc', 'xdg'")
3449 (string-append "'"
3450 #$output "'")))))
3451 (add-after 'install 'wrap-path
3452 (lambda* (#:key outputs #:allow-other-keys)
3453 (let* ((out (assoc-ref outputs "out"))
3454 (bin (string-append out "/bin/"))
3455 (gi-typelib-path (getenv "GI_TYPELIB_PATH"))
3456 (version #$(version-major+minor (package-version
3457 (this-package-input
3458 "python"))))
3459 (lib (string-append out "/lib/python" version
3460 "/site-packages")))
3461 (wrap-program (string-append bin "jack_mixer")
3462 `("GUIX_PYTHONPATH" ":" prefix
3463 (,(getenv "GUIX_PYTHONPATH") ,lib))
3464 `("GI_TYPELIB_PATH" ":" prefix
3465 (,gi-typelib-path)))))))))
3466 (native-inputs (list pkg-config python-cython python-docutils
3467 gettext-minimal glib))
3468 (inputs (list bash-minimal))
3469 (propagated-inputs (list gtk+
3470 `(,gtk+ "bin")
3471 python
3472 python-wrapper
3473 python-pygobject
3474 python-pycairo
3475 python-platformdirs
3476 jack-2))
3477 (synopsis
3478 "JACK Mixer: A multi-channel audio mixer for the JACK Audio Connection Kit")
3479 (description
3480 "The jack_mixer is a GTK+ JACK audio mixer app with a look & handling
3481similar to hardware mixing desks. It has lot of useful features, apart
3482from being able to mix multiple JACK audio streams.")
3483 (home-page "https://rdio.space/jackmixer/")
3484 (license license:gpl2+)))
3485
3486(define-public pipemixer
3487 (package
3488 (name "pipemixer")
3489 (version "0.5.0")
3490 (source
3491 (origin
3492 (method git-fetch)
3493 (uri (git-reference
3494 (url "https://github.com/heather7283/pipemixer")
3495 (commit (string-append "v" version))))
3496 (file-name (git-file-name name version))
3497 (sha256
3498 (base32 "104h2zdhqx5gdddnb7v7rhrflznh4v7d4g3s6vk2mxwf938zgm72"))))
3499 (build-system meson-build-system)
3500 (native-inputs
3501 (list pkg-config))
3502 (inputs
3503 (list libinih ncurses pipewire-minimal-1.4))
3504 (synopsis "TUI volume control app for pipewire.")
3505 (description "This is a TUI volume control application for pipewire built with
3506ncurses. Heavily inspired by pulsemixer and pwvucontrol.")
3507 (home-page "https://github.com/heather7283/pipemixer")
3508 (license license:gpl3)))
3509
3510(define-public jalv
3511 (package
3512 (name "jalv")
3513 (version "1.6.8")
3514 (source (origin
3515 (method url-fetch)
3516 (uri (string-append "https://download.drobilla.net/jalv-"
3517 version ".tar.xz"))
3518 (sha256
3519 (base32
3520 "1q8mzjv577vdi64s47gd4pg0ydzxvs32cwrb1d64v90f52qpgbpd"))))
3521 (build-system meson-build-system)
3522 (arguments
3523 (list #:tests? #f ; no check target
3524 #:phases
3525 #~(modify-phases %standard-phases
3526 (add-before 'configure 'build-PIC
3527 ;; The default -fPIE #errors when combined with our Qt
3528 ;; packages. Work around the broken meson.build script
3529 ;; clobbering c_args.
3530 (lambda _
3531 (substitute* "meson.build"
3532 (("'-DZIX_STATIC'" match)
3533 (string-append match ", '-fPIC'"))))))))
3534 (inputs
3535 (list lv2
3536 lilv
3537 suil
3538 gtk+
3539 jack-1
3540 qtbase-5))
3541 (native-inputs
3542 (list pkg-config))
3543 (native-search-paths
3544 (list (search-path-specification
3545 (variable "LV2_PATH")
3546 (files '("lib/lv2")))))
3547 (home-page "https://drobilla.net/software/jalv.html")
3548 (synopsis "Simple LV2 host for JACK")
3549 (description
3550 "Jalv is a simple but fully featured LV2 host for JACK. It runs LV2
3551plugins and exposes their ports as JACK ports, essentially making any LV2
3552plugin function as a JACK application.")
3553 (license license:isc)))
3554
3555(define-public clap
3556 (package
3557 (name "clap")
3558 (version "1.2.10")
3559 (source (origin
3560 (method git-fetch)
3561 (uri (git-reference
3562 (url "https://github.com/free-audio/clap")
3563 (commit version)))
3564 (file-name (git-file-name name version))
3565 (sha256
3566 (base32
3567 "15w83k77vzfw041k47dfsxsrd7bpa3fm71a1czbfdnz2qyjydfzk"))))
3568 (build-system cmake-build-system)
3569 (arguments
3570 ;; FIXME: With "-DCLAP_BUILD_TESTS=ON" the test executables do not build.
3571 (list #:tests? #f))
3572 (synopsis "Audio Plugin API")
3573 (description
3574 "CLAP stands for CLever Audio Plugin. It is an audio plugin ABI which
3575defines a standard for Digital Audio Workstations and audio plugins to work
3576together.")
3577 (home-page "https://cleveraudio.org/")
3578 (license license:expat)))
3579
3580(define-public clap-1.1
3581 (package/inherit clap
3582 (version "1.1.10")
3583 (source (origin
3584 (method git-fetch)
3585 (uri (git-reference
3586 (url "https://github.com/free-audio/clap")
3587 (commit version)))
3588 (file-name (git-file-name "clap" version))
3589 (sha256
3590 (base32
3591 "0skn3cvh7zs173v3i6ywdmddqzrhxvivwdisvmqc6hvq594f8z80"))))))
3592
3593(define-public clap-1.0
3594 (package/inherit clap
3595 (version "1.0.3")
3596 (source (origin
3597 (method git-fetch)
3598 (uri (git-reference
3599 (url "https://github.com/free-audio/clap")
3600 (commit version)))
3601 (file-name (git-file-name "clap" version))
3602 (sha256
3603 (base32
3604 "0ck07ihbmjlqfys5k942fn97f7z4sq1ikxdzcm5fs8nr9j0f1mfn"))))
3605 (arguments
3606 (substitute-keyword-arguments arguments
3607 ((#:phases phases
3608 #~%standard-phases)
3609 #~(modify-phases #$phases
3610 (add-after 'unpack 'include-headers-in-install
3611 (lambda _
3612 ;; The 1.0.x install rule is excluded from the default install
3613 ;; target.
3614 (substitute* "CMakeLists.txt"
3615 ((" OPTIONAL EXCLUDE_FROM_ALL")
3616 ""))))))))))
3617
3618(define-public ladspa
3619 (package
3620 (name "ladspa")
3621 (version "1.13")
3622 (source
3623 (origin
3624 (method url-fetch)
3625 ;; Since the official link is dead,
3626 ;; we download the tarball from Debian or Internet Archive.
3627 (uri (list (string-append "http://deb.debian.org"
3628 "/debian/pool/main/l/ladspa-sdk/ladspa-sdk_"
3629 version ".orig.tar.gz")
3630 (string-append "https://web.archive.org/web/20140717172251/"
3631 "http://www.ladspa.org/download/ladspa_sdk_"
3632 version ".tgz")))
3633 (sha256
3634 (base32
3635 "0srh5n2l63354bc0srcrv58rzjkn4gv8qjqzg8dnq3rs4m7kzvdm"))))
3636 (build-system gnu-build-system)
3637 (arguments
3638 `(#:tests? #f ; the "test" target is a listening test only
3639 #:phases
3640 (modify-phases %standard-phases
3641 (replace 'configure
3642 (lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
3643 (chdir "src")
3644 (let ((out (assoc-ref outputs "out")))
3645 (substitute* "makefile"
3646 (("/usr/lib/ladspa/") (string-append out "/lib/ladspa/"))
3647 (("/usr/include/") (string-append out "/include/"))
3648 (("/usr/bin/") (string-append out "/bin/"))
3649 (("-mkdirhier") "mkdir -p")
3650 (("^CC.*") "CC = gcc\n")
3651 (("^CPP.*") "CPP = g++\n")))
3652 #t))
3653 (delete 'build))))
3654 (native-search-paths
3655 (list (search-path-specification
3656 (variable "LADSPA_PATH")
3657 (files '("lib/ladspa")))))
3658 ;; Since the home page is gone, we provide a link to the archived version.
3659 (home-page
3660 "https://web.archive.org/web/20140729190945/http://www.ladspa.org/")
3661 (synopsis "Linux Audio Developer's Simple Plugin API (LADSPA)")
3662 (description
3663 "LADSPA is a standard that allows software audio processors and effects
3664to be plugged into a wide range of audio synthesis and recording packages.")
3665 (license license:lgpl2.1+)))
3666
3667(define-public libbs2b
3668 (package
3669 (name "libbs2b")
3670 (version "3.1.0")
3671 (source (origin
3672 (method url-fetch)
3673 (uri (string-append "mirror://sourceforge/bs2b/libbs2b/" version
3674 "/libbs2b-" version ".tar.lzma"))
3675 (sha256
3676 (base32
3677 "1mcc4gjkmphczjybnsrip3gq1f974knzys7x49bv197xk3fn8wdr"))))
3678 (build-system gnu-build-system)
3679 (native-inputs (list pkg-config))
3680 (inputs (list libsndfile))
3681 (home-page "https://sourceforge.net/projects/bs2b/")
3682 (synopsis "Bauer stereophonic-to-binaural DSP")
3683 (description
3684 "The Bauer stereophonic-to-binaural DSP (bs2b) library and plugins is
3685designed to improve headphone listening of stereo audio records. Recommended
3686for headphone prolonged listening to disable superstereo fatigue without
3687essential distortions.")
3688 (license license:expat)))
3689
3690(define-public ladspa-bs2b
3691 (package
3692 (name "ladspa-bs2b")
3693 (version "0.9.1")
3694 (source (origin
3695 (method url-fetch)
3696 (uri (string-append
3697 "mirror://sourceforge/bs2b/plugins/LADSPA%20plugin/"
3698 version "/" name "-" version ".tar.gz"))
3699 (sha256
3700 (base32
3701 "1b4aipbj1ba5k99gbc7gmgy14sywyrjd8rpyqj5l905j0mjv8jg2"))))
3702 (build-system gnu-build-system)
3703 (native-inputs (list pkg-config))
3704 (inputs (list ladspa libbs2b))
3705 (home-page "https://sourceforge.net/projects/bs2b/")
3706 (synopsis "Bauer stereophonic-to-binaural DSP - LADSPA plugin")
3707 (description "The Bauer stereophonic-to-binaural DSP (bs2b) library and
3708plugins is designed to improve headphone listening of stereo audio records.
3709Recommended for headphone prolonged listening to disable superstereo fatigue
3710without essential distortions. This package contains a LADSPA plugin for use
3711with applications that support them (e.g. PulseAudio).")
3712 (license license:gpl2+)))
3713
3714(define-public liblo
3715 (package
3716 (name "liblo")
3717 (version "0.31")
3718 (source
3719 (origin
3720 (method git-fetch)
3721 (uri (git-reference
3722 (url "https://github.com/radarsat1/liblo")
3723 (commit version)))
3724 (file-name (git-file-name name version))
3725 (sha256
3726 (base32 "124c4mviqwxzzi59czk80qkdd8yi69wn46psrsqj49dz5xgn2w4s"))))
3727 (build-system gnu-build-system)
3728 (arguments
3729 (list
3730 #:configure-flags
3731 #~(list "--disable-network-tests")))
3732 (native-inputs (list autoconf automake libtool))
3733 (home-page "https://liblo.sourceforge.net")
3734 (synopsis "Implementation of the Open Sound Control protocol")
3735 (description
3736 "liblo is a lightweight library that provides an easy to use
3737implementation of the Open Sound Control (@dfn{OSC}) protocol.")
3738 (license license:lgpl2.1+)))
3739
3740(define-public rtaudio
3741 (package
3742 (name "rtaudio")
3743 (version "5.2.0")
3744 (source
3745 (origin
3746 (method git-fetch)
3747 (uri (git-reference
3748 (url "https://github.com/thestk/rtaudio")
3749 (commit version)))
3750 (file-name (git-file-name name version))
3751 (sha256
3752 (base32 "189xphhf0winf8b60dx1kk2biz811wk6ps44br7l1lyfhymxcjmi"))))
3753 (build-system cmake-build-system)
3754 (native-inputs
3755 (list pkg-config))
3756 (inputs
3757 (list alsa-lib jack-1 pulseaudio))
3758 (synopsis "Common API for real-time audio I/O")
3759 (description
3760 "RtAudio is a set of C++ classes that provides a common API for real-time
3761audio input/output. It was designed with the following objectives:
3762
3763@itemize
3764@item object-oriented C++ design
3765@item simple, common API across all supported platforms
3766@item only one source and one header file for easy inclusion in programming
3767projects
3768@item allow simultaneous multi-api support
3769@item support dynamic connection of devices
3770@item provide extensive audio device parameter control
3771@item allow audio device capability probing
3772@item automatic internal conversion for data format, channel number
3773compensation, (de)interleaving, and byte-swapping
3774@end itemize")
3775 (home-page "https://www.music.mcgill.ca/~gary/rtaudio/")
3776 ;; License is expat with a non-binding request to send modifications to
3777 ;; original developer.
3778 (license license:expat)))
3779
3780(define-public rtcqs
3781 (package
3782 (name "rtcqs")
3783 (version "0.6.7")
3784 (source
3785 (origin
3786 (method git-fetch)
3787 (uri (git-reference
3788 (url "https://codeberg.org/rtcqs/rtcqs")
3789 (commit (string-append "v" version))))
3790 (file-name (git-file-name name version))
3791 (sha256
3792 (base32 "1kc3niyaq4m8di68832pgfb1b0m54q5gm68dwlzwwilgxi61ifzc"))))
3793 (build-system pyproject-build-system)
3794 (arguments
3795 (list
3796 #:tests? #f ;no test suite
3797 #:phases
3798 #~(modify-phases %standard-phases
3799 (add-after 'unpack 'remove-gui
3800 (lambda _
3801 (substitute* "pyproject.toml"
3802 (("\"FreeSimpleGUI\",?")
3803 "")
3804 (("rtcqs_gui = \"rtcqs\\.rtcqs_gui:main\"")
3805 ""))
3806 (delete-file "src/rtcqs/rtcqs_gui.py")
3807 (delete-file "src/rtcqs/rtcqs_qt_gui.py"))))))
3808 (native-inputs (list python-setuptools))
3809 (home-page "https://codeberg.org/rtcqs/rtcqs")
3810 (synopsis "Linux audio real-time performance analyzer")
3811 (description
3812 "rtcqs analyzes a Linux system to detect possible bottlenecks that could
3813have a negative impact on real-time audio performance. It checks kernel
3814configuration, IRQ priorities, CPU governor, swappiness, and other settings
3815relevant to low-latency audio work.")
3816 (license license:expat)))
3817
3818(define-public rtosc
3819 (package
3820 (name "rtosc")
3821 (version "0.3.1")
3822 (source (origin
3823 (method git-fetch)
3824 (uri (git-reference
3825 (url "https://github.com/fundamental/rtosc")
3826 (commit (string-append "v" version))))
3827 (file-name (git-file-name name version))
3828 (sha256
3829 (base32
3830 "1djvyq53cjwd0szkvhpk45zcmdgrlirjwr02nqq9hzdmh0n26pk2"))
3831 (patches
3832 (search-patches
3833 "rtosc-0.3.1-fix-invalid-comparison-operator.patch"))))
3834 (build-system cmake-build-system)
3835 (arguments
3836 (list #:configure-flags
3837 #~(list "-DPERF_TEST=ON"
3838 "-DRTOSC_BUILD_SHARED_LIBS=ON")
3839 #:phases
3840 #~(modify-phases %standard-phases
3841 (add-after 'build 'build-documentation
3842 (lambda _
3843 (invoke "make" "rtosc-doc")))
3844 (add-after 'install 'install-documentation
3845 (lambda _
3846 (copy-recursively "html"
3847 (string-append #$output:doc
3848 "/share/doc/rtosc/html")))))))
3849 (native-inputs
3850 (list doxygen pkg-config ruby))
3851 (inputs
3852 (list jack-1
3853 liblo
3854 libx11
3855 mesa))
3856 (outputs (list "out" "doc"))
3857 (home-page "https://fundamental-code.com/wiki/rtosc/")
3858 (synopsis "Realtime Safe OSC packet serialization and dispatch")
3859 (description
3860 "RtOSC is a realtime safe library for handling OSC messages.")
3861 (license license:expat)))
3862
3863(define-public python-jack-client
3864 (package
3865 (name "python-jack-client")
3866 (version "0.5.5")
3867 (source
3868 (origin
3869 (method url-fetch)
3870 (uri (pypi-uri "jack_client" version))
3871 (sha256
3872 (base32 "09l4c34klz73zikav94f1ws91s1j55kcb5gv1vpy5w12wnbj0j78"))))
3873 (build-system pyproject-build-system)
3874 (arguments
3875 (list
3876 #:tests? #f ;no test target
3877 #:phases
3878 #~(modify-phases %standard-phases
3879 (add-after 'unpack 'find-library
3880 (lambda _
3881 (substitute* "src/jack.py"
3882 (("_libname = _find_library\\('jack'\\)")
3883 (string-append "_libname = '"
3884 #$(this-package-input "pipewire")
3885 "/lib/pipewire-0.3/jack/libjack.so.0'"))))))))
3886 (inputs (list pipewire))
3887 (propagated-inputs (list python-cffi))
3888 (native-inputs (list python-setuptools python-wheel))
3889 (home-page "https://jackclient-python.readthedocs.io/")
3890 (synopsis "JACK Audio Connection Kit (JACK) client for Python")
3891 (description "This package provides a JACK Audio Connection Kit (JACK)
3892client for Python. This variant uses the compatibility JACK implementation
3893provided by Pipewire.")
3894 (license license:expat)))
3895
3896(define-public python-pyaudio
3897 (package
3898 (name "python-pyaudio")
3899 (version "0.2.14")
3900 (source
3901 (origin
3902 (method url-fetch)
3903 (uri (pypi-uri "PyAudio" version))
3904 (sha256
3905 (base32 "11rgpnahh2kr3x4plr0r7kpccmbplm35cj669wglv6dlg4wgzpvq"))))
3906 (build-system pyproject-build-system)
3907 (arguments
3908 (list
3909 ;; XXX: Most tests require access to devices.
3910 #:tests? #f
3911 #:phases
3912 #~(modify-phases %standard-phases
3913 (replace 'check
3914 (lambda* (#:key tests? test-flags #:allow-other-keys)
3915 (when tests?
3916 (setenv "PYTHONPATH" (string-append (getcwd) "/tests"))
3917 (apply invoke "python" test-flags)))))))
3918 (native-inputs
3919 (list python-numpy python-setuptools python-wheel))
3920 (inputs (list portaudio))
3921 (home-page "https://people.csail.mit.edu/hubert/pyaudio/")
3922 (synopsis "Bindings for PortAudio v19")
3923 (description "This package provides bindings for PortAudio v19, the
3924cross-platform audio input/output stream library.")
3925 (license license:expat)))
3926
3927(define-public python-pyroomacoustics
3928 (package
3929 (name "python-pyroomacoustics")
3930 (version "0.10.0")
3931 (source
3932 (origin
3933 (method git-fetch)
3934 (uri (git-reference
3935 (url "https://github.com/LCAV/pyroomacoustics")
3936 (commit (string-append "v" version))))
3937 (file-name (git-file-name name version))
3938 (sha256
3939 (base32 "0546506lg93nrybvilc4wgrgvn317w9zxv2jwikhpfy1i0qyrnkk"))))
3940 (build-system pyproject-build-system)
3941 (arguments
3942 (list
3943 #:test-flags
3944 #~(list
3945 ;; Want to download data from the internet:
3946 "--ignore"
3947 "pyroomacoustics/directivities/tests/test_sofa_directivities.py"
3948 "--ignore"
3949 "pyroomacoustics/datasets/tests/test_download_uncompress.py"
3950 ;; May fail because of slight numerical imprecision.
3951 "--ignore"
3952 "pyroomacoustics/experimental/tests/test_measure_rt60.py")
3953 #:phases
3954 #~(modify-phases %standard-phases
3955 (add-before 'build 'set-extra-include-paths
3956 (lambda* (#:key inputs #:allow-other-keys)
3957 (setenv "CPLUS_INCLUDE_PATH"
3958 (string-append
3959 (search-input-directory inputs "include/eigen3")
3960 ":"
3961 (or (getenv "CPLUS_INCLUDE_PATH") ""))))))))
3962 (propagated-inputs (list python-scipy))
3963 (native-inputs (list eigen
3964 pybind11
3965 python-cython
3966 python-matplotlib
3967 python-numpy
3968 python-pytest
3969 python-setuptools
3970 python-sofa))
3971 (inputs (list nanoflann))
3972 (home-page "https://github.com/LCAV/pyroomacoustics")
3973 (synopsis "Python library for room acoustics")
3974 (description "@code{pyroomacoustics} is a framework for simulating the
3975acustic behaviour of rooms, such as computing the impulse response using
3976different simulation methods.")
3977 (license license:expat)))
3978
3979(define-public python-pulsectl
3980 (package
3981 (name "python-pulsectl")
3982 (version "24.12.0")
3983 (source
3984 (origin
3985 (method git-fetch)
3986 (uri (git-reference
3987 (url "https://github.com/mk-fg/python-pulse-control")
3988 (commit version)))
3989 (file-name (git-file-name name version))
3990 (sha256
3991 (base32 "1f15w2312j2yc9bs689dvdgq891sjrp5x3q1vf08743px70gxc1m"))))
3992 (build-system pyproject-build-system)
3993 (arguments
3994 (list
3995 #:tests? #f ;tests try to communicate with PulseAudio
3996 #:phases
3997 #~(modify-phases %standard-phases
3998 (add-after 'unpack 'patch-path
3999 (lambda* (#:key inputs #:allow-other-keys)
4000 (substitute* "pulsectl/_pulsectl.py"
4001 (("libpulse.so.0")
4002 (search-input-file inputs "/lib/libpulse.so.0"))))))))
4003 (native-inputs (list python-setuptools))
4004 (inputs (list pulseaudio))
4005 (home-page "https://github.com/mk-fg/python-pulse-control")
4006 (synopsis "Python bindings for mixer-like controls in PulseAudio")
4007 (description
4008 "This package provides a Python high-level interface and ctypes-based
4009bindings for PulseAudio (libpulse), to use in simple synchronous code.
4010This wrapper is mostly for mixer-like controls and introspection-related
4011operations, as opposed to e.g. submitting sound samples to play and
4012player-like clients.")
4013 (license license:expat)))
4014
4015(define-public python-pyliblo3
4016 (package
4017 (name "python-pyliblo3")
4018 (version "0.16.3")
4019 (source (origin
4020 (method git-fetch)
4021 (uri (git-reference
4022 (url "https://github.com/gesellkammer/pyliblo3")
4023 (commit (string-append "v" version))))
4024 (file-name (git-file-name name version))
4025 (sha256
4026 (base32
4027 "1rr2m8jxa5yxyb3pw6h93kvdxg7x0m6sxxxvgn34vq8k8mg1kz21"))))
4028 (build-system pyproject-build-system)
4029 (arguments
4030 (list
4031 #:test-backend #~'custom
4032 #:test-flags #~(list "test/unit.py")
4033 #:phases
4034 #~(modify-phases %standard-phases
4035 ;; long is not available and replaced by int, proposed in
4036 ;; <https://github.com/gesellkammer/pyliblo3/pull/15>.
4037 (add-after 'unpack 'fix-compilation
4038 (lambda _
4039 (substitute* "pyliblo3/_liblo.pyx"
4040 (("long\\(") "int(")
4041 ((", long") "")))))))
4042 (native-inputs
4043 (list python-cython
4044 python-setuptools
4045 python-wheel))
4046 (inputs
4047 (list liblo))
4048 (home-page "https://github.com/gesellkammer/pyliblo3")
4049 (synopsis "Python bindings for liblo")
4050 (description
4051 "Pyliblo is a Python wrapper for the liblo Open Sound Control (OSC)
4052library. It supports almost the complete functionality of liblo, allowing you
4053to send and receive OSC messages using a nice and simple Python API. Also
4054included are the command line utilities @code{send_osc} and @code{dump_osc}.")
4055 (license license:lgpl2.1+)))
4056
4057;; XXX: Deprecated on <2026-05-02>.
4058(define-deprecated-package python-pyliblo python-pyliblo3)
4059
4060(define-public python-sofa
4061 (package
4062 (name "python-sofa")
4063 (version "0.2.0")
4064 (source
4065 (origin
4066 (method git-fetch)
4067 (uri (git-reference
4068 (url "https://github.com/spatialaudio/python-sofa/")
4069 (commit (string-append "v" version))))
4070 (file-name (git-file-name name version))
4071 (sha256
4072 (base32 "0n6mdck2dawfm6napqhhxi8gjyvs6121pblcr7zjl37a8ldqvg29"))))
4073 (build-system pyproject-build-system)
4074 (arguments
4075 (list
4076 #:tests? #f ;No tests
4077 #:phases
4078 #~(modify-phases %standard-phases
4079 (add-after 'unpack 'remove-wrong-dependency
4080 (lambda _
4081 (substitute* "setup.py"
4082 (("'datetime'")
4083 "")))))))
4084 (propagated-inputs (list python-netcdf4 python-numpy python-scipy))
4085 (native-inputs (list python-setuptools))
4086 (home-page "https://github.com/spatialaudio/python-sofa/")
4087 (synopsis
4088 "Python @acronym{Spatially Oriented Format for Acoustics, SOFA} API")
4089 (description
4090 "Python API for @acronym{Spatially Oriented Format for Acoustics, SOFA} files
4091as specified in @url{https://www.sofaconventions.org, SOFA conventions}.")
4092 (license license:expat)))
4093
4094(define-public python-soundfile
4095 (package
4096 (name "python-soundfile")
4097 (version "0.13.1")
4098 (source
4099 (origin
4100 (method url-fetch)
4101 (uri (pypi-uri "soundfile" version))
4102 (sha256
4103 (base32
4104 "0nqf7z2wrb70vppjv5729565h0p3azgl6nqa10bp6a9h3smqvimj"))))
4105 (build-system pyproject-build-system)
4106 (arguments
4107 (list
4108 #:test-flags
4109 ;; Error opening 'tests/stereo.mp3': File contains data in an
4110 ;; unimplemented format.
4111 '(list "-k" "not test_write_mp3_compression")
4112 #:phases
4113 '(modify-phases %standard-phases
4114 (add-after 'unpack 'patch
4115 (lambda* (#:key inputs #:allow-other-keys)
4116 (substitute* "soundfile.py"
4117 (("_find_library\\('sndfile'\\)")
4118 (string-append "\"" (search-input-file inputs "/lib/libsndfile.so")
4119 "\""))))))))
4120 (propagated-inputs
4121 (list python-cffi python-numpy libsndfile))
4122 (native-inputs
4123 (list python-pytest python-setuptools python-wheel))
4124 (home-page "https://github.com/bastibe/SoundFile")
4125 (synopsis "Python bindings for libsndfile")
4126 (description "This package provides python bindings for libsndfile based on
4127CFFI and NumPy.")
4128 (license license:expat)))
4129
4130(define-public python-soxr
4131 (package
4132 (name "python-soxr")
4133 (version "1.0.0")
4134 (source
4135 (origin
4136 (method url-fetch)
4137 (uri (pypi-uri "soxr" version))
4138 (sha256
4139 (base32 "02a5balcm8dvlb938gl2k3kqvfdq1k300j2g0dbnkg2rsv0yczp0"))))
4140 (build-system pyproject-build-system)
4141 (arguments
4142 (list
4143 #:phases
4144 #~(modify-phases %standard-phases
4145 (add-after 'unpack 'find-nanobind
4146 (lambda* (#:key inputs #:allow-other-keys)
4147 (let* ((python #$(this-package-native-input "python"))
4148 (version (python-version python))
4149 (nanobind (search-input-file
4150 inputs
4151 (string-append "lib/python" version
4152 "/site-packages/nanobind/"
4153 "cmake/nanobind-config.cmake"))))
4154 (setenv "CMAKE_PREFIX_PATH"
4155 (string-append (dirname nanobind)
4156 ":" (getenv "CMAKE_PREFIX_PATH")))))))))
4157 (propagated-inputs (list python-numpy))
4158 (native-inputs (list cmake-minimal
4159 python
4160 python-linkify-it-py
4161 python-myst-parser
4162 python-nanobind
4163 python-pytest
4164 python-scikit-build-core
4165 python-setuptools
4166 python-setuptools-scm
4167 python-typing-extensions
4168 python-wheel))
4169 (home-page "https://github.com/dofuuz/python-soxr")
4170 (synopsis "High quality, one-dimensional sample-rate conversion library")
4171 (description
4172 "Python-SoXR is a Python wrapper of libsoxr, a high quality,
4173one-dimensional sample-rate conversion library.")
4174 (license license:lgpl2.1)))
4175
4176(define-public python-python3-midi
4177 (package
4178 (name "python-python3-midi")
4179 (version "0.2.5")
4180 (source
4181 (origin
4182 (method git-fetch)
4183 (uri (git-reference
4184 (url "https://github.com/NFJones/python3-midi")
4185 (commit (string-append "v" version))))
4186 (file-name (git-file-name name version))
4187 (sha256
4188 (base32 "1zihn7n9dr9jjgkjlpad515hhwh22k94irb21ji793sr5crh5s15"))))
4189 (build-system pyproject-build-system)
4190 (arguments
4191 (list #:tests? #f)) ; XXX: midi module has not been packaged yet.
4192 (native-inputs (list python-setuptools))
4193 (home-page "https://github.com/NFJones/python3-midi")
4194 (synopsis "Python MIDI API")
4195 (description
4196 "This package provides a python API to read and write MIDI files.")
4197 (license license:expat)))
4198
4199(define-public python-wavefile
4200 (package
4201 (name "python-wavefile")
4202 (version "1.6.3")
4203 (source
4204 (origin
4205 (method url-fetch)
4206 (uri (pypi-uri "wavefile" version))
4207 (sha256
4208 (base32 "120r003xy0cv6a4d4cjxv140im007klgkvzfgc57m70rcbnggi7p"))))
4209 (build-system pyproject-build-system)
4210 (arguments
4211 (list
4212 #:test-flags
4213 #~(list "-k" (string-join
4214 ;; Assertion fail to compare files.
4215 (list "not test_allFormats"
4216 "test_commonFormats"
4217 "test_majorFormats"
4218 "test_subtypeFormats")
4219 " and not "))
4220 #:phases
4221 #~(modify-phases %standard-phases
4222 (add-after 'unpack 'patch-libsndfile-path
4223 (lambda _
4224 (substitute* "wavefile/libsndfile.py"
4225 (("'libsndfile")
4226 (string-append "'" #$(this-package-input "libsndfile")
4227 "/lib/libsndfile"))))))))
4228 (native-inputs
4229 (list python-pytest python-setuptools))
4230 (inputs
4231 (list libsndfile
4232 portaudio))
4233 (propagated-inputs
4234 (list python-numpy
4235 python-pyaudio))
4236 (home-page "https://github.com/vokimon/python-wavefile")
4237 (synopsis "Pythonic audio file reader and writer")
4238 (description
4239 "This package provides pythonic libsndfile wrapper to read and write audio
4240files.")
4241 (license license:gpl3+)))
4242
4243(define-public audio-to-midi
4244 (package
4245 (name "audio-to-midi")
4246 (version "2020.7")
4247 (source
4248 (origin
4249 (method git-fetch)
4250 (uri (git-reference
4251 (url "https://github.com/NFJones/audio-to-midi")
4252 (commit (string-append "v" version))))
4253 (file-name (git-file-name name version))
4254 (sha256
4255 (base32
4256 "12wf17abn3psbsg2r2lk0xdnk8n5cd5rrvjlpxjnjfhd09n7qqgm"))))
4257 (build-system pyproject-build-system)
4258 (propagated-inputs
4259 (list python-cffi
4260 python-cython
4261 python-numpy
4262 python-progressbar2
4263 python-pycparser
4264 python-python3-midi
4265 python-soundfile))
4266 (native-inputs
4267 (list libsndfile
4268 python-setuptools
4269 python-wheel))
4270 (arguments
4271 `(#:tests? #f ; There seem to be no tests
4272 #:phases
4273 (modify-phases %standard-phases
4274 (add-after 'unpack 'fix-versions
4275 (lambda _
4276 (substitute* "requirements.txt" (("==") ">=")))))))
4277 (home-page "https://github.com/NFJones/audio-to-midi")
4278 (synopsis "Convert audio to multichannel MIDI")
4279 (description "@command{audio-to-midi} converts audio files to multichannel
4280MIDI files. It accomplishes this by performing FFTs on all channels of the
4281audio data at user-specified time steps. It then separates the resulting
4282frequency analysis into equivalence classes which correspond to the twelve tone
4283scale; the volume of each class being the average volume of its constituent
4284frequencies. This data is then formatted to MIDI and written to disk.")
4285 (license license:expat)))
4286
4287(define-public lilv
4288 (package
4289 (name "lilv")
4290 (version "0.24.22")
4291 (source (origin
4292 (method url-fetch)
4293 (uri (string-append "https://download.drobilla.net/lilv-"
4294 version ".tar.xz"))
4295 (sha256
4296 (base32
4297 "1wwzkz91zv0cj8dkr7aqsryznihhbkhwaplv81ik7j4zwp84kybn"))))
4298 (build-system meson-build-system)
4299 (arguments
4300 (list
4301 #:phases
4302 #~(modify-phases %standard-phases
4303 (add-after 'unpack 'full-store-path-to-shared-library
4304 (lambda _
4305 (with-directory-excursion "bindings/python"
4306 (substitute* "lilv.py"
4307 (("liblilv-0.so") (string-append #$output "/lib/liblilv-0.so")))))))))
4308 ;; Required by lilv-0.pc.
4309 (propagated-inputs
4310 (list lv2 serd sord sratom))
4311 (native-inputs
4312 (list python pkg-config))
4313 (home-page "https://drobilla.net/software/lilv.html")
4314 (synopsis "Library to simplify use of LV2 plugins in applications")
4315 (description
4316 "Lilv is a C library to make the use of LV2 plugins as simple as possible
4317for applications. Lilv is the successor to SLV2, rewritten to be
4318significantly faster and have minimal dependencies.")
4319 (license license:isc)))
4320
4321(define-public lv2
4322 (package
4323 (name "lv2")
4324 (version "1.18.10")
4325 (source (origin
4326 (method url-fetch)
4327 (uri (string-append "https://lv2plug.in/spec/lv2-"
4328 version ".tar.xz"))
4329 (sha256
4330 (base32
4331 "0gwm63jrvg9lww0rl3sjkgbjwfz0vascpb19cfxmhkmm477ipibq"))))
4332 (build-system meson-build-system)
4333 (inputs
4334 ;; Leaving off cairo and gtk+-2.0 which are needed for example plugins
4335 (list libsndfile))
4336 (native-inputs
4337 (list pkg-config))
4338 (native-search-paths
4339 (list (search-path-specification
4340 (variable "LV2_PATH")
4341 (files '("lib/lv2")))))
4342 (home-page "https://lv2plug.in/")
4343 (synopsis "LV2 audio plugin specification")
4344 (description
4345 "LV2 is an open specification for audio plugins and host applications.
4346At its core, LV2 is a simple stable interface, accompanied by extensions which
4347add functionality to support the needs of increasingly powerful audio
4348software.")
4349 (license license:isc)))
4350
4351(define-public ttl2c
4352 (package
4353 (name "ttl2c")
4354 (version "1.0.0")
4355 (source (origin
4356 (method git-fetch)
4357 (uri (git-reference
4358 (url "https://github.com/lvtk/ttl2c")
4359 (commit version)))
4360 (file-name (git-file-name name version))
4361 (sha256
4362 (base32
4363 "0aybx8i5i0sridi9130a3937xgmfmjkk8m48f9whvhlhbzwy3xbl"))))
4364 (build-system waf-build-system)
4365 (arguments
4366 (list
4367 #:tests? #false ;no check target
4368 #:phases
4369 `(modify-phases %standard-phases
4370 (add-before 'configure 'setup-waf
4371 (lambda* (#:key inputs #:allow-other-keys)
4372 (let ((waf (assoc-ref inputs "waf")))
4373 (copy-file (string-append waf "/bin/waf") "waf")))))))
4374 (inputs (list boost))
4375 (native-inputs (list waf))
4376 (home-page "https://github.com/lvtk/ttl2c")
4377 (synopsis "Turtle to C header conversion utility for LV2 plugins")
4378 (description
4379 "This package provides a conversion utility for LV2 Plugin developers to
4380generate C headers from Turtle files.")
4381 (license license:gpl3+)))
4382
4383(define-public lv2-mda-piano
4384 (package
4385 (name "lv2-mda-piano")
4386 (version "0.0.2")
4387 (source (origin
4388 (method git-fetch)
4389 (uri (git-reference
4390 (url "http://git.elephly.net/software/lv2-mdametapiano.git")
4391 (commit version)))
4392 (file-name (git-file-name name version))
4393 (sha256
4394 (base32
4395 "07lywf6lpfpndg3i9w752mmlg2hgn1bwp23h8b0mdj6awh67abqd"))))
4396 (build-system gnu-build-system)
4397 (arguments
4398 `(#:make-flags (list
4399 "TYPE=mdaPiano"
4400 (string-append "PREFIX=" (assoc-ref %outputs "out")))
4401 #:tests? #f ; no check target
4402 #:phases (modify-phases %standard-phases (delete 'configure))))
4403 (inputs
4404 (list lv2 lvtk))
4405 (native-inputs
4406 (list pkg-config ttl2c))
4407 (home-page "https://elephly.net/lv2/mdapiano.html")
4408 (synopsis "LV2 port of the mda Piano plugin")
4409 (description "An LV2 port of the mda Piano VSTi.")
4410 (license license:gpl3+)))
4411
4412(define-public lv2-mda-epiano
4413 (package (inherit lv2-mda-piano)
4414 (name "lv2-mda-epiano")
4415 (arguments
4416 `(#:make-flags (list
4417 "TYPE=mdaEPiano"
4418 (string-append "PREFIX=" (assoc-ref %outputs "out")))
4419 #:tests? #f ; no check target
4420 #:phases (modify-phases %standard-phases (delete 'configure))))
4421 (home-page "https://elephly.net/lv2/mdaepiano.html")
4422 (synopsis "LV2 port of the mda EPiano plugin")
4423 (description "An LV2 port of the mda EPiano VSTi.")))
4424
4425(define-public lvtk-2
4426 ;; Use the latest commit, as the latest release was made in 2014 and depends
4427 ;; on Python 2.
4428 (let ((commit "a73feabe772f9650aa071e6a4df660e549ab7c48")
4429 (revision "0"))
4430 (package
4431 (name "lvtk")
4432 (version (git-version "2" revision commit))
4433 (source (origin
4434 (method git-fetch)
4435 (uri (git-reference
4436 (url "https://github.com/lvtk/lvtk")
4437 (commit commit)))
4438 (file-name (git-file-name name version))
4439 (sha256
4440 (base32
4441 "0scmv8b4jlm88d21dqqchjy98wb93zclc9x960h213gdi871vsaj"))))
4442 (build-system waf-build-system)
4443 (arguments (list #:tests? #f)) ;no check target
4444 (inputs (list boost gtkmm lv2))
4445 (native-inputs (list pkg-config))
4446 (home-page "https://github.com/lvtk/lvtk")
4447 (synopsis "C++ libraries for LV2 plugins")
4448 (description
4449 "The LV2 Toolkit (LVTK) contains libraries that wrap the LV2 C API and
4450extensions into easy to use C++ classes. It is the successor of
4451lv2-c++-tools.")
4452 (license license:isc))))
4453
4454(define-public lvtk-1
4455 ;; Use the latest commit, as the latest release was made in 2014 and depends
4456 ;; on Python 2.
4457 (let ((commit "23dd99531d88d7821b69f6f0d60516ef322a6729")
4458 (revision "0"))
4459 (package
4460 (name "lvtk")
4461 (version (git-version "1.2.0" revision commit))
4462 (source (origin
4463 (method git-fetch)
4464 (uri (git-reference
4465 (url "https://github.com/lvtk/lvtk")
4466 (commit commit)))
4467 (file-name (git-file-name name version))
4468 (sha256
4469 (base32
4470 "0iw7skvsn3whw69dhcxbbdns7mssaf6z6iyzxjav53607ibyfr8d"))))
4471 (build-system waf-build-system)
4472 (arguments
4473 (list
4474 #:tests? #false ;no check target
4475 #:configure-flags
4476 #~(list (string-append "--boost-includes="
4477 #$(this-package-input "boost")
4478 "/include"))
4479 #:phases
4480 `(modify-phases %standard-phases
4481 (add-before 'configure 'setup-waf
4482 (lambda* (#:key inputs #:allow-other-keys)
4483 (let ((waf (assoc-ref inputs "waf")))
4484 (copy-file (string-append waf "/bin/waf") "waf")))))))
4485 (inputs (list boost gtkmm-2 lv2))
4486 (native-inputs (list pkg-config waf))
4487 (home-page "https://github.com/lvtk/lvtk")
4488 (synopsis "C++ libraries for LV2 plugins")
4489 (description
4490 "The LV2 Toolkit (LVTK) contains libraries that wrap the LV2 C API and
4491extensions into easy to use C++ classes. It is the successor of
4492lv2-c++-tools.")
4493 (license license:isc))))
4494
4495(define-public lvtk lvtk-1)
4496
4497(define-public openal
4498 (package
4499 (name "openal")
4500 (version "1.23.1")
4501 (source (origin
4502 (method url-fetch)
4503 (uri (string-append
4504 "https://openal-soft.org/openal-releases/openal-soft-"
4505 version ".tar.bz2"))
4506 (sha256
4507 (base32
4508 "08avhhfd96x4c18p8ys3va85nhx31xgpa3bz1ckmfkjc2f4lnvvr"))))
4509 (build-system cmake-build-system)
4510 (arguments
4511 (list
4512 #:tests? #f ; no check target
4513 #:phases
4514 #~(modify-phases %standard-phases
4515 (add-after 'unpack 'use-full-library-paths
4516 (lambda* (#:key inputs #:allow-other-keys)
4517 (substitute* "alc/backends/pulseaudio.cpp"
4518 (("#define PALIB \"libpulse\\.so\\.0\"")
4519 (string-append "#define PALIB \""
4520 (search-input-file inputs "lib/libpulse.so.0")
4521 "\"")))
4522 (substitute* "alc/backends/alsa.cpp"
4523 (("LoadLib\\(\"libasound\\.so\\.2\"\\)")
4524 (string-append "LoadLib(\""
4525 (search-input-file inputs "lib/libasound.so.2")
4526 "\")"))))))))
4527 (inputs (list alsa-lib pulseaudio))
4528 (synopsis "3D audio API")
4529 (description
4530 "OpenAL provides capabilities for playing audio in a virtual 3D
4531environment. Distance attenuation, doppler shift, and directional sound
4532emitters are among the features handled by the API. More advanced effects,
4533including air absorption, occlusion, and environmental reverb, are available
4534through the EFX extension. It also facilitates streaming audio, multi-channel
4535buffers, and audio capture.")
4536 (home-page "https://openal-soft.org/")
4537 (properties
4538 '((upstream-name . "openal-soft")))
4539 (license license:lgpl2.0+)))
4540
4541(define-public freealut
4542 (package
4543 (name "freealut")
4544 (version "1.1.0")
4545 (source (origin
4546 (method url-fetch)
4547 ;; Upstream url is unclear, many systems use Fedora, there is also
4548 ;; https://github.com/vancegroup/freealut though the status of it
4549 ;; (official? unofficial?) is not clear.
4550 (uri (string-append
4551 "https://pkgs.fedoraproject.org/repo/pkgs/" name "/" name "-"
4552 version ".tar.gz" "/e089b28a0267faabdb6c079ee173664a/" name
4553 "-" version ".tar.gz"))
4554 (sha256
4555 (base32
4556 "0kzlil6112x2429nw6mycmif8y6bxr2cwjcvp18vh6s7g63ymlb0"))))
4557 (build-system cmake-build-system)
4558 (arguments
4559 `(#:tests? #f)) ; no check target
4560 (inputs
4561 (list openal))
4562 (synopsis "Free implementation of OpenAL's ALUT standard")
4563 (description "freealut is the OpenAL Utility Toolkit.")
4564 (home-page "https://kcat.strangesoft.net/openal.html")
4565 (license license:lgpl2.0)))
4566
4567(define-public alure
4568 (package
4569 (name "alure")
4570 (version "1.2")
4571 (source (origin
4572 (method git-fetch)
4573 (uri (git-reference
4574 (url "https://repo.or.cz/alure.git")
4575 (commit (string-append "alure-" version))))
4576 (file-name (git-file-name name version))
4577 (sha256
4578 (base32
4579 "0b65wxn8p0q6kwl8kgdicp91krsmxdf8qg0jllsbj1ssg1x7vbrs"))
4580 (patches
4581 (search-patches "alure-dumb-2.patch" "alure-cmake-4.patch"))))
4582 (build-system cmake-build-system)
4583 (arguments
4584 (list
4585 #:tests? #f ;no tests
4586 #:configure-flags #~(list "-DMODPLUG=ON" "-DBUILD_STATIC=OFF")))
4587 (native-inputs (list pkg-config))
4588 (inputs (list dumb
4589 flac
4590 libmodplug
4591 libmpg123
4592 libsndfile
4593 libvorbis
4594 openal))
4595 (home-page "https://web.archive.org/web/20210306051650/https://kcat.tomasu.net/alure.html")
4596 (synopsis "OpenAL utility library")
4597 (description
4598 "ALURE is a utility library to help manage common tasks with OpenAL applications.
4599This includes device enumeration and initialization, file loading, and
4600streaming.")
4601 (license license:expat)))
4602
4603(define-public wp-notifyd
4604 (package
4605 (name "wp-notifyd")
4606 (version "1.1.0")
4607 (source
4608 (origin
4609 (method git-fetch)
4610 (uri (git-reference
4611 (url "https://github.com/LDAP/wp-notifyd")
4612 (commit version)))
4613 (file-name (git-file-name name version))
4614 (sha256
4615 (base32 "1nkndz0li15maf0dc9x631p0dr8085wzz5358552wljv7chywrza"))))
4616 (build-system meson-build-system)
4617 (arguments
4618 (list #:tests? #f)) ;there are no tests
4619 (inputs (list libnotify
4620 wireplumber-minimal
4621 pipewire
4622 spdlog))
4623 (native-inputs (list pkg-config))
4624 (home-page "https://github.com/LDAP/wp-notifyd")
4625 (synopsis "Notification daemon for Wireplumber")
4626 (description "@command{wp-notifyd} is a lightweight notification daemon for
4627@dfn{WirePlumber} (the session and policy manager for PipeWire).")
4628 (license license:expat)))
4629
4630(define-public pa-notify
4631 (package
4632 (name "pa-notify")
4633 (version "1.5.0")
4634 (source
4635 (origin
4636 (method git-fetch)
4637 (uri (git-reference
4638 (url "https://github.com/ikrivosheev/pa-notify")
4639 (commit (string-append "v" version))))
4640 (file-name (git-file-name name version))
4641 (sha256
4642 (base32 "04wq0bdnb3r27l5wlf8c1ijq18ffywqmdv584l6hbi3i5k0sm7nz"))))
4643 (build-system cmake-build-system)
4644 (arguments '(#:tests? #f)) ;no check target
4645 (inputs (list glib
4646 libnotify
4647 pulseaudio))
4648 (native-inputs (list pkg-config))
4649 (home-page "https://github.com/ikrivosheev/pa-notify")
4650 (synopsis "PulseAudio or PipeWire volume notification")
4651 (description "The pa-notify daemon sends notifications about
4652the current volume level of PulseAudio or PipeWire using libnotify.")
4653 (license license:expat)))
4654
4655(define-public patchage
4656 (package
4657 (name "patchage")
4658 (version "1.0.10")
4659 (source (origin
4660 (method url-fetch)
4661 (uri (string-append "https://download.drobilla.net/patchage-"
4662 version ".tar.xz"))
4663 (sha256
4664 (base32
4665 "1m472rkvv7kr57xnvmvds3iq3fj129mbw878427djc21rfg2lq80"))))
4666 (build-system meson-build-system)
4667 (arguments `(#:tests? #f)) ;no check target
4668 (inputs
4669 (list alsa-lib
4670 jack-2
4671 fmt-9
4672 ganv
4673 glibmm
4674 gtkmm-2
4675 dbus-glib))
4676 (native-inputs
4677 (list pkg-config))
4678 (home-page "https://drobilla.net/software/patchage.html")
4679 (synopsis "Modular patch bay for audio and MIDI systems")
4680 (description
4681 "Patchage is a modular patch bay for audio and MIDI systems based on JACK
4682and ALSA.")
4683 (license license:gpl3+)))
4684
4685(define-public pcaudiolib
4686 (package
4687 (name "pcaudiolib")
4688 (version "1.1")
4689 (home-page "https://github.com/espeak-ng/pcaudiolib")
4690 (source (origin
4691 (method git-fetch)
4692 (uri (git-reference (url home-page) (commit version)))
4693 (file-name (git-file-name name version))
4694 (sha256
4695 (base32
4696 "0c55hlqqh0m7bcb3nlgv1s4a22s5bgczr1cakjh3767rjb10khi0"))))
4697 (build-system gnu-build-system)
4698 (arguments
4699 `(#:configure-flags '("--disable-static")))
4700 (native-inputs
4701 (list autoconf automake libtool pkg-config which))
4702 (inputs
4703 (list alsa-lib pulseaudio))
4704 (synopsis "Portable C audio library")
4705 (description
4706 "The Portable C Audio Library (pcaudiolib) provides a C@tie{}API to
4707different audio devices such as ALSA or PulseAudio.")
4708 (license (list license:gpl3+
4709 ;; The bundled TPCircularBuffer uses a custom license.
4710 (license:non-copyleft
4711 "file://src/TPCircularBuffer/README.markdown")))))
4712
4713(define-public projectm-eval
4714 (package
4715 (name "projectm-eval")
4716 (version "1.0.5")
4717 (source
4718 (origin
4719 (method git-fetch)
4720 (uri (git-reference
4721 (url "https://github.com/projectM-visualizer/projectm-eval")
4722 (commit (string-append "v" version))))
4723 (file-name (git-file-name name version))
4724 (sha256
4725 (base32 "04m5k6azji0fk3japzd8v4k04affbfpangfw4fgvk3ac5w75872a"))))
4726 (build-system cmake-build-system)
4727 (native-inputs (list googletest))
4728 (home-page "https://github.com/projectM-visualizer/projectm-eval")
4729 (synopsis "Re-implementation of the NullSoft Expression Evaluation Library")
4730 (description "This is an open-source re-implementation of the NullSoft
4731Expression Evaluation Library 2, as used in the Milkdrop music visualizer.")
4732 (license license:expat)))
4733
4734(define-public projectm
4735 (package
4736 (name "projectm")
4737 (version "4.1.6")
4738 (source
4739 (origin
4740 (method git-fetch)
4741 (uri (git-reference
4742 (url "https://github.com/projectM-visualizer/projectm")
4743 (commit (string-append "v" version))))
4744 (file-name (git-file-name name version))
4745 (sha256
4746 (base32 "0yw1q6zmx2683immxfxn2kxjwwv6xk9m6yja701m4z2brhdx1iw1"))))
4747 (build-system cmake-build-system)
4748 (arguments
4749 (list
4750 #:configure-flags
4751 #~(list
4752 "-DBUILD_TESTING=ON" "-DENABLE_SDL_UI=OFF" "-DENABLE_SYSTEM_GLM=ON")))
4753 (inputs (list mesa projectm-eval))
4754 (native-inputs (list googletest glm))
4755 (home-page "https://github.com/projectM-visualizer/projectm")
4756 (synopsis "Milkdrop-like music visualizer")
4757 (description "projectM is an open-source re-implementation of the MilkDrop
4758visualizer. This package contains only the libprojectm library.")
4759 (license license:lgpl2.1+)))
4760
4761(define-public projectm-presets
4762 (let ((commit "0180df21f5e0bd39b9060cc5de420ed2f1f9e509")
4763 (revision "0"))
4764 (package
4765 (name "projectm-presets")
4766 (version (git-version "0" revision commit))
4767 (source
4768 (origin
4769 (method git-fetch)
4770 (uri
4771 (git-reference
4772 (url "https://github.com/projectM-visualizer/presets-cream-of-the-crop")
4773 (commit commit)))
4774 (file-name (git-file-name name version))
4775 (sha256
4776 (base32 "1g64s6v4xbmx0skiy3ag9889adl8rvwahzd7rmrchiwbd1gap771"))))
4777 (build-system copy-build-system)
4778 (home-page "https://github.com/projectM-visualizer/presets-cream-of-the-crop")
4779 (synopsis "Curated selection of ProjectM/Milkdrop presets")
4780 (description "A curated selection of 9,795 ProjectM/Milkdrop presets,
4781meant to be included in any projectM-based application.")
4782 (license license:public-domain))))
4783
4784(define-public projectm-sdl
4785 (let ((source-commit "72e5632897c9d9bef452c679d3cbe8c7b4bb4157")
4786 (revision "0"))
4787 (package
4788 (name "projectm-sdl")
4789 (version (git-version "0" revision source-commit))
4790 (source
4791 (origin
4792 (method git-fetch)
4793 (uri
4794 (git-reference
4795 (url "https://github.com/projectM-visualizer/frontend-sdl-cpp")
4796 (commit source-commit)))
4797 (file-name (git-file-name name version))
4798 (sha256
4799 (base32 "14vsjn589lrcwkz0d4528i33aslqsgh7m17kxj0fyd21pwj5n54l"))
4800 (modules '((guix build utils)))
4801 ;;There are no icon files to install.
4802 (snippet #~(substitute* "install.cmake" (("install_icon.+") "")))))
4803 (build-system cmake-build-system)
4804 (arguments
4805 (list #:tests? #f ;There are no tests.
4806 #:phases
4807 #~(modify-phases %standard-phases
4808 (add-after 'unpack 'link-imgui
4809 (lambda* (#:key inputs #:allow-other-keys)
4810 (begin (delete-file-recursively "vendor/imgui")
4811 (symlink (assoc-ref %build-inputs "imgui-source")
4812 "vendor/imgui")))))
4813 #:configure-flags
4814 #~(list
4815 ;; There are texture repositories from both ProjectM and
4816 ;; Milkdrop, but their licensing is unclear, so they are not
4817 ;; packaged. ProjectM functions fine with only presets.
4818 (string-append "-DDEFAULT_PRESETS_PATH="
4819 (assoc-ref %build-inputs "projectm-presets"))
4820 ;; The config location search path can be changed, but the
4821 ;; install path stays the same, so only this value works.
4822 ;; And without it, only the binary's path is checked.
4823 (string-append "-DDEFAULT_CONFIG_PATH="
4824 #$output "/share/projectMSDL/"))))
4825 (inputs (list freetype poco projectm projectm-presets sdl2))
4826 (native-inputs (list `("imgui-source" ,(package-source imgui))))
4827 (home-page "https://github.com/projectM-visualizer/frontend-sdl-cpp")
4828 (synopsis "Reference frontend for the libprojectm music visualizer")
4829 (description "This is a simple Milkdrop-like music visualizer that uses
4830the projectM library to visualize audio input.")
4831 (license license:gpl3+)))) ;presets
4832
4833(define-public qjackctl
4834 (package
4835 (name "qjackctl")
4836 (version "1.0.4")
4837 (source (origin
4838 (method url-fetch)
4839 (uri (string-append "mirror://sourceforge/qjackctl/qjackctl/"
4840 version "/qjackctl-" version ".tar.gz"))
4841 (sha256
4842 (base32
4843 "1bhlfnlvqgircnlq014whaka01ki6ja44xzynjbwszclknc6zsz3"))))
4844 (build-system cmake-build-system)
4845 (arguments
4846 '(#:tests? #f)) ; no check target
4847 (inputs
4848 (list alsa-lib
4849 jack-1
4850 portaudio
4851 qtbase
4852 qtsvg))
4853 (native-inputs
4854 (list pkg-config qttools))
4855 (home-page "https://qjackctl.sourceforge.io/")
4856 (synopsis "Jack server control application")
4857 (description "Control a Jack server. Allows you to plug various sources
4858into various outputs and to start, stop and configure jackd")
4859 (license license:gpl2+)))
4860
4861(define-public qjackrcd
4862 (package
4863 (name "qjackrcd")
4864 (version "1.2.2")
4865 (source (origin
4866 (method git-fetch)
4867 (uri (git-reference
4868 (url "https://github.com/orouits/qjackrcd")
4869 (commit (string-append "v" version))))
4870 (file-name (git-file-name name version))
4871 (sha256
4872 (base32
4873 "1l5iq2mkqd4gn9yr8xbh9qlpp1clcflazychl4vhdbz0bzq4c6al"))))
4874 (build-system gnu-build-system)
4875 (arguments
4876 `(#:phases
4877 (modify-phases %standard-phases
4878 (replace 'configure
4879 (lambda* (#:key outputs #:allow-other-keys)
4880 (invoke "qmake"
4881 (string-append "PREFIX="
4882 (assoc-ref outputs "out"))))))))
4883 (native-inputs
4884 (list qtbase-5)) ; for qmake
4885 (inputs
4886 (list jack-1 libsndfile qtbase-5))
4887 (home-page "https://sourceforge.net/projects/qjackrcd/")
4888 (synopsis "Stereo audio recorder for JACK")
4889 (description "QJackRcd is a simple graphical stereo recorder for JACK
4890supporting silence processing for automatic pause, file splitting, and
4891background file post-processing.")
4892 (license license:gpl2+)))
4893
4894(define-public supercollider
4895 (package
4896 (name "supercollider")
4897 (version "3.14.0")
4898 (source
4899 (origin
4900 (method git-fetch)
4901 (uri (git-reference
4902 (url "https://github.com/supercollider/supercollider")
4903 (commit (string-append "Version-" version))
4904 ;; for nova-simd, nova-tt, hidapi, TLSF, oscpack
4905 (recursive? #t)))
4906 (file-name (git-file-name name version))
4907 (sha256
4908 (base32
4909 "1qp163c6mg1d8c59ar3v1yixryr1paa9bs8pkz6yd3c86qz24n0h"))
4910 (modules '((guix build utils)
4911 (ice-9 ftw)))
4912 (snippet
4913 ;; The build system doesn't allow us to unbundle the following
4914 ;; libraries. hidapi is also heavily patched and upstream not
4915 ;; actively maintained.
4916 #~(let ((keep-dirs '("nova-simd" "nova-tt" "hidapi"
4917 "TLSF-2.4.6" "oscpack_1_1_0" "." "..")))
4918 (with-directory-excursion "./external_libraries"
4919 (for-each
4920 delete-file-recursively
4921 (scandir "."
4922 (lambda (x)
4923 (and (eq? (stat:type (stat x)) 'directory)
4924 (not (member (basename x) keep-dirs)))))))
4925 ;; To find the Guix provided ableton-link library.
4926 (substitute* "lang/CMakeLists.txt"
4927 (("include\\(\\.\\./external_libraries/link/\
4928AbletonLinkConfig\\.cmake\\)")
4929 "find_package(AbletonLink NAMES AbletonLink ableton-link \
4930link REQUIRED)"))))))
4931 (build-system qt-build-system)
4932 (outputs
4933 '("out" ;core language
4934 "ide")) ;qt ide
4935 (arguments
4936 (list
4937 #:qtbase qtbase
4938 #:configure-flags
4939 #~(list "-DSYSTEM_BOOST=ON"
4940 "-DSYSTEM_YAMLCPP=ON"
4941 "-DSC_QT=ON"
4942 "-DCMAKE_BUILD_TYPE=Release"
4943 "-DFORTIFY=ON"
4944 "-DLIBSCSYNTH=ON"
4945 "-DSC_EL=OFF") ;scel is packaged individually as emacs-scel
4946 #:modules '((guix build qt-build-system)
4947 ((guix build gnu-build-system) #:prefix gnu:)
4948 (guix build utils))
4949 #:phases
4950 #~(modify-phases %standard-phases
4951 ;; HOME must be defined otherwise supercollider throws a "ERROR:
4952 ;; Primitive '_FileMkDir' failed." error when generating the doc.
4953 ;; The graphical tests also hang without it.
4954 (add-after 'unpack 'set-home-directory
4955 (lambda _
4956 (setenv "HOME" (getcwd))))
4957 (add-after 'unpack 'patch-scclass-dir
4958 (lambda _
4959 (let* ((scclass-dir
4960 (string-append #$output
4961 "/share/SuperCollider/SCClassLibrary")))
4962 (substitute* "lang/LangSource/SC_LanguageConfig.cpp"
4963 (((string-append
4964 "SC_Filesystem::instance\\(\\)\\.getDirectory"
4965 "\\(DirName::Resource\\) / CLASS_LIB_DIR_NAME"))
4966 (string-append "Path(\"" scclass-dir "\")"))))))
4967 (replace 'install (assoc-ref gnu:%standard-phases 'install))
4968 (add-before 'install 'install-ide
4969 (lambda _
4970 (let* ((ide #$output:ide)
4971 (scide "editors/sc-ide/scide"))
4972 (install-file scide
4973 (string-append ide "/bin"))
4974 (delete-file scide)))))))
4975 (native-inputs
4976 (list ableton-link pkg-config qttools))
4977 (inputs (list jack-2
4978 libsndfile
4979 fftw
4980 libxt
4981 readline ;readline support for sclang's CLI
4982 alsa-lib ;for sclang's MIDI interface
4983 eudev ;for user interactions with devices
4984 avahi ;zeroconf service discovery support
4985 icu4c
4986 boost-1.83
4987 boost-sync
4988 yaml-cpp
4989 python-wrapper ;there were warnings in the build process
4990 ruby ;there were warnings in the build process
4991 qtdeclarative
4992 qtsvg
4993 qtwebchannel
4994 qtwebsockets))
4995 (propagated-inputs ;to get native-search-path
4996 (list qtwebengine))
4997 (home-page "https://github.com/supercollider/supercollider")
4998 (synopsis "Synthesis engine and programming language")
4999 (description "SuperCollider is a synthesis engine (@code{scsynth} or
5000@code{supernova}) and programming language (@code{sclang}). It can be used
5001for experimenting with sound synthesis and algorithmic composition.
5002
5003SuperCollider requires jackd to be installed in your user profile and your
5004user must be allowed to access the realtime features of the kernel. Search
5005for \"realtime\" in the index of the Guix manual to learn how to achieve this
5006using Guix System.")
5007 (license license:gpl2+)))
5008
5009(define-public libshout-idjc
5010 (package
5011 (name "libshout-idjc")
5012 (version "2.4.6-r2")
5013 (source
5014 (origin
5015 (method url-fetch)
5016 (uri (string-append "mirror://sourceforge/libshoutidjc.idjc.p"
5017 "/libshout-idjc-" version ".tar.gz"))
5018 (sha256
5019 (base32 "0cmvvkixx771mgap266yiji87kgv5bnqbj2y1j20r1d4adk9zy98"))))
5020 (build-system gnu-build-system)
5021 (native-inputs
5022 (list pkg-config))
5023 (inputs
5024 (list libshout))
5025 (propagated-inputs
5026 ;; In Requires.private of shout-idjc.pc.
5027 (list libogg libtheora libvorbis speex))
5028 (home-page "https://idjc.sourceforge.io/")
5029 (synopsis "Broadcast streaming library with IDJC extensions")
5030 (description "This package provides libshout plus IDJC extensions.")
5031 ;; GNU Library (not Lesser) General Public License.
5032 (license license:lgpl2.0+)))
5033
5034(define-public hiir
5035 (let ((commit "4a9a1e67fa6f8ce7688e1c0c8a2b017cecd206a3")
5036 (revision "0"))
5037 (package
5038 (name "hiir")
5039 (version (git-version "0" revision commit))
5040 (source
5041 (origin
5042 (method git-fetch)
5043 (uri (git-reference
5044 (url "https://github.com/LostRobotMusic/hiir")
5045 (commit commit)))
5046 (file-name (git-file-name name version))
5047 (sha256
5048 (base32 "1wzlg0di768mzcik6fij4pd6dnpmbw8q236h478c057d10qfp44g"))))
5049 (build-system copy-build-system)
5050 (arguments
5051 (list
5052 #:install-plan
5053 #~`(("." "/include/hiir"))))
5054 (home-page "https://github.com/LostRobotMusic/hiir")
5055 (synopsis "Header-only version of Laurent de Soras's HIIR 1.40 library")
5056 (description
5057 "This package provides a header-only version of the
5058@uref{http://ldesoras.free.fr/prod.html#src_hiir, HIIR library by Laurent De
5059Soras}, updated to version 1.40. HIIR is a C++ library for changing the
5060sampling rate of a signal by a factor two, in both directions (upsampling and
5061downsampling), obtaining two signals with a π/2 phase difference (Hilbert
5062transform). It is made of a two-path polyphase IIR filter, implemented with
5063FPU, 3DNow!, SSE, SSE2, AVX, AVX-512 and NEON instruction sets.
5064
5065This package contains the same as the original library, except with the
5066contents of one source file moved into a header file (and set as inline) to
5067make the library header-only, and with the test folder removed.")
5068 (license license:wtfpl2))))
5069
5070(define-public tuning-library
5071 (package
5072 (name "tuning-library")
5073 (version "1.1.0")
5074 (source
5075 (origin
5076 (method git-fetch)
5077 (uri (git-reference
5078 (url "https://github.com/surge-synthesizer/tuning-library")
5079 (commit (string-append "release_" version))))
5080 (file-name (git-file-name name version))
5081 (patches
5082 (search-patches
5083 "tuning-library-1.1.0-add-missing-cstring-include.patch"))
5084 (sha256
5085 (base32 "0f7915xn61sqbdla1zamjd2nkbvdzlm162dmqap2j40yhra73q65"))
5086 (modules '((guix build utils)))
5087 ;; Unbundle catch2.
5088 (snippet
5089 '(begin
5090 (delete-file-recursively "libs")
5091 (substitute* "tests/alltests.cpp"
5092 (("#include \"catch2.hpp\"") "#include <catch2/catch.hpp>"))))))
5093 (build-system cmake-build-system)
5094 (arguments
5095 (list
5096 #:modules
5097 '((guix build cmake-build-system)
5098 (guix build utils)
5099 (srfi srfi-26)) ;for cute
5100 #:phases
5101 #~(modify-phases %standard-phases
5102 (replace 'check
5103 (lambda* (#:key tests? #:allow-other-keys)
5104 (when tests?
5105 (with-directory-excursion "../source"
5106 (invoke "../build/tuning-library-tests" "-a")
5107 (invoke "../build/tuning-library-symbolcheck")))))
5108 (replace 'install
5109 (lambda _
5110 (for-each (cute install-file <>
5111 (string-append #$output "/bin"))
5112 '("showmapping" "parsecheck"))
5113 (with-directory-excursion "../source"
5114 (with-directory-excursion "include"
5115 (for-each (cute install-file <>
5116 (string-append #$output "/include"))
5117 '("Tunings.h" "TuningsImpl.h")))
5118 (install-file "README.md"
5119 (string-append #$output
5120 "/share/doc/tuning-library"))))))))
5121 (native-inputs (list catch2-2))
5122 (home-page "https://github.com/surge-synthesizer/tuning-library")
5123 (synopsis "C Library for micro-tuning and frequency finding")
5124 (description
5125 "Tuning Library is a header-only C library for micro-tuning format
5126parsing and frequency finding.")
5127 (license license:expat)))
5128
5129(define-public redumper
5130 (package
5131 (name "redumper")
5132 (version "746")
5133 (source (origin
5134 (method git-fetch)
5135 (uri (git-reference
5136 (url "https://github.com/superg/redumper")
5137 (commit (string-append "b" version))))
5138 (file-name (git-file-name name version))
5139 (sha256
5140 (base32
5141 "1mg3wvjpjy6nby8i4hq5h9gjccc0r0v37lybgx74xw9plj15y4bq"))))
5142 (build-system cmake-build-system)
5143 (arguments
5144 (list
5145 #:tests? #f
5146 #:build-type "Release"
5147 ;; The build system uses CMake modules features that are only available
5148 ;; when using Ninja.
5149 #:configure-flags #~(list "-GNinja"
5150 "-DREDUMPER_CLANG_USE_LIBCPP=ON"
5151 "-DREDUMPER_LINKER_FLAGS="
5152 (string-append "-DREDUMPER_VERSION_BUILD=b"
5153 #$version)
5154 "-DCMAKE_BUILD_TYPE=Release")
5155 #:phases
5156 #~(modify-phases %standard-phases
5157 (add-after 'unpack 'disable-tests
5158 (lambda _
5159 (substitute* "CMakeLists.txt"
5160 (("enable_testing\\(\\)")
5161 "# enable_testing()")
5162 (("add_subdirectory\\(\"tests\"\\)")
5163 "# add_subdirectory(\"tests\")")
5164 (("get_property\\(_tidy_gtest_targets\\s+DIRECTORY tests/gtest\\s+PROPERTY BUILDSYSTEM_TARGETS\\)")
5165 "set(_tidy_gtest_targets)")
5166 (("list\\(APPEND _tidy_deps \\$\\{_tidy_root_targets\\} \\$\\{_tidy_gtest_targets\\}\\)")
5167 "list(APPEND _tidy_deps ${_tidy_root_targets})"))))
5168 (add-after 'unpack 'patch-build-system
5169 (lambda _
5170 ;; The CMAKE_SYSTEM_VERSION is undefined when cross-compiling.
5171 (substitute* "CMakeLists.txt"
5172 (("\\$\\{CMAKE_SYSTEM_VERSION}")
5173 "\"${CMAKE_SYSTEM_VERSION}\""))))
5174 (add-after 'unpack 'adjust-CPLUS_INCLUDE_PATH
5175 ;; The libcxx include/c++/v1 directory is not exposed via
5176 ;; CPLUS_INCLUDE_PATH by default, causing errors like
5177 ;; "fatal error: 'format' file not found".
5178 (lambda* (#:key native-inputs inputs #:allow-other-keys)
5179 (setenv "CPLUS_INCLUDE_PATH"
5180 (string-append
5181 (search-input-directory inputs
5182 "/include/c++/v1")
5183 ":" (getenv "CPLUS_INCLUDE_PATH")))))
5184 (replace 'build
5185 (lambda* (#:key parallel-build? #:allow-other-keys)
5186 (invoke "cmake" "--build" "."
5187 "-j" (number->string
5188 (if parallel-build?
5189 (parallel-job-count)
5190 1)))))
5191 (replace 'check
5192 (lambda* (#:key build-type parallel-tests? tests?
5193 #:allow-other-keys)
5194 (when tests?
5195 (invoke "ctest" "-C" build-type
5196 "-j" (number->string
5197 (if parallel-tests?
5198 (parallel-job-count)
5199 1))))))
5200 (replace 'install
5201 (lambda _
5202 ;; There is no CMake install target; manually install the
5203 ;; binary.
5204 (install-file "redumper"
5205 (string-append #$output "/bin")))))))
5206 ;; As of GCC 14, the C++ modules feature is not complete enough, hence the
5207 ;; use of Clang.
5208 (native-inputs (list ninja clang-toolchain))
5209 (inputs (list libcxx))
5210 (home-page "https://github.com/superg/redumper")
5211 (synopsis "Low-level CD/DVD dumper")
5212 (description "@command{redumper} is a low-level byte perfect CD disc
5213dumper. It supports incremental dumps, advanced SCSI/C2 repair, intelligent
5214audio CD offset detection, among other features. @command{redumper} is also a
5215general purpose DVD/HD-DVD/Blu-ray disc dumper.")
5216 (license license:gpl3+)))
5217
5218(define-public resample
5219 (package
5220 (name "resample")
5221 (version "1.8.1")
5222 (source (origin
5223 (method url-fetch)
5224 (uri (string-append "https://ccrma.stanford.edu/~jos/gz/resample-"
5225 version
5226 ".tar.gz"))
5227 (sha256 (base32
5228 "074zj8ydp05yy1hjcglfv3hkvj4cm50f9nralka1992pm6yf8yvy"))
5229 (snippet
5230 #~(begin
5231 (use-modules (ice-9 textual-ports))
5232 (let* ((sndlibextra.c "src/sndlibextra.c")
5233 (sndlibextra.c-original
5234 (call-with-input-file sndlibextra.c
5235 get-string-all)))
5236 (call-with-output-file sndlibextra.c
5237 (lambda (port)
5238 (display "#include <stdlib.h>\n" port)
5239 (display sndlibextra.c-original port))))))))
5240 (build-system gnu-build-system)
5241 (native-inputs
5242 (list autoconf automake pkg-config libtool))
5243 (synopsis "Sampling rate conversion and filter design utilities")
5244 (description "This package contains the @command{resample} and
5245@command{windowfilter} command line utilities. The @command{resample} command
5246allows changing the sampling rate of a sound file, while the
5247@command{windowfilter} command allows designing Finite Impulse Response (FIR)
5248filters using the so-called @emph{window method}.")
5249 (home-page "https://ccrma.stanford.edu/~jos/resample/Free_Resampling_Software.html")
5250 (license license:lgpl2.1+)))
5251
5252(define-public rubberband
5253 (package
5254 (name "rubberband")
5255 (version "4.0.0")
5256 (source (origin
5257 (method url-fetch)
5258 (uri
5259 (string-append "https://breakfastquay.com/files/releases/"
5260 "rubberband-" version ".tar.bz2"))
5261 (sha256
5262 (base32
5263 "1s98h0pzxlffha52paniysm7dch5rrflw1ifbfriig33xq9h61dg"))))
5264 (build-system meson-build-system)
5265 (arguments
5266 (list
5267 #:configure-flags
5268 '(list "-Dresampler=libsamplerate"
5269 "-Dfft=fftw" ;To avoid using bundled version
5270 "-Ddefault_library=shared"))) ;Don't build static library
5271 (inputs
5272 (list ladspa lv2 vamp))
5273 (propagated-inputs
5274 (list fftw libsamplerate)) ;required by rubberband.pc
5275 (native-inputs
5276 (list pkg-config))
5277 (home-page "https://breakfastquay.com/rubberband/")
5278 (synopsis "Audio time-stretching and pitch-shifting library")
5279 (description
5280 "Rubber Band is a library and utility program that permits changing the
5281tempo and pitch of an audio recording independently of one another.")
5282 (license license:gpl2+)))
5283
5284(define-public rtmidi
5285 (package
5286 (name "rtmidi")
5287 (version "6.0.0")
5288 (source (origin
5289 (method url-fetch)
5290 (uri (string-append "https://caml.music.mcgill.ca/~gary/rtmidi"
5291 "/release/rtmidi-" version ".tar.gz"))
5292 (file-name (string-append "rtmidi-" version ".tar.gz"))
5293 (sha256
5294 (base32
5295 "0nyvck6qlncbfpplgxspjk77fmi05w78ik0cf8039hj29gvcqq2r"))))
5296 (build-system gnu-build-system)
5297 (inputs
5298 (list alsa-lib jack-2))
5299 (native-inputs
5300 (list autoconf automake libtool pkg-config))
5301 (home-page "https://caml.music.mcgill.ca/~gary/rtmidi")
5302 (synopsis "Cross-platform MIDI library for C++")
5303 (description
5304 "RtMidi is a set of C++ classes (RtMidiIn, RtMidiOut, and API specific
5305classes) that provide a common cross-platform API for realtime MIDI
5306input/output.")
5307 (license license:expat)))
5308
5309(define-public rtmidi-4.0
5310 (package
5311 (inherit rtmidi)
5312 (version "4.0.0")
5313 (source (origin
5314 (method url-fetch)
5315 (uri (string-append "https://www.music.mcgill.ca/~gary/rtmidi"
5316 "/release/rtmidi-" version ".tar.gz"))
5317 (file-name (string-append "rtmidi-" version ".tar.gz"))
5318 (sha256
5319 (base32
5320 "1k962ljpnwyjw9jjiky2372khhri1wqvrj5qsalfpys31xqzw31p"))))))
5321
5322(define-public sratom
5323 (package
5324 (name "sratom")
5325 (version "0.6.16")
5326 (source (origin
5327 (method url-fetch)
5328 (uri (string-append "https://download.drobilla.net/sratom-"
5329 version ".tar.xz"))
5330 (sha256
5331 (base32
5332 "1i12wcnv52r05zr5wjmpvbsvbjbm3hkv8frral2kvrc326cmghbi"))))
5333 (build-system meson-build-system)
5334 (propagated-inputs
5335 ;; In Requires of sratom-0.pc.
5336 (list lv2 serd sord))
5337 (native-inputs
5338 (list pkg-config))
5339 (home-page "https://drobilla.net/software/sratom.html")
5340 (synopsis "Library for serialising LV2 atoms to/from RDF")
5341 (description
5342 "Sratom is a library for serialising LV2 atoms to/from RDF, particularly
5343the Turtle syntax.")
5344 (license license:isc)))
5345
5346(define-public suil
5347 (package
5348 (name "suil")
5349 (version "0.10.20")
5350 (source (origin
5351 (method url-fetch)
5352 (uri (string-append "https://download.drobilla.net/suil-"
5353 version ".tar.xz"))
5354 (sha256
5355 (base32
5356 "0klkxzzx77bg0jwv3a7sn1ar30333y0bjg8b83zifpixwz9kwjik"))))
5357 (build-system meson-build-system)
5358 (arguments
5359 `(#:tests? #f)) ;no check target
5360 (inputs
5361 (list lv2
5362 gtk+-2
5363 gtk+
5364 qtbase-5
5365 qtx11extras))
5366 (native-inputs
5367 (list pkg-config))
5368 (home-page "https://drobilla.net/software/suil/")
5369 (synopsis "Library for loading and wrapping LV2 plugin UIs")
5370 (description
5371 "Suil is a lightweight C library for loading and wrapping LV2 plugin UIs.
5372
5373Suil makes it possible to load a UI of a toolkit in a host using another
5374toolkit. The API is designed such that hosts do not need to explicitly
5375support specific toolkits – if Suil supports a particular toolkit, then UIs in
5376that toolkit will work in all hosts that use Suil automatically.
5377
5378Suil currently supports every combination of Gtk, Qt, and X11.")
5379 (license license:isc)))
5380
5381(define-public libebur128
5382 (package
5383 (name "libebur128")
5384 (version "1.2.6")
5385 (source
5386 (origin
5387 (method git-fetch)
5388 (uri (git-reference
5389 (url "https://github.com/jiixyj/libebur128")
5390 (commit (string-append "v" version))))
5391 (file-name (git-file-name name version))
5392 (sha256
5393 (base32 "0xkpz5rzz1j1srhprbh89669gw8z5f1njpvcnxqgf7qax69vd8sh"))))
5394 (build-system cmake-build-system)
5395 (arguments
5396 `(;; Tests require proprietary .wav files. See
5397 ;; https://github.com/jiixyj/libebur128/issues/82.
5398 #:tests? #f
5399 #:configure-flags '("-DBUILD_STATIC_LIBS=OFF")))
5400 (home-page "https://github.com/jiixyj/libebur128")
5401 (synopsis "Library implementing the EBU R 128 loudness standard")
5402 (description
5403 "@code{libebur128} is a C library that implements the EBU R 128 standard
5404for loudness normalisation.")
5405 (license license:expat)))
5406
5407(define-public timidity++
5408 (package
5409 (name "timidity++")
5410 (version "2.15.0")
5411 (source (origin
5412 (method url-fetch)
5413 (uri (string-append "mirror://sourceforge/timidity/TiMidity++"
5414 "/TiMidity++-" version
5415 "/TiMidity++-" version ".tar.bz2"))
5416 (sha256
5417 (base32
5418 "1xf8n6dqzvi6nr2asags12ijbj1lwk1hgl3s27vm2szib8ww07qn"))))
5419 (build-system gnu-build-system)
5420 (arguments
5421 '(#:configure-flags
5422 (list "--enable-audio=alsa,flac,jack,ao,vorbis,speex"
5423 "--enable-ncurses"
5424 "--enable-server"
5425 "--enable-alsaseq"
5426 (string-append "--with-default-path="
5427 (assoc-ref %outputs "out") "/etc/timidity"))
5428 #:phases
5429 (modify-phases %standard-phases
5430 (add-after 'configure 'fix-config.h
5431 (lambda _
5432 (substitute* "config.h"
5433 (("/\\* #undef STDC_HEADERS \\*/")
5434 "#define STDC_HEADERS 1"))))
5435 (add-after 'install 'install-config
5436 (lambda _
5437 (let ((out (string-append (assoc-ref %outputs "out")
5438 "/etc/timidity")))
5439 (mkdir-p out)
5440 (call-with-output-file
5441 (string-append out "/timidity.cfg")
5442 (lambda (port)
5443 (format port (string-append "source "
5444 (assoc-ref %build-inputs "freepats")
5445 "/share/freepats/freepats.cfg")))))
5446 #t)))))
5447 (inputs
5448 (list alsa-lib
5449 ao
5450 flac
5451 jack-1
5452 libogg
5453 libvorbis
5454 speex
5455 ncurses
5456 freepats))
5457 (native-inputs
5458 (list pkg-config))
5459 (home-page "https://timidity.sourceforge.net/")
5460 (synopsis "Software synthesizer for playing MIDI files")
5461 (description
5462 "TiMidity++ is a software synthesizer. It can play MIDI files by
5463converting them into PCM waveform data; give it a MIDI data along with digital
5464instrument data files, then it synthesizes them in real-time, and plays. It
5465can not only play sounds, but also can save the generated waveforms into hard
5466disks as various audio file formats.")
5467 (license license:gpl2+)))
5468
5469(define-public vamp
5470 (package
5471 (name "vamp")
5472 (version "2.10.0")
5473 (source (origin
5474 (method url-fetch)
5475 (uri (string-append
5476 "https://code.soundsoftware.ac.uk/attachments/download/"
5477 "2691" ; This mysterious number changes with each update
5478 "/vamp-plugin-sdk-" version ".tar.gz"))
5479 (sha256
5480 (base32
5481 "0pzpkxrz71fzqd2m83kjyafzqzrifzsq5phcn7mqq52blii3gbxf"))))
5482 (build-system gnu-build-system)
5483 (arguments
5484 `(#:tests? #f ; no check target
5485 #:phases
5486 (modify-phases %standard-phases
5487 (add-after 'install 'remove-libvamp-hostsdk.la
5488 (lambda* (#:key outputs #:allow-other-keys)
5489 ;; https://bugs.launchpad.net/ubuntu/+source/vamp-plugin-sdk/+bug/1253656
5490 (for-each delete-file
5491 (let ((out (assoc-ref outputs "out")))
5492 (list (string-append out "/lib/libvamp-sdk.la")
5493 (string-append out "/lib/libvamp-hostsdk.la"))))
5494 #t)))))
5495 (inputs
5496 (list libsndfile))
5497 (native-inputs
5498 (list pkg-config))
5499 (home-page "https://vamp-plugins.org")
5500 (synopsis "Modular and extensible audio processing system")
5501 (description
5502 "Vamp is an audio processing plugin system for plugins that extract
5503descriptive information from audio data — typically referred to as audio
5504analysis plugins or audio feature extraction plugins.")
5505 (license
5506 (license:x11-style
5507 "https://code.soundsoftware.ac.uk/projects/vamp-plugin-sdk/repository/entry/COPYING"))))
5508
5509(define-public libsbsms
5510 (package
5511 (name "libsbsms")
5512 (version "2.0.2")
5513 (source
5514 (origin
5515 (method url-fetch)
5516 (uri (string-append "mirror://sourceforge/sbsms/sbsms/" version
5517 "/libsbsms-" version ".tar.gz"))
5518 (sha256
5519 (base32 "1vmf84iy4dkwxv887grnlsfk43fmhd9gbg26gc2kgcv40sbkvayf"))))
5520 (build-system gnu-build-system)
5521 (native-inputs (list automake))
5522 (arguments
5523 `(#:configure-flags
5524 ;; Disable the use of SSE unless on x86_64.
5525 ,(if (not (string-prefix? "x86_64" (or (%current-target-system)
5526 (%current-system))))
5527 ''("--disable-sse")
5528 ''())
5529 #:phases
5530 (modify-phases %standard-phases
5531 (add-after
5532 'unpack 'fix-ar-lib-path
5533 (lambda* (#:key inputs #:allow-other-keys)
5534 ;; Originally a symlink to '/usr/local/share/automake-1.12/ar-lib'.
5535 (delete-file "ar-lib")
5536 (symlink
5537 (search-input-file inputs
5538 (string-append "/share/automake-"
5539 ,(version-major+minor
5540 (package-version automake))
5541 "/ar-lib"))
5542 "ar-lib")
5543 #t)))))
5544 (home-page "https://sbsms.sourceforge.net/")
5545 (synopsis "Library for time stretching and pitch scaling of audio")
5546 (description
5547 "SBSMS (Subband Sinusoidal Modeling Synthesis) is software for time
5548stretching and pitch scaling of audio. This package contains the library.")
5549 ;; There is no explicit declaration of a license, but a COPYING file
5550 ;; containing gpl2.
5551 (license license:gpl2)))
5552
5553(define-public stargate-sbsms
5554 ;; Stargate's fork of sbsms.
5555 (let ((commit "90fab3440063dc9b6c1c2a8f74c2d92bd0e423f9")
5556 (revision "0"))
5557 (package/inherit libsbsms
5558 (name "stargate-sbsms")
5559 (version (git-version "0" revision commit))
5560 (home-page "https://github.com/stargatedaw/stargate-sbsms")
5561 (source
5562 (origin
5563 (method git-fetch)
5564 (uri (git-reference (url home-page) (commit commit)))
5565 (file-name (git-file-name name version))
5566 (sha256
5567 (base32
5568 "11srnzgpavcj6n70zjdm7488jzrprk71mg9dgr1sa6vwp575hf2m"))))
5569 (arguments
5570 (substitute-keyword-arguments arguments
5571 ((#:phases phases)
5572 #~(modify-phases #$phases
5573 (delete 'fix-ar-lib-path)
5574 (add-before 'build 'change-directory
5575 (lambda _
5576 (chdir "cli")))
5577 (replace 'configure
5578 (lambda _
5579 (setenv "DESTDIR" #$output)
5580 (setenv "PREFIX" "/")))
5581 (add-after 'install 'rename-sbsms
5582 (lambda _
5583 (with-directory-excursion (string-append #$output
5584 "/bin")
5585 (rename-file "sbsms" "stargate-sbsms"))))
5586 (delete 'check)))))
5587 (native-inputs
5588 (list libsndfile))
5589 (properties '((hidden? . #t))))))
5590
5591(define-public libkeyfinder
5592 (package
5593 (name "libkeyfinder")
5594 (version "2.2.7")
5595 (source
5596 (origin
5597 (method git-fetch)
5598 (uri (git-reference
5599 (url "https://github.com/mixxxdj/libkeyfinder")
5600 (commit version)))
5601 (file-name (git-file-name name version))
5602 (sha256
5603 (base32 "0nvhdzy0m3bchk3dpnspv2f518p2v9fjcrv36z1sva1pv9a2g35w"))))
5604 (build-system cmake-build-system)
5605 (native-inputs
5606 (list catch2-2))
5607 (inputs
5608 (list fftw))
5609 (home-page "https://mixxxdj.github.io/libkeyfinder/")
5610 (synopsis "Musical key detection for digital audio")
5611 (description
5612 "@code{libkeyfinder} is a small C++11 library for estimating the musical
5613key of digital audio.")
5614 (license license:gpl3+)))
5615
5616(define-public wavpack
5617 (package
5618 (name "wavpack")
5619 (version "5.8.1")
5620 (source
5621 (origin
5622 (method url-fetch)
5623 (uri (string-append "https://github.com/dbry/WavPack/releases/download/"
5624 version "/wavpack-" version ".tar.xz"))
5625 (sha256
5626 (base32 "09hcbkjlg00gdcyqfviqa76wpx4xz4waxhfgmx88hb30k1a7f8kk"))))
5627 (build-system gnu-build-system)
5628 (arguments
5629 '(#:configure-flags
5630 (list "--disable-static"
5631 "--enable-tests")))
5632 (home-page "https://www.wavpack.com/")
5633 (synopsis "Hybrid lossless audio codec")
5634 (description
5635 "WavPack is an audio compression format with lossless, lossy and hybrid
5636compression modes. This package contains command-line programs and library to
5637encode and decode wavpack files.")
5638 (license license:bsd-3)))
5639
5640(define-public wstsound
5641 ;; XXX: Does not release anymore.
5642 (let ((commit "289cae8dd2b1e75c447b063a6a4299bf139d4249")
5643 (revision "0"))
5644 (package
5645 (name "wstsound")
5646 (version (git-version "0.3.0" revision commit))
5647 (source
5648 (origin
5649 (method git-fetch)
5650 (uri (git-reference
5651 (url "https://github.com/WindstilleTeam/wstsound")
5652 (commit commit)))
5653 (file-name (git-file-name name version))
5654 (sha256
5655 (base32 "14qgvwwl1jah85adbf7q6r954mpcxnszibjzip90839n2g112zwf"))))
5656 (build-system cmake-build-system)
5657 (arguments
5658 (list
5659 #:configure-flags
5660 #~(list "-DBUILD_TESTS=ON")))
5661 (native-inputs (list googletest tinycmmc))
5662 ;; XXX: CMake-built dependents currently require propagation.
5663 (propagated-inputs (list libmodplug libmpg123 libvorbis openal opusfile))
5664 (home-page "https://github.com/WindstilleTeam/wstsound")
5665 (synopsis "C++ sound library")
5666 (description "This package provides a simple sound library for C++.")
5667 (license license:gpl3+))))
5668
5669(define-public libmixed
5670 (package
5671 (name "libmixed")
5672 (version "2.4.0")
5673 (source
5674 (origin
5675 (method git-fetch)
5676 (uri (git-reference
5677 (url "https://github.com/Shirakumo/libmixed")
5678 (commit version)))
5679 (file-name (git-file-name name version))
5680 (sha256
5681 (base32 "0g9z8mzrdp1j4w4dv6z2xkgknip6m6384n953y20wdvhs71gia1v"))))
5682 (build-system cmake-build-system)
5683 (arguments
5684 (list
5685 #:configure-flags
5686 #~(list "-DBUILD_STATIC=OFF"
5687 "-DCMAKE_CXX_FLAGS=-O3 -fPIC"
5688 "-DCMAKE_C_FLAGS=-O3 -fPIC")
5689 #:phases
5690 #~(modify-phases %standard-phases
5691 (add-after 'unpack 'fix-paths
5692 (lambda _
5693 (substitute* "CMakeLists.txt"
5694 (("/usr/local") #$output))))
5695 (replace 'check
5696 (lambda* (#:key tests? #:allow-other-keys)
5697 (when tests?
5698 (invoke "./tester")))))))
5699 (native-inputs (list doxygen graphviz))
5700 (inputs (list libmpg123 ncurses))
5701 (home-page "https://github.com/Shirakumo/libmixed")
5702 (synopsis "Low-level audio mixer pipeline library")
5703 (description
5704 "Libmixed is a library for real-time audio processing pipelines for use
5705in audio/video/games. It can serve as a base architecture for complex DSP
5706systems.")
5707 (license (list license:bsd-2 ; libsamplerate
5708 license:gpl2 ; spiralfft
5709 license:zlib))))
5710
5711(define-public libmodplug
5712 (package
5713 (name "libmodplug")
5714 (version "0.8.9.0")
5715 (source (origin
5716 (method url-fetch)
5717 (uri (string-append
5718 "mirror://sourceforge/modplug-xmms/"
5719 name "/" version "/" name "-" version ".tar.gz"))
5720 (sha256
5721 (base32
5722 "1pnri98a603xk47smnxr551svbmgbzcw018mq1k6srbrq6kaaz25"))))
5723 (build-system gnu-build-system)
5724 (home-page "https://modplug-xmms.sourceforge.net/")
5725 (synopsis "Mod file playing library")
5726 (description
5727 "Libmodplug renders mod music files as raw audio data, for playing or
5728conversion. mod, .s3m, .it, .xm, and a number of lesser-known formats are
5729supported. Optional features include high-quality resampling, bass expansion,
5730surround and reverb.")
5731 (license license:public-domain)))
5732
5733(define-public libxmp
5734 (package
5735 (name "libxmp")
5736 (version "4.6.3")
5737 (source
5738 (origin
5739 (method git-fetch)
5740 (uri (git-reference
5741 (url "https://github.com/libxmp/libxmp")
5742 (commit (string-append "libxmp-" version))))
5743 (file-name (git-file-name name version))
5744 (sha256
5745 (base32 "0mb54n2cqr8wvq02x9v8vdanvn01bhy0j1pyq2n3iykfnpjx4f2m"))))
5746 (build-system gnu-build-system)
5747 (native-inputs (list autoconf))
5748 (home-page "https://xmp.sourceforge.net/")
5749 (synopsis "Module player library")
5750 (description
5751 "Libxmp is a library that renders module files to PCM data. It supports
5752over 90 mainstream and obscure module formats including Protracker (MOD),
5753Scream Tracker 3 (S3M), Fast Tracker II (XM), and Impulse Tracker (IT).")
5754 (license license:lgpl2.1+)))
5755
5756(define-public xmp
5757 (package
5758 (name "xmp")
5759 (version "4.2.0")
5760 (source
5761 (origin
5762 (method git-fetch)
5763 (uri (git-reference
5764 (url "https://github.com/libxmp/xmp-cli")
5765 (commit (string-append "xmp-" version))))
5766 (file-name (git-file-name name version))
5767 (sha256
5768 (base32 "0c015v8r91g5nspfn6lldkw76dg3xjyg3x6s2sbiw6b3n7bf8znk"))))
5769 (build-system gnu-build-system)
5770 (native-inputs (list autoconf automake pkg-config))
5771 (inputs (list libxmp pulseaudio))
5772 (home-page "https://xmp.sourceforge.net/")
5773 (synopsis "Extended module player")
5774 (description
5775 "Xmp is a portable module player that plays over 90 mainstream and
5776obscure module formats, including Protracker MOD, Fasttracker II XM, Scream
5777Tracker 3 S3M and Impulse Tracker IT files.")
5778 (license license:gpl2+)))
5779
5780(define-public soundtouch
5781 (package
5782 (name "soundtouch")
5783 (version "2.3.1")
5784 (source
5785 (origin
5786 (method git-fetch)
5787 (uri (git-reference
5788 (url "https://gitlab.com/soundtouch/soundtouch.git")
5789 (commit version)))
5790 (file-name (git-file-name name version))
5791 (sha256
5792 (base32 "10znckb8mrnmvwj7vq12732al873qhqw27fpb5f8r0bkjdpcj3vr"))))
5793 (build-system gnu-build-system)
5794 (native-inputs
5795 (list autoconf automake libtool file))
5796 (home-page "https://www.surina.net/soundtouch/")
5797 (synopsis
5798 "Audio processing library for changing tempo, pitch and playback rate")
5799 (description
5800 "SoundTouch is an audio processing library for changing the tempo, pitch
5801and playback rates of audio streams or audio files. It is intended for
5802application developers writing sound processing tools that require tempo/pitch
5803control functionality, or just for playing around with the sound effects.")
5804 (license license:lgpl2.1+)))
5805
5806(define-public soundtouch-1/integer-samples
5807 (package
5808 (inherit soundtouch)
5809 (name "soundtouch")
5810 (version "1.9.2")
5811 (source
5812 (origin
5813 (method git-fetch)
5814 (uri (git-reference
5815 (url "https://gitlab.com/soundtouch/soundtouch.git")
5816 (commit (string-append name "-" version))))
5817 (file-name (git-file-name name version))
5818 (sha256
5819 (base32 "1ir961w5gz86cm6yivr1ypi6n2y52vn319gy2gvdkkbbz5wyjkrq"))))
5820 (arguments
5821 ;; Dolphin expects the samples to be of the integer type.
5822 (list #:configure-flags #~(list "--enable-integer-samples")
5823 #:phases #~(modify-phases %standard-phases
5824 (replace 'bootstrap
5825 (lambda _
5826 ;; Avoid the bootstrap script, which has a broken
5827 ;; shebang.
5828 (invoke "autoreconf" "-vif"))))))))
5829
5830(define-public stargate-soundtouch
5831 ;; Stargate's fork of soundtouch.
5832 (let ((commit "464f474c0be5d7e0970909dd30593012e4621468")
5833 (revision "0"))
5834 (package/inherit soundtouch
5835 (name "stargate-soundtouch")
5836 (version (git-version "0" revision commit))
5837 (home-page "https://github.com/stargatedaw/stargate-soundtouch")
5838 (source
5839 (origin
5840 (method git-fetch)
5841 (uri (git-reference (url home-page) (commit commit)))
5842 (file-name (git-file-name name version))
5843 (sha256
5844 (base32
5845 "1aw2j1f10p8n4s197b1nd3g1rjvwbrrszc9gwsbwk01c6nb3nr9v"))))
5846 (arguments
5847 (list #:phases
5848 #~(modify-phases %standard-phases
5849 (add-after 'install 'rename-soundstretch
5850 (lambda _
5851 (with-directory-excursion (string-append #$output
5852 "/bin")
5853 (rename-file "soundstretch"
5854 "stargate-soundstretch")))))))
5855 (properties '((hidden? . #t))))))
5856
5857(define-public sox
5858 (package
5859 (name "sox")
5860 (version "14.4.2")
5861 (source (origin
5862 (method url-fetch)
5863 (uri (string-append "mirror://sourceforge/sox/sox/" version "/"
5864 name "-" version ".tar.bz2"))
5865 (sha256
5866 (base32
5867 "170lx90r1nlnb2j6lg00524iwvqy72p48vii4xc5prrh8dnrb9l1"))))
5868 (build-system gnu-build-system)
5869 (arguments
5870 '(#:configure-flags
5871 '("CFLAGS=-g -O2 -Wno-error=implicit-function-declaration"
5872 ;; Upstream asks to identify the distribution to diagnose SoX
5873 ;; bug reports.
5874 "--with-distro=Guix System Distribution")))
5875 (native-inputs
5876 (list pkg-config))
5877 (inputs
5878 (list alsa-lib
5879 ao
5880 flac
5881 lame
5882 libid3tag
5883 libltdl
5884 libmad
5885 libpng
5886 libvorbis
5887 pulseaudio))
5888 (home-page "https://sox.sourceforge.net")
5889 (synopsis "Sound processing utility")
5890 (description
5891 "SoX (Sound eXchange) is a command line utility that can convert
5892various formats of computer audio files to other formats. It can also
5893apply various effects to these sound files, and, as an added bonus, SoX
5894can play and record audio files.")
5895 ;; sox.c is distributed under GPL, while the files that make up
5896 ;; libsox are licensed under LGPL.
5897 (license (list license:gpl2+ license:lgpl2.1+))))
5898
5899(define-public soxr
5900 (package
5901 (name "soxr")
5902 (version "0.1.3")
5903 (source
5904 (origin
5905 (method url-fetch)
5906 (uri
5907 (string-append "mirror://sourceforge/soxr/soxr-" version
5908 "-Source.tar.xz"))
5909 (sha256
5910 (base32 "12aql6svkplxq5fjycar18863hcq84c5kx8g6f4rj0lcvigw24di"))))
5911 (build-system cmake-build-system)
5912 (arguments '(#:tests? #f)) ;no 'check' target
5913 (home-page "https://sourceforge.net/p/soxr/wiki/Home/")
5914 (synopsis "One-dimensional sample-rate conversion library")
5915 (description
5916 "The SoX Resampler library (libsoxr) performs one-dimensional sample-rate
5917conversion. It may be used, for example, to resample PCM-encoded audio.")
5918 (license license:lgpl2.1+)))
5919
5920(define-public twolame
5921 (package
5922 (name "twolame")
5923 (version "0.4.0")
5924 (source
5925 (origin
5926 (method url-fetch)
5927 (uri (string-append "mirror://sourceforge/twolame/twolame/" version
5928 "/twolame-" version ".tar.gz"))
5929 (sha256
5930 (base32 "0zf8sxqb02w07ah55b1y7ab643zmpbhn62spa9pqra0rc17l4dfc"))))
5931 (build-system gnu-build-system)
5932 (inputs
5933 (list libsndfile))
5934 (native-inputs
5935 (list perl which)) ;used in tests/test.pl
5936 (home-page "https://www.twolame.org/")
5937 (synopsis "MPEG Audio Layer 2 (MP2) encoder")
5938 (description
5939 "TwoLAME is an optimised MPEG Audio Layer 2 (MP2) encoder based on
5940tooLAME by Mike Cheng, which in turn is based upon the ISO dist10 code and
5941portions of LAME.")
5942 (license license:lgpl2.1+)))
5943
5944(define-public portaudio
5945 (package
5946 (name "portaudio")
5947 (version "190600.20161030")
5948 (source
5949 (origin
5950 (method url-fetch)
5951 (uri (string-append
5952 "http://www.portaudio.com/archives/pa_stable_v"
5953 (string-map (lambda (c) (if (char=? c #\.) #\_ c)) version)
5954 ".tgz"))
5955 (sha256
5956 (base32 "04qmin6nj144b8qb9kkd9a52xfvm0qdgm8bg8jbl7s3frmyiv8pm"))
5957 (patches (search-patches "portaudio-audacity-compat.patch"))))
5958 (build-system gnu-build-system)
5959 (inputs
5960 ;; TODO: Add ASIHPI.
5961 (list alsa-lib jack-1))
5962 ;; Autoreconf is necessary because the audacity-compat patch modifies .in
5963 ;; files.
5964 (native-inputs
5965 (list autoconf automake libtool pkg-config))
5966 (arguments
5967 '(#:tests? #f ;no 'check' target
5968 #:parallel-build? #f ;fails on some systems
5969 #:configure-flags '("--with-pic"
5970 "--enable-cxx"
5971 ;; XXX: The following prevents a build error
5972 ;; because of missing depcomp when C++ bindings are
5973 ;; requested.
5974 "--disable-dependency-tracking")
5975 #:phases
5976 (modify-phases %standard-phases
5977 ;; This is needed for linking the static libraries
5978 (add-after 'unpack 'build-only-position-independent-code
5979 (lambda _
5980 (substitute* "configure.in"
5981 (("AC_PROG_LIBTOOL" m)
5982 (string-append m "\nAM_PROG_AR\nLT_INIT([pic-only])")))
5983 (delete-file "configure")
5984 #t))
5985 ;; Some headers are not installed by default, but are needed by
5986 ;; packages like Kaldi.
5987 (add-after 'install 'install-missing-headers
5988 (lambda* (#:key outputs #:allow-other-keys)
5989 (install-file "src/common/pa_ringbuffer.h"
5990 (string-append (assoc-ref outputs "out") "/include"))
5991 #t)))))
5992 (home-page "http://www.portaudio.com/")
5993 (synopsis "Audio I/O library")
5994 (description
5995 "PortAudio is a portable C/C++ audio I/O library providing a simple API
5996to record and/or play sound using a callback function or a blocking read/write
5997interface.")
5998 (license license:expat)))
5999
6000(define-public qsynth
6001 (package
6002 (name "qsynth")
6003 (version "1.0.3")
6004 (source
6005 (origin
6006 (method url-fetch)
6007 (uri (list
6008 (string-append "mirror://sourceforge/qsynth/qsynth/" version
6009 "/qsynth-" version ".tar.gz")
6010 (string-append "mirror://sourceforge/qsynth/qsynth (attic)"
6011 "/qsynth-" version ".tar.gz")))
6012 (sha256
6013 (base32 "0rmskh0b0jacjhqi4qkfaa28m96dn46a5r796rvha4g8xlm7x2fg"))))
6014 (build-system cmake-build-system)
6015 (arguments
6016 `(#:tests? #f)) ; no "check" phase
6017 (native-inputs
6018 (list qttools pkg-config))
6019 (inputs
6020 (list fluidsynth qtbase qtsvg qtwayland))
6021 (home-page "https://qsynth.sourceforge.io")
6022 (synopsis "Graphical user interface for FluidSynth")
6023 (description
6024 "Qsynth is a GUI front-end application for the FluidSynth SoundFont
6025synthesizer written in C++.")
6026 (license license:gpl2+)))
6027
6028(define-public rsound
6029 (package
6030 (name "rsound")
6031 (version "1.1")
6032 (source
6033 (origin
6034 (method git-fetch)
6035 (uri (git-reference
6036 (url "https://github.com/Themaister/RSound")
6037 (commit (string-append "v" version))))
6038 (file-name (git-file-name name version))
6039 (sha256
6040 (base32 "0gspmr3klwnq98h17p5hc6ifygya4p80g4g8r7a1qavm3mv19waf"))))
6041 (build-system gnu-build-system)
6042 (inputs
6043 (list alsa-lib
6044 jack-1
6045 ao
6046 libsamplerate
6047 openal
6048 portaudio
6049 pulseaudio))
6050 (arguments
6051 '(#:phases
6052 (modify-phases %standard-phases
6053 (replace 'configure
6054 (lambda* (#:key outputs #:allow-other-keys)
6055 (setenv "CC" "gcc")
6056 (invoke "./configure"
6057 (string-append "--prefix=" (assoc-ref outputs "out"))))))
6058 ;; No 'check' target.
6059 #:tests? #f))
6060 (home-page "https://themaister.net/rsound.html")
6061 (synopsis "Networked audio system")
6062 (description
6063 "RSound allows you to send audio from an application and transfer it
6064directly to a different computer on your LAN network. It is an audio daemon
6065with a much different focus than most other audio daemons.")
6066 (license license:gpl3+)))
6067
6068(define-public xjackfreak
6069 (package
6070 (name "xjackfreak")
6071 (version "1.0")
6072 (source (origin
6073 (method git-fetch)
6074 (uri (git-reference
6075 (url "https://github.com/johnhldavis/xjackfreak")
6076 (commit (string-append "v" version))))
6077 (file-name (git-file-name name version))
6078 (sha256
6079 (base32
6080 "18c546qidbrj0f5wfiq5llii2192xpln0ab3r4vpr7i3wybxqjfz"))))
6081 (build-system gnu-build-system)
6082 (arguments
6083 `(#:make-flags
6084 (list (string-append "docdir=" (assoc-ref %outputs "out")
6085 "/share/doc/xjackfreak"))))
6086 (inputs
6087 (list jack-1 libx11 libxt libxext))
6088 (native-inputs
6089 (list pkg-config))
6090 (home-page "https://github.com/johnhldavis/xjackfreak")
6091 (synopsis "JACK audio frequency analyzer and display")
6092 (description
6093 "XJackFreak is an audio analysis and equalizing tool for the Jack Audio
6094Connection Kit. It can display the FFT of any input, modify it and output the
6095result.")
6096 (license license:gpl3+)))
6097
6098(define-public zita-convolver
6099 (package
6100 (name "zita-convolver")
6101 (version "4.0.3")
6102 (source (origin
6103 (method url-fetch)
6104 (uri (string-append
6105 "http://kokkinizita.linuxaudio.org"
6106 "/linuxaudio/downloads/zita-convolver-"
6107 version ".tar.bz2"))
6108 (snippet
6109 ;; Don't optimize for a specific processor architecture.
6110 '(begin
6111 (substitute* "source/Makefile"
6112 (("^CXXFLAGS \\+= -march=native") ""))
6113 #t))
6114 (modules '((guix build utils)))
6115 (sha256
6116 (base32
6117 "0prji66p86z2bzminywkwchr5bfgxcg2i8y803pydd1hzf2198cs"))))
6118 (build-system gnu-build-system)
6119 (arguments
6120 `(#:tests? #f ; no "check" target
6121 #:make-flags
6122 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
6123 (string-append "SUFFIX="))
6124 #:phases
6125 (modify-phases %standard-phases
6126 (add-after 'unpack 'patch-makefile-and-enter-directory
6127 (lambda _
6128 (substitute* "source/Makefile"
6129 (("ldconfig") "true")
6130 (("^LIBDIR =.*") "LIBDIR = lib\n"))
6131 (chdir "source")
6132 #t))
6133 (add-after 'install 'install-symlink
6134 (lambda _
6135 (symlink "libzita-convolver.so"
6136 (string-append (assoc-ref %outputs "out")
6137 "/lib/libzita-convolver.so.4"))
6138 #t))
6139 ;; no configure script
6140 (delete 'configure))))
6141 (inputs (list fftwf))
6142 (home-page "https://kokkinizita.linuxaudio.org")
6143 (synopsis "Fast, partitioned convolution engine library")
6144 (description
6145 "Zita convolver is a C++ library providing a real-time convolution
6146engine.")
6147 (license license:gpl3+)))
6148
6149(define-public zita-resampler
6150 (package
6151 (name "zita-resampler")
6152 (version "1.6.2")
6153 (source (origin
6154 (method url-fetch)
6155 (uri (string-append
6156 "http://kokkinizita.linuxaudio.org"
6157 "/linuxaudio/downloads/zita-resampler-"
6158 version ".tar.bz2"))
6159 (snippet
6160 ;; Don't optimize for a specific processor architecture.
6161 '(begin
6162 (substitute* '("apps/Makefile" "source/Makefile")
6163 (("^CXXFLAGS \\+= -march=native") ""))
6164 #t))
6165 (modules '((guix build utils)))
6166 (sha256
6167 (base32
6168 "1my5k2dh2dkvjp6xjnf9qy6i7s28z13kw1n9pwa4a2cpwbzawfr3"))))
6169 (build-system gnu-build-system)
6170 (arguments
6171 `(#:tests? #f ; no "check" target
6172 #:make-flags
6173 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
6174 (string-append "SUFFIX="))
6175 #:phases
6176 (modify-phases %standard-phases
6177 (add-after
6178 'unpack 'patch-makefile-and-enter-directory
6179 (lambda _
6180 (substitute* "source/Makefile"
6181 (("ldconfig") "true")
6182 (("^LIBDIR =.*") "LIBDIR = lib\n"))
6183 (chdir "source")
6184 #t))
6185 (add-after
6186 'install 'install-symlink
6187 (lambda _
6188 (symlink "libzita-resampler.so"
6189 (string-append (assoc-ref %outputs "out")
6190 "/lib/libzita-resampler.so.1"))
6191 #t))
6192 ;; no configure script
6193 (delete 'configure))))
6194 (home-page "https://kokkinizita.linuxaudio.org/linuxaudio/zita-resampler/resampler.html")
6195 (synopsis "C++ library for resampling audio signals")
6196 (description
6197 "Libzita-resampler is a C++ library for resampling audio signals. It is
6198designed to be used within a real-time processing context, to be fast, and to
6199provide high-quality sample rate conversion.")
6200 (license license:gpl3+)))
6201
6202(define-public zita-alsa-pcmi
6203 (package
6204 (name "zita-alsa-pcmi")
6205 (version "0.3.2")
6206 (source (origin
6207 (method url-fetch)
6208 (uri (string-append "http://kokkinizita.linuxaudio.org"
6209 "/linuxaudio/downloads/zita-alsa-pcmi-"
6210 version ".tar.bz2"))
6211 (sha256
6212 (base32
6213 "12d7vdg74yh21w69qi0wg57iz4876j94qbiq09bvscih6xz9y78s"))))
6214 (build-system gnu-build-system)
6215 (arguments
6216 (list #:tests? #f ;no "check" target
6217 #:make-flags #~(list (string-append "PREFIX="
6218 (assoc-ref %outputs "out"))
6219 (string-append "SUFFIX=")
6220 (string-append "CXX="
6221 #$(cxx-for-target)))
6222 #:phases #~(modify-phases %standard-phases
6223 (add-after 'unpack 'patch-makefile-and-enter-directory
6224 (lambda _
6225 (substitute* "source/Makefile"
6226 (("ldconfig")
6227 "true")
6228 (("^LIBDIR =.*")
6229 "LIBDIR = lib\n")
6230 (("CXXFLAGS \\+= -march=native")
6231 ""))
6232 (chdir "source")))
6233 (add-after 'install 'install-symlink
6234 (lambda _
6235 (symlink "libzita-alsa-pcmi.so"
6236 (string-append (assoc-ref %outputs "out")
6237 "/lib/libzita-alsa-pcmi.so.0"))))
6238 ;; no configure script
6239 (delete 'configure))))
6240 (inputs (list alsa-lib fftw))
6241 (properties `((tunable? . #t)))
6242 (home-page "https://kokkinizita.linuxaudio.org")
6243 (synopsis "C++ wrapper around the ALSA API")
6244 (description
6245 "Zita-alsa-pcmi is a C++ wrapper around the ALSA API. It provides easy
6246access to ALSA PCM devices, taking care of the many functions required to
6247open, initialise and use a hw: device in mmap mode, and providing floating
6248point audio data.")
6249 (license license:gpl3+)))
6250
6251(define-public cuetools
6252 (package
6253 (name "cuetools")
6254 (version "1.4.1")
6255 (source (origin
6256 (method git-fetch)
6257 (uri (git-reference
6258 (url "https://github.com/svend/cuetools")
6259 (commit version)))
6260 (file-name (git-file-name name version))
6261 (sha256
6262 (base32
6263 "02ksv1ahf1v4cr2xbclsfv5x17m9ivzbssb5r8xjm97yh8a7spa3"))))
6264 (build-system gnu-build-system)
6265 ;; The source checkout is not bootstrapped.
6266 (native-inputs
6267 (list autoconf automake flex bison))
6268 (synopsis "Cue and toc file parsers and utilities")
6269 (description "Cuetools is a set of programs that are useful for manipulating
6270and using CUE sheet (cue) files and Table of Contents (toc) files. CUE and TOC
6271files are a way to represent the layout of a data or audio CD in a
6272machine-readable ASCII format.")
6273 (home-page "https://github.com/svend/cuetools")
6274 (license license:gpl2+)))
6275
6276(define-public mp3guessenc
6277 (package
6278 (name "mp3guessenc")
6279 (version "0.27.5")
6280 (source
6281 (origin
6282 (method url-fetch)
6283 (uri (string-append "mirror://sourceforge/mp3guessenc/mp3guessenc-"
6284 (version-major+minor version) "/mp3guessenc-"
6285 version ".tar.gz"))
6286 (sha256
6287 (base32 "1fa3sbwwn4p2v1749lzy040bfy1xfd574mf2frwgg9ikgk3vlb3c"))))
6288 (build-system gnu-build-system)
6289 (arguments
6290 `(#:tests? #f ; no tests
6291 #:make-flags
6292 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
6293 #:phases
6294 (modify-phases %standard-phases
6295 (delete 'configure)))) ; no configure phase
6296 (home-page "https://mp3guessenc.sourceforge.io")
6297 (synopsis "Analyze MPEG layer I/II/III files")
6298 (description "mp3guessenc is a command line utility that tries to detect the
6299encoder used for an MPEG Layer III (MP3) file, as well as scan any MPEG audio
6300file (any layer) and print a lot of useful information.")
6301 (license license:lgpl2.1+)))
6302
6303(define-public mp3cat
6304 (package
6305 (name "mp3cat")
6306 (version "0.5")
6307 (source
6308 (origin
6309 (method git-fetch)
6310 (uri (git-reference
6311 (url "https://github.com/tomclegg/mp3cat")
6312 (commit version)))
6313 (file-name (git-file-name name version))
6314 (sha256
6315 (base32 "0n6hjg2wgd06m561zc3ib5w2m3pwpf74njv2b2w4sqqh5md2ymfr"))))
6316 (build-system gnu-build-system)
6317 (arguments
6318 (list
6319 #:tests? #f ;upstream defines no tests
6320 #:make-flags
6321 #~(list (string-append "PREFIX="
6322 #$output))
6323 #:phases
6324 #~(modify-phases %standard-phases
6325 (delete 'configure)
6326 (add-before 'build 'patch-makefile
6327 (lambda _args
6328 (substitute* "Makefile"
6329 (("cc")
6330 #$(cc-for-target))))))))
6331 (home-page "http://tomclegg.net/mp3cat")
6332 (synopsis "MP3 stream copier and concatenator")
6333 (description
6334 "Copies a stream, skipping everything except MP3 frames with valid
6335headers. This can be used to copy and concatenate streams, even if
6336they contain extra garbage.")
6337 (license license:gpl2+)))
6338
6339(define-public shntool
6340 (package
6341 (name "shntool")
6342 (version "3.0.10")
6343 (source (origin
6344 (method url-fetch)
6345 (uri (list
6346 (string-append "http://etree.org/shnutils/shntool/dist/src/"
6347 "shntool-" version ".tar.gz")
6348 (string-append "mirror://debian/pool/main/s/shntool/shntool_"
6349 version ".orig.tar.gz")))
6350 (sha256
6351 (base32
6352 "00i1rbjaaws3drkhiczaign3lnbhr161b7rbnjr8z83w8yn2wc3l"))))
6353 (build-system gnu-build-system)
6354 (synopsis "WAVE audio data processing tool")
6355 (description "shntool is a multi-purpose WAVE data processing and reporting
6356utility. File formats are abstracted from its core, so it can process any file
6357that contains WAVE data, compressed or not---provided there exists a format
6358module to handle that particular file type. It can also generate CUE files, and
6359use them split WAVE data into multiple files.")
6360 (home-page "http://etree.org/shnutils/shntool/")
6361 ;; 'install-sh' bears the x11 license
6362 (license (list license:gpl2+ license:x11))))
6363
6364(define-public dcadec
6365 (package
6366 (name "dcadec")
6367 (version "0.2.0")
6368 (source (origin
6369 (method git-fetch)
6370 (uri (git-reference
6371 (url "https://github.com/foo86/dcadec")
6372 (commit (string-append "v" version))))
6373 (file-name (git-file-name name version))
6374 (sha256
6375 (base32
6376 "07nd0ajizrp1w02bsyfcv18431r8m8rq8gjfmz9wmckpg7cxj2hs"))))
6377 (build-system gnu-build-system)
6378 (arguments
6379 ;; Test files are missing: https://github.com/foo86/dcadec/issues/53
6380 `(#:tests? #f
6381 #:make-flags
6382 (list (string-append "CC=" ,(cc-for-target))
6383 ;; Build shared library.
6384 "CONFIG_SHARED=1"
6385 (string-append "PREFIX=" (assoc-ref %outputs "out"))
6386 ;; Set proper runpath.
6387 (string-append "LDFLAGS=-Wl,-rpath="
6388 (assoc-ref %outputs "out")
6389 "/lib"))
6390 #:phases
6391 (modify-phases %standard-phases
6392 ;; No configure script, just a hand-written Makefile.
6393 (delete 'configure))))
6394 (synopsis "DTS Coherent Acoustics decoder")
6395 (description "Dcadec is a DTS Coherent Acoustics surround sound decoder
6396with support for HD extensions.")
6397 (home-page "https://github.com/foo86/dcadec")
6398 (license license:lgpl2.1+)))
6399
6400(define-public drc
6401 (package
6402 (name "drc")
6403 (version "3.2.3")
6404 (source
6405 (origin
6406 (method url-fetch)
6407 (uri (string-append "mirror://sourceforge/drc-fir/drc-fir/"
6408 version "/drc-" version ".tar.gz"))
6409 (sha256
6410 (base32
6411 "08ljj4776pjx119zjmfqa8w56bf7x0m7spmi27yk1m455bmiglrj"))))
6412 (build-system gnu-build-system)
6413 (arguments
6414 (list
6415 #:tests? #false ;there are none
6416 #:make-flags
6417 #~(list (string-append "INSTALL_PREFIX=" #$output)
6418 "-C" "source")
6419 #:phases
6420 '(modify-phases %standard-phases
6421 (delete 'configure))))
6422 (inputs (list fftw))
6423 (home-page "https://drc-fir.sourceforge.net/")
6424 (synopsis "Digital room correction")
6425 (description
6426 "DRC is a program used to generate correction filters for acoustic
6427compensation of HiFi and audio systems in general, including listening room
6428compensation. DRC generates just the FIR correction filters, which can be
6429used with a real time or offline convolver to provide real time or offline
6430correction. DRC doesn't provide convolution features, and provides only some
6431simplified, although really accurate, measuring tools.")
6432 (license license:gpl2+)))
6433
6434(define-public bs1770gain
6435 (package
6436 (name "bs1770gain")
6437 (version "0.7.0")
6438 (home-page "https://manpages.debian.org/sid/bs1770gain/bs1770gain.1.en.html")
6439 (source
6440 (origin
6441 (method url-fetch)
6442 (uri (string-append "mirror://sourceforge/bs1770gain/bs1770gain/"
6443 version "/bs1770gain-" version ".tar.gz"))
6444 (sha256
6445 (base32 "0a2dcaxvxy5m3a5sb1lhplsymvz3ypaiidc5xn9qy01h53zvyvkp"))
6446 (modules '((guix build utils)))
6447 (snippet
6448 `(begin
6449 ;; XXX
6450 (substitute* (find-files "." "\\.[ch]$")
6451 (("^ \\* N..o.*") ""))
6452 (substitute* "libbg/bgx.c"
6453 (("#define BG.* ") "#define BS ")
6454 (("BG.*NO?.*N.*S.*E.*N.*SE?") "NO")
6455 (("\"( #|N).*\"") "\"\""))
6456 (substitute* (list "config.h"
6457 "configure.ac"
6458 "configure")
6459 (("https?://bs1770gain[^/]*/")
6460 ,home-page))
6461 #t))))
6462 (build-system gnu-build-system)
6463 (inputs (list ffmpeg-4 sox))
6464 (synopsis "Tool to adjust loudness of media files")
6465 (description
6466 "BS1770GAIN is a loudness scanner compliant with ITU-R BS.1770 and its
6467flavors EBU R128, ATSC A/85, and ReplayGain 2.0. It helps normalizing the
6468loudness of audio and video files to the same level.")
6469 (license license:gpl2+)))
6470
6471(define-public r128gain
6472 ;; XXX: Upstream notice: This project was archived by the owner on Aug 17,
6473 ;; 2023. It is now read-only.
6474 (package
6475 (name "r128gain")
6476 (version "1.0.7")
6477 (source (origin
6478 (method git-fetch)
6479 (uri (git-reference
6480 (url "https://github.com/desbma/r128gain.git")
6481 (commit version)))
6482 (file-name (git-file-name name version))
6483 (sha256
6484 (base32
6485 "0zqclskkjb9hfdw9gq6iq4bs9dl1wj9nr8v1jz6s885379q9l8i7"))))
6486 (build-system pyproject-build-system)
6487 (arguments
6488 (list
6489 #:tests? #f ;require a complex set up, see <.github/workflows/ci.yml>.
6490 #:phases
6491 #~(modify-phases %standard-phases
6492 (add-after 'unpack 'hardcode-ffmpeg
6493 (lambda* (#:key inputs #:allow-other-keys)
6494 (substitute* "r128gain/__init__.py"
6495 (("ffmpeg_path or \"ffmpeg\"")
6496 (string-append "ffmpeg_path or \""
6497 (search-input-file inputs "bin/ffmpeg")
6498 "\""))))))))
6499 (inputs (list python-crcmod python-ffmpeg-python python-mutagen
6500 python-tqdm ffmpeg))
6501 (native-inputs (list python-future
6502 python-requests
6503 python-setuptools))
6504 (home-page "https://github.com/desbma/r128gain")
6505 (synopsis "Fast audio loudness scanner & tagger")
6506 (description
6507 "r128gain is a multi platform command line tool to scan your audio
6508files and tag them with loudness metadata (ReplayGain v2 or Opus R128 gain
6509format), to allow playback of several tracks or albums at a similar
6510loudness level. r128gain can also be used as a Python module from other
6511Python projects to scan and/or tag audio files.")
6512 ;; 'setup.py' claims LGPL2+, 'LICENSE' is LGPLv2.1.
6513 (license license:lgpl2.1+)))
6514
6515(define-public rsgain
6516 (package
6517 (name "rsgain")
6518 (version "3.6")
6519 (source (origin
6520 (method git-fetch)
6521 (uri (git-reference
6522 (url "https://github.com/complexlogic/rsgain.git")
6523 (commit (string-append "v" version))))
6524 (file-name (git-file-name name version))
6525 (sha256
6526 (base32
6527 "1bnpmm3bxij0l54i39vr70q3l1gdaac3l4vdv76pcdk9nlydmavn"))
6528 (modules '((guix build utils)))
6529 (snippet
6530 ;; Remove bundled dependencies.
6531 #~(delete-file-recursively "src/external"))))
6532 (build-system cmake-build-system)
6533 (arguments
6534 (list
6535 #:tests? #f ;no tests
6536 #:configure-flags
6537 #~(list "-DINSTALL_MANPAGE=ON")
6538 #:phases
6539 #~(modify-phases %standard-phases
6540 (add-after 'unpack 'link-unbundled-libraries
6541 (lambda* (#:key inputs #:allow-other-keys)
6542 (substitute* "CMakeLists.txt"
6543 (("find_package(PkgConfig MODULE REQUIRED)" all)
6544 (string-append all "\nfind_package (CRCpp REQUIRED)")))
6545 (substitute* "src/tag.cpp"
6546 (("external/CRC.h")
6547 "CRC.h")))))))
6548 (native-inputs (list pkg-config gzip))
6549 (inputs
6550 (list crcpp
6551 ffmpeg
6552 fmt
6553 libebur128
6554 libinih
6555 taglib
6556 zlib))
6557 (home-page "https://github.com/complexlogic/rsgain")
6558 (synopsis "ReplayGain 2.0 tagging utility")
6559 (description "This package provides @acronym{rsgain, really simple gain}, a
6560ReplayGain 2.0 command line utility. rsgain applies loudness metadata tags to
6561files, while leaving the audio stream untouched. A ReplayGain-compatible player
6562will dynamically adjust the volume of tagged files during playback.")
6563 (license license:bsd-2)))
6564
6565(define-public filteraudio
6566 (let ((revision "1")
6567 (commit "2fc669581e2a0ff87fba8de85861b49133306094"))
6568 (package
6569 (name "filteraudio")
6570 (version (string-append "0.0.0-" revision "."
6571 (string-take commit 7)))
6572 (source
6573 (origin
6574 (method git-fetch)
6575 (uri (git-reference
6576 (url "https://github.com/irungentoo/filter_audio")
6577 (commit commit)))
6578 (file-name (string-append name "-" version "-checkout"))
6579 (sha256
6580 (base32
6581 "0hbb290n3wb23f2k692a6bhc23nnqmxqi9sc9j15pnya8wifw64g"))))
6582 (build-system gnu-build-system)
6583 (arguments
6584 `(#:make-flags (list (string-append "PREFIX=" %output)
6585 (string-append "CC=" ,(cc-for-target)))
6586 #:tests? #f ; No tests
6587 #:phases
6588 (modify-phases %standard-phases
6589 ;; No configure script
6590 (delete 'configure))))
6591 (synopsis "Lightweight audio filtering library")
6592 (description "An easy to use audio filtering library made from webrtc
6593code, used in @code{libtoxcore}.")
6594 (home-page "https://github.com/irungentoo/filter_audio")
6595 (license license:bsd-3))))
6596
6597(define-public gsm
6598 (package
6599 (name "gsm")
6600 (version "1.0.20")
6601 (source
6602 (origin
6603 (method url-fetch)
6604 (uri
6605 (string-append "http://www.quut.com/" name "/" name
6606 "-" version ".tar.gz"))
6607 (sha256
6608 (base32 "1gwhmqs24c14gc9qr91iqb2jkbr3qqy4dvf27yf8j7mq322w65b3"))))
6609 (build-system gnu-build-system)
6610 (arguments
6611 `(#:test-target "tst"
6612 #:make-flags (list (string-append "INSTALL_ROOT=" %output))
6613 #:phases
6614 (modify-phases %standard-phases
6615 (add-after 'unpack 'add-fpic-ccflag
6616 (lambda _
6617 ;; The -fPIC compiler option is needed when building
6618 ;; mediastreamer.
6619 (substitute* "Makefile"
6620 (("^CCFLAGS.*" all)
6621 (string-append all "CCFLAGS += -fPIC\n")))))
6622 (add-before 'install 'pre-install
6623 (lambda _
6624 (let ((out (assoc-ref %outputs "out")))
6625 (mkdir-p (string-append out "/inc"))
6626 (mkdir-p (string-append out "/man"))
6627 (mkdir-p (string-append out "/man/man1"))
6628 (mkdir-p (string-append out "/man/man3"))
6629 (mkdir-p (string-append out "/bin"))
6630 (mkdir-p (string-append out "/lib")))))
6631 (add-after 'install 'post-install
6632 (lambda _
6633 (let ((out (assoc-ref %outputs "out")))
6634 (rename-file (string-append out "/inc")
6635 (string-append out "/include"))
6636 (mkdir-p (string-append out "/include/gsm"))
6637 (copy-recursively "inc"
6638 (string-append out "/include/gsm")))))
6639 (delete 'configure)))) ; no configure script
6640 (synopsis "GSM 06.10 lossy speech compression library")
6641 (description "This C library provides an encoder and a decoder for the GSM
664206.10 RPE-LTP lossy speech compression algorithm.")
6643 (home-page "https://quut.com/gsm/")
6644 (license (license:non-copyleft "file://COPYRIGHT"))))
6645
6646(define-public python-pyalsaaudio
6647 (package
6648 (name "python-pyalsaaudio")
6649 (version "0.11.0")
6650 (source (origin
6651 (method url-fetch)
6652 (uri (pypi-uri "pyalsaaudio" version))
6653 (sha256
6654 (base32
6655 "1p7xw2jrdwwjfnksj97k7hqp4hl7mgsj2kmkcj82qjsj6g59v2m7"))))
6656 (build-system pyproject-build-system)
6657 (arguments
6658 `(#:tests? #f)) ; tests require access to ALSA devices.
6659 (inputs
6660 (list alsa-lib))
6661 (native-inputs (list python-setuptools python-wheel))
6662 (home-page "https://larsimmisch.github.io/pyalsaaudio/")
6663 (synopsis "ALSA wrappers for Python")
6664 (description
6665 "This package contains wrappers for accessing the ALSA API from Python.
6666It is currently fairly complete for PCM devices, and has some support for
6667mixers.")
6668 (license license:psfl)))
6669
6670(define-public python-pyo
6671 (package
6672 (name "python-pyo")
6673 (version "1.0.6")
6674 (source
6675 (origin
6676 (method git-fetch)
6677 (uri (git-reference
6678 (url "https://github.com/belangeo/pyo")
6679 (commit version)))
6680 (file-name (git-file-name name version))
6681 (sha256
6682 (base32 "1igz75kv94dav28rzz19gckgfgdli05q5ghadlvm03ia7xd9l5zm"))))
6683 (build-system pyproject-build-system)
6684 (arguments
6685 (list
6686 ;; TODO: collecting ... Fatal Python error: Segmentation fault
6687 #:tests? #f
6688 #:phases
6689 #~(modify-phases %standard-phases
6690 (add-before 'sanity-check 'set-HOME
6691 (lambda _
6692 (setenv "HOME" "/tmp"))))))
6693 (native-inputs
6694 (list python-pytest
6695 python-setuptools))
6696 (inputs
6697 (list liblo
6698 libsndfile
6699 portaudio
6700 portmidi))
6701 (propagated-inputs
6702 (list python-wxpython))
6703 (home-page "https://github.com/belangeo/pyo")
6704 (synopsis "Python module to build digital signal processing program")
6705 (description
6706 "pyo is a Python module containing classes for a wide variety of audio
6707signal processing types.
6708
6709With pyo, user will be able to include signal processing chains directly in
6710Python scripts or projects, and to manipulate them in real time through the
6711interpreter. Tools in pyo module offer primitives, like mathematical
6712operations on audio signal, basic signal processing (filters, delays,
6713synthesis generators, etc.), but also complex algorithms to create sound
6714granulation and others creative audio manipulations.
6715
6716pyo supports OSC protocol (Open Sound Control), to ease communications between
6717softwares, and MIDI protocol, for generating sound events and controlling
6718process parameters. pyo allows creation of sophisticated signal processing
6719chains with all the benefits of a mature, and widely used, general programming
6720language.")
6721 (license license:lgpl3+)))
6722
6723(define-public ldacbt
6724 (package
6725 (name "ldacbt")
6726 (version "2.0.2.3")
6727 (source (origin
6728 (method url-fetch)
6729 (uri (string-append "https://github.com/EHfive/ldacBT"
6730 "/releases/download/v" version
6731 "/ldacBT-" version ".tar.gz"))
6732 (sha256
6733 (base32
6734 "1d65dms4klzql29abi15i90f41h523kl6mxrz9hi6p5vg37fxn2b"))))
6735 (build-system cmake-build-system)
6736 (arguments `(#:tests? #f)) ; no check target
6737 (home-page "https://github.com/EHfive/ldacBT/")
6738 (synopsis "LDAC Bluetooth encoder and ABR library")
6739 (description "This package provides an encoder for the LDAC
6740high-resolution Bluetooth audio streaming codec for streaming at up to 990
6741kbps at 24 bit/96 kHz.")
6742 (license license:asl2.0)))
6743
6744(define-public bluez-alsa
6745 (package
6746 (name "bluez-alsa")
6747 (version "4.3.1")
6748 (source (origin
6749 ;; The tarballs are mere snapshots and don't contain a
6750 ;; bootstrapped build system.
6751 (method git-fetch)
6752 (uri (git-reference
6753 (url "https://github.com/Arkq/bluez-alsa")
6754 (commit (string-append "v" version))))
6755 (file-name (git-file-name name version))
6756 (sha256
6757 (base32
6758 "05qzmcsihhd92vpjd45qr0gdzfqiw4jfcdjdg78mzimv9g5g3rjm"))))
6759 (build-system gnu-build-system)
6760 (arguments
6761 `(#:configure-flags
6762 (list "--enable-ldac"
6763 (string-append "--with-alsaplugindir="
6764 (assoc-ref %outputs "out")
6765 "/lib/alsa-lib")
6766 (string-append "--with-dbusconfdir="
6767 (assoc-ref %outputs "out")
6768 "/etc/dbus-1/system.d"))))
6769 (native-inputs
6770 (list autoconf
6771 automake
6772 `(,glib "bin")
6773 libtool
6774 pkg-config
6775 python-minimal))
6776 (inputs
6777 (list alsa-lib
6778 bluez
6779 dbus
6780 glib
6781 ldacbt
6782 libbsd
6783 ncurses
6784 ortp
6785 sbc))
6786 (home-page "https://github.com/Arkq/bluez-alsa")
6787 (synopsis "Bluetooth ALSA backend")
6788 (description "This project is a rebirth of a direct integration between
6789Bluez and ALSA. Since Bluez >= 5, the built-in integration has been removed
6790in favor of 3rd party audio applications. From now on, Bluez acts as a
6791middleware between an audio application, which implements Bluetooth audio
6792profile, and a Bluetooth audio device. BlueALSA registers all known Bluetooth
6793audio profiles in Bluez, so in theory every Bluetooth device (with audio
6794capabilities) can be connected. In order to access the audio stream, one has
6795to connect to the ALSA PCM device called @code{bluealsa}. The device is based
6796on the ALSA software PCM plugin.")
6797 (license license:expat)))
6798
6799(define-public snd
6800 (package
6801 (name "snd")
6802 (version "26.3")
6803 (source
6804 (origin
6805 (method url-fetch)
6806 (uri (string-append "https://ccrma.stanford.edu/software/snd/snd-"
6807 version ".tar.gz"))
6808 (sha256
6809 (base32
6810 "1d573mjlrn9rhl9g0a3d1rkar34q60ln8mwlbibfalpn8lsz59a0"))))
6811 (build-system gnu-build-system)
6812 (arguments
6813 (list
6814 #:tests? #f ; No tests.
6815 #:out-of-source? #f ; Required by 'install-doc'.
6816 #:configure-flags
6817 #~(let
6818 ((docdir (string-append #$output "/share/doc/snd-" #$version)))
6819 (list "--with-alsa"
6820 "--with-jack"
6821 "--with-gmp"
6822 "--with-gui"
6823 (string-append "--with-doc-dir=" docdir)))
6824 #:phases
6825 #~(modify-phases %standard-phases
6826 (add-after 'install 'install-s7-h
6827 (lambda _
6828 (install-file "s7.h" (string-append #$output
6829 "/include"))))
6830 (add-after 'install 'install-doc
6831 (lambda _
6832 (let
6833 ((docdir (string-append #$output "/share/doc/snd-"
6834 #$version)))
6835 (for-each
6836 (lambda (f)
6837 (install-file f docdir))
6838 (find-files "." "\\.html$"))
6839 (copy-recursively "pix" (string-append docdir "/pix"))))))))
6840 (native-inputs
6841 (list pkg-config))
6842 (inputs
6843 (list alsa-lib
6844 fftw
6845 flac
6846 gmp
6847 gsl
6848 jack-2
6849 libmpg123
6850 libsamplerate
6851 motif
6852 mpc
6853 mpfr
6854 speex
6855 timidity++
6856 vorbis-tools
6857 wavpack))
6858 (home-page "https://ccrma.stanford.edu/software/snd/snd/snd.html")
6859 (synopsis "Sound editor")
6860 (description
6861 "Snd is a sound editor modelled loosely after Emacs. It can be
6862customized and extended using either the s7 Scheme implementation (included in
6863the Snd sources), Ruby, or Forth.")
6864 (license
6865 ;; INFO: pkgsrc classifies this as `esdl-license', a license not included
6866 ;; in OSI or FSF lists, despite being similar to ISC.
6867 (license:non-copyleft "file://COPYING"))))
6868
6869(define-public libspecbleach
6870 (package
6871 (name "libspecbleach")
6872 (version "0.1.6")
6873 (source (origin
6874 (method git-fetch)
6875 (uri (git-reference
6876 (url "https://github.com/lucianodato/libspecbleach")
6877 (commit (string-append "v" version))))
6878 (file-name (git-file-name name version))
6879 (sha256
6880 (base32
6881 "0czmzhggg5gl833karfrl2c0pr2k3jf7q7jd3y68hyj0cnn6f3jg"))))
6882 (build-system meson-build-system)
6883 (native-inputs
6884 (list pkg-config))
6885 (inputs
6886 (list fftwf))
6887 (home-page "https://github.com/lucianodato/libspecbleach")
6888 (synopsis "C library for audio noise reduction and other spectral effects")
6889 (description
6890 "This package provides a C library for audio noise reduction and other
6891spectral effects. It is based on the algorithms that were used in
6892@code{noise-repellent}. These were extracted into a this standalone library to
6893remove the lv2 dependency. It uses the concept of a spectral processor which
6894itself uses a @acronym{STFT, short time Fourier transform} to process the audio.")
6895 (license license:lgpl2.1+)))
6896
6897(define-public noise-repellent
6898 (package
6899 (name "noise-repellent")
6900 (version "0.2.3")
6901 (source (origin
6902 (method git-fetch)
6903 (uri (git-reference
6904 (url "https://github.com/lucianodato/noise-repellent")
6905 (commit (string-append "v" version))))
6906 (file-name (git-file-name name version))
6907 (sha256
6908 (base32
6909 "0dq0rv7mndw0lqacl2nf9dmj4zzq19hfminzk3fzbppk5mh2rivp"))))
6910 (build-system meson-build-system)
6911 (inputs
6912 (list fftwf libspecbleach lv2))
6913 (native-inputs
6914 (list pkg-config))
6915 (home-page "https://github.com/lucianodato/noise-repellent")
6916 (synopsis "LV2 plugin for broadband noise reduction")
6917 (description "Noise Repellent is an LV2 plugin to reduce noise. It has
6918the following features:
6919
6920@enumerate
6921@item Spectral gating and spectral subtraction suppression rule
6922@item Adaptive and manual noise thresholds estimation
6923@item Adjustable noise floor
6924@item Adjustable offset of thresholds to perform over-subtraction
6925@item Time smoothing and a masking estimation to reduce artifacts
6926@item Basic onset detector to avoid transients suppression
6927@item Whitening of the noise floor to mask artifacts and to recover higher
6928 frequencies
6929@item Option to listen to the residual signal
6930@item Soft bypass
6931@item Noise profile saved with the session
6932@end enumerate
6933")
6934 (license license:lgpl3+)))
6935
6936(define-public normalize
6937 (package
6938 (name "normalize")
6939 (version "0.7.7")
6940 (source
6941 (origin
6942 (method url-fetch)
6943 (uri (string-append
6944 "http://download.savannah.gnu.org/releases/normalize/normalize-"
6945 version ".tar.gz"))
6946 (sha256
6947 (base32 "1n5khss10vjjp6w69q9qcl4kqfkd0pr555lgqghrchn6rjms4mb0"))))
6948 (build-system gnu-build-system)
6949 (arguments
6950 (list
6951 #:make-flags
6952 #~(list "CFLAGS=-g -O2 -Wno-error=implicit-function-declaration")
6953 #:phases
6954 #~(modify-phases %standard-phases
6955 (add-after 'unpack 'patch-shell-path
6956 (lambda* (#:key inputs #:allow-other-keys)
6957 (substitute* "test/Makefile.in"
6958 (("/bin/sh")
6959 (search-input-file inputs "/bin/sh"))))))))
6960 (inputs (list libmad))
6961 (home-page "https://normalize.nongnu.org/")
6962 (synopsis "Audio track volume normalizer")
6963 (description
6964 "@code{normalize} is an audio track normalizer.
6965For a collection of tracks with varying volumes, it is able to
6966make the loudness consistent between them. This is helpful
6967when making mixtapes, for example.
6968It can work with WAV and MP3 files.")
6969 (license license:gpl2)))
6970
6971(define-public lv2-speech-denoiser
6972 (let ((commit "04cfba929630404f8d4f4ca5bac8d9b09a99152f")
6973 (revision "1"))
6974 (package
6975 (name "lv2-speech-denoiser")
6976 (version (git-version "0" revision commit))
6977 (source
6978 (origin
6979 (method git-fetch)
6980 (uri (git-reference
6981 (url "https://github.com/lucianodato/speech-denoiser/")
6982 (commit commit)))
6983 (file-name (git-file-name name version))
6984 (sha256
6985 (base32 "189l6lz8sz5vr6bjyzgcsrvksl1w6crqsg0q65r94b5yjsmjnpr4"))))
6986 (build-system meson-build-system)
6987 (arguments
6988 `(;; Using a "release" build is recommended for performance
6989 #:build-type "release"
6990 #:phases
6991 (modify-phases %standard-phases
6992 (add-after 'unpack 'patch-meson-build
6993 (lambda _
6994 (substitute* "meson.build"
6995 (("install_folder = 'sdenoise.lv2'")
6996 "install_folder = 'lib/lv2/sdenoise.lv2'")
6997 (("build/manifest.ttl") "../build/manifest.ttl"))
6998 #t))
6999 (add-after 'unpack 'build-rnnoise
7000 (lambda _
7001 (with-directory-excursion "rnnoise"
7002 (let ((old-CFLAGS (getenv "CFLAGS")))
7003 (setenv "CFLAGS" "-fvisibility=hidden -fPIC -Wl,--exclude-libs,ALL")
7004 (setenv "CONFIG_SHELL" (which "bash"))
7005 (invoke "autoreconf" "-vif")
7006 (invoke "sh" "configure"
7007 "--disable-examples"
7008 "--disable-doc"
7009 "--disable-shared"
7010 "--enable-static")
7011 (invoke "make")
7012 (setenv "CFLAGS" old-CFLAGS))))))))
7013 (inputs
7014 (list lv2))
7015 (native-inputs
7016 (list autoconf automake libtool pkg-config))
7017 (home-page "https://github.com/werman/noise-suppression-for-voice")
7018 (synopsis "Speech denoise LV2 plugin based on Xiph's RNNoise library")
7019 (description "RNNoise is a library that uses deep learning to apply
7020noise suppression to audio sources with voice presence. This package provides
7021an LV2 audio plugin.")
7022 (license license:lgpl3+))))
7023
7024(define-public cli-visualizer
7025 (package
7026 (name "cli-visualizer")
7027 (version "1.8")
7028 (source
7029 (origin
7030 (method git-fetch)
7031 (uri (git-reference
7032 (url "https://github.com/dpayne/cli-visualizer")
7033 (commit (string-append "v" version))))
7034 (file-name (git-file-name name version))
7035 (sha256
7036 (base32 "003mbbwsz43mg3d7llphpypqa9g7rs1p1cdbqi1mbc2bfrc1gcq2"))))
7037 (build-system cmake-build-system)
7038 (native-inputs
7039 ;; TODO: Try using the latest googletest for versions > 1.8.
7040 (list ;; ("googletest" ,googletest-1.8)
7041 which))
7042 (inputs
7043 (list fftw ncurses pulseaudio))
7044 (arguments
7045 '(#:tests? #f
7046 ;; XXX Enable tests after patching them to use the system googletest.
7047 ;; #:configure-flags (list "-DVIS_WITH_TESTS=true")
7048 #:phases
7049 (modify-phases %standard-phases
7050 (add-after 'install 'install-examples
7051 (lambda* (#:key outputs #:allow-other-keys)
7052 (with-directory-excursion "../source/examples"
7053 (delete-file "mac_osx_config")
7054 (for-each (lambda (file)
7055 (install-file file
7056 (string-append
7057 (assoc-ref outputs "out")
7058 "/share/doc")))
7059 (find-files ".")))
7060 #t)))))
7061 (home-page "https://github.com/dpayne/cli-visualizer/")
7062 (synopsis "Command-line audio visualizer")
7063 (description "@code{cli-visualizer} displays fast-Fourier
7064transforms (FFTs) of the sound being played, as well as other graphical
7065representations.")
7066 (license license:expat)))
7067
7068(define-public cava
7069 (package
7070 (name "cava")
7071 (version "0.10.6")
7072 (source (origin
7073 (method git-fetch)
7074 (uri (git-reference
7075 (url "https://github.com/karlstav/cava")
7076 (commit version)))
7077 (file-name (git-file-name name version))
7078 (sha256
7079 (base32
7080 "12ysxbm1di2m0qac4rgd5f94fvlxv64s7kyy5s0d2bbxyzvdcqvm"))))
7081 (build-system gnu-build-system)
7082 (native-inputs (list autoconf automake libtool pkg-config))
7083 (inputs (list alsa-lib fftw ncurses pipewire pulseaudio iniparser
7084 sdl2 autoconf-archive))
7085 (arguments
7086 (list #:configure-flags
7087 #~(list (string-append "PREFIX="
7088 #$output)
7089 (string-append "FONT_DIR="
7090 #$output "/share/consolefonts"))
7091 #:make-flags
7092 #~(let ((lib (string-append #$output "/lib")))
7093 (list (string-append "cava_LDFLAGS = -L" lib " -Wl,-rpath " lib " -lrt")))
7094 #:phases
7095 #~(modify-phases %standard-phases
7096 (replace 'bootstrap
7097 (lambda _
7098 (setenv "HOME"
7099 (getcwd))
7100 (invoke "sh" "autogen.sh")))
7101 (add-before 'build 'make-cava-ldflags
7102 (lambda _
7103 (mkdir-p (string-append #$output "/lib"))))
7104 (add-after 'install 'data
7105 (lambda _
7106 (for-each (lambda (file)
7107 (install-file file
7108 (string-append #$output
7109 "/share/doc/examples")))
7110 (find-files "example_files")))))))
7111 (home-page "https://github.com/karlstav/cava")
7112 (synopsis "Console audio visualizer for ALSA, MPD, and PulseAudio")
7113 (description "C.A.V.A. is a bar audio spectrum visualizer for the terminal
7114using ALSA, MPD, PulseAudio, or a FIFO buffer as its input.")
7115 (license license:expat)))
7116
7117(define-public libcava
7118 (package
7119 (inherit cava)
7120 (name "libcava")
7121 (version "0.10.6")
7122 (source
7123 (origin
7124 (method git-fetch)
7125 (uri (git-reference
7126 (url "https://github.com/LukashonakV/cava")
7127 (commit version)))
7128 (file-name (git-file-name name version))
7129 (sha256
7130 (base32 "17p7lxmk3v4x2gagd3skmb43llcqkg3qrb0f7jhjlcm91kbxwxpb"))))
7131 (build-system meson-build-system)
7132 (arguments (list #:configure-flags #~(list "-Dbuild_target=lib")))
7133 (home-page "https://github.com/LukashonakV/cava")
7134 (synopsis "Shared CAVA audio-visualization library")
7135 (description "Libcava is a soft fork of CAVA that additionally builds and
7136installs CAVA as a reusable shared library. It provides the public headers
7137and @code{pkg-config} metadata needed by applications that embed CAVA's
7138real-time audio analysis.")
7139 (license license:expat)))
7140
7141(define-public fluid-3
7142 (let ((commit "871c8ce2002e8b3c198f532fdb4fbcce7914f951"))
7143 (package
7144 (name "fluid-3")
7145 (version "2.1")
7146 (source
7147 (origin
7148 (method url-fetch)
7149 ;; Only one file is required, but the release bundles the whole
7150 ;; software which is 50MiB as tar and 200MiB unpacked. The website
7151 ;; directly links the soundfont release to the github file download.
7152 (uri (string-append "https://github.com/musescore/MuseScore/raw/"
7153 commit "/share/sound/FluidR3Mono_GM.sf3"))
7154 (file-name (string-append name "-" version ".sf3"))
7155 (sha256
7156 (base32
7157 "1hjfg5i15bw9279007xs92zsggjgn4s4k9pc00s851l3kvc6dkfg"))))
7158 (build-system trivial-build-system)
7159 (arguments
7160 `(#:modules ((guix build utils))
7161 #:builder
7162 (begin
7163 (use-modules (guix build utils))
7164 (let ((file (assoc-ref %build-inputs "source"))
7165 (out (string-append %output "/share/soundfonts")))
7166 (mkdir-p out)
7167 (copy-file file (string-append out "/FluidR3Mono_GM.sf3"))
7168 #t))))
7169 (home-page "https://github.com/musescore/MuseScore/tree/master/share/sound")
7170 (synopsis "Pro-quality GM soundfont")
7171 (description "Fluid-3 is Frank Wen's pro-quality GM soundfont.")
7172 (license license:expat))))
7173
7174(define-public libfdk
7175 (package
7176 (name "libfdk")
7177 (version "2.0.3")
7178 (source
7179 (origin
7180 (method git-fetch)
7181 (uri (git-reference
7182 (url "https://github.com/mstorsjo/fdk-aac")
7183 (commit (string-append "v" version))))
7184 (file-name (git-file-name name version))
7185 (sha256
7186 (base32
7187 "0ff4zxw1cnh8mlc42s6xg1yq1wj10jmkar31036rcmvqf3qsdc3x"))))
7188 (build-system gnu-build-system)
7189 (native-inputs
7190 (list autoconf automake libtool))
7191 (home-page "https://github.com/mstorsjo/fdk-aac")
7192 (synopsis "Fraunhofer FDK AAC library")
7193 (description "FDK is a library for encoding and decoding Advanced Audio
7194Coding (AAC) format audio, developed by Fraunhofer IIS, and included as part of
7195Android. It supports several Audio Object Types including MPEG-2 and MPEG-4 AAC
7196LC, HE-AAC (AAC LC + SBR), HE-AACv2 (LC + SBR + PS) as well AAC-LD (low delay)
7197and AAC-ELD (enhanced low delay) for real-time communication. The encoding
7198library supports sample rates up to 96 kHz and up to eight channels (7.1
7199 surround).")
7200 (license (license:fsf-free "https://github.com/mstorsjo/fdk-aac/blob/master/NOTICE"
7201 "https://www.gnu.org/licenses/license-list.html#fdk"))))
7202
7203(define-public fdkaac
7204 (package
7205 (name "fdkaac")
7206 (version "1.0.9")
7207 (source (origin
7208 (method git-fetch)
7209 (uri (git-reference
7210 (url "https://github.com/nu774/fdkaac")
7211 (commit (string-append "v" version))))
7212 (file-name (git-file-name name version))
7213 (sha256
7214 (base32
7215 "1ym5134nqpa468in7g3df5bjh2wrai8fnp2ab36cxz92in4j6j14"))))
7216 (build-system gnu-build-system)
7217 (native-inputs
7218 (list autoconf automake pkg-config))
7219 (inputs
7220 (list libfdk))
7221 (synopsis "Command-line AAC encoder")
7222 (description "This package provides a command-line AAC-encoder.")
7223 (home-page "https://github.com/nu774/fdkaac")
7224 ;; Most files are zlib.
7225 ;; Files missings/getopt.* are BSD-4-clause.
7226 ;; Files src/parson.* are Expat.
7227 ;; Files src/lpc.* are BSD.
7228 (license license:zlib)))
7229
7230(define-public libfreeaptx
7231 (package
7232 (name "libfreeaptx")
7233 (version "0.2.2")
7234 (source (origin
7235 (method git-fetch)
7236 (uri (git-reference
7237 (url "https://github.com/regularhunter/libfreeaptx")
7238 (commit version)))
7239 (file-name (git-file-name name version))
7240 (sha256
7241 (base32
7242 "0xk247w2l7jd51rbavqnmqk6sqnifhf46k4wwfj572pz7k9cbmly"))))
7243 (build-system gnu-build-system)
7244 (arguments
7245 (list #:tests? #f ;no tests.
7246 #:make-flags
7247 #~(list
7248 (string-append "PREFIX=" #$output)
7249 (string-append "LDFLAGS=" "-Wl,-rpath=" #$output "/lib")
7250 (string-append "CC=" #$(cc-for-target)))
7251 #:phases
7252 #~(modify-phases %standard-phases
7253 (delete 'configure))))
7254 (home-page "https://github.com/regularhunter/libfreeaptx")
7255 (synopsis "Free implementation of aptX")
7256 (description "libfreeaptx is an implementation of the Audio Processing
7257Technology codecs aptX and aptX HD, mainly intended for use with an A2DP
7258bluetooth profile.")
7259 (license license:lgpl2.1+)))
7260
7261(define-public libopenshot-audio
7262 (package
7263 (name "libopenshot-audio")
7264 (version "1.0.0")
7265 (source (origin
7266 (method git-fetch)
7267 (uri (git-reference
7268 (url "https://github.com/OpenShot/libopenshot-audio")
7269 (commit (string-append "v" version))))
7270 (file-name (git-file-name name version))
7271 (sha256
7272 (base32
7273 "0arwyjrrawcbw5scihy7d5jpgs3car66sxgi2g3mn20g37fjr4y6"))))
7274 (build-system cmake-build-system)
7275 (inputs
7276 (list alsa-lib
7277 ;; The following are for JUCE GUI components:
7278 libx11
7279 freetype
7280 libxrandr
7281 libxinerama
7282 libxcursor))
7283 (arguments
7284 (list
7285 #:tests? #f ; there are no tests
7286 #:configure-flags
7287 #~(list (string-append "-DCMAKE_CXX_FLAGS=-I"
7288 #$(this-package-input "freetype")
7289 "/include/freetype2"))))
7290 (home-page "https://www.openshot.org")
7291 (synopsis "Audio editing and playback for OpenShot")
7292 (description "OpenShot Audio Library (libopenshot-audio) allows
7293high-quality editing and playback of audio, and is based on the JUCE
7294library.")
7295 (license license:lgpl3+)))
7296
7297(define-public faudio
7298 (package
7299 (name "faudio")
7300 (version "22.11")
7301 (source
7302 (origin
7303 (method git-fetch)
7304 (uri (git-reference
7305 (url "https://github.com/FNA-XNA/FAudio")
7306 (commit version)))
7307 (file-name (git-file-name name version))
7308 (sha256
7309 (base32 "0jdfslxgzysqy0r3nfbsyj6dz0n36fncbsczm9zznxv5phic7g87"))))
7310 (arguments
7311 '(#:tests? #f ; No tests.
7312 #:configure-flags '("-DGSTREAMER=ON")))
7313 (build-system cmake-build-system)
7314 (native-inputs (list pkg-config))
7315 (inputs (list gstreamer gst-plugins-base sdl2))
7316 (home-page "https://github.com/FNA-XNA/FAudio")
7317 (synopsis "XAudio reimplementation")
7318 (description "FAudio is an XAudio reimplementation that focuses solely on
7319developing fully accurate DirectX Audio runtime libraries.")
7320 (license
7321 (list license:zlib
7322 ;; stb & utils/{ui,wav}common are dual-licenced under either of:
7323 license:expat
7324 license:public-domain))))
7325
7326(define-public darkice
7327 (package
7328 (name "darkice")
7329 (version "1.5")
7330 (source (origin
7331 (method url-fetch)
7332 (uri (string-append "https://github.com/rafael2k/darkice/releases/"
7333 "download/v" version "/darkice-"
7334 version ".tar.gz"))
7335 (sha256
7336 (base32
7337 "13h58skz5xik75sjv9kf2299haly2nc5gswl22ff1kvw79bw9d0q"))))
7338 (build-system gnu-build-system)
7339 (native-inputs (list pkg-config))
7340 (inputs (list lame
7341 libvorbis
7342 opus
7343 twolame
7344 alsa-lib
7345 pulseaudio
7346 jack-1
7347 libsamplerate))
7348 (arguments
7349 `(#:configure-flags
7350 (list (string-append "--with-lame-prefix="
7351 (assoc-ref %build-inputs "lame")))
7352 #:make-flags
7353 (list "CXXFLAGS += -std=gnu++14")))
7354 (home-page "http://www.darkice.org/")
7355 (synopsis "Live audio streamer")
7356 (description "DarkIce is a live audio streamer. It takes audio input from
7357a sound card, encodes it into Ogg Vorbis and/or mp3, and sends the audio
7358stream to one or more IceCast and/or ShoutCast servers.")
7359 (license license:gpl3+)))
7360
7361(define-public libltc
7362 (package
7363 (name "libltc")
7364 (version "1.3.2")
7365 (source
7366 (origin
7367 (method url-fetch)
7368 (uri
7369 (string-append "https://github.com/x42/libltc/releases/download/v"
7370 version "/libltc-" version ".tar.gz"))
7371 (sha256
7372 (base32 "0j8j7cnw02arh8122d13bwkps1c0mi2xqq55gyi2bs91dk6l4v8a"))))
7373 (build-system gnu-build-system)
7374 (arguments
7375 `(#:parallel-tests? #f)) ;tests fail otherwise
7376 (native-inputs
7377 (list doxygen pkg-config))
7378 (synopsis "Encode or decode Linear/Longitudinal Time Code (LTC) audio")
7379 (description "Libltc is a POSIX-C Library for handling
7380@dfn{Linear/Longitudinal Time Code} (LTC) data.")
7381 (home-page "https://x42.github.io/libltc/")
7382 (license license:lgpl3+)))
7383
7384(define-public ttaenc
7385 (package
7386 (name "ttaenc")
7387 (version "3.4.1")
7388 (source
7389 (origin
7390 (method url-fetch)
7391 (uri (string-append "mirror://sourceforge/tta/"
7392 "tta/ttaenc-src"
7393 "/ttaenc-" version "-src.tgz"))
7394 (sha256
7395 (base32
7396 "1iixpr4b89g9g1hwn8ak8k8iflcww3r5f09a117qdidc2nqcijdj"))))
7397 (build-system gnu-build-system)
7398 (arguments
7399 `(#:tests? #f ;no tests
7400 #:make-flags
7401 (list (string-append "CC=" ,(cc-for-target))
7402 (string-append "INSDIR=" (assoc-ref %outputs "out") "/bin"))
7403 #:phases
7404 (modify-phases %standard-phases
7405 (delete 'configure) ; no configure
7406 (add-before 'install 'make-bindir
7407 (lambda* (#:key outputs #:allow-other-keys)
7408 (let* ((out (assoc-ref outputs "out")))
7409 (mkdir-p (string-append out "/bin"))
7410 #t))))))
7411 (synopsis "TTA lossless audio encoder")
7412 (description
7413 "TTA performs lossless compression on multichannel 8,16 and 24 bits
7414data of the Wav audio files. Being lossless means that no data-
7415quality is lost in the compression - when uncompressed, the data will
7416be identical to the original. The compression ratios of TTA depend on
7417the type of music file being compressed, but the compression size
7418will generally range between 30% - 70% of the original. TTA format
7419supports both of ID3v1/v2 and APEv2 tags.")
7420 (home-page "http://tausoft.org/")
7421 (license license:gpl2+)))
7422
7423(define-public libsoundio
7424 (package
7425 (name "libsoundio")
7426 (version "2.0.0")
7427 (source
7428 (origin
7429 (method git-fetch)
7430 (uri (git-reference
7431 (url "https://github.com/andrewrk/libsoundio")
7432 (commit version)))
7433 (file-name (git-file-name name version))
7434 (sha256
7435 (base32
7436 "12l4rvaypv87vigdrmjz48d4d6sq4gfxf5asvnc4adyabxb73i4x"))))
7437 (build-system cmake-build-system)
7438 (arguments
7439 `(#:tests? #f)) ;no tests included
7440 (inputs
7441 (list alsa-lib jack-1 pulseaudio))
7442 (native-inputs
7443 (list pkg-config))
7444 (home-page "http://libsound.io")
7445 (synopsis "C library for real-time audio input and output")
7446 (description "@code{libsoundio} is a C library providing audio input and
7447output. The API is suitable for real-time software such as digital audio
7448workstations as well as consumer software such as music players.")
7449 (license license:expat)))
7450
7451(define-public redkite
7452 (package
7453 (name "redkite")
7454 (version "2.1.0")
7455 (source
7456 (origin
7457 (method git-fetch)
7458 (uri (git-reference
7459 (url "https://github.com/quamplex/redkite")
7460 (commit (string-append "v" version))))
7461 (file-name (git-file-name name version))
7462 (sha256
7463 (base32 "1xn7vnv7zszy0f1ynxd7qn0131w0gmk3rp3my4xjh143dhck4q4b"))))
7464 (build-system cmake-build-system)
7465 (arguments
7466 `(#:tests? #f)) ;no tests included
7467 (propagated-inputs
7468 (list cairo))
7469 (native-inputs
7470 (list pkg-config))
7471 (synopsis "Lightweight graphics widget toolkit for embedded GUI")
7472 (description "Redkite is a small GUI toolkit developed in C++17 and
7473inspired from other well known GUI toolkits such as Qt and GTK. It is
7474minimal on purpose and is intended to be statically linked to applications,
7475therefore satisfying any requirements they may have to be self contained,
7476as is the case with audio plugins.")
7477 (home-page "https://github.com/quamplex/redkite")
7478 (license license:gpl3+)))
7479
7480(define-public carla
7481 (package
7482 (name "carla")
7483 (version "2.5.10")
7484 (source
7485 (origin
7486 (method git-fetch)
7487 (uri
7488 (git-reference
7489 (url "https://github.com/falkTX/Carla")
7490 (commit (string-append "v" version))))
7491 (file-name (git-file-name name version))
7492 (sha256
7493 (base32 "1p7nvydnmg5l457w3089bwj1a5z509ydlpwvf19k86i348a1lm6v"))))
7494 (build-system gnu-build-system)
7495 (arguments
7496 (list #:tests? #f ; no "check" target
7497 #:make-flags
7498 #~(list (string-append "PREFIX=" #$output))
7499 #:phases
7500 #~(modify-phases %standard-phases
7501 (delete 'configure) ; no configure script
7502 (add-before 'build 'set-CC-variable-and-show-features
7503 (lambda _
7504 (setenv "CC" #$(cc-for-target))
7505 (invoke "make" "features")))
7506 (add-after 'install 'make-carla-executable
7507 (lambda _
7508 (with-directory-excursion (string-append #$output
7509 "/share/carla")
7510 (for-each (lambda (file)
7511 (chmod file #o555))
7512 (list "carla"
7513 "carla-control"
7514 "carla-jack-multi"
7515 "carla-jack-single"
7516 "carla-patchbay"
7517 "carla-rack")))))
7518 (add-after 'install 'wrap-executables
7519 (lambda* (#:key inputs #:allow-other-keys)
7520 ;; Wrap only those executable files that other programs
7521 ;; (e.g. lmms) would call.
7522 (with-directory-excursion #$output
7523 (for-each (lambda (file)
7524 (when (and (executable-file? file)
7525 (not (symbolic-link? file))
7526 (not (string-suffix? ".py" file)))
7527 (wrap-program file
7528 `("GUIX_PYTHONPATH" ":" prefix
7529 (,(getenv "GUIX_PYTHONPATH")))
7530 `("QT_PLUGIN_PATH" ":" prefix
7531 (,(getenv "QT_PLUGIN_PATH"))))))
7532 (append (find-files "share/carla/resources")
7533 (find-files "bin")))))))))
7534 (inputs
7535 (list alsa-lib
7536 bash-minimal
7537 ffmpeg
7538 fluidsynth
7539 file
7540 liblo
7541 libsndfile
7542 libx11
7543 gtk+-2 ;needed for bridging GTK2 plugins in GTK3 hosts
7544 gtk+
7545 pulseaudio
7546 python-pyliblo3
7547 python-pyqt
7548 python-rdflib
7549 ;; python-pyqt shows the following error without python-wrapper:
7550 ;; Error while finding module specification for 'PyQt5.uic.pyuic'
7551 ;; (ModuleNotFoundError: No module named 'PyQt5')
7552 python-wrapper
7553 qtbase-5
7554 qtwayland-5
7555 zlib))
7556 (native-inputs
7557 (list pkg-config))
7558 (native-search-paths
7559 (list (search-path-specification
7560 (variable "CLAP_PATH")
7561 (files '("lib/clap")))
7562 (search-path-specification
7563 (variable "LADSPA_PATH")
7564 (files '("lib/ladspa")))
7565 (search-path-specification
7566 (variable "LV2_PATH")
7567 (files '("lib/lv2")))
7568 (search-path-specification
7569 (variable "LXVST_PATH")
7570 (files '("lib/lxvst")))
7571 (search-path-specification
7572 (variable "VST2_PATH")
7573 (files '("lib/vst")))
7574 (search-path-specification
7575 (variable "VST3_PATH")
7576 (files '("lib/vst3")))
7577 (search-path-specification
7578 (variable "SF2_PATH")
7579 (files '("share/sf2")))
7580 (search-path-specification
7581 (variable "SFZ_PATH")
7582 (files '("share/sfz")))))
7583 (home-page "https://kx.studio/Applications:Carla")
7584 (synopsis "Audio plugin host")
7585 (description "Carla is a modular audio plugin host, with features like
7586transport control, automation of parameters via MIDI CC and remote control
7587over OSC. Carla currently supports LADSPA (including LRDF), DSSI, LV2, VST2,
7588and VST3 plugin formats, plus SF2 and SFZ file support. It uses JACK as the
7589default and preferred audio driver but also supports native drivers like ALSA.")
7590 (license license:gpl2+)))
7591
7592;;; This package variant tracks the latest in-development 2.6 release.
7593(define-public carla-2.6
7594 (let ((commit "294a80145e39c0755ab9073d90fd8b9524fbfc84")
7595 (revision "1"))
7596 (package
7597 (inherit carla)
7598 (name "carla")
7599 (version (git-version "2.6.0" revision commit))
7600 (source
7601 (origin
7602 (method git-fetch)
7603 (uri
7604 (git-reference
7605 (url "https://github.com/falkTX/Carla")
7606 (commit commit)))
7607 (file-name (git-file-name name version))
7608 (sha256
7609 (base32 "053yfwf9l9vqvq95c354by6nm8ym0wgkv3fr1434x5w9n1344z0z"))))
7610 (inputs
7611 (modify-inputs (package-inputs carla)
7612 (replace "python-pyqt" python-pyqt-6)
7613 (replace "qtbase" qtbase)
7614 (replace "qtwayland" qtwayland))))))
7615
7616;; This source is a fork of vst3sdk with the documentation and VSTGUI
7617;; submodules removed and a dummy `meson.build` file that just lists all
7618;; source files.
7619(define vst3sdk
7620 (let ((version "3.7.7_build_19-patched"))
7621 (origin
7622 (method git-fetch)
7623 (uri
7624 (git-reference
7625 (url "https://github.com/robbert-vdh/vst3sdk")
7626 (commit (string-append "v" version))
7627 ;; Required for vst3_base, vst3_pluginterfaces, and vst3_public_sdk.
7628 (recursive? #t)))
7629 (file-name (git-file-name "vst3sdk" version))
7630 (sha256
7631 (base32 "09axvpshwbf5061kcbl26v74dcmwxmgmlxb15b75bnqbh0zcghrf"))
7632 (patches
7633 (search-patches "vst3sdk-3.7.7-allow-winelib-compilation.patch")))))
7634
7635(define-public yabridge
7636 (package
7637 (name "yabridge")
7638 (version "5.1.1")
7639 (source (origin
7640 (method git-fetch)
7641 (uri (git-reference
7642 (url "https://github.com/robbert-vdh/yabridge")
7643 (commit version)))
7644 (file-name (git-file-name name version))
7645 (sha256
7646 (base32
7647 "0r7q72jmd44wynxphwhgm17wkfgm6zfdrpfnhsj8b53406ykgq71"))))
7648 (build-system meson-build-system)
7649 (arguments
7650 (list #:configure-flags
7651 #~(append (list "-Dsystem-asio=true"
7652 (string-append "--cross-file=" #$source
7653 "/cross-wine.conf"))
7654 ;; On 32bit system, without this flag it does not build
7655 ;; yabridge-host-32.exe and yabridge-host-32.exe.so. On
7656 ;; 64bit system do not enable it since gcc does not
7657 ;; support multilib.
7658 (if #$(target-32bit?) "-Dbitbridge=true" '()))
7659 #:phases
7660 #~(modify-phases %standard-phases
7661 (add-after 'unpack 'copy-vst3sdk
7662 (lambda* (#:key inputs #:allow-other-keys)
7663 (copy-recursively #$vst3sdk
7664 "subprojects/vst3")))
7665 (add-after 'copy-vst3sdk 'patch-paths
7666 (lambda* (#:key inputs #:allow-other-keys)
7667 (substitute* "src/chainloader/utils.cpp"
7668 (("(.*)\"\\/usr\\/lib\"," all indent)
7669 (string-append indent "\"" #$output "/lib\","))
7670 ((".*\\/usr.*$") ""))))
7671 (add-after 'patch-paths 'fix-dependencies
7672 (lambda _
7673 (substitute* "meson.build"
7674 ;; FIXME: gurlrak-filesystem does not provide
7675 ;; ghc_filesystem-config-version.cmake.
7676 (("(ghc_filesystem_dep .*)version :.*(\\))" all start end)
7677 (string-append start end)))))
7678 (replace 'install
7679 (lambda _
7680 (for-each
7681 (lambda (file)
7682 (install-file file (string-append #$output "/bin")))
7683 (find-files "." "-host(-32|)\\.exe(|\\.so)$"))
7684 (for-each
7685 (lambda (file)
7686 (install-file file (string-append #$output "/lib")))
7687 (find-files "." "libyabridge.*\\.so$"))))
7688 (add-after 'install 'patch-appdir
7689 (lambda _
7690 (substitute* (find-files #$output "-host(-32|)\\.exe$")
7691 (("`dirname \"\\$0\"`")
7692 (string-append #$output "/bin")))))
7693 (add-after 'patch-appdir 'wrap-program
7694 (lambda _
7695 (with-directory-excursion (string-append #$output "/bin")
7696 (wrap-program (if #$(target-64bit?)
7697 "yabridge-host.exe"
7698 "yabridge-host-32.exe")
7699 `("PATH" ":" prefix
7700 (,(string-append (or #$(this-package-input "wine64")
7701 #$(this-package-input "wine"))
7702 "/bin"))))))))))
7703 (native-inputs
7704 (list cmake-minimal pkg-config))
7705 (inputs
7706 (list bash-minimal
7707 asio-1.28
7708 bitsery
7709 clap-1.1
7710 dbus
7711 function2
7712 gulrak-filesystem
7713 libxcb
7714 tomlplusplus
7715 (wine-for-system)))
7716 (home-page "https://github.com/robbert-vdh/yabridge")
7717 (synopsis "Implementation of Windows VST2, VST3 and CLAP plugin APIs")
7718 (description
7719 "@code{yabridge} is Yet Another way to use Windows audio plugins. It
7720supports using Windows VST2, VST3, and CLAP plugins in plugin hosts as if they
7721were native plugins, with optional support for plugin groups to enable
7722inter-plugin communication for VST2 plugins and quick startup times.")
7723 (license license:gpl3+)))
7724
7725(define-public yabridgectl
7726 (package
7727 (inherit yabridge)
7728 (name "yabridgectl")
7729 (build-system cargo-build-system)
7730 (arguments
7731 (list #:install-source? #f
7732 #:phases
7733 #~(modify-phases %standard-phases
7734 (add-after 'unpack 'change-directory
7735 (lambda _
7736 (chdir "tools/yabridgectl")))
7737 (add-after 'change-directory 'patch-paths
7738 (lambda _
7739 (with-directory-excursion "src"
7740 (substitute* '("config.rs" "main.rs")
7741 (("\"\\/usr\\/lib\"")
7742 (string-append "\""
7743 #$(this-package-input "yabridge")
7744 "/lib\""))
7745 ((".*\\/usr\\/(lib(\\/|64)|local).*") ""))
7746 (substitute* "util.rs"
7747 (("libdbus-1\\.so" all)
7748 (string-append #$(this-package-input "dbus")
7749 "/lib/" all))))))
7750 (add-after 'patch-paths 'use-guix-vendored-dependencies
7751 (lambda _
7752 (substitute* "Cargo.toml"
7753 ;; Use reflink from the inputs.
7754 (("git.*, rev.*}") "version = \"*\"}")))))))
7755 (native-inputs '())
7756 (inputs
7757 (cons* dbus yabridge (cargo-inputs 'yabridgectl)))
7758 (synopsis "Utility to set up and update yabridge")
7759 (description
7760 "@command{yabridgectl} is a tool to setup and update @code{yabridge}.")))
7761
7762(define-public ecasound
7763 (package
7764 (name "ecasound")
7765 (version "2.9.3")
7766 (source (origin
7767 (method url-fetch)
7768 (uri (string-append "https://nosignal.fi/download/ecasound-"
7769 version ".tar.gz"))
7770 (sha256
7771 (base32 "1m7njfjdb7sqf0lhgc4swihgdr4snkg8v02wcly08wb5ar2fr2s6"))))
7772 (build-system gnu-build-system)
7773 (native-inputs (list pkg-config))
7774 ;; It would be nice to add mikmod to inputs if that gets packaged
7775 ;; eventually.
7776 (inputs (list alsa-lib
7777 faad2
7778 flac
7779 jack-1
7780 ladspa
7781 lame
7782 libmpg123
7783 libsamplerate
7784 libsndfile
7785 lilv
7786 ncurses
7787 timidity++
7788 vorbis-tools))
7789 (home-page "https://nosignal.fi/ecasound/index.php")
7790 (synopsis "Multitrack audio processing")
7791 (description "Ecasound is a software package designed for multitrack audio
7792processing. It can be used for simple tasks like audio playback, recording and
7793format conversions, as well as for multitrack effect processing, mixing,
7794recording and signal recycling. Ecasound supports a wide range of audio inputs,
7795outputs and effect algorithms. Effects and audio objects can be combined in
7796various ways, and their parameters can be controlled by operator objects like
7797oscillators and MIDI-CCs. A versatile console mode user-interface is included
7798in the package.")
7799 ;; As an exception to the above, the C, C++ and python implementations
7800 ;; of the Ecasound Control Interface (ECI) are licensed under the LGPL
7801 ;; (see the file 'COPYING.LGPL'). This allows writing ECI applications
7802 ;; that are not licensed under GPL.
7803 (license (list license:gpl2 license:lgpl2.1))))
7804
7805(define-public libaudec
7806 (package
7807 (name "libaudec")
7808 (version "0.3.4")
7809 (source
7810 (origin
7811 (method git-fetch)
7812 (uri (git-reference
7813 (url "https://git.zrythm.org/zrythm/libaudec")
7814 (commit (string-append "v" version))))
7815 (file-name (git-file-name name version))
7816 (sha256
7817 (base32
7818 "02hhhpcfkycicygh6g9hzps255zkbbi33vks6yv6zk5wp9p2nspj"))))
7819 (build-system meson-build-system)
7820 (arguments
7821 `(#:configure-flags
7822 ;; Build the tests.
7823 `("-Dtests=true")))
7824 (inputs
7825 (list libsamplerate libsndfile))
7826 (native-inputs
7827 (list pkg-config))
7828 (synopsis "Library for reading and resampling audio files")
7829 (description "libaudec is a wrapper library over ffmpeg, sndfile and
7830libsamplerate for reading and resampling audio files, based on Robin Gareus'
7831@code{audio_decoder} code.")
7832 (home-page "https://git.zrythm.org/zrythm/libaudec")
7833 (license license:agpl3+)))
7834
7835(define-public lv2lint
7836 (package
7837 (name "lv2lint")
7838 (version "0.8.0")
7839 (source
7840 (origin
7841 (method git-fetch)
7842 (uri (git-reference
7843 (url "https://git.open-music-kontrollers.ch/lv2/lv2lint")
7844 (commit version)))
7845 (file-name (git-file-name name version))
7846 (sha256
7847 (base32
7848 "1jrka0hsn4n1clri7zfkcl3c2vi52144lkpjm81l51ff8rqy8ks1"))))
7849 (build-system meson-build-system)
7850 (arguments
7851 `(#:configure-flags
7852 `("-Delf-tests=true" ; for checking symbol visibility
7853 "-Donline-tests=true"))) ; for checking URI existence
7854 (inputs
7855 (list curl libelf lilv))
7856 (native-inputs
7857 (list pkg-config))
7858 (synopsis "LV2 plugin lint tool")
7859 (description "lv2lint is an LV2 lint-like tool that checks whether a
7860given plugin and its UI(s) match up with the provided metadata and adhere
7861to well-known best practices.")
7862 (home-page "https://open-music-kontrollers.ch/lv2/lv2lint/")
7863 (license license:artistic2.0)))
7864
7865(define-public lv2toweb
7866 (package
7867 (name "lv2toweb")
7868 (version "0.4")
7869 (source
7870 (origin
7871 (method git-fetch)
7872 (uri (git-reference
7873 (url "https://github.com/x42/lv2toweb")
7874 (commit (string-append "v" version))))
7875 (file-name (git-file-name name version))
7876 (sha256
7877 (base32
7878 "007aysqvgkf25za8nkmyd5g9kp1zla460dcpidlj5xg1zc3fcdfi"))))
7879 (build-system gnu-build-system)
7880 (arguments
7881 `(#:tests? #f ; no "check" target
7882 #:make-flags (list "CC=gcc"
7883 (string-append "PREFIX=" (assoc-ref %outputs "out")))
7884 #:phases
7885 (modify-phases %standard-phases
7886 (delete 'configure))))
7887 (inputs
7888 (list jalv lilv))
7889 (native-inputs
7890 (list help2man pkg-config))
7891 (synopsis "Documentation generator for LV2 plugins")
7892 (description
7893 "lv2toweb allows the user to create an xhtml page with information
7894about the given LV2 plugin, provided that the plugin and its UI(s) match up
7895with the provided metadata and adhere to well-known best practices.")
7896 (home-page "https://github.com/x42/lv2toweb")
7897 (license (list license:isc license:gpl2))))
7898
7899(define-public ztoolkit
7900 (package
7901 (name "ztoolkit")
7902 (version "0.1.2")
7903 (source
7904 (origin
7905 (method git-fetch)
7906 (uri (git-reference
7907 (url "https://git.zrythm.org/zrythm/ztoolkit")
7908 (commit (string-append "v" version))))
7909 (file-name (git-file-name name version))
7910 (sha256
7911 (base32
7912 "1k60zklrrnch4l0iyzwb4q0srdj3gggwq8cpldwgdhn26ddqkl0d"))))
7913 (build-system meson-build-system)
7914 (native-inputs
7915 (list pkg-config))
7916 ;; These are listed as propagated inputs because they are dependencies
7917 ;; in pkgconfig.
7918 (propagated-inputs
7919 (list cairo libx11))
7920 (synopsis "GUI toolkit for LV2 plugins")
7921 (description "ZToolkit (Ztk) is a cross-platform GUI toolkit heavily
7922inspired by GTK. It handles events and low level drawing on behalf of
7923the user and provides a high-level API for managing the UI and custom
7924widgets. ZToolkit is written in C and was created to be used for building
7925audio plugin UIs, where the dependencies often need to be kept to a
7926minimum.")
7927 (home-page "https://git.zrythm.org/zrythm/ztoolkit")
7928 (license license:agpl3+)))
7929
7930(define-public ztoolkit-rsvg
7931 (package/inherit ztoolkit
7932 (name "ztoolkit-rsvg")
7933 (arguments
7934 (list #:configure-flags '(list "-Denable_rsvg=true")))
7935 (propagated-inputs
7936 (modify-inputs propagated-inputs
7937 (prepend (librsvg-for-system))))
7938 (synopsis "ZToolkit with SVG support")))
7939
7940(define-public libinstpatch
7941 (package
7942 (name "libinstpatch")
7943 (version "1.1.6")
7944 (source
7945 (origin
7946 (method git-fetch)
7947 (uri (git-reference
7948 (url "https://github.com/swami/libinstpatch")
7949 (commit (string-append "v" version))))
7950 (file-name (git-file-name name version))
7951 (sha256
7952 (base32 "1w3nk0vvd1cxic70n45zjip0bdsrja969myvyvkhq3ngbarbykir"))))
7953 (build-system cmake-build-system)
7954 (arguments
7955 `(#:tests? #f)) ;there are no tests
7956 (native-inputs
7957 `(("glib:bin" ,glib "bin")
7958 ("pkg-config" ,pkg-config)))
7959 (inputs
7960 (list glib libsndfile))
7961 (home-page "http://www.swamiproject.org/")
7962 (synopsis "Instrument file software library")
7963 (description
7964 "libInstPatch is a library for processing digital sample based MIDI
7965instrument \"patch\" files. The types of files libInstPatch supports are used
7966for creating instrument sounds for wavetable synthesis. libInstPatch provides
7967an object framework (based on GObject) to load patch files, which can then be
7968edited, converted, compressed and saved.")
7969 (license license:lgpl2.1)))
7970
7971(define-public lsp-dsp-lib
7972 (package
7973 (name "lsp-dsp-lib")
7974 (version "1.0.26")
7975 (source
7976 (origin
7977 (method url-fetch)
7978 (uri (string-append "https://github.com/lsp-plugins/lsp-dsp-lib/"
7979 "releases/download/" version
7980 "/lsp-dsp-lib-src-" version ".tar.gz"))
7981 (sha256
7982 (base32 "07g02nglzrq9yp267m1aflrmr7i35pc3anlhasp35048i0xvy51i"))))
7983 (build-system gnu-build-system)
7984 (arguments
7985 (list #:tests? #f ; no tests
7986 #:make-flags
7987 #~(list (string-append "CC=" #$(cc-for-target)))
7988 #:phases
7989 #~(modify-phases %standard-phases
7990 (add-after 'unpack 'omit-static-library
7991 (lambda _
7992 (substitute* "src/Makefile"
7993 ((".*cp \\$\\(ARTIFACT_SLIB\\).*") "") ; don't install it
7994 ((" \\$\\(ARTIFACT_SLIB\\)") "")))) ; don't build it
7995 (replace 'configure
7996 (lambda _
7997 (invoke "make" "config"
7998 (string-append "PREFIX=" #$output)))))))
7999 (home-page "https://github.com/lsp-plugins/lsp-dsp-lib")
8000 (synopsis "Digital signal processing library")
8001 (description "The LSP DSP library provides a set of functions that perform
8002SIMD-optimized computing on several hardware architectures. All functions
8003currently operate on IEEE-754 single-precision floating-point numbers.")
8004 (license license:lgpl3+)))
8005
8006(define-public codec2
8007 (package
8008 (name "codec2")
8009 (version "0.9.2")
8010 (source
8011 (origin
8012 (method git-fetch)
8013 (uri (git-reference
8014 (url "https://github.com/drowe67/codec2")
8015 (commit (string-append "v" version))))
8016 (file-name (git-file-name name version))
8017 (sha256
8018 (base32 "1jpvr7bra8srz8jvnlbmhf8andbaavq5v01qjnp2f61za93rzwba"))))
8019 (build-system cmake-build-system)
8020 (native-inputs
8021 (list bc octave valgrind/pinned))
8022 (arguments
8023 `(#:tests? #f ; TODO: Fix tests (paths, graphic toolkit, octave modules).
8024 #:phases
8025 (modify-phases %standard-phases
8026 (add-before 'check 'set-test-environment
8027 (lambda _
8028 (setenv "HOME" "/tmp")
8029 #t)))))
8030 (synopsis "Speech codec")
8031 (description
8032 "Codec 2 is a speech codec designed for communications quality speech
8033between 700 and 3200 bit/s. The main application is low bandwidth HF/VHF
8034digital radio.")
8035 (home-page "https://www.rowetel.com/?page_id=452")
8036 (license license:lgpl2.1)))
8037
8038(define-public codec2-1
8039 (package
8040 (inherit codec2)
8041 (version "1.2.0")
8042 (source
8043 (origin
8044 (method git-fetch)
8045 (uri (git-reference
8046 (url "https://github.com/drowe67/codec2")
8047 (commit version)))
8048 (file-name (git-file-name "codec2" version))
8049 (sha256
8050 (base32 "00rx0p8b01ycb6lgp859cp1x165zf65qpnm72ry5z0fcipi2klzb"))))))
8051
8052(define-public mbelib
8053 ;; No release since 2016, use commit directly.
8054 (let ((commit "9a04ed5c78176a9965f3d43f7aa1b1f5330e771f")
8055 (revision "1"))
8056 (package
8057 (name "mbelib")
8058 (version (git-version "1.3.0" revision commit))
8059 (source
8060 (origin
8061 (method git-fetch)
8062 (uri (git-reference
8063 (url "https://github.com/szechyjs/mbelib")
8064 (commit commit)))
8065 (file-name (git-file-name name version))
8066 (sha256
8067 (base32 "0a7xmf87xnjzm5b437j2vnwv39x0ascja1j04c5wj6xs1529gw8h"))))
8068 (build-system cmake-build-system)
8069 (home-page "https://github.com/szechyjs/mbelib")
8070 (synopsis "P25 Phase 1 and ProVoice vocoder")
8071 (description
8072 "The mbelib library provides support for the 7200x4400 bit/s codec used
8073in P25 Phase 1, the 7100x4400 bit/s codec used in ProVoice and the @emph{Half
8074Rate} 3600x2250 bit/s vocoder used in various radio systems.")
8075 (license (list license:bsd-3 ; test/ framework
8076 license:isc))))) ; the rest
8077
8078(define-public ableton-link
8079 (package
8080 (name "ableton-link")
8081 (version "3.0.3")
8082 (source (origin
8083 (method git-fetch)
8084 (uri (git-reference
8085 (url "https://github.com/Ableton/link")
8086 (commit (string-append "Link-" version))))
8087 (file-name (git-file-name name version))
8088 (sha256
8089 (base32
8090 "1wplqj11ww64gmw2kzlxpvfs3v04m2036f7k5ndm34zcv12b91fa"))
8091 (modules '((guix build utils)))
8092 (patches
8093 (search-patches "ableton-link-system-libraries-debian.patch"))
8094 (snippet
8095 '(begin
8096 ;; Tests assume that CMake's "build" directory is a
8097 ;; sub-directory of the source tree, so we fix it.
8098 (substitute* "ci/run-tests.py"
8099 (("root_dir,") "root_dir, os.pardir,"))
8100 ;; Unbundle dependencies.
8101 (delete-file-recursively "third_party")
8102 (delete-file-recursively "modules")))))
8103 (build-system cmake-build-system)
8104 (arguments
8105 (list
8106 #:configure-flags
8107 #~(list "-DLINK_BUILD_QT_EXAMPLES=ON"
8108 "-DLINK_BUILD_JACK=ON")
8109 #:phases
8110 #~(modify-phases %standard-phases
8111 (replace 'check
8112 (lambda* (#:key inputs tests? #:allow-other-keys)
8113 (when tests?
8114 (let* ((python (search-input-file inputs "/bin/python3"))
8115 (run-tests "../source/ci/run-tests.py"))
8116 (invoke python run-tests "--target" "LinkCoreTest")
8117 (invoke python run-tests "--target" "LinkDiscoveryTest")))))
8118 (add-before 'install 'patch-cmake
8119 (lambda* (#:key inputs #:allow-other-keys)
8120 (let* ((source "../source/"))
8121 (substitute* (string-append source
8122 "cmake_include/AsioStandaloneConfig.cmake")
8123 (((string-append "\\$\\{CMAKE_CURRENT_LIST_DIR\\}/\\.\\./"
8124 "modules/asio-standalone/asio/include"))
8125 (dirname (search-input-file inputs "include/asio.hpp"))))
8126 (substitute* (string-append source "AbletonLinkConfig.cmake")
8127 (("\\$\\{CMAKE_CURRENT_LIST_DIR\\}/include")
8128 "${CMAKE_CURRENT_LIST_DIR}/../../../include")
8129 (("\\$\\{CMAKE_CURRENT_LIST_DIR\\}/include/ableton/Link\\.hpp")
8130 "${CMAKE_CURRENT_LIST_DIR}/../../../include/ableton/Link.hpp")))))
8131 (replace 'install
8132 (lambda _
8133 (let* ((out #$output)
8134 (lib-cmake (string-append out "/lib/cmake/ableton-link"))
8135 (source "../source"))
8136 (for-each delete-file
8137 '("bin/LinkDiscoveryTest" "bin/LinkCoreTest"))
8138 (copy-recursively "bin" (string-append out "/bin"))
8139 (copy-recursively (string-append source "/include/ableton")
8140 (string-append out "/include/ableton"))
8141 (install-file (string-append source "/AbletonLinkConfig.cmake")
8142 lib-cmake)
8143 (install-file (string-append source
8144 "/cmake_include/AsioStandaloneConfig.cmake")
8145 (string-append lib-cmake "/cmake_include"))))))))
8146 (native-inputs
8147 (list catch-framework
8148 portaudio ;for portaudio examples
8149 python ;for running tests
8150 python-setuptools)) ;for running tests
8151 (inputs
8152 (list jack-1)) ;for JACK examples
8153 (propagated-inputs
8154 ;; This is because include/ableton/platforms/asio/AsioWrapper.hpp
8155 ;; contains '#include <asio.hpp>'.
8156 (list asio-1.28))
8157 (home-page "https://github.com/Ableton/link")
8158 (synopsis "Synchronize musical beat, tempo, and phase across multiple applications")
8159 (description
8160 "Ableton Link is a C++ library that synchronizes musical beat, tempo, and phase
8161across multiple applications running on one or more devices. Applications on devices
8162connected to a local network discover each other automatically and form a musical
8163session in which each participant can perform independently: anyone can start or stop
8164while still staying in time.")
8165 (license license:gpl2+)))
8166
8167(define-public butt
8168 (package
8169 (name "butt")
8170 (version "1.45.0")
8171 (source (origin
8172 (method url-fetch)
8173 (uri (string-append "https://danielnoethen.de/butt/release/"
8174 version "/butt-" version ".tar.gz"))
8175 (sha256
8176 (base32
8177 "0r43xph6xf02c9zldhyj82mvy82xv0f9wbv653gg2kkcjh88ajc8"))
8178 (modules '((guix build utils)))
8179 (snippet
8180 '(substitute* "src/butt.cpp"
8181 ((".*zica.*") "")))))
8182 (build-system gnu-build-system)
8183 (arguments
8184 (list #:phases
8185 #~(modify-phases %standard-phases
8186 (add-after 'install 'install-documentation
8187 (lambda _
8188 (let ((doc (string-append #$output:doc "/share/doc/" #$name)))
8189 (install-file "README" doc)
8190 (copy-file #$(this-package-native-input "manual")
8191 (string-append doc "/butt-manual.pdf"))))))))
8192 (outputs '("out" "doc"))
8193 (native-inputs
8194 `(("pkg-config" ,pkg-config)
8195 ("manual"
8196 ,(origin
8197 (method url-fetch)
8198 (uri (string-append "https://danielnoethen.de/butt/release/" version
8199 "/butt-"
8200 version "_manual.pdf"))
8201 (sha256
8202 (base32 "07mr25k26xrpns3s7ci27jmp71c49a23r0mi662ir5v35rz4bf4q"))))))
8203 (inputs
8204 (list curl
8205 dbus
8206 flac
8207 fltk-1.3
8208 lame
8209 libfdk
8210 libsamplerate
8211 libvorbis
8212 libx11
8213 libxext
8214 libxfixes
8215 libxft
8216 libxrender
8217 libogg
8218 openssl
8219 opus
8220 portaudio
8221 portmidi-2))
8222 (home-page "https://danielnoethen.de/butt/")
8223 (synopsis "Audio streaming tool")
8224 (description "Butt is a tool to stream audio to a ShoutCast or
8225Icecast server.")
8226 (license license:gpl2+)))
8227
8228(define-public siggen
8229 (package
8230 (name "siggen")
8231 (version "2.3.10")
8232 (source
8233 (origin
8234 (method git-fetch)
8235 (uri (git-reference
8236 (url "https://github.com/bleskodev/siggen")
8237 (commit "a407611b59d59c7770bbe62ba9b8e9a948cf3210")))
8238 (file-name (git-file-name name version))
8239 (sha256
8240 (base32
8241 "0szhgfd9kddr6qsz0imp0x66jjn6ry236f35vjl82ivc1v2bllcb"))))
8242 (build-system gnu-build-system)
8243 (arguments
8244 (list
8245 #:make-flags
8246 #~(list (string-append "INSDIR=" #$output "/bin")
8247 (string-append "MANDIR=" #$output "/share/man"))
8248 #:tests? #f ; no tests
8249 #:phases
8250 #~(modify-phases %standard-phases
8251 ;; Patch misc.c to prevent a segfault.
8252 (add-after 'unpack 'patch-segfault
8253 (lambda _
8254 (substitute* "misc.c"
8255 (("#include <stdio.h>\n" all)
8256 (string-append all "#include <string.h>\n")))
8257 (substitute* "wavsubs.c"
8258 (("#include \"wavsubs.h\"\n" all)
8259 (string-append all "#include <stdlib.h>")))
8260 (substitute* "wavfile.c"
8261 (("#include \"wavsubs.h\"\n" all)
8262 (string-append all "#include <stdlib.h>")))
8263 (substitute* "generator.c"
8264 (("#include \"wavsubs.h\"\n" all)
8265 (string-append all "#include <stdlib.h>")))))
8266 (delete 'configure)
8267 (replace 'install
8268 (lambda* (#:key make-flags #:allow-other-keys)
8269 (for-each (lambda (dir)
8270 (mkdir-p (string-append #$output dir)))
8271 (list "/bin" "/share/man/man1" "/share/man/man5"))
8272 (apply invoke "make" "sysinstall" make-flags))))))
8273 (inputs
8274 (list ncurses))
8275 (native-inputs
8276 (list gcc-9
8277 groff-minimal ; for nroff
8278 util-linux)) ; for col
8279 (home-page "https://github.com/bleskodev/siggen")
8280 (synopsis "Signal generation tools")
8281 (description "siggen is a set of tools for imitating a laboratory signal
8282generator, generating audio signals out of Linux's /dev/dsp audio
8283device. There is support for mono and/or stereo and 8 or 16 bit samples.")
8284 (license license:gpl2)))
8285
8286(define-public python-pysox
8287 (package
8288 (name "python-pysox")
8289 (version "1.5.0")
8290 (source
8291 (origin
8292 (method git-fetch)
8293 (uri (git-reference
8294 (url "https://github.com/rabitt/pysox")
8295 (commit (string-append "v" version))))
8296 (file-name (git-file-name name version))
8297 (sha256
8298 (base32 "0039gksdcca5npnfvzy7dqc315f26mcy734la5v3hgvjj84cpcz8"))))
8299 (build-system pyproject-build-system)
8300 (arguments
8301 (list
8302 #:phases
8303 #~(modify-phases %standard-phases
8304 (add-after 'unpack 'patch-sox
8305 (lambda _
8306 (let* ((sox-store-path #$(this-package-input "sox"))
8307 (sox-bin (string-append sox-store-path "/bin/sox")))
8308 (substitute* "sox/__init__.py"
8309 (("sox -h")
8310 (string-append sox-bin " -h")))
8311 (substitute* "sox/core.py"
8312 (("\\['sox")
8313 (string-append "['" sox-bin)))))))))
8314 (native-inputs
8315 (list python-pytest
8316 python-soundfile
8317 python-setuptools
8318 python-wheel))
8319 (inputs
8320 (list sox))
8321 (propagated-inputs
8322 (list python-numpy
8323 python-typing-extensions))
8324 (home-page "https://github.com/rabitt/pysox")
8325 (synopsis "Python wrapper around SoX")
8326 (description
8327 "@code{python-pysox} is a wrapper around the @command{sox} command line
8328tool. The API offers @code{Transformer} and @code{Combiner} classes that
8329allow the user to incrementally build up effects and audio manipulations.
8330@code{python-pysox} also provides methods for querying audio information such
8331as sample rate, determining whether an audio file is silent, and much more.")
8332 (license license:bsd-3)))
8333
8334(define-public python-resampy
8335 (package
8336 (name "python-resampy")
8337 (version "0.4.3")
8338 (source
8339 (origin
8340 (method git-fetch)
8341 (uri
8342 (git-reference
8343 ;; PyPi does not include tests.
8344 (url "https://github.com/bmcfee/resampy")
8345 (commit version)))
8346 (file-name (git-file-name name version))
8347 (sha256
8348 (base32 "0dlm9ksm7yzgg582sic0vqwfcwdya1g4gnydxldfhaq4y0wakr9c"))))
8349 (build-system pyproject-build-system)
8350 (propagated-inputs
8351 (list python-numba python-numpy python-scipy python-six))
8352 (native-inputs
8353 (list python-pytest python-setuptools python-wheel))
8354 (home-page "https://github.com/bmcfee/resampy")
8355 (synopsis "Efficient signal resampling")
8356 (description
8357 "@code{python-resampy} implements the band-limited sinc interpolation
8358method for sampling rate conversion as described by Julius O. Smith at the
8359@url{https://ccrma.stanford.edu/~jos/resample/, Digital Audio Resampling
8360Home Page}.")
8361 (license license:isc)))
8362
8363(define-public python-librosa
8364 (package
8365 (name "python-librosa")
8366 (version "0.11.0")
8367 (source
8368 (origin
8369 (method git-fetch)
8370 (uri (git-reference
8371 (url "https://github.com/librosa/librosa/")
8372 (commit version)
8373 ;; TODO: Package test data.
8374 (recursive? #true)))
8375 (file-name (git-file-name name version))
8376 (sha256
8377 (base32 "065x43hx670rjrclxi4hiqxscllb16v9s7myjvg7rd5pd3y0k7sg"))))
8378 (build-system pyproject-build-system)
8379 (arguments
8380 (list
8381 #:test-flags
8382 #~(list "-k" (string-append
8383 ;; Resampling tests require python-samplerate.
8384 "not resample"
8385 ;; These tests use Pooch and download data files.
8386 " and not example and not test_cite"
8387 ;; XXX assert 22050 == 31744
8388 " and not test_stream"))))
8389 (propagated-inputs
8390 (list python-audioread
8391 python-decorator
8392 python-joblib
8393 python-lazy-loader
8394 python-msgpack
8395 python-numba
8396 python-numpy
8397 python-pooch
8398 python-scikit-learn
8399 python-scipy
8400 python-soundfile
8401 python-soxr
8402 python-typing-extensions))
8403 (native-inputs
8404 (list python-matplotlib
8405 python-packaging
8406 python-pytest
8407 python-pytest-mpl
8408 python-resampy
8409 python-setuptools))
8410 (home-page "https://librosa.org")
8411 (synopsis "Python module for audio and music processing")
8412 (description
8413 "@code{librosa} is a python package for music and audio analysis. It
8414provides the building blocks necessary to create music information retrieval
8415systems.")
8416 (license license:isc)))
8417
8418(define-public mda-lv2
8419 (package
8420 (name "mda-lv2")
8421 (version "1.2.10")
8422 (source
8423 (origin
8424 (method url-fetch)
8425 (uri (string-append "http://download.drobilla.net/mda-lv2-"
8426 version ".tar.xz"))
8427 (sha256
8428 (base32 "0nm7qahkrxjydv1wii46ca6948srwhjilhlp54z9bpcnln35ksmf"))))
8429 (build-system meson-build-system)
8430 (inputs
8431 (list lv2))
8432 (native-inputs
8433 (list pkg-config))
8434 (home-page "https://drobilla.net/software/mda-lv2.html")
8435 (synopsis "Audio plug-in pack for LV2")
8436 (description
8437 "MDA-LV2 is an LV2 port of the MDA plugins. It includes effects and a few
8438instrument plugins.")
8439 (license license:gpl3+)))
8440
8441(define-public libodiosacd
8442 (package
8443 (name "libodiosacd")
8444 (version "21.8.30")
8445 (source (origin
8446 (method git-fetch)
8447 (uri (git-reference
8448 (url "https://github.com/tari01/libodiosacd")
8449 (commit version)))
8450 (file-name (git-file-name name version))
8451 (sha256
8452 (base32
8453 "0iamf7wksbql0qfigdv5ahaax53ms2yligdav8dw6x0ay88x4lhi"))))
8454 (build-system gnu-build-system)
8455 (arguments
8456 `(#:tests? #f ; no check target
8457 #:phases
8458 (modify-phases %standard-phases
8459 (add-after 'unpack 'patch-makefile
8460 (lambda _
8461 (substitute* "Makefile"
8462 (("\\$\\(DESTDIR\\)/usr")
8463 "\\$(DESTDIR)"))))
8464 (delete 'configure)) ; no configure script
8465 #:make-flags
8466 (list (string-append "DESTDIR=" %output))))
8467 (synopsis "Library for decoding Super Audio CDs (SACD)")
8468 (description
8469 "The Odio SACD shared library is a decoding engine which takes a Super
8470Audio CD source and extracts a 24-bit high resolution WAV file. It handles
8471both DST and DSD streams.")
8472 (home-page "https://tari.in/www/software/libodiosacd/")
8473 (license license:gpl3+)))
8474
8475(define-public odio-sacd
8476 (package
8477 (name "odio-sacd")
8478 (version "21.1.9")
8479 (source (origin
8480 (method git-fetch)
8481 (uri (git-reference
8482 (url "https://github.com/tari01/odio-sacd")
8483 (commit version)))
8484 (file-name (git-file-name name version))
8485 (sha256
8486 (base32
8487 "0314srqk0r4qv292qiaply619l2fw04nkdwvqhj3q1dqzv41g4qk"))))
8488 (inputs (list libodiosacd))
8489 ;; Build system and arguments for libodiosacd are identical.
8490 (build-system (package-build-system libodiosacd))
8491 (arguments (package-arguments libodiosacd))
8492 (synopsis "Rip Super Audio CDs (SACD)")
8493 (description
8494 "Odio SACD is a command-line application which takes a Super Audio CD
8495source and extracts a 24-bit high resolution WAV file. It handles both DST
8496and DSD streams.")
8497 (home-page "https://tari.in/www/software/odio-sacd/")
8498 (license license:gpl3+)))
8499
8500(define-public qpwgraph
8501 (package
8502 (name "qpwgraph")
8503 (version "1.0.2")
8504 (source (origin
8505 (method git-fetch)
8506 (uri (git-reference
8507 (url "https://gitlab.freedesktop.org/rncbc/qpwgraph")
8508 (commit (string-append "v" version))))
8509 (file-name (git-file-name name version))
8510 (sha256
8511 (base32
8512 "0jh10jw3cnpb8ijbq22r4nz5bwrb4qqk7r4vq6jjdqrh8hv26awq"))))
8513 (build-system cmake-build-system)
8514 (arguments
8515 (list #:tests? #f)) ; no tests
8516 (inputs (list alsa-lib
8517 libxkbcommon
8518 pipewire
8519 qtbase
8520 qtsvg))
8521 (native-inputs (list pkg-config))
8522 (synopsis "PipeWire graph manager")
8523 (description
8524 "qpwgraph is a graph manager dedicated to PipeWire, using the Qt C++
8525framework. It provides a visual interface to audio and video connections
8526managed by PipeWire.")
8527 (home-page "https://gitlab.freedesktop.org/rncbc/qpwgraph")
8528 (license license:gpl2)))
8529
8530(define-public raysession
8531 (package
8532 (name "raysession")
8533 (version "0.14.4")
8534 (source
8535 (origin
8536 (method git-fetch)
8537 (uri (git-reference
8538 (url "https://github.com/Houston4444/RaySession")
8539 (commit (string-append "v" version))
8540 (recursive? #true)))
8541 (file-name (git-file-name name version))
8542 (sha256
8543 (base32 "1m44n6p192i5cvbj98jkmp4ywmm2bjzdbbipaa9xgg07x0jz1mcr"))))
8544 (build-system gnu-build-system)
8545 (arguments
8546 (list
8547 #:tests? #false ;no test target
8548 #:make-flags #~(list (string-append "PREFIX=" #$output))
8549 #:modules '((guix build gnu-build-system) (guix build qt-utils)
8550 (guix build utils))
8551 #:imported-modules (cons '(guix build qt-utils)
8552 %default-gnu-imported-modules)
8553 #:phases
8554 #~(modify-phases %standard-phases
8555 (delete 'configure)
8556 (add-after 'unpack 'patch-build-system
8557 (lambda _
8558 (substitute* "Makefile"
8559 (("\\$\\(DESTDIR\\)/etc/xdg")
8560 "$(PREFIX)/etc/xdg"))))
8561 (add-after 'install 'wrap-scripts
8562 (lambda* (#:key inputs #:allow-other-keys)
8563 (with-directory-excursion (string-append #$output "/share/raysession/src/bin")
8564 (for-each (lambda (script)
8565 (wrap-script script
8566 #:guile (search-input-file inputs "bin/guile")
8567 `("PYTHONPATH" ":" prefix
8568 (,(string-append #$output "/share/raysession/src/gui")
8569 ,(string-append #$output "/share/raysession/src/daemon")
8570 ,(string-append #$output "/share/raysession/src/control")
8571 ,(getenv "GUIX_PYTHONPATH")))))
8572 '("raysession"
8573 "ray_control"
8574 "ray-daemon"
8575 "ray-proxy")))))
8576 (add-after 'wrap-scripts 'wrap-qt
8577 (lambda* (#:key inputs outputs #:allow-other-keys)
8578 (wrap-all-qt-programs #:outputs outputs #:inputs inputs))))))
8579 (native-inputs (list qtbase-5 qttools-5 which))
8580 (inputs
8581 (list guile-3.0 jack-2 pipewire python-pyliblo3 python-pyqt python-wrapper))
8582 (home-page "https://github.com/Houston4444/RaySession")
8583 (synopsis "Audio session manager")
8584 (description "RaySession is a session manager for audio programs such as
8585Ardour, Carla, QTractor, Guitarix, Patroneo, Jack Mixer, etc. The principle
8586is to load together audio programs, then be able to save or close all
8587documents together. Its main purpose is to manage NSM compatible programs,
8588but it also helps for other programs. It offers a patchbay for visualizing
8589and editing connections.")
8590 (license license:gpl2+)))
8591
8592(define-public cubeb
8593 (let ((commit "9e29d728b0025c674904f83f5a13a88d1a6a5edc")
8594 (revision "1"))
8595 (package
8596 (name "cubeb")
8597 (version (git-version "0" revision commit))
8598 (source (origin
8599 (method git-fetch)
8600 (uri (git-reference
8601 (url "https://github.com/mozilla/cubeb")
8602 (commit commit)))
8603 (file-name (git-file-name name version))
8604 (sha256
8605 (base32
8606 "1sxkr3h8a4hd3c3a3cjydrszz6npxk3vh6ra3y67lds3zgc69c7n"))))
8607 (build-system cmake-build-system)
8608 (arguments
8609 '(#:configure-flags
8610 ;; Sanitizers-cmake requires a git submodule.
8611 '("-DUSE_SANITIZERS=0"
8612 ;; Tests require a git submodule for googletest.
8613 "-DBUILD_TESTS=0"
8614 ;; Use our speex, not a bundled one.
8615 "-DBUNDLE_SPEEX=0"
8616 ;; A static library would be built by default.
8617 "-DBUILD_SHARED_LIBS=1"
8618 ;; Explicitly link against audio libraries so they are on the
8619 ;; runpath. Otherwise cubeb tries to dlopen them at runtime.
8620 "-DCMAKE_SHARED_LINKER_FLAGS=-lasound -lpulse -lspeex")
8621 #:tests? #f))
8622 (inputs (list alsa-lib pulseaudio speex))
8623 (synopsis "Cross-platform audio library")
8624 (description "Cubeb is Mozilla's cross-platform audio library.")
8625 (home-page "https://github.com/mozilla/cubeb")
8626 (license license:isc))))
8627
8628(define-public cyanrip
8629 (package
8630 (name "cyanrip")
8631 (version "0.9.3.1")
8632 (source
8633 (origin
8634 (method git-fetch)
8635 (uri (git-reference
8636 (url "https://github.com/cyanreg/cyanrip")
8637 (commit (string-append "v" version))))
8638 (file-name (git-file-name name version))
8639 (sha256
8640 (base32 "13v6gjbxw6ybviq802wmgwlwy846ma4yw94aay0h698qhjqwf0qq"))))
8641 (build-system meson-build-system)
8642 (native-inputs (list pkg-config))
8643 (inputs (list curl
8644 ffmpeg
8645 libcdio-paranoia
8646 libmusicbrainz
8647 libxml2
8648 neon))
8649 (synopsis "Command line CD ripper and encoder")
8650 (description
8651 "cyanrip is a command line tool for ripping CDs. It uses
8652MusicBrainz to name and tag each track, and to download and embed cover art.
8653cyanrip supports encoding tracks to multiple formats in parallel and automatically
8654verifies checksums.")
8655 (home-page "https://github.com/cyanreg/cyanrip")
8656 (license license:lgpl2.1+)))
8657
8658(define-public easyeffects
8659 (package
8660 (name "easyeffects")
8661 (version "7.2.5")
8662 (source (origin
8663 (method git-fetch)
8664 (uri (git-reference
8665 (url "https://github.com/wwmm/easyeffects")
8666 (commit (string-append "v" version))))
8667 (file-name (git-file-name name version))
8668 (sha256
8669 (base32 "0k4l77hsmifqsw00mr28575b5fmhvskawjf7h4pmyj6ffbbinwy3"))))
8670 (build-system meson-build-system)
8671 (native-inputs
8672 (list `(,glib "bin") ;for glib-compile-resources
8673 gettext-minimal
8674 itstool
8675 pkg-config))
8676 (inputs
8677 (list fftwf
8678 fmt
8679 gsl
8680 gtk
8681 nlohmann-json
8682 libadwaita
8683 libbs2b
8684 libebur128
8685 libportal
8686 libsamplerate
8687 libsigc++
8688 libsndfile
8689 lilv
8690 pango
8691 pipewire
8692 rnnoise
8693 speexdsp
8694 onetbb
8695 zita-convolver
8696 soundtouch))
8697 ;; Propagating these allows EasyEffects to find the plugins via their
8698 ;; search-path specification
8699 (propagated-inputs
8700 (list lv2
8701 calf
8702 `(,lsp-plugins "lv2")
8703 mda-lv2
8704 zam-plugins
8705 ladspa))
8706 (arguments
8707 `(#:glib-or-gtk? #t
8708 #:phases
8709 (modify-phases %standard-phases
8710 (add-after 'unpack 'skip-gtk-update-icon-cache
8711 (lambda _ ; Remove dependency on needless desktop cache stuff.
8712 (substitute* "meson.build"
8713 (("gtk_update_icon_cache: true") "gtk_update_icon_cache: false")
8714 (("update_desktop_database: true") "update_desktop_database: false")))))))
8715 (home-page "https://github.com/wwmm/easyeffects")
8716 (synopsis "Realtime Audio effects interface for Pipewire")
8717 (description "EasyEffects is an advanced audio manipulation tool providing
8718a graphical user interface to apply various effects and filters to audio
8719streams using Pipewire. Effects can be applied in real time to audio inputs or
8720outputs such as a microphone to reduce noise or apply many other effects
8721including:
8722
8723@itemize
8724@item Auto gain
8725@item Bass enhancer
8726@item Bass loudness
8727@item Compressor
8728@item Convolver
8729@item Crossfeed
8730@item Crystalizer
8731@item De-esser
8732@item Delay
8733@item Echo Canceller
8734@item Equalizer
8735@item Exciter
8736@item Filter (low-pass, high-pass, band-pass and band-reject modes)
8737@item Gate
8738@item Limiter
8739@item Loudness
8740@item Maximizer
8741@item Multiband compressor
8742@item Multiband gate
8743@item Noise reduction
8744@item Pitch
8745@item Reverberation
8746@item Speech Processor
8747@item Stereo tools
8748@end itemize")
8749 (license license:gpl3+)))