94325ccb72086560561d32b08f344be7e9936071
[jackhill/guix/guix.git] / gnu / packages / audio.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Ricardo Wurmus <rekado@elephly.net>
3 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
4 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
5 ;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
6 ;;; Copyright © 2015, 2016 Mark H Weaver <mhw@netris.org>
7 ;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
8 ;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com>
9 ;;; Copyright © 2016 Nikita <nikita@n0.is>
10 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
11 ;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <me@tobias.gr>
12 ;;; Copyright © 2018, 2020 Oleg Pykhalov <go.wigust@gmail.com>
13 ;;; Copyright © 2018 okapi <okapi@firemail.cc>
14 ;;; Copyright © 2018, 2020, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
15 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
16 ;;; Copyright © 2018 Brett Gilio <brettg@gnu.org>
17 ;;; Copyright © 2018, 2019 Marius Bakke <mbakke@fastmail.com>
18 ;;; Copyright © 2018, 2021 Thorsten Wilms <t_w_@freenet.de>
19 ;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
20 ;;; Copyright © 2018 Brendan Tildesley <mail@brendan.scot>
21 ;;; Copyright © 2019, 2021 Pierre Langlois <pierre.langlois@gmx.com>
22 ;;; Copyright © 2019, 2021 Leo Famulari <leo@famulari.name>
23 ;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
24 ;;; Copyright © 2019, 2021 Arun Isaac <arunisaac@systemreboot.net>
25 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
26 ;;; Copyright © 2019, 2020 Alexandros Theodotou <alex@zrythm.org>
27 ;;; Copyright © 2019 Christine Lemmer-Webber <cwebber@dustycloud.org>
28 ;;; Copyright © 2019 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
29 ;;; Copyright © 2019 Hartmt Goebel <h.goebel@crazy-compilers.com>
30 ;;; Copyright © 2019, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
31 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
32 ;;; Copyright © 2020, 2021 Guillaume Le Vaillant <glv@posteo.net>
33 ;;; Copyright © 2020 Jonathan Frederickson <jonathan@terracrypt.net>
34 ;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
35 ;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net>
36 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
37 ;;; Copyright © 2021 jgart <jgart@dismail.de>
38 ;;; Copyright © 2021 Aleksandr Vityazev <avityazev@posteo.org>
39 ;;; Copyright © 2022 Arjan Adriaanse <arjan@adriaan.se>
40 ;;; Copyright © 2022 Juliana Sims <jtsims@protonmail.com>
41 ;;; Copyright © 2022 Simon Streit <simon@netpanic.org>
42 ;;;
43 ;;; This file is part of GNU Guix.
44 ;;;
45 ;;; GNU Guix is free software; you can redistribute it and/or modify it
46 ;;; under the terms of the GNU General Public License as published by
47 ;;; the Free Software Foundation; either version 3 of the License, or (at
48 ;;; your option) any later version.
49 ;;;
50 ;;; GNU Guix is distributed in the hope that it will be useful, but
51 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
52 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
53 ;;; GNU General Public License for more details.
54 ;;;
55 ;;; You should have received a copy of the GNU General Public License
56 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
57
58 (define-module (gnu packages audio)
59 #:use-module (gnu packages)
60 #:use-module (gnu packages algebra)
61 #:use-module (gnu packages autotools)
62 #:use-module (gnu packages avahi)
63 #:use-module (gnu packages backup)
64 #:use-module (gnu packages base)
65 #:use-module (gnu packages bison)
66 #:use-module (gnu packages build-tools)
67 #:use-module (gnu packages boost)
68 #:use-module (gnu packages check)
69 #:use-module (gnu packages compression)
70 #:use-module (gnu packages curl)
71 #:use-module (gnu packages dbm)
72 #:use-module (gnu packages documentation)
73 #:use-module (gnu packages elf)
74 #:use-module (gnu packages emacs)
75 #:use-module (gnu packages file)
76 #:use-module (gnu packages flex)
77 #:use-module (gnu packages fltk)
78 #:use-module (gnu packages fontutils)
79 #:use-module (gnu packages gcc)
80 #:use-module (gnu packages gettext)
81 #:use-module (gnu packages gl)
82 #:use-module (gnu packages glib)
83 #:use-module (gnu packages gnome)
84 #:use-module (gnu packages gnunet) ; libmicrohttpd
85 #:use-module (gnu packages gperf)
86 #:use-module (gnu packages groff)
87 #:use-module (gnu packages gstreamer)
88 #:use-module (gnu packages gtk)
89 #:use-module (gnu packages guile)
90 #:use-module (gnu packages icu4c)
91 #:use-module (gnu packages image)
92 #:use-module (gnu packages libbsd)
93 #:use-module (gnu packages libffi)
94 #:use-module (gnu packages libusb)
95 #:use-module (gnu packages linux)
96 #:use-module (gnu packages llvm)
97 #:use-module (gnu packages machine-learning)
98 #:use-module (gnu packages man)
99 #:use-module (gnu packages maths)
100 #:use-module (gnu packages mp3) ;taglib
101 #:use-module (gnu packages multiprecision)
102 #:use-module (gnu packages music)
103 #:use-module (gnu packages ncurses)
104 #:use-module (gnu packages networking)
105 #:use-module (gnu packages onc-rpc)
106 #:use-module (gnu packages perl)
107 #:use-module (gnu packages pkg-config)
108 #:use-module (gnu packages pulseaudio) ;libsndfile, libsamplerate
109 #:use-module (gnu packages python)
110 #:use-module (gnu packages python-science)
111 #:use-module (gnu packages python-xyz)
112 #:use-module (gnu packages qt)
113 #:use-module (gnu packages rdf)
114 #:use-module (gnu packages readline)
115 #:use-module (gnu packages samba)
116 #:use-module (gnu packages sdl)
117 #:use-module (gnu packages serialization)
118 #:use-module (gnu packages sqlite)
119 #:use-module (gnu packages telephony)
120 #:use-module (gnu packages linphone)
121 #:use-module (gnu packages linux)
122 #:use-module (gnu packages tls)
123 #:use-module (gnu packages valgrind)
124 #:use-module (gnu packages video)
125 #:use-module (gnu packages vim) ;xxd
126 #:use-module (gnu packages web)
127 #:use-module (gnu packages webkit)
128 #:use-module (gnu packages wxwidgets)
129 #:use-module (gnu packages xdisorg)
130 #:use-module (gnu packages xiph)
131 #:use-module (gnu packages xml)
132 #:use-module (gnu packages xorg)
133 #:use-module (guix build-system cmake)
134 #:use-module (guix build-system copy)
135 #:use-module (guix build-system glib-or-gtk)
136 #:use-module (guix build-system gnu)
137 #:use-module (guix build-system meson)
138 #:use-module (guix build-system python)
139 #:use-module (guix build-system trivial)
140 #:use-module (guix build-system waf)
141 #:use-module (guix download)
142 #:use-module (guix git-download)
143 #:use-module (guix gexp)
144 #:use-module ((guix licenses) #:prefix license:)
145 #:use-module (guix packages)
146 #:use-module (guix utils)
147 #:use-module (srfi srfi-1)
148 #:use-module (srfi srfi-26))
149
150 (define-public opensles
151 (package
152 (name "opensles")
153 (version "1.1.0")
154 (source
155 (origin
156 (method git-fetch)
157 (uri
158 (git-reference
159 (url "https://github.com/KhronosGroup/OpenSL-ES-Registry")
160 (commit "ea5104bf37bf525c25e6ae2386586048179d0fda")))
161 (file-name (git-file-name name version))
162 (sha256
163 (base32 "0j5bm7h3ahz66f23i9abwc0y10agfkpksnj6y078x2nichq66h4f"))
164 (patches
165 (search-patches "opensles-add-license-file.patch"))))
166 (build-system copy-build-system)
167 (arguments
168 `(#:phases
169 (modify-phases %standard-phases
170 (add-after 'install 'clean
171 (lambda* (#:key outputs #:allow-other-keys)
172 (let* ((out (assoc-ref outputs "out")))
173 (mkdir-p (string-append out "/etc"))
174 (mkdir-p (string-append out "/include"))
175 (mkdir-p (string-append out "/share"))
176 (rename-file
177 (string-append out "/api/1.1/OpenSLES_IID.c")
178 (string-append out "/etc/OpenSLES_IID.c"))
179 (rename-file
180 (string-append out "/api/1.1/OpenSLES.h")
181 (string-append out "/include/OpenSLES.h"))
182 (rename-file
183 (string-append out "/api/1.1/OpenSLES_Platform.h")
184 (string-append out "/include/OpenSLES_Platform.h"))
185 (rename-file
186 (string-append out "/api/1.1/README.txt")
187 (string-append out "/share/README.txt"))
188 (rename-file
189 (string-append out "/LICENSE.txt")
190 (string-append out "/share/LICENSE.txt"))
191 (for-each delete-file-recursively
192 (list
193 (string-append out "/api")
194 (string-append out "/specs")))
195 (for-each delete-file
196 (list
197 (string-append out "/CODE_OF_CONDUCT.md")
198 (string-append out "/index.php")
199 (string-append out "/README.md"))))
200 #t)))))
201 (synopsis "Embedded Audio Acceleration")
202 (description "OpenSLES is a royalty-free, cross-platform,
203 hardware-accelerated audio API tuned for embedded systems. It provides a
204 standardized, high-performance, low-latency method to access audio
205 functionality for developers of native applications on embedded mobile
206 multimedia devices, enabling straightforward cross-platform deployment of
207 hardware and software audio capabilities, reducing implementation effort, and
208 promoting the market for advanced audio.")
209 (home-page "https://www.khronos.org/opensles/")
210 (license (license:non-copyleft "file:///LICENSE.txt"))))
211
212 (define-public wildmidi
213 (package
214 (name "wildmidi")
215 (version "0.4.4")
216 (source
217 (origin
218 (method git-fetch)
219 (uri
220 (git-reference
221 (url "https://github.com/Mindwerks/wildmidi")
222 (commit (string-append name "-" version))))
223 (file-name (git-file-name name version))
224 (sha256
225 (base32 "08fbbsvw6pkwwqarjwcvdp8mq4zn5sgahf025hynwc6rvf4sp167"))))
226 (build-system cmake-build-system)
227 (arguments
228 `(#:tests? #f ; No target
229 #:configure-flags
230 (list
231 "-DWANT_ALSA=ON"
232 "-DWANT_OSS=ON"
233 "-DWANT_OPENAL=ON")))
234 (inputs
235 `(("alsa" ,alsa-lib)
236 ("openal" ,openal)))
237 (synopsis "Software Synthesizer")
238 (description "WildMIDI is a simple software midi player which has a core
239 softsynth library that can be used with other applications.")
240 (home-page "https://www.mindwerks.net/projects/wildmidi/")
241 (license
242 (list
243 ;; Library.
244 license:lgpl3+
245 ;; Player.
246 license:gpl3+))))
247
248 (define-public webrtc-audio-processing
249 (package
250 (name "webrtc-audio-processing")
251 (version "0.3.1")
252 (source
253 (origin
254 (method url-fetch)
255 (uri
256 (string-append "http://freedesktop.org/software/pulseaudio/"
257 name "/" name "-" version ".tar.xz"))
258 (sha256
259 (base32 "1gsx7k77blfy171b6g3m0k0s0072v6jcawhmx1kjs9w5zlwdkzd0"))))
260 (build-system gnu-build-system)
261 (arguments
262 ;; TODO: Move this to a snippet/patch or remove with the upgrade to 1.0.
263 (if (or (target-riscv64?)
264 (target-powerpc?))
265 (list
266 #:phases
267 #~(modify-phases %standard-phases
268 (add-after 'unpack 'patch-source
269 (lambda* (#:key inputs #:allow-other-keys)
270 (let ((patch-file
271 #$(local-file
272 (search-patch
273 "webrtc-audio-processing-big-endian.patch"))))
274 (invoke "patch" "--force" "-p1" "-i" patch-file)
275 (substitute* "webrtc/typedefs.h"
276 (("defined\\(__aarch64__\\)" all)
277 (string-append
278 ;; powerpc-linux
279 "(defined(__PPC__) && __SIZEOF_SIZE_T__ == 4)\n"
280 "#define WEBRTC_ARCH_32_BITS\n"
281 "#define WEBRTC_ARCH_BIG_ENDIAN\n"
282 ;; powerpc64-linux
283 "#elif (defined(__PPC64__) && defined(_BIG_ENDIAN))\n"
284 "#define WEBRTC_ARCH_64_BITS\n"
285 "#define WEBRTC_ARCH_BIG_ENDIAN\n"
286 ;; aarch64-linux
287 "#elif " all
288 ;; riscv64-linux
289 " || (defined(__riscv) && __riscv_xlen == 64)"
290 ;; powerpc64le-linux
291 " || (defined(__PPC64__) && defined(_LITTLE_ENDIAN))"))))))))
292 '()))
293 (native-inputs
294 (if (or (target-riscv64?)
295 (target-powerpc?))
296 (list
297 (local-file (search-patch "webrtc-audio-processing-big-endian.patch"))
298 patch)
299 '()))
300 (synopsis "WebRTC's Audio Processing Library")
301 (description "WebRTC-Audio-Processing library based on Google's
302 implementation of WebRTC.")
303 (home-page
304 "https://freedesktop.org/software/pulseaudio/webrtc-audio-processing/")
305 (license (license:non-copyleft "file:///COPYING"))))
306
307 (define-public vo-aacenc
308 (package
309 (name "vo-aacenc")
310 (version "0.1.3")
311 (source
312 (origin
313 (method url-fetch)
314 (uri
315 (string-append "https://sourceforge.net/projects/opencore-amr/files/"
316 name "/" name "-" version ".tar.gz"))
317 (sha256
318 (base32 "0dhghm3c8pqrriwwyj5x9i0yf52fmdfijbgqqkvqvwarldvp86p5"))))
319 (build-system gnu-build-system)
320 (synopsis "VisualOn AAC Encoder")
321 (description "VO-AACENC is the VisualOn implementation of Advanced Audio
322 Coding (AAC) encoder.")
323 (home-page "https://sourceforge.net/projects/opencore-amr/")
324 (license license:asl2.0)))
325
326 (define-public tinyalsa
327 (package
328 (name "tinyalsa")
329 (version "2.0.0")
330 (source
331 (origin
332 (method git-fetch)
333 (uri
334 (git-reference
335 (url "https://github.com/tinyalsa/tinyalsa")
336 (commit (string-append "v" version))))
337 (file-name (git-file-name name version))
338 (sha256
339 (base32 "1p9khz3bdpdcrnc9p6w522a0ankdchj4nxd3ki41z9401rxmnljq"))))
340 (build-system gnu-build-system)
341 (arguments
342 `(#:tests? #f ; No target
343 #:phases
344 (modify-phases %standard-phases
345 (delete 'configure))
346 #:make-flags
347 (list
348 (string-append "PREFIX=" (assoc-ref %outputs "out")))))
349 (synopsis "ALSA interfacing library")
350 (description "TinyALSA is a small library to interface with ALSA in the
351 Linux kernel.")
352 (home-page "https://github.com/tinyalsa/tinyalsa")
353 (license (license:non-copyleft "file:///NOTICE"))))
354
355 (define-public libgme
356 (package
357 (name "libgme")
358 (version "0.6.3")
359 (source (origin
360 (method url-fetch)
361 (uri (string-append "https://bitbucket.org/mpyne/game-music-emu/"
362 "downloads/game-music-emu-" version
363 ".tar.xz"))
364 (sha256
365 (base32
366 "07857vdkak306d9s5g6fhmjyxk7vijzjhkmqb15s7ihfxx9lx8xb"))))
367 (build-system cmake-build-system)
368 (arguments
369 '(#:tests? #f ;no check target
370
371 ;; XXX: Building with '-fsanitize=undefined' leads to embedded C++ STL
372 ;; header file names in libgme.so, meaning that libgme retains a
373 ;; reference to GCC. Disable UBSAN to avoid that.
374 #:configure-flags '("-DENABLE_UBSAN=OFF")))
375 (home-page "https://bitbucket.org/mpyne/game-music-emu")
376 (synopsis "Video game music file playback library")
377 (description
378 "Game-music-emu is a collection of video game music file emulators that
379 support the following formats and systems:
380 @table @code
381 @item AY
382 ZX Spectrum/Asmtrad CPC
383 @item GBS
384 Nintendo Game Boy
385 @item GYM
386 Sega Genesis/Mega Drive
387 @item HES
388 NEC TurboGrafx-16/PC Engine
389 @item KSS
390 MSX Home Computer/other Z80 systems (doesn't support FM sound)
391 @item NSF/NSFE
392 Nintendo NES/Famicom (with VRC 6, Namco 106, and FME-7 sound)
393 @item SAP
394 Atari systems using POKEY sound chip
395 @item SPC
396 Super Nintendo/Super Famicom
397 @item VGM/VGZ
398 Sega Master System/Mark III, Sega Genesis/Mega Drive, BBC Micro
399 @end table")
400 (license (list license:lgpl2.1+
401 ;; demo and player directories are under the Expat license
402 license:expat))))
403
404 (define-public libopenmpt
405 (package
406 (name "libopenmpt")
407 (version "0.5.9")
408 (source
409 (origin
410 (method url-fetch)
411 (uri
412 (string-append "https://download.openmpt.org/archive/libopenmpt/src/"
413 "libopenmpt-" version "+release.autotools.tar.gz"))
414 (sha256
415 (base32 "0h86p8mnpm98vc4v6jbvrmm02fch7dnn332i26fg3a2s1738m04d"))))
416 (build-system gnu-build-system)
417 (arguments
418 `(#:configure-flags
419 (list (string-append "--docdir=" (assoc-ref %outputs "out")
420 "/share/doc/" ,name "-" ,version))
421 #:phases
422 (modify-phases %standard-phases
423 (add-after 'install 'delete-static-libraries
424 (lambda* (#:key outputs #:allow-other-keys)
425 (let* ((out (assoc-ref outputs "out"))
426 (lib (string-append out "/lib")))
427 (for-each delete-file (find-files lib "\\.a$"))
428 #t))))))
429 (native-inputs
430 (list doxygen perl pkg-config))
431 (inputs
432 `(("alsa" ,alsa-lib)
433 ("flac" ,flac)
434 ("portaudio" ,portaudio)
435 ("pulseaudio" ,pulseaudio)
436 ("sdl2" ,sdl2)
437 ("sndfile" ,libsndfile)))
438 (propagated-inputs
439 ;; In Requires.private
440 (list libogg libvorbis mpg123 zlib))
441 (synopsis "Audio tracking library")
442 (description "LibOpenMPT is a cross-platform C++ and C module playback
443 library. It is based on the player code of the Open ModPlug Tracker project.")
444 (home-page "https://openmpt.org/")
445 (license (license:non-copyleft "file:///LICENSE"))))
446
447 (define-public libofa
448 (package
449 (name "libofa")
450 (version "0.9.3")
451 (source
452 (origin
453 (method url-fetch)
454 (uri
455 (string-append "https://storage.googleapis.com/"
456 "google-code-archive-downloads/v2/code.google.com/"
457 "musicip-libofa/" name "-" version ".tar.gz"))
458 (sha256
459 (base32 "184ham039l7lwhfgg0xr2vch2xnw1lwh7sid432mh879adhlc5h2"))
460 (patches
461 (search-patches
462 "libofa-ftbfs-1.diff"
463 "libofa-curl.diff"
464 "libofa-ftbfs-2.diff"))))
465 (build-system gnu-build-system)
466 (native-inputs
467 (list pkg-config))
468 (inputs
469 (list curl expat))
470 (propagated-inputs
471 (list fftw))
472 (synopsis "Open Fingerprint Architecture")
473 (description "LibOFA is an audio fingerprint library, created and provided
474 by MusicIP.")
475 (home-page "https://code.google.com/archive/p/musicip-libofa/")
476 (license license:gpl2+)))
477
478 (define-public libtimidity
479 (package
480 (name "libtimidity")
481 (version "0.2.7")
482 (source
483 (origin
484 (method url-fetch)
485 (uri
486 (string-append "https://sourceforge.net/projects/" name "/files/"
487 name "/" version "/" name "-" version ".tar.gz"))
488 (sha256
489 (base32 "0sif6lxa058b1mg19zwjm8rl2sg8cg0443k4dgi65clz0jy7qi16"))))
490 (build-system gnu-build-system)
491 (arguments
492 `(#:tests? #f)) ; XXX: LibTiMidity could not be initialised
493 (native-inputs
494 (list pkg-config))
495 (inputs
496 (list ao))
497 (synopsis "MIDI to WAVE converter library")
498 (description "LibTiMidity is a MIDI to WAVE converter library that uses
499 Gravis Ultrasound-compatible patch files to generate digital audio data from
500 General MIDI files.")
501 (home-page "http://libtimidity.sourceforge.net/")
502 (license
503 ;; This project is dual-licensed.
504 ;; Either of the following licenses can be exercised.
505 (list
506 license:lgpl2.1+
507 license:artistic2.0))))
508
509 (define-public vo-amrwbenc
510 (package
511 (name "vo-amrwbenc")
512 (version "0.1.3")
513 (source
514 (origin
515 (method url-fetch)
516 (uri
517 (string-append "https://sourceforge.net/projects/opencore-amr/files/"
518 name "/" name "-" version ".tar.gz"))
519 (sha256
520 (base32 "0klx3nkidc6b8aawchpk19n3xlrzgnc046w4gd0rdqphw28v6ljn"))))
521 (build-system gnu-build-system)
522 (synopsis "Adaptive Multi Rate Codec")
523 (description "VO-AMR is a library of VisualOn implementation of
524 Adaptive Multi Rate Narrowband and Wideband (AMR-NB and AMR-WB) speech codec.")
525 (home-page "https://sourceforge.net/projects/opencore-amr/")
526 (license license:asl2.0)))
527
528 (define-public opencore-amr
529 (package
530 (name "opencore-amr")
531 (version "0.1.5")
532 (source
533 (origin
534 (method url-fetch)
535 (uri
536 (string-append "https://sourceforge.net/projects/opencore-amr/files/"
537 name "/" name "-" version ".tar.gz"))
538 (sha256
539 (base32 "0hfk9khz3by0119h3jdwgdfd7jgkdbzxnmh1wssvylgnsnwnq01c"))))
540 (build-system gnu-build-system)
541 (synopsis "Adaptive Multi Rate Codec")
542 (description "OpenCore-AMR is a library of OpenCORE Framework
543 implementation of Adaptive Multi Rate Narrowband and Wideband
544 (AMR-NB and AMR-WB) speech codec.")
545 (home-page "https://sourceforge.net/projects/opencore-amr/")
546 (license license:asl2.0)))
547
548 (define-public alsa-modular-synth
549 (package
550 (name "alsa-modular-synth")
551 (version "2.2.0")
552 (source (origin
553 (method url-fetch)
554 (uri (string-append "mirror://sourceforge/alsamodular/alsamodular"
555 "/" version "/ams-" version ".tar.bz2"))
556 (sha256
557 (base32
558 "056dn6b9c5nsw2jdww7z1kxrjqqfvxjzxhsd5x9gi4wkwyiv21nz"))))
559 (build-system gnu-build-system)
560 (inputs
561 (list alsa-lib
562 ;; We cannot use zita-alsa-pcmi (the successor of clalsadrv) due to
563 ;; license incompatibility.
564 clalsadrv
565 fftw
566 jack-1
567 ladspa
568 liblo
569 qtbase-5))
570 (native-inputs
571 (list pkg-config qttools-5))
572 (home-page "http://alsamodular.sourceforge.net/")
573 (synopsis "Realtime modular synthesizer and effect processor")
574 (description
575 "AlsaModularSynth is a digital implementation of a classical analog
576 modular synthesizer system. It uses virtual control voltages to control the
577 parameters of the modules. The control voltages which control the frequency
578 e.g. of the VCO (Voltage Controlled Oscillator) and VCF (Voltage Controlled
579 Filter) modules follow the convention of 1V / Octave.")
580 (license license:gpl2)))
581
582 (define-public aubio
583 (package
584 (name "aubio")
585 (version "0.4.9")
586 (source (origin
587 (method url-fetch)
588 (uri (string-append
589 "https://aubio.org/pub/aubio-" version ".tar.bz2"))
590 (sha256
591 (base32
592 "1npks71ljc48w6858l9bq30kaf5nph8z0v61jkfb70xb9np850nl"))))
593 (build-system waf-build-system)
594 (arguments
595 `(#:tests? #f ; no check target
596 #:configure-flags
597 (list
598 (string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") "/lib")
599 "--enable-fftw3f"
600 "--enable-jack"
601 "--enable-sndfile"
602 "--enable-samplerate"
603 "--enable-avcodec")))
604 (inputs
605 (list jack-1 libsndfile libsamplerate fftwf ffmpeg)) ; for libavcodec
606 (native-inputs
607 (list pkg-config))
608 (home-page "https://aubio.org/")
609 (synopsis "Library for audio labelling")
610 (description
611 "aubio is a tool designed for the extraction of annotations from audio
612 signals. Its features include segmenting a sound file before each of its
613 attacks, performing pitch detection, tapping the beat and producing MIDI
614 streams from live audio.")
615 (license license:gpl3+)))
616
617 (define (ardour-rpath-phase major-version)
618 `(lambda* (#:key outputs #:allow-other-keys)
619 (let ((libdir (string-append (assoc-ref outputs "out")
620 "/lib/ardour" ,major-version)))
621 (substitute* "wscript"
622 (("linker_flags = \\[\\]")
623 (string-append "linker_flags = [\""
624 "-Wl,-rpath="
625 libdir ":"
626 libdir "/backends" ":"
627 libdir "/engines" ":"
628 libdir "/panners" ":"
629 libdir "/surfaces" ":"
630 libdir "/vamp" "\"]"))))
631 #t))
632
633 (define-public ardour
634 (package
635 (name "ardour")
636 (version "6.9")
637 (source (origin
638 (method git-fetch)
639 (uri (git-reference
640 (url "git://git.ardour.org/ardour/ardour.git")
641 (commit version)))
642 (snippet
643 ;; Ardour expects this file to exist at build time. The revision
644 ;; is the output of
645 ;; git describe HEAD | sed 's/^[A-Za-z]*+//'
646 `(call-with-output-file
647 "libs/ardour/revision.cc"
648 (lambda (port)
649 (format port ,(string-append "#include \"ardour/revision.h\"
650 namespace ARDOUR { const char* revision = \"" version "\" ; const char* date = \"\"; }"))
651 #t)))
652 (sha256
653 (base32
654 "0vlcbd70y0an881zv87kc3akmaiz4w7whsy3yaiiqqjww35jg1mm"))
655 (file-name (string-append name "-" version))))
656 (build-system waf-build-system)
657 (arguments
658 `(#:configure-flags '("--cxx11" ; required by gtkmm
659 "--optimize"
660 "--no-phone-home" ; don't contact ardour.org
661 "--freedesktop" ; build .desktop file
662 "--test") ; build unit tests
663 #:phases
664 (modify-phases %standard-phases
665 (add-after 'unpack 'set-rpath-in-LDFLAGS
666 ,(ardour-rpath-phase (version-major version)))
667 (add-after 'install 'install-freedesktop-files
668 (lambda* (#:key outputs #:allow-other-keys)
669 (let* ((out (assoc-ref outputs "out"))
670 (share (string-append out "/share"))
671 (ver ,(version-major version)))
672 (for-each
673 (lambda (size)
674 (let ((dir (string-append share "/icons/hicolor/"
675 size "x" size "/apps")))
676 (mkdir-p dir)
677 (copy-file
678 (string-append "gtk2_ardour/resources/Ardour-icon_"
679 size "px.png")
680 (string-append dir "/ardour" ver ".png"))))
681 '("16" "22" "32" "48" "256"))
682 (install-file (string-append "build/gtk2_ardour/ardour"
683 ver ".desktop")
684 (string-append share "/applications/"))
685 (install-file (string-append "build/gtk2_ardour/ardour"
686 ver ".appdata.xml")
687 (string-append share "/appdata/")))
688 #t)))
689 #:test-target "test"))
690 (inputs
691 (list alsa-lib
692 atkmm
693 aubio
694 boost
695 cairomm
696 curl
697 dbus
698 eudev
699 fftw
700 fftwf
701 flac
702 glibmm
703 gtkmm-2
704 jack-1
705 libarchive
706 libart-lgpl
707 libgnomecanvasmm
708 liblo
709 libogg
710 libsamplerate
711 libsndfile
712 libusb
713 libvorbis
714 libwebsockets
715 libxml2
716 lilv
717 lrdf
718 lv2
719 openssl ; Required by libwebsockets.
720 pangomm
721 python-rdflib
722 pulseaudio
723 readline
724 redland
725 rubberband
726 serd
727 sord
728 soundtouch
729 sratom
730 suil
731 taglib
732 vamp))
733 (native-inputs
734 `(("cppunit" ,cppunit)
735 ("gettext" ,gettext-minimal)
736 ("itstool" ,itstool)
737 ("perl" ,perl)
738 ("pkg-config" ,pkg-config)))
739 (home-page "https://ardour.org")
740 (synopsis "Digital audio workstation")
741 (description
742 "Ardour is a multi-channel digital audio workstation, allowing users to
743 record, edit, mix and master audio and MIDI projects. It is targeted at audio
744 engineers, musicians, soundtrack editors and composers.")
745 (license license:gpl2+)))
746
747 (define-public audacity
748 (package
749 (name "audacity")
750 (version "3.1.3")
751 (source
752 (origin
753 ;; If built from the release tag, Audacity will describe itself
754 ;; as an "Alpha test version" and suggest to users that they use
755 ;; the "latest stable released version".
756 (method url-fetch)
757 (uri (string-append "https://github.com/audacity/audacity/releases/download/"
758 "Audacity-" version "/audacity-" version
759 "-source.tar.gz"))
760 (sha256
761 (base32
762 "189agx11361k9j958s6q5bngnnfx0rwaf0dwbjxy6fwvsb1wv3px"))
763 (patches (search-patches "audacity-ffmpeg-fallback.patch"))
764 (modules '((guix build utils)))
765 (snippet
766 ;; Remove bundled libraries.
767 '(begin
768 (for-each
769 (lambda (dir)
770 (delete-file-recursively (string-append "lib-src/" dir)))
771 '("libsoxr" "libvamp" "lv2" "soundtouch" "sqlite" "twolame"
772 ;; FIXME: these libraries have not been packaged yet:
773 ;; "libnyquist"
774 ;; "libscorealign"
775 ;; "portburn"
776 ;; "portsmf"
777 ;; "portmixer"
778
779 ;; FIXME: we have this library, but it differs in that the Slide
780 ;; class does not have a member "getInverseStretchedTime".
781 ;; "sbsms"
782 ))
783 #t))))
784 (build-system cmake-build-system)
785 (inputs
786 (list wxwidgets-3.1
787 gtk+
788 alsa-lib
789 jack-1
790 expat
791 lame
792 linux-libre-headers
793 flac
794 ffmpeg
795 libid3tag
796 libjpeg-turbo
797 libmad
798 ;;("libsbsms" ,libsbsms) ;bundled version is modified
799 libsndfile
800 soundtouch
801 soxr ;replaces libsamplerate
802 sqlite
803 twolame
804 vamp
805 libvorbis
806 lv2
807 lilv ;for lv2
808 suil ;for lv2
809 portaudio
810 portmidi))
811 (native-inputs
812 `(("autoconf" ,autoconf)
813 ("automake" ,automake)
814 ("gettext" ,gettext-minimal) ;for msgfmt
815 ("libtool" ,libtool)
816 ("pkg-config" ,pkg-config)
817 ("python" ,python)
818 ("which" ,which)))
819 (arguments
820 `(#:configure-flags
821 (list
822 "-Daudacity_conan_enabled=off"
823 "-Daudacity_lib_preference=system"
824 ;; TODO: enable this flag once we've packaged all dependencies
825 ;; "-Daudacity_obey_system_dependencies=on"
826 ;; disable crash reports, updates, ..., anything that phones home
827 "-Daudacity_has_networking=off")
828 #:imported-modules ((guix build glib-or-gtk-build-system)
829 ,@%cmake-build-system-modules)
830 #:modules
831 ((guix build utils)
832 (guix build cmake-build-system)
833 ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:))
834 #:phases
835 (modify-phases %standard-phases
836 (add-after 'unpack 'fix-cmake-rpath
837 (lambda* (#:key outputs #:allow-other-keys)
838 (substitute* "CMakeLists.txt"
839 (("\\$ORIGIN/\\.\\./\\$\\{_PKGLIB\\}")
840 (string-append (assoc-ref outputs "out") "/lib/audacity"))
841 (("CMAKE_BUILD_WITH_INSTALL_RPATH [A-Z]*")
842 "CMAKE_BUILD_WITH_INSTALL_RPATH TRUE")
843 (("CMAKE_INSTALL_RPATH_USE_LINK_PATH [A-Z]*")
844 "CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE"))
845 (substitute* "src/CMakeLists.txt"
846 (("-Wl,--disable-new-dtags") "-Wl,--enable-new-dtags"))))
847 (add-after 'unpack 'comment-out-revision-ident
848 (lambda _
849 (substitute* "src/CMakeLists.txt"
850 (("file\\( TOUCH \".*RevisionIdent\\.h\" \\)" directive)
851 (string-append "# " directive)))
852 (substitute* "src/AboutDialog.cpp"
853 (("(.*RevisionIdent\\.h.*)" include-line)
854 (string-append "// " include-line)))))
855 (add-after 'unpack 'use-upstream-headers
856 (lambda* (#:key inputs #:allow-other-keys)
857 (substitute* '("libraries/lib-files/FileNames.cpp")
858 (("\"/usr/include/linux/magic.h\"") "<linux/magic.h>"))))
859 (add-after 'install 'delete-gratuitous-script
860 (lambda* (#:key outputs #:allow-other-keys)
861 (delete-file (string-append (assoc-ref outputs "out")
862 "/audacity"))))
863 (add-after 'wrap-program 'glib-or-gtk-wrap
864 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))
865 ;; The test suite is not "well exercised" according to the developers,
866 ;; and fails with various errors. See
867 ;; <http://sourceforge.net/p/audacity/mailman/message/33524292/>.
868 #:tests? #f))
869 (native-search-paths
870 (list (search-path-specification
871 (variable "AUDACITY_MODULES_PATH")
872 (files '("lib/audacity/modules")))
873 (search-path-specification
874 (variable "AUDACITY_PATH")
875 (files '("share/audacity")))))
876 (home-page "https://www.audacityteam.org/")
877 (synopsis "Software for recording and editing sounds")
878 (description
879 "Audacity is a multi-track audio editor designed for recording, playing
880 and editing digital audio. It features digital effects and spectrum analysis
881 tools.")
882 (license license:gpl2+)))
883
884 (define-public audiofile
885 (package
886 (name "audiofile")
887 (version "0.3.6")
888 (source
889 (origin
890 (method url-fetch)
891 (uri (string-append
892 "https://audiofile.68k.org/audiofile-" version ".tar.gz"))
893 (sha256
894 (base32 "0rb927zknk9kmhprd8rdr4azql4gn2dp75a36iazx2xhkbqhvind"))
895 (patches
896 ;; CVE references according to nixpgs
897 (search-patches
898 "audiofile-fix-datatypes-in-tests.patch"
899 "audiofile-fix-sign-conversion.patch"
900 "audiofile-hurd.patch"
901 "audiofile-CVE-2015-7747.patch"
902 ;; CVE-2017-6829:
903 "audiofile-Fix-index-overflow-in-IMA.cpp.patch"
904 ;; CVE-2017-6827, CVE-2017-6828, CVE-2017-6832, CVE-2017-6835,
905 ;; CVE-2017-6837:
906 "audiofile-check-number-of-coefficients.patch"
907 ;; CVE-2017-6839:
908 "audiofile-overflow-in-MSADPCM.patch"
909 ;; CVE-2017-6830, CVE-2017-6834, CVE-2017-6836, CVE-2017-6838:
910 "audiofile-multiply-overflow.patch"
911 "audiofile-function-signature.patch"
912 ;; CVE-2017-6831:
913 "audiofile-Fail-on-error-in-parseFormat.patch"
914 ;; CVE-2017-6833:
915 "audiofile-division-by-zero.patch"
916 "audiofile-CVE-2018-13440.patch"
917 "audiofile-CVE-2018-17095.patch"))))
918 (properties `((lint-hidden-cve . ("CVE-2017-6829"
919
920 "CVE-2017-6827" "CVE-2017-6828"
921 "CVE-2017-6832" "CVE-2017-6835"
922 "CVE-2017-6837"
923
924 "CVE-2017-6839"
925
926 "CVE-2017-6830" "CVE-2017-6834"
927 "CVE-2017-6836" "CVE-2017-6838"
928
929 "CVE-2017-6831" "CVE-2017-6833"))))
930 (build-system gnu-build-system)
931 (inputs
932 (list alsa-lib))
933 (home-page "https://audiofile.68k.org/")
934 (synopsis "Library to handle various audio file formats")
935 (description "This is an open-source version of SGI's audiofile library.
936 It provides a uniform programming interface for processing of audio data to
937 and from audio files of many common formats.
938
939 Currently supported file formats include AIFF/AIFF-C, WAVE, and NeXT/Sun
940 .snd/.au, BICS, and raw data. Supported compression formats are currently
941 G.711 mu-law and A-law.")
942 (license license:lgpl2.1+)))
943
944 (define-public autotalent
945 (package
946 (name "autotalent")
947 (version "0.2")
948 (source (origin
949 (method url-fetch)
950 (uri (string-append "http://tombaran.info/autotalent-"
951 version ".tar.gz"))
952 (sha256
953 (base32
954 "1n04qm66f14195ly6gsy3ra7v2j7zad5n19d8dwfmh0qs6h9hphh"))))
955 (build-system gnu-build-system)
956 (arguments
957 `(#:tests? #f ; no check target
958 #:phases
959 (modify-phases %standard-phases
960 ;; no configure script
961 (delete 'configure)
962 (add-before 'install 'prepare-target-directory
963 (lambda* (#:key outputs #:allow-other-keys)
964 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
965 #t))
966 (add-after 'unpack 'override-target-directory
967 (lambda* (#:key outputs #:allow-other-keys)
968 (substitute* "Makefile"
969 (("/usr/lib64/ladspa")
970 (string-append (assoc-ref outputs "out") "/lib/ladspa")))
971 #t)))))
972 (inputs
973 (list ladspa))
974 (home-page "http://tombaran.info/autotalent.html")
975 (synopsis "Pitch-correction LADSPA audio plugin")
976 (description
977 "Autotalent is a LADSPA plugin for real-time pitch-correction. Among its
978 controls are allowable notes, strength of correction, LFO for vibrato and
979 formant warp.")
980 ;; All code except the FFT routine is licensed under GPLv2+.
981 ;; The FFT routine is under BSD-3.
982 (license license:gpl2+)))
983
984 (define-public azr3
985 (package
986 (name "azr3")
987 (version "1.2.3")
988 (source (origin
989 (method url-fetch)
990 (uri (string-append "mirror://savannah/ll-plugins/azr3-jack-"
991 version
992 ".tar.bz2"))
993 (sha256
994 (base32
995 "18mdw6nc0vgj6k9rsy0x8w64wvzld0frqshrxxbxfj9qi9843vlc"))
996 (patches (search-patches "azr3.patch"))))
997 (build-system gnu-build-system)
998 (arguments
999 `(#:tests? #f ; no check target
1000 #:make-flags
1001 (list "LV2PEG=ttl2c"
1002 (string-append "prefix=" %output)
1003 (string-append "pkgdatadir=" %output "/share/azr3-jack"))
1004 #:phases
1005 (modify-phases %standard-phases
1006 (add-before 'install 'fix-timestamp
1007 (lambda _
1008 (let ((early-1980 315619200)) ; 1980-01-02 UTC
1009 (utime "azr3.1" early-1980 early-1980))
1010 #t)))))
1011 (inputs
1012 (list gtkmm-2 lvtk jack-1 lash))
1013 (native-inputs
1014 (list pkg-config))
1015 (home-page "http://ll-plugins.nongnu.org/azr3/")
1016 (synopsis "Tonewheel organ synthesizer")
1017 (description
1018 "AZR-3 is a port of the free VST plugin AZR-3. It is a tonewheel organ
1019 with drawbars, distortion and rotating speakers. The organ has three
1020 sections, two polyphonic sections with nine drawbars each and one monophonic
1021 bass section with five drawbars. A standalone JACK application and LV2
1022 plugins are provided.")
1023 (license license:gpl2)))
1024
1025 (define-public calf
1026 (package
1027 (name "calf")
1028 (version "0.90.3")
1029 (source (origin
1030 (method url-fetch)
1031 (uri (string-append "https://calf-studio-gear.org/files/calf-"
1032 version ".tar.gz"))
1033 (sha256
1034 (base32
1035 "17x4hylgq4dn9qycsdacfxy64f5cv57n2qgkvsdp524gnqzw4az3"))))
1036 (build-system gnu-build-system)
1037 (inputs
1038 (list fluidsynth
1039 expat
1040 glib
1041 gtk+-2
1042 cairo
1043 lash
1044 jack-1
1045 lv2
1046 ladspa
1047 fftw))
1048 (native-inputs
1049 (list pkg-config))
1050 (native-search-paths
1051 (list (search-path-specification
1052 (variable "LV2_PATH")
1053 (files '("lib/lv2")))))
1054 (home-page "http://calf.sourceforge.net/")
1055 (synopsis "Audio plug-in pack for LV2 and JACK environments")
1056 (description
1057 "Calf Studio Gear is an audio plug-in pack for LV2 and JACK environments.
1058 The suite contains lots of effects (delay, modulation, signal processing,
1059 filters, equalizers, dynamics, distortion and mastering effects),
1060 instruments (SF2 player, organ simulator and a monophonic synthesizer) and
1061 tools (analyzer, mono/stereo tools, crossovers).")
1062 ;; calfjackhost is released under GPLv2+
1063 ;; The plugins are released under LGPLv2.1+
1064 (license (list license:lgpl2.1+ license:gpl2+))))
1065
1066 (define-public caps-plugins-lv2
1067 (package
1068 (name "caps-plugins-lv2")
1069 (version "0.9.26")
1070 (source
1071 (origin
1072 ;; The Github project hasn't tagged a release.
1073 (method git-fetch)
1074 (uri (git-reference
1075 (url "https://github.com/moddevices/caps-lv2.git")
1076 (commit "5d52a0c6e8863c058c2aab2dea9f901a90d96eb9")))
1077 (file-name (git-file-name name version))
1078 (sha256
1079 (base32
1080 "0hdl7n3ra5gqgwkdfqkw8dj9gb1cgb76bn1v91w06d2w4lj9s8xa"))))
1081 (build-system gnu-build-system)
1082 (arguments
1083 `(#:tests? #f ; no check target
1084 #:phases
1085 (modify-phases %standard-phases
1086 ;; no configure script
1087 (delete 'configure)
1088 (add-after 'unpack 'override-target-directory
1089 (lambda* (#:key outputs #:allow-other-keys)
1090 (substitute* (find-files "plugins" "Makefile")
1091 (("/usr/local")(assoc-ref outputs "out")))
1092 #t)))))
1093 (inputs
1094 (list lv2))
1095 ;; home-page of the original LADSPA version: http://quitte.de/dsp/caps.html
1096 (home-page "https://github.com/moddevices/caps-lv2")
1097 (synopsis "LV2 port of the CAPS audio plugin collection")
1098 (description
1099 "LV2 port of CAPS, a collection of audio plugins comprising basic virtual
1100 guitar amplification and a small range of classic effects, signal processors and
1101 generators of mostly elementary and occasionally exotic nature.")
1102 (license license:gpl3+)))
1103
1104 (define-public iir
1105 (package
1106 (name "iir")
1107 (version "1.9.3")
1108 (source
1109 (origin
1110 (method git-fetch)
1111 (uri (git-reference
1112 (url "https://github.com/berndporr/iir1")
1113 (commit version)))
1114 (file-name (git-file-name name version))
1115 (sha256
1116 (base32 "0wbh804as740kjvmyaqx4rwvwwrbwh0fnj979dvv1ljlx1p50bk0"))))
1117 (build-system cmake-build-system)
1118 (arguments
1119 (list
1120 #:phases
1121 #~(modify-phases %standard-phases
1122 (add-after 'install 'delete-static-library
1123 (lambda* (#:key outputs #:allow-other-keys)
1124 (let ((out (assoc-ref outputs "out")))
1125 (delete-file (string-append out "/lib/libiir_static.a"))))))))
1126 (home-page "https://berndporr.github.io/iir1/")
1127 (synopsis
1128 "Real-time C++ @acronym{IIR, infinite impulse response} filter library")
1129 (description
1130 "This C++ library implements the Butterworth, RBJ, and Chebychev
1131 @acronym{IIR, infinite impulse response} filters. Samples are processed one by
1132 one, in real time. It can easily import coefficients generated with Python
1133 (@code{scipy}). It also avoids memory leaks by allocating memory at compile
1134 time, using templates, instead of calling @code{malloc()} or @code{new}.")
1135 (license license:expat)))
1136
1137 (define-public infamous-plugins
1138 (package
1139 (name "infamous-plugins")
1140 (version "0.3.0")
1141 (source (origin
1142 (method git-fetch)
1143 (uri (git-reference
1144 (url "https://github.com/ssj71/infamousPlugins")
1145 (commit (string-append "v" version))))
1146 (file-name (git-file-name name version))
1147 (sha256
1148 (base32
1149 "1r72agk5nxf5k0mghcc2j90z43j5d9i7rqjmf49jfyqnd443isip"))))
1150 (build-system cmake-build-system)
1151 (arguments
1152 `(#:tests? #f ; there are no tests
1153 #:phases
1154 (modify-phases %standard-phases
1155 (add-after 'unpack 'remove-compiler-flags
1156 (lambda _
1157 (substitute* (find-files "." "CMakeLists.txt")
1158 (("-msse2 -mfpmath=sse") ""))
1159 #t))
1160 (add-after 'unpack 'fix-build-with-newer-lv2
1161 (lambda _
1162 ;; https://github.com/ssj71/infamousPlugins/commit/4c7275b1fa8ea3296446421cbd29ec2df66588c0
1163 (substitute* (find-files "src" ".*\\.cxx")
1164 (("_LV2UI_Descriptor") "LV2UI_Descriptor"))
1165 #t)))))
1166 (inputs
1167 (list cairo fftwf lv2 ntk zita-resampler))
1168 (native-inputs
1169 (list pkg-config))
1170 (home-page "https://ssj71.github.io/infamousPlugins")
1171 (synopsis "LV2 plugins for live use")
1172 (description
1173 "The infamous plugins are a collection of LV2 audio plugins for live
1174 performances. The plugins include a cellular automaton synthesizer, an
1175 envelope follower, distortion effects, tape effects and more.")
1176 (license license:gpl2+)))
1177
1178 (define-public snapcast
1179 (package
1180 (name "snapcast")
1181 (version "0.26.0")
1182 (source (origin
1183 (method git-fetch)
1184 (uri (git-reference
1185 (url "https://github.com/badaix/snapcast")
1186 (commit (string-append "v" version))))
1187 (file-name (git-file-name name version))
1188 (sha256
1189 (base32
1190 "091gf3k1xv3k0m0kf2apr9bwiifw2czjcksd3vzwy544sfgrya08"))))
1191 (build-system cmake-build-system)
1192 (arguments
1193 '(#:tests? #f)) ; no included tests
1194 (inputs
1195 (list boost
1196 libvorbis
1197 soxr
1198 alsa-lib
1199 avahi
1200 pulseaudio
1201 flac
1202 opus))
1203 (native-inputs
1204 (list pkg-config))
1205 (home-page "https://github.com/badaix/snapcast")
1206 (synopsis "Synchronous multiroom audio player")
1207 (description
1208 "Snapcast is a multi-room client-server audio player. Clients are time
1209 synchronized with the server to play synced audio.")
1210 (license license:gpl3+)))
1211
1212 (define-public swh-plugins
1213 (package
1214 (name "swh-plugins")
1215 (version "0.4.17")
1216 (source (origin
1217 (method git-fetch)
1218 (uri (git-reference
1219 (url "https://github.com/swh/ladspa")
1220 (commit (string-append "v" version))))
1221 (file-name (git-file-name name version))
1222 (sha256
1223 (base32
1224 "1c98z2xxz9pgcb4dg99gz8qrylh5cnag0j18a52d88ifsy24isvq"))))
1225 (native-inputs
1226 (list autoconf
1227 automake
1228 gettext-minimal ;for autopoint
1229 libtool
1230 perl
1231 pkg-config
1232 which))
1233 (inputs
1234 (list fftwf perl-xml-parser))
1235 (build-system gnu-build-system)
1236 (home-page "http://plugin.org.uk")
1237 (synopsis "The SWH Plugins package for the LADSPA plugin system")
1238 (description "This package provides Steve Harris's LADSPA plugins.")
1239 (license license:gpl2+)))
1240
1241 (define-public swh-plugins-lv2
1242 (package
1243 (name "swh-plugins-lv2")
1244 (version "1.0.16")
1245 (source (origin
1246 (method git-fetch)
1247 (uri (git-reference
1248 (url "https://github.com/swh/lv2")
1249 (commit (string-append "v" version))))
1250 (file-name (git-file-name name version))
1251 (sha256
1252 (base32
1253 "0y7nnww864mm4k6ayy2lhcws3wlbhb2gkyjbrwk921fvc18qk9mz"))))
1254 (build-system gnu-build-system)
1255 (arguments
1256 `(#:tests? #f ; no check target
1257 #:make-flags (list "CC=gcc"
1258 (string-append "PREFIX="
1259 (assoc-ref %outputs "out")))
1260 #:phases
1261 (modify-phases %standard-phases
1262 ;; no configure script
1263 (delete 'configure)
1264 (add-after 'unpack 'patch-makefile-and-enter-directory
1265 ;; The default install target doesn't install, but the
1266 ;; "install-system" target does.
1267 (lambda _
1268 (substitute* "Makefile"
1269 (("install:") "install: install-system"))
1270 #t)))))
1271 (inputs
1272 (list lv2 fftwf))
1273 (native-inputs
1274 (list libxslt pkg-config))
1275 (home-page "http://plugin.org.uk")
1276 (synopsis "SWH plugins in LV2 format")
1277 (description
1278 "Swh-plugins-lv2 is a collection of audio plugins in LV2 format. Plugin
1279 classes include: dynamics (compressor, limiter), time (delay, chorus,
1280 flanger), ringmodulator, distortion, filters, pitchshift, oscillators,
1281 emulation (valve, tape), bit fiddling (decimator, pointer-cast), etc.")
1282 (license license:gpl3+)))
1283
1284 (define-public libdjinterop
1285 (package
1286 (name "libdjinterop")
1287 (version "0.16.0")
1288 (source
1289 (origin
1290 (method git-fetch)
1291 (uri (git-reference
1292 (url "https://github.com/xsco/libdjinterop")
1293 (commit version)))
1294 (file-name (git-file-name name version))
1295 (sha256
1296 (base32 "16nrqpr90vb9ggmp9j73m0hspd7pmfdhh0g6iyp8vd7kx7g17qnk"))))
1297 (build-system meson-build-system)
1298 (arguments
1299 `(#:phases
1300 (modify-phases %standard-phases
1301 ;; crate_test writes a database file to the source tree.
1302 (add-after 'unpack 'make-git-checkout-writable
1303 (lambda _
1304 (for-each make-file-writable (find-files ".")))))))
1305 (native-inputs
1306 (list boost pkg-config))
1307 (inputs
1308 (list sqlite zlib))
1309 (home-page "https://github.com/xsco/libdjinterop")
1310 (synopsis "C++ library for access to DJ record libraries")
1311 (description
1312 "@code{libdjinterop} is a C++ library that allows access to database
1313 formats used to store information about DJ record libraries.")
1314 (license license:lgpl3+)))
1315
1316 (define-public tao
1317 (package
1318 (name "tao")
1319 (version "1.0-beta-10May2006")
1320 (source (origin
1321 (method url-fetch)
1322 (uri (string-append "mirror://sourceforge/taopm/Tao/"
1323 "tao-" version "/"
1324 "tao-" version ".tar.gz"))
1325 (sha256
1326 (base32
1327 "156py3g6mmglldfd0j76bn7n242hdwf49diaprjpj7crp8vgf2pz"))
1328 (patches
1329 (search-patches "tao-add-missing-headers.patch"
1330 "tao-fix-parser-types.patch"))
1331 (modules '((guix build utils)))
1332 (snippet
1333 '(substitute* "configure"
1334 (("SHELL=/bin/sh") "")))))
1335 (build-system gnu-build-system)
1336 (arguments
1337 '(#:configure-flags '("TAO_RELEASE=-beta")
1338 #:phases
1339 (modify-phases %standard-phases
1340 (add-after 'unpack 'fix-references
1341 (lambda* (#:key outputs #:allow-other-keys)
1342 (substitute* "user-scripts/tao.in"
1343 (("taoparse")
1344 (string-append (assoc-ref outputs "out") "/bin/taoparse"))
1345 (("grep") (which "grep"))
1346 (("sed -f \\$distdir/user-scripts/")
1347 (string-append (which "sed") " -f $distdir/"))
1348 (("distdir=.*")
1349 (string-append "distdir="
1350 (assoc-ref outputs "out") "/share/tao")))))
1351 (add-after 'install 'install-extra-files
1352 (lambda* (#:key outputs #:allow-other-keys)
1353 (let* ((out (assoc-ref outputs "out"))
1354 (share (string-append out "/share/tao/"))
1355 (inc (string-append out "/include/tao/")))
1356 (mkdir-p share)
1357 (mkdir-p inc)
1358 (install-file "user-scripts/error.parse" share)
1359 (copy-recursively "examples" (string-append share "examples"))
1360 (for-each (lambda (file) (install-file file inc))
1361 (find-files "include" "\\.h"))))))))
1362 (inputs
1363 (list audiofile
1364 libxi
1365 libxmu
1366 mesa
1367 freeglut
1368 flex
1369 bison
1370 sed
1371 grep))
1372 (home-page "http://taopm.sourceforge.net/")
1373 (synopsis "Sound Synthesis with Physical Models")
1374 (description "Tao is a software package for sound synthesis using physical
1375 models. It provides a virtual acoustic material constructed from masses and
1376 springs which can be used as the basis for building quite complex virtual
1377 musical instruments. Tao comes with a synthesis language for creating and
1378 playing instruments and a C++ API for those who would like to use it as an
1379 object library.")
1380 (license license:gpl2+)))
1381
1382 (define-public tao-synth
1383 (let ((commit "f3aedd81efbc775574e591081b57ae1c08427064")
1384 (revision "1"))
1385 (package
1386 (name "tao-synth")
1387 (version (git-version "0" revision commit))
1388 (source (origin
1389 (method git-fetch)
1390 (uri (git-reference
1391 (url "https://github.com/lucasw/tao_synth")
1392 (commit commit)))
1393 (file-name (git-file-name name version))
1394 (sha256
1395 (base32
1396 "1jds2l3cb96b02jxd7lmrjjl9s7mylnrvg6fpw0j8c141bk8vyg3"))))
1397 (build-system cmake-build-system)
1398 (arguments (list #:tests? #false)) ;there are no tests
1399 (inputs
1400 (list glfw freeglut))
1401 (native-inputs
1402 (list gcc-7))
1403 (home-page "https://github.com/lucasw/tao_synth")
1404 (synopsis "Sound synthesis with physical models")
1405 (description "Tao is a software package for sound synthesis using physical
1406 models. It provides a virtual acoustic material constructed from masses and
1407 springs which can be used as the basis for building quite complex virtual
1408 musical instruments. Tao comes with a synthesis language for creating and
1409 playing instruments and a C++ API for those who would like to use it as an
1410 object library.")
1411 (license license:lgpl2.0+))))
1412
1413 (define-public csound
1414 (package
1415 (name "csound")
1416 (version "6.16.2")
1417 (source
1418 (origin
1419 (method git-fetch)
1420 (uri (git-reference
1421 (url "https://github.com/csound/csound")
1422 (commit version)))
1423 (file-name (git-file-name name version))
1424 (sha256
1425 (base32 "1lgasyk8j4cl9178vci1dph63nks3cgwhf8y1d04z9dc8gg15dyn"))))
1426 (build-system cmake-build-system)
1427 (native-inputs
1428 (list bison flex gettext-minimal zlib))
1429 (inputs
1430 (list alsa-lib
1431 boost
1432 jack-1
1433 ladspa
1434 liblo
1435 libsndfile
1436 pulseaudio))
1437 (home-page "https://csound.com/")
1438 (synopsis "Sound and music computing system")
1439 (description
1440 "Csound is a user-programmable and user-extensible sound processing
1441 language and software synthesizer.")
1442 (license license:lgpl2.1+)))
1443
1444 (define-public midicomp
1445 ;; The latest tagged release is 9 years old and there have been
1446 ;; unreleased fixes, so we take the last commit.
1447 (let ((commit "70f76963cb0cdb3cbe03ec6e7246b1fb885d3c68")
1448 (revision "1"))
1449 (package
1450 (name "midicomp")
1451 (version (git-version "0.0.8" revision commit))
1452 (source
1453 (origin
1454 (method git-fetch)
1455 (uri (git-reference
1456 (url "https://github.com/markc/midicomp")
1457 (commit commit)))
1458 (file-name (git-file-name name version))
1459 (sha256
1460 (base32
1461 "12zh247c6v88ssy4l8v7yirh4bl2jcc1ch7f4gdry79a82kai1gf"))))
1462 (build-system cmake-build-system)
1463 (arguments
1464 `(#:tests? #f)) ; no "check" target
1465 (synopsis "Convert SMF MIDI files to and from plain text")
1466 (description
1467 "midicomp can manipulate SMF (Standard MIDI File) files. It can both
1468 read and write SMF files in 0 or format 1 and also read and write its own
1469 plain text format. This means a SMF file can be turned into easily
1470 parseable text, edited with any text editor or filtered through any script
1471 language, and recompiled back into a binary SMF file.")
1472 (home-page "https://github.com/markc/midicomp")
1473 (license license:agpl3))))
1474
1475 (define-public clalsadrv
1476 (package
1477 (name "clalsadrv")
1478 (version "2.0.0")
1479 (source (origin
1480 (method url-fetch)
1481 (uri (string-append
1482 "http://kokkinizita.linuxaudio.org"
1483 "/linuxaudio/downloads/clalsadrv-"
1484 version ".tar.bz2"))
1485 (sha256
1486 (base32
1487 "0bsacx3l9065gk8g4137qmz2ij7s9x06aldvacinzlcslw7bd1kq"))))
1488 (build-system gnu-build-system)
1489 (arguments
1490 `(#:tests? #f ; no "check" target
1491 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
1492 #:phases
1493 (modify-phases %standard-phases
1494 (add-after 'unpack 'patch-makefile-and-enter-directory
1495 (lambda _
1496 (substitute* "libs/Makefile"
1497 (("/sbin/ldconfig") "true")
1498 (("^LIBDIR =.*") "LIBDIR = lib\n"))
1499 (chdir "libs")
1500 #t))
1501 (add-after 'install 'install-symlink
1502 (lambda _
1503 (symlink "libclalsadrv.so"
1504 (string-append (assoc-ref %outputs "out")
1505 "/lib/libclalsadrv.so.2"))
1506 #t))
1507 ;; no configure script
1508 (delete 'configure))))
1509 (inputs
1510 (list alsa-lib fftw))
1511 (home-page "https://kokkinizita.linuxaudio.org")
1512 (synopsis "C++ wrapper around the ALSA API")
1513 (description
1514 "clalsadrv is a C++ wrapper around the ALSA API simplifying access to
1515 ALSA PCM devices.")
1516 (license license:gpl2+)))
1517
1518 (define-public amb-plugins
1519 (package
1520 (name "amb-plugins")
1521 (version "0.8.1")
1522 (source (origin
1523 (method url-fetch)
1524 (uri (string-append
1525 "http://kokkinizita.linuxaudio.org"
1526 "/linuxaudio/downloads/AMB-plugins-"
1527 version ".tar.bz2"))
1528 (sha256
1529 (base32
1530 "0x4blm4visjqj0ndqr0cg776v3b7lvplpc8cgi9n51llhavn0jpl"))))
1531 (build-system gnu-build-system)
1532 (arguments
1533 `(#:tests? #f ; no "check" target
1534 #:phases
1535 (modify-phases %standard-phases
1536 ;; no configure script
1537 (delete 'configure)
1538 (add-before 'install 'prepare-target-directory
1539 (lambda* (#:key outputs #:allow-other-keys)
1540 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1541 #t))
1542 (add-after 'unpack 'override-target-directory-and-tool-paths
1543 (lambda* (#:key outputs #:allow-other-keys)
1544 (substitute* "Makefile"
1545 (("/usr/lib/ladspa")
1546 (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1547 (("/usr/bin/install") (which "install"))
1548 (("/bin/rm") "#"))
1549 #t)))))
1550 (home-page "https://kokkinizita.linuxaudio.org")
1551 (synopsis "LADSPA ambisonics plugins")
1552 (description
1553 "The AMB plugins are a set of LADSPA ambisonics plugins, mainly to be
1554 used within Ardour. Features include: mono and stereo to B-format panning,
1555 horizontal rotator, square, hexagon and cube decoders.")
1556 (license license:gpl2+)))
1557
1558 (define-public mcp-plugins
1559 (package
1560 (name "mcp-plugins")
1561 (version "0.4.0")
1562 (source (origin
1563 (method url-fetch)
1564 (uri (string-append
1565 "http://kokkinizita.linuxaudio.org"
1566 "/linuxaudio/downloads/MCP-plugins-"
1567 version ".tar.bz2"))
1568 (sha256
1569 (base32
1570 "06a9r1l85jmg7l1cvc3788mk8ra0xagjfy1rmhw3b80y4n0vlnvc"))))
1571 (build-system gnu-build-system)
1572 (arguments
1573 `(#:tests? #f ; no "check" target
1574 #:phases
1575 (modify-phases %standard-phases
1576 ;; no configure script
1577 (delete 'configure)
1578 (add-before 'install 'prepare-target-directory
1579 (lambda* (#:key outputs #:allow-other-keys)
1580 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1581 #t))
1582 (add-after 'unpack 'override-target-directory
1583 (lambda* (#:key outputs #:allow-other-keys)
1584 (substitute* "Makefile"
1585 (("/usr") (assoc-ref outputs "out")))
1586 #t)))))
1587 (home-page "https://kokkinizita.linuxaudio.org")
1588 (synopsis "Chorus, phaser, and vintage high-pass and low-pass filters")
1589 (description
1590 "This package provides various LADSPA plugins. @code{cs_chorus} and
1591 @code{cs_phaser} provide chorus and phaser effects, respectively;
1592 @code{mvclpf24} provides four implementations of the low-pass filter used in
1593 vintage Moog synthesizers; @code{mvchpf24} is based on the voltage-controlled
1594 high-pass filter by Robert Moog. The filters attempt to accurately emulate
1595 the non-linear circuit elements of their original analog counterparts.")
1596 (license license:gpl2+)))
1597
1598 (define-public rev-plugins
1599 (package
1600 (name "rev-plugins")
1601 (version "0.7.1")
1602 (source (origin
1603 (method url-fetch)
1604 (uri (string-append
1605 "http://kokkinizita.linuxaudio.org"
1606 "/linuxaudio/downloads/REV-plugins-"
1607 version ".tar.bz2"))
1608 (sha256
1609 (base32
1610 "1ikpinxm00pkfi259bnkzhsy3miagrjgdihaaf5x4v7zac29j3g7"))))
1611 (build-system gnu-build-system)
1612 (arguments
1613 `(#:tests? #f ; no "check" target
1614 #:phases
1615 (modify-phases %standard-phases
1616 ;; no configure script
1617 (delete 'configure)
1618 (add-before 'install 'prepare-target-directory
1619 (lambda* (#:key outputs #:allow-other-keys)
1620 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1621 #t))
1622 (add-after 'unpack 'override-target-directory
1623 (lambda* (#:key outputs #:allow-other-keys)
1624 (substitute* "Makefile"
1625 (("/usr") (assoc-ref outputs "out")))
1626 #t)))))
1627 (home-page "https://kokkinizita.linuxaudio.org")
1628 (synopsis "LADSPA reverb plugin")
1629 (description
1630 "This package provides a stereo reverb LADSPA plugin based on the
1631 well-known greverb.")
1632 (license license:gpl2+)))
1633
1634 (define-public fil-plugins
1635 (package
1636 (name "fil-plugins")
1637 (version "0.3.0")
1638 (source (origin
1639 (method url-fetch)
1640 (uri (string-append
1641 "http://kokkinizita.linuxaudio.org"
1642 "/linuxaudio/downloads/FIL-plugins-"
1643 version ".tar.bz2"))
1644 (sha256
1645 (base32
1646 "1scfv9j7jrp50r565haa4rvxn1vk2ss86xssl5qgcr8r45qz42qw"))))
1647 (build-system gnu-build-system)
1648 (arguments
1649 `(#:tests? #f ; no "check" target
1650 #:phases
1651 (modify-phases %standard-phases
1652 ;; no configure script
1653 (delete 'configure)
1654 (add-before 'install 'prepare-target-directory
1655 (lambda* (#:key outputs #:allow-other-keys)
1656 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1657 #t))
1658 (add-after 'unpack 'override-target-directory
1659 (lambda* (#:key outputs #:allow-other-keys)
1660 (substitute* "Makefile"
1661 (("/usr") (assoc-ref outputs "out")))
1662 #t)))))
1663 (home-page "https://kokkinizita.linuxaudio.org")
1664 (synopsis "LADSPA four-band parametric equalizer plugin")
1665 (description
1666 "This package provides a LADSPA plugin for a four-band parametric
1667 equalizer. Each section has an active/bypass switch, frequency, bandwidth and
1668 gain controls. There is also a global bypass switch and gain control.
1669
1670 The 2nd order resonant filters are implemented using a Mitra-Regalia style
1671 lattice filter, which is stable even while parameters are being changed.
1672
1673 All switches and controls are internally smoothed, so they can be used @code{live}
1674 without any clicks or zipper noises. This makes this plugin suitable for use
1675 in systems that allow automation of plugin control ports, such as Ardour, or
1676 for stage use.")
1677 (license license:gpl2+)))
1678
1679 (define-public ste-plugins
1680 (package
1681 (name "ste-plugins")
1682 (version "0.0.2")
1683 (source (origin
1684 (method url-fetch)
1685 (uri (string-append
1686 "http://kokkinizita.linuxaudio.org"
1687 "/linuxaudio/downloads/STE-plugins-"
1688 version ".tar.bz2"))
1689 (sha256
1690 (base32
1691 "0s3c9w5xihs87cnd1lh9xgj3maabjdyh6bl766qp5lhkg3ax8zy6"))))
1692 (build-system gnu-build-system)
1693 (arguments
1694 `(#:tests? #f ; no "check" target
1695 #:phases
1696 (modify-phases %standard-phases
1697 ;; no configure script
1698 (delete 'configure)
1699 (add-before 'install 'prepare-target-directory
1700 (lambda* (#:key outputs #:allow-other-keys)
1701 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1702 #t))
1703 (add-after 'unpack 'override-target-directory
1704 (lambda* (#:key outputs #:allow-other-keys)
1705 (substitute* "Makefile"
1706 (("/usr") (assoc-ref outputs "out")))
1707 #t)))))
1708 (home-page "https://kokkinizita.linuxaudio.org")
1709 (synopsis "LADSPA stereo width plugin")
1710 (description
1711 "This package provides a LADSPA plugin to manipulate the stereo width of
1712 audio signals.")
1713 (license license:gpl2+)))
1714
1715 (define-public vco-plugins
1716 (package
1717 (name "vco-plugins")
1718 (version "0.3.0")
1719 (source (origin
1720 (method url-fetch)
1721 (uri (string-append
1722 "http://kokkinizita.linuxaudio.org"
1723 "/linuxaudio/downloads/VCO-plugins-"
1724 version ".tar.bz2"))
1725 (sha256
1726 (base32
1727 "1xzqdg3b07r7zww05y9bb737l9dxvfkv28m3fyak1aazaci3rsgl"))))
1728 (build-system gnu-build-system)
1729 (arguments
1730 `(#:tests? #f ; no "check" target
1731 #:phases
1732 (modify-phases %standard-phases
1733 ;; no configure script
1734 (delete 'configure)
1735 (add-before 'install 'prepare-target-directory
1736 (lambda* (#:key outputs #:allow-other-keys)
1737 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1738 #t))
1739 (add-after 'unpack 'override-target-directory
1740 (lambda* (#:key outputs #:allow-other-keys)
1741 (substitute* "Makefile"
1742 (("/usr") (assoc-ref outputs "out"))
1743 (("/bin/cp") (which "cp")))
1744 #t)))))
1745 (home-page "https://kokkinizita.linuxaudio.org")
1746 (synopsis "LADSPA plugin for synthesizer oscillators")
1747 (description
1748 "The @code{blvco} LADSPA plugin provides three anti-aliased oscillators:
1749
1750 @enumerate
1751 @item Pulse-VCO, a dirac pulse oscillator with flat amplitude spectrum
1752 @item Saw-VCO, a sawtooth oscillator with 1/F amplitude spectrum
1753 @item Rec-VCO, a square / rectangle oscillator
1754 @end enumerate\n
1755
1756 All oscillators are low-pass filtered to provide waveforms similar to the
1757 output of analog synthesizers such as the Moog Voyager.")
1758 (license license:gpl2+)))
1759
1760 (define-public wah-plugins
1761 (package
1762 (name "wah-plugins")
1763 (version "0.1.0")
1764 (source (origin
1765 (method url-fetch)
1766 (uri (string-append
1767 "http://kokkinizita.linuxaudio.org"
1768 "/linuxaudio/downloads/WAH-plugins-"
1769 version ".tar.bz2"))
1770 (sha256
1771 (base32
1772 "1wkbjarxdhjixkh7d5abralj11dj2xxg644fz3ycd7qyfgfvjfgd"))))
1773 (build-system gnu-build-system)
1774 (arguments
1775 `(#:tests? #f ; no "check" target
1776 #:phases
1777 (modify-phases %standard-phases
1778 ;; no configure script
1779 (delete 'configure)
1780 (add-before 'install 'prepare-target-directory
1781 (lambda* (#:key outputs #:allow-other-keys)
1782 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1783 #t))
1784 (add-after 'unpack 'override-target-directory
1785 (lambda* (#:key outputs #:allow-other-keys)
1786 (substitute* "Makefile"
1787 (("/usr") (assoc-ref outputs "out")))
1788 #t)))))
1789 (home-page "https://kokkinizita.linuxaudio.org")
1790 (synopsis "LADSPA Autowah effect plugin")
1791 (description
1792 "This package provides a LADSPA plugin for a Wah effect with envelope
1793 follower.")
1794 (license license:gpl2+)))
1795
1796 (define-public g2reverb
1797 (package
1798 (name "g2reverb")
1799 (version "0.7.1")
1800 (source (origin
1801 (method url-fetch)
1802 (uri (string-append
1803 "http://kokkinizita.linuxaudio.org"
1804 "/linuxaudio/downloads/g2reverb-"
1805 version ".tar.bz2"))
1806 (sha256
1807 (base32
1808 "18wb8vj1kky5glr76s34awbi8qzplsmf3wjbd7a12hfv4j0bkwrj"))))
1809 (build-system gnu-build-system)
1810 (arguments
1811 `(#:tests? #f ; no "check" target
1812 #:phases
1813 (modify-phases %standard-phases
1814 ;; no configure script
1815 (delete 'configure)
1816 (add-before 'install 'prepare-target-directory
1817 (lambda* (#:key outputs #:allow-other-keys)
1818 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1819 #t))
1820 (add-after 'unpack 'override-target-directory
1821 (lambda* (#:key outputs #:allow-other-keys)
1822 (substitute* "Makefile"
1823 (("/usr") (assoc-ref outputs "out")))
1824 #t)))))
1825 (home-page "https://kokkinizita.linuxaudio.org")
1826 (synopsis "LADSPA stereo reverb plugin")
1827 (description
1828 "This package provides a LADSPA plugin for a stereo reverb effect.")
1829 (license license:gpl2+)))
1830
1831 (define-public fluidsynth
1832 (package
1833 (name "fluidsynth")
1834 (version "2.2.4")
1835 (source (origin
1836 (method git-fetch)
1837 (uri (git-reference
1838 (url "https://github.com/FluidSynth/fluidsynth")
1839 (commit (string-append "v" version))))
1840 (file-name (git-file-name name version))
1841 (sha256
1842 (base32
1843 "1061rdj69503spkd8vmfl3fqvyg4l41k5xcc4gw7niy31hnpnjmn"))))
1844 (build-system cmake-build-system)
1845 (arguments
1846 '(#:tests? #f ; no check target
1847 #:phases
1848 (modify-phases %standard-phases
1849 (add-after 'unpack 'fix-libdir
1850 (lambda _
1851 ;; Install libraries to /lib, not /lib64.
1852 (substitute* "CMakeLists.txt"
1853 (("LIB_SUFFIX \\$\\{_init_lib_suffix\\}")
1854 "LIB_SUFFIX \"\"")))))))
1855 (inputs
1856 (list ladspa))
1857 (native-inputs
1858 (list pkg-config))
1859 (propagated-inputs
1860 ;; In Libs.private of fluidsynth.pc.
1861 (list alsa-lib
1862 glib
1863 jack-1
1864 lash
1865 libsndfile
1866 readline))
1867 (home-page "https://www.fluidsynth.org/")
1868 (synopsis "SoundFont synthesizer")
1869 (description
1870 "FluidSynth is a real-time software synthesizer based on the SoundFont 2
1871 specifications. FluidSynth reads and handles MIDI events from the MIDI input
1872 device. It is the software analogue of a MIDI synthesizer. FluidSynth can
1873 also play midifiles using a Soundfont.")
1874 (license license:lgpl2.1+)))
1875
1876 (define-public faad2
1877 (package
1878 (name "faad2")
1879 (version "2.8.8")
1880 (source
1881 (origin
1882 (method url-fetch)
1883 (uri
1884 (string-append "mirror://sourceforge/faac/faad2-src/faad2-"
1885 (version-major+minor version) ".0/"
1886 "faad2-" version ".tar.gz"))
1887 (sha256
1888 (base32 "0va284hndhn0ynm4lyn219qw4y8wa4agfkqgwlaji7bqp6nkyp4q"))))
1889 (build-system gnu-build-system)
1890 (home-page "https://www.audiocoding.com/faad2.html")
1891 (synopsis "MPEG-4 and MPEG-2 AAC decoder")
1892 (description
1893 "FAAD2 is an MPEG-4 and MPEG-2 AAC decoder supporting LC, Main, LTP, SBR, -PS, and DAB+.")
1894 (license license:gpl2+)))
1895
1896 (define-public faust
1897 (package
1898 (name "faust")
1899 (version "0.9.90")
1900 (source (origin
1901 (method git-fetch)
1902 (uri (git-reference
1903 (url "https://github.com/grame-cncm/faust")
1904 (commit (string-append "v"
1905 (string-map (lambda (c)
1906 (if (char=? c #\.) #\- c))
1907 version)))))
1908 (file-name (string-append "faust-" version "-checkout"))
1909 (sha256
1910 (base32
1911 "0qc6iwjd3i80jdyjc186c6ywipmjzl8wlsp4050pbr56q4rlkd4z"))))
1912 (build-system gnu-build-system)
1913 (arguments
1914 `(#:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
1915 #:tests? #f
1916 #:phases
1917 (modify-phases %standard-phases
1918 ;; no "configure" script
1919 (delete 'configure)
1920 ;; Files appear under $out/share/faust that are read-only. The
1921 ;; install phase tries to overwrite them and fails, so we change
1922 ;; the permissions first.
1923 (add-before 'install 'fix-permissions
1924 (lambda _
1925 (for-each (lambda (file)
1926 (chmod file #o644))
1927 (find-files "architecture/max-msp" ".*"))
1928 #t)))))
1929 (native-inputs
1930 (list unzip))
1931 (home-page "https://faust.grame.fr/")
1932 (synopsis "Signal processing language")
1933 (description
1934 "Faust is a programming language for realtime audio signal processing.")
1935 (license license:gpl2+)))
1936
1937 ;; This version is needed to build older synths that require the lv2synth.cpp
1938 ;; architecture file, such as sorcer.
1939 (define-public faust-0.9.67
1940 (package
1941 (inherit faust)
1942 (name "faust")
1943 (version "0.9.67")
1944 (source (origin
1945 (method git-fetch)
1946 (uri (git-reference
1947 (url "https://github.com/grame-cncm/faust")
1948 (commit (string-append "v"
1949 (string-map (lambda (c)
1950 (if (char=? c #\.) #\- c))
1951 version)))))
1952 (file-name (git-file-name name version))
1953 (sha256
1954 (base32
1955 "0856x666s6ymzk8v15f9gy402dbr8c9v2s40hyfadhraqljmqrm0"))
1956 (snippet
1957 ;; Remove prebuilt library
1958 '(delete-file "architecture/android/libs/armeabi-v7a/libfaust_dsp.so"))))
1959 (build-system gnu-build-system)
1960 (arguments
1961 (list
1962 #:make-flags
1963 #~(list (string-append "prefix=" #$output))
1964 #:tests? #f
1965 #:phases
1966 '(modify-phases %standard-phases
1967 ;; no "configure" script
1968 (delete 'configure))))
1969 (native-inputs (list unzip))))
1970
1971 (define-public faust-2
1972 (package
1973 (inherit faust)
1974 (version "2.41.1")
1975 (source (origin
1976 (method url-fetch)
1977 (uri (string-append "https://github.com/grame-cncm/faust/"
1978 "releases/download/" version
1979 "/faust-" version ".tar.gz"))
1980 (sha256
1981 (base32
1982 "0gk8ifxrbykq7ay0nvjns8fjryhp0wfhv5npgrl8xpgw9wfmw53j"))))
1983 (build-system cmake-build-system)
1984 (arguments
1985 `(#:tests? #f ; no tests
1986 #:phases
1987 (modify-phases %standard-phases
1988 ;; The upstream package uses make to run cmake during the build stage.
1989 ;; Here we ignore the Makefile and call cmake directly.
1990 (replace 'configure
1991 (lambda _
1992 (chdir "build")
1993 (invoke "cmake" "-C" "backends/all.cmake"
1994 (string-append "-DCMAKE_INSTALL_PREFIX="
1995 (assoc-ref %outputs "out")))))
1996 ;; The sound2faust tool would be built in the Makefile's "world" target
1997 (add-after 'install 'sound2faust
1998 (lambda _
1999 (chdir "../tools/sound2faust")
2000 (setenv "PREFIX" (assoc-ref %outputs "out"))
2001 (invoke "make")
2002 (invoke "make" "install"))))))
2003 (native-inputs
2004 `(("llvm" ,llvm)
2005 ("which" ,which)
2006 ("xxd" ,xxd)
2007 ("ctags" ,emacs-minimal) ; for ctags
2008 ("pkg-config" ,pkg-config)))
2009 (inputs
2010 (list libsndfile libmicrohttpd ncurses openssl zlib))))
2011
2012 (define-public freepats
2013 (package
2014 (name "freepats")
2015 (version "20060219")
2016 (source (origin
2017 (method url-fetch)
2018 (uri (string-append "http://freepats.zenvoid.org/freepats-"
2019 version ".tar.bz2"))
2020 (sha256
2021 (base32
2022 "12iw36rd94zirll96cd5k0va7p5hxmf2shvjlhzihcmjaw8flq82"))))
2023 (build-system trivial-build-system)
2024 (arguments
2025 `(#:modules ((guix build utils))
2026 #:builder (begin
2027 (use-modules (guix build utils))
2028 (let ((out (string-append %output "/share/freepats")))
2029 (setenv "PATH" (string-append
2030 (assoc-ref %build-inputs "bzip2") "/bin:"
2031 (assoc-ref %build-inputs "tar") "/bin"))
2032 (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
2033 (chdir "freepats")
2034 ;; Use absolute pattern references
2035 (substitute* "freepats.cfg"
2036 (("Tone_000") (string-append out "/Tone_000"))
2037 (("Drum_000") (string-append out "/Drum_000")))
2038 (mkdir-p out)
2039 (copy-recursively "." out)
2040 #t))))
2041 (native-inputs
2042 (list tar bzip2))
2043 (home-page "http://freepats.zenvoid.org")
2044 (synopsis "GUS compatible patches for MIDI players")
2045 (description
2046 "FreePats is a project to create a free and open set of GUS compatible
2047 patches that can be used with softsynths such as Timidity and WildMidi.")
2048 ;; GPLv2+ with exception for compositions using these patches.
2049 (license license:gpl2+)))
2050
2051 (define-public freepats-gm
2052 (package
2053 (name "freepats-gm")
2054 (version "20210329")
2055 (source (origin
2056 (method url-fetch)
2057 (uri (string-append "https://freepats.zenvoid.org/SoundSets/"
2058 "FreePats-GeneralMIDI/FreePatsGM-SF2-" version ".7z"))
2059 (sha256
2060 (base32
2061 "19a1mp9yi33j2zff4mjvhrjz97dwwgjwzfdlf84j9xyydhx0crhc"))))
2062 (build-system trivial-build-system)
2063 (native-inputs
2064 `(("p7zip" ,p7zip)))
2065 (arguments
2066 `(#:modules ((guix build utils))
2067 #:builder
2068 (let ((dir (string-append "FreePatsGM-SF2-" ,version))
2069 (file (string-append "FreePatsGM-" ,version ".sf2"))
2070 (out (string-append %output "/share/soundfonts"))
2071 (doc (string-append %output "/share/doc/freepats-gm-" ,version)))
2072 (use-modules (guix build utils))
2073 (invoke (string-append (assoc-ref %build-inputs "p7zip") "/bin/7z")
2074 "e" (assoc-ref %build-inputs "source")
2075 (string-append dir "/" file)
2076 (string-append dir "/gpl.txt")
2077 (string-append dir "/cc0.txt")
2078 (string-append dir "/readme.txt"))
2079 (mkdir-p out)
2080 (copy-file file (string-append out "/FreePatsGM.sf2"))
2081 (mkdir-p doc)
2082 (for-each
2083 (lambda (file)
2084 (copy-file file (string-append doc "/" file)))
2085 (find-files "." "\\.txt$"))
2086 #t)))
2087 (home-page "https://freepats.zenvoid.org/SoundSets/general-midi.html")
2088 (synopsis "General MIDI sound set")
2089 (description "FreePats is a project to create a free (as in free software)
2090 collection of digital instruments for music production. This sound bank is a
2091 partial release of the General MIDI sound set.")
2092 (license (list
2093 license:gpl3+ ; with sampling exception
2094 license:cc0))))
2095
2096 (define-public guitarix
2097 (package
2098 (name "guitarix")
2099 (version "0.43.1")
2100 (source (origin
2101 (method url-fetch)
2102 (uri (string-append
2103 "mirror://sourceforge/guitarix/guitarix/guitarix2-"
2104 version ".tar.xz"))
2105 (sha256
2106 (base32
2107 "1bsjlfd7x09p3iiljilyfbns6hpqn9cgp6psl4ccd6i1lwascfrm"))))
2108 (build-system waf-build-system)
2109 (arguments
2110 `(#:tests? #f ; no "check" target
2111 #:configure-flags
2112 (list
2113 ;; Add the output lib directory to the RUNPATH.
2114 (string-append "--ldflags=-Wl,-rpath=" %output "/lib"))))
2115 (inputs
2116 (list libsndfile
2117 boost
2118 curl
2119 avahi
2120 eigen
2121 lv2
2122 lilv
2123 ladspa
2124 jack-1
2125 gtkmm-3
2126 gtk+
2127 fftwf
2128 lrdf
2129 zita-resampler
2130 zita-convolver))
2131 (native-inputs
2132 `(("gperf" ,gperf)
2133 ("faust" ,faust)
2134 ("intltool" ,intltool)
2135 ("gettext" ,gettext-minimal)
2136 ("pkg-config" ,pkg-config)
2137 ("sassc" ,sassc)))
2138 (native-search-paths
2139 (list (search-path-specification
2140 (variable "LV2_PATH")
2141 (files '("lib/lv2")))))
2142 (home-page "https://guitarix.org/")
2143 (synopsis "Virtual guitar amplifier")
2144 (description "Guitarix is a virtual guitar amplifier running JACK.
2145 Guitarix takes the signal from your guitar as a mono-signal from your sound
2146 card. The input is processed by a main amp and a rack-section. Both can be
2147 routed separately and deliver a processed stereo-signal via JACK. You may
2148 fill the rack with effects from more than 25 built-in modules including stuff
2149 from a simple noise gate to modulation effects like flanger, phaser or
2150 auto-wah.")
2151 (license license:gpl2+)))
2152
2153 (define-public guitarix-lv2
2154 (package (inherit guitarix)
2155 (name "guitarix-lv2")
2156 (arguments
2157 (substitute-keyword-arguments (package-arguments guitarix)
2158 ((#:configure-flags flags)
2159 `(cons "--no-standalone" ,flags))))))
2160
2161 (define-public rakarrack
2162 (package
2163 (name "rakarrack")
2164 (version "0.6.1")
2165 (source (origin
2166 (method url-fetch)
2167 (uri (string-append "mirror://sourceforge/rakarrack/rakarrack/"
2168 "rakarrack-" version "/rakarrack-"
2169 version ".tar.bz2"))
2170 (sha256
2171 (base32
2172 "1rpf63pdn54c4yg13k7cb1w1c7zsvl97c4qxcpz41c8l91xd55kn"))
2173 (modules '((guix build utils)))
2174 (snippet
2175 '(begin
2176 (substitute* '("src/process.C"
2177 "src/global.h")
2178 (("#include <Fl/") "#include <FL/"))
2179 #t))))
2180 (build-system gnu-build-system)
2181 (inputs
2182 (list alsa-utils
2183 fltk
2184 libx11
2185 libxext
2186 libxfixes
2187 libxft
2188 libxrender
2189 libxpm
2190 fontconfig
2191 freetype
2192 jack-1
2193 alsa-lib
2194 libsndfile
2195 libsamplerate
2196 zlib))
2197 (home-page "http://rakarrack.sourceforge.net/")
2198 (synopsis "Audio effects processor")
2199 (description
2200 "Rakarrack is a richly featured multi-effects processor emulating a
2201 guitar effects pedalboard. Effects include compressor, expander, noise gate,
2202 equalizers, exciter, flangers, chorus, various delay and reverb effects,
2203 distortion modules and many more. Most of the effects engine is built from
2204 modules found in the excellent software synthesizer ZynAddSubFX. Presets and
2205 user interface are optimized for guitar, but Rakarrack processes signals in
2206 stereo while it does not apply internal band-limiting filtering, and thus is
2207 well suited to all musical instruments and vocals.")
2208 ;; The code is explicitly licensed under the GPL version 2 only.
2209 (license license:gpl2)))
2210
2211 (define-public ir
2212 (package
2213 (name "ir")
2214 (version "1.3.4")
2215 (source (origin
2216 (method git-fetch)
2217 (uri (git-reference
2218 (url "https://github.com/tomszilagyi/ir.lv2")
2219 (commit version)))
2220 (file-name (git-file-name name version))
2221 (sha256
2222 (base32
2223 "0svmjhg4r6wy5ci5rwz43ybll7yxjv7nnj7nyqscbzhr3gi5aib0"))))
2224 (build-system gnu-build-system)
2225 (arguments
2226 `(#:tests? #f ; no tests
2227 #:make-flags
2228 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
2229 (string-append "INSTDIR="
2230 (assoc-ref %outputs "out") "/lib/lv2"))
2231 #:phases
2232 (modify-phases %standard-phases
2233 (delete 'configure) ; no configure script
2234 ;; See https://github.com/tomszilagyi/ir.lv2/pull/20
2235 (add-after 'unpack 'fix-type
2236 (lambda _
2237 (substitute* '("ir_gui.cc" "lv2_ui.h")
2238 (("_LV2UI_Descriptor") "LV2UI_Descriptor"))
2239 #t)))))
2240 (inputs
2241 (list libsndfile
2242 libsamplerate
2243 lv2
2244 glib
2245 gtk+-2
2246 zita-convolver))
2247 (native-inputs
2248 (list pkg-config))
2249 (native-search-paths
2250 (list (search-path-specification
2251 (variable "LV2_PATH")
2252 (files '("lib/lv2")))))
2253 (home-page "https://tomszilagyi.github.io/plugins/ir.lv2")
2254 (synopsis "LV2 convolution reverb")
2255 (description
2256 "IR is a low-latency, real-time, high performance signal convolver
2257 especially for creating reverb effects. It supports impulse responses with 1,
2258 2 or 4 channels, in any soundfile format supported by libsndfile.")
2259 (license license:gpl2+)))
2260
2261 (define-public jack-1
2262 (package
2263 (name "jack")
2264 (version "0.125.0")
2265 (source
2266 (origin
2267 (method url-fetch)
2268 ;; jackaudio.org/downloads/jack-audio-connection-kit-0.125.0.tar.gz
2269 ;; no longer exists (404). Use an unofficial mirror.
2270 (uri (string-append "https://crux.ster.zone/downloads/"
2271 "jack-audio-connection-kit/"
2272 "jack-audio-connection-kit-" version ".tar.gz"))
2273 (sha256
2274 (base32 "0i6l25dmfk2ji2lrakqq9icnwjxklgcjzzk65dmsff91z2zva5rm"))))
2275 (build-system gnu-build-system)
2276 (arguments
2277 `(#:phases (modify-phases %standard-phases
2278 (add-after 'unpack 'patch-configure
2279 (lambda _
2280 (substitute* "configure"
2281 ;; Install to <out/lib> regardless of platform.
2282 (("libnn=lib64") "libnn=lib"))
2283 #t)))))
2284 (inputs
2285 (list alsa-lib readline))
2286 ;; uuid.h is included in the JACK type headers
2287 ;; db.h is included in the libjack metadata headers
2288 (propagated-inputs
2289 `(("libuuid" ,util-linux "lib")
2290 ("bdb" ,bdb)))
2291 (native-inputs
2292 (list pkg-config))
2293 (home-page "https://jackaudio.org/")
2294 (synopsis "JACK audio connection kit")
2295 (description
2296 "JACK is a low-latency audio server. It can connect a number of
2297 different applications to an audio device, as well as allowing them to share
2298 audio between themselves. JACK is different from other audio server efforts
2299 in that it has been designed from the ground up to be suitable for
2300 professional audio work. This means that it focuses on two key areas:
2301 synchronous execution of all clients, and low latency operation.")
2302 ;; Most files are licensed under the GPL. However, the libjack/ tree is
2303 ;; licensed under the LGPL in order to allow for proprietary usage.
2304 (license (list license:gpl2+ license:lgpl2.1+))))
2305
2306 ;; Packages depending on JACK should always prefer jack-1. Both jack-1 and
2307 ;; jack-2 implement the same API. JACK2 is provided primarily as a client
2308 ;; program for users who might benefit from the D-BUS features.
2309 (define-public jack-2
2310 (package
2311 (inherit jack-1)
2312 (name "jack2")
2313 (version "1.9.21")
2314 (source (origin
2315 (method git-fetch)
2316 (uri (git-reference
2317 (url "https://github.com/jackaudio/jack2")
2318 (commit (string-append "v" version))))
2319 (file-name (git-file-name name version))
2320 (sha256
2321 (base32
2322 "0sbrffmdbajvrk7iqvsvrnwnpvmicvbjyq3f52r6ashdsznsz03b"))))
2323 (build-system waf-build-system)
2324 (arguments
2325 `(#:tests? #f ; no check target
2326 #:configure-flags '("--dbus" "--alsa")
2327 #:phases
2328 (modify-phases %standard-phases
2329 (add-before 'configure 'set-linkflags
2330 (lambda _
2331 ;; Ensure -lstdc++ is the tail of LDFLAGS or the simdtests.cpp
2332 ;; will not link with undefined reference to symbol
2333 ;; '__gxx_personality_v0@@CXXABI_1.3'
2334 (setenv "LDFLAGS" "-lstdc++")
2335 ;; Add $libdir to the RUNPATH of all the binaries.
2336 (substitute* "wscript"
2337 ((".*CFLAGS.*-Wall.*" m)
2338 (string-append m
2339 " conf.env.append_unique('LINKFLAGS',"
2340 "'-Wl,-rpath=" %output "/lib')\n")))))
2341 (add-after 'install 'wrap-python-scripts
2342 (lambda* (#:key outputs #:allow-other-keys)
2343 ;; Make sure 'jack_control' runs with the correct PYTHONPATH.
2344 (wrap-program (search-input-file outputs "bin/jack_control")
2345 `("GUIX_PYTHONPATH" ":"
2346 prefix (,(getenv "GUIX_PYTHONPATH")))))))))
2347 (inputs
2348 (list alsa-lib
2349 dbus
2350 expat
2351 libsamplerate
2352 opus
2353 python-dbus
2354 readline))
2355 (native-inputs
2356 (list pkg-config))
2357 ;; Most files are under GPLv2+, but some headers are under LGPLv2.1+
2358 (license (list license:gpl2+ license:lgpl2.1+))))
2359
2360 (define-public jalv
2361 (package
2362 (name "jalv")
2363 (version "1.6.6")
2364 (source (origin
2365 (method url-fetch)
2366 (uri (string-append "https://download.drobilla.net/jalv-"
2367 version ".tar.bz2"))
2368 (sha256
2369 (base32
2370 "05lycfq0f06zjp5xqvzjz9hx9kmqx72yng1lghh76hv63dw43lcj"))))
2371 (build-system waf-build-system)
2372 (arguments
2373 `(#:tests? #f)) ; no check target
2374 (inputs
2375 (list lv2
2376 lilv
2377 suil
2378 gtk
2379 gtkmm
2380 qtbase-5
2381 jack-1))
2382 (native-inputs
2383 (list pkg-config))
2384 (home-page "https://drobilla.net/software/jalv/")
2385 (synopsis "Simple LV2 host for JACK")
2386 (description
2387 "Jalv is a simple but fully featured LV2 host for JACK. It runs LV2
2388 plugins and exposes their ports as JACK ports, essentially making any LV2
2389 plugin function as a JACK application.")
2390 (license license:isc)))
2391
2392 (define-public ladspa
2393 (package
2394 (name "ladspa")
2395 (version "1.13")
2396 (source
2397 (origin
2398 (method url-fetch)
2399 ;; Since the official link is dead,
2400 ;; we download the tarball from Debian or Internet Archive.
2401 (uri (list (string-append "http://http.debian.net"
2402 "/debian/pool/main/l/ladspa-sdk/ladspa-sdk_"
2403 version ".orig.tar.gz")
2404 (string-append "https://web.archive.org/web/20140717172251/"
2405 "http://www.ladspa.org/download/ladspa_sdk_"
2406 version ".tgz")))
2407 (sha256
2408 (base32
2409 "0srh5n2l63354bc0srcrv58rzjkn4gv8qjqzg8dnq3rs4m7kzvdm"))))
2410 (build-system gnu-build-system)
2411 (arguments
2412 `(#:tests? #f ; the "test" target is a listening test only
2413 #:phases
2414 (modify-phases %standard-phases
2415 (replace 'configure
2416 (lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
2417 (chdir "src")
2418 (let ((out (assoc-ref outputs "out")))
2419 (substitute* "makefile"
2420 (("/usr/lib/ladspa/") (string-append out "/lib/ladspa/"))
2421 (("/usr/include/") (string-append out "/include/"))
2422 (("/usr/bin/") (string-append out "/bin/"))
2423 (("-mkdirhier") "mkdir -p")
2424 (("^CC.*") "CC = gcc\n")
2425 (("^CPP.*") "CPP = g++\n")))
2426 #t))
2427 (delete 'build))))
2428 ;; Since the home page is gone, we provide a link to the archived version.
2429 (home-page
2430 "https://web.archive.org/web/20140729190945/http://www.ladspa.org/")
2431 (synopsis "Linux Audio Developer's Simple Plugin API (LADSPA)")
2432 (description
2433 "LADSPA is a standard that allows software audio processors and effects
2434 to be plugged into a wide range of audio synthesis and recording packages.")
2435 (license license:lgpl2.1+)))
2436
2437 (define-public lash
2438 (package
2439 (name "lash")
2440 (version "0.6.0-rc2")
2441 (source (origin
2442 (method url-fetch)
2443 ;; The tilde is not permitted in the builder name, but is used
2444 ;; in the tarball.
2445 (uri (string-append
2446 "mirror://savannah/lash/lash-"
2447 (string-join (string-split version #\-) "~")
2448 ".tar.bz2"))
2449 (file-name (string-append name "-" version ".tar.bz2"))
2450 (sha256
2451 (base32
2452 "12z1vx3krrzsfccpah9xjs68900xvr7bw92wx8np5871i2yv47iw"))))
2453 (build-system gnu-build-system)
2454 (arguments
2455 '(;; Glibc no longer includes Sun RPC support, so tell the build system
2456 ;; to use libtirpc instead.
2457 #:make-flags (list (string-append "CFLAGS=-I"
2458 (assoc-ref %build-inputs "libtirpc")
2459 "/include/tirpc -ltirpc"))
2460 #:phases
2461 (modify-phases %standard-phases
2462 ;; lashd embeds an ancient version of sigsegv so we just skip it
2463 (add-after 'unpack 'skip-lashd
2464 (lambda _
2465 (substitute* '("Makefile.am" "Makefile.in")
2466 (("lashd ") ""))
2467 #t)))
2468 #:configure-flags '("--disable-static")))
2469 (inputs
2470 `(("bdb" ,bdb)
2471 ("gtk" ,gtk+-2)
2472 ("jack" ,jack-1)
2473 ("libtirpc" ,libtirpc)
2474 ("readline" ,readline)
2475 ("python" ,python-2)))
2476 ;; According to pkg-config, packages depending on lash also need to have
2477 ;; at least the following packages declared as inputs.
2478 (propagated-inputs
2479 (list alsa-lib dbus libxml2))
2480 (native-inputs
2481 (list pkg-config))
2482 (home-page "https://www.nongnu.org/lash/")
2483 (synopsis "Audio application session manager")
2484 (description
2485 "LASH is a session management system for audio applications. It allows
2486 you to save and restore audio sessions consisting of multiple interconneced
2487 applications, restoring program state (i.e. loaded patches) and the
2488 connections between them.")
2489 (license license:gpl2+)))
2490
2491 (define-public libbs2b
2492 (package
2493 (name "libbs2b")
2494 (version "3.1.0")
2495 (source (origin
2496 (method url-fetch)
2497 (uri (string-append "mirror://sourceforge/bs2b/libbs2b/" version
2498 "/libbs2b-" version ".tar.lzma"))
2499 (sha256
2500 (base32
2501 "1mcc4gjkmphczjybnsrip3gq1f974knzys7x49bv197xk3fn8wdr"))))
2502 (build-system gnu-build-system)
2503 (native-inputs (list pkg-config))
2504 (inputs (list libsndfile))
2505 (home-page "https://sourceforge.net/projects/bs2b/")
2506 (synopsis "Bauer stereophonic-to-binaural DSP")
2507 (description
2508 "The Bauer stereophonic-to-binaural DSP (bs2b) library and plugins is
2509 designed to improve headphone listening of stereo audio records. Recommended
2510 for headphone prolonged listening to disable superstereo fatigue without
2511 essential distortions.")
2512 (license license:expat)))
2513
2514 (define-public ladspa-bs2b
2515 (package
2516 (name "ladspa-bs2b")
2517 (version "0.9.1")
2518 (source (origin
2519 (method url-fetch)
2520 (uri (string-append
2521 "mirror://sourceforge/bs2b/plugins/LADSPA%20plugin/"
2522 version "/" name "-" version ".tar.gz"))
2523 (sha256
2524 (base32
2525 "1b4aipbj1ba5k99gbc7gmgy14sywyrjd8rpyqj5l905j0mjv8jg2"))))
2526 (build-system gnu-build-system)
2527 (native-inputs (list pkg-config))
2528 (inputs (list ladspa libbs2b))
2529 (home-page "https://sourceforge.net/projects/bs2b/")
2530 (synopsis "Bauer stereophonic-to-binaural DSP - LADSPA plugin")
2531 (description "The Bauer stereophonic-to-binaural DSP (bs2b) library and
2532 plugins is designed to improve headphone listening of stereo audio records.
2533 Recommended for headphone prolonged listening to disable superstereo fatigue
2534 without essential distortions. This package contains a LADSPA plugin for use
2535 with applications that support them (e.g. PulseAudio).")
2536 (license license:gpl2+)))
2537
2538 (define-public liblo
2539 (package
2540 (name "liblo")
2541 (version "0.31")
2542 (source (origin
2543 (method url-fetch)
2544 (uri (string-append "mirror://sourceforge/liblo/liblo/" version
2545 "/liblo-" version ".tar.gz"))
2546 (sha256
2547 (base32
2548 "0l67rkdhfa8cffa0nynql3lh2xlbn1454h6qxhjddp1029p48krb"))))
2549 (build-system gnu-build-system)
2550 (arguments
2551 `(;; liblo test FAILED
2552 ;; liblo server error 19 in setsockopt(IP_ADD_MEMBERSHIP): No such device
2553 #:tests? #f))
2554 (home-page "http://liblo.sourceforge.net")
2555 (synopsis "Implementation of the Open Sound Control protocol")
2556 (description
2557 "liblo is a lightweight library that provides an easy to use
2558 implementation of the Open Sound Control (@dfn{OSC}) protocol.")
2559 (license license:lgpl2.1+)))
2560
2561 (define-public rtaudio
2562 (package
2563 (name "rtaudio")
2564 (version "5.1.0")
2565 (source
2566 (origin
2567 (method git-fetch)
2568 (uri (git-reference
2569 (url "https://github.com/thestk/rtaudio")
2570 (commit version)))
2571 (file-name (git-file-name name version))
2572 (sha256
2573 (base32 "156c2dgh6jrsyfn1y89nslvaxm4yifmxridsb708yvkaym02w2l8"))))
2574 (build-system cmake-build-system)
2575 (arguments
2576 `(#:phases
2577 (modify-phases %standard-phases
2578 ;; The header that pkg-config expects is include/rtaudio/RtAudio.h,
2579 ;; but this package installs it as include/RtAudio.h by default.
2580 (add-after 'install 'fix-inc-path
2581 (lambda* (#:key outputs #:allow-other-keys)
2582 (let* ((out (assoc-ref outputs "out"))
2583 (inc (string-append out "/include")))
2584 (mkdir-p (string-append inc "/rtaudio"))
2585 (rename-file (string-append inc "/RtAudio.h")
2586 (string-append inc "/rtaudio/RtAudio.h"))))))))
2587 (native-inputs
2588 (list pkg-config))
2589 (inputs
2590 (list alsa-lib jack-1 pulseaudio))
2591 (synopsis "Common API for real-time audio I/O")
2592 (description
2593 "RtAudio is a set of C++ classes that provides a common API for real-time
2594 audio input/output. It was designed with the following objectives:
2595
2596 @itemize
2597 @item object-oriented C++ design
2598 @item simple, common API across all supported platforms
2599 @item only one source and one header file for easy inclusion in programming
2600 projects
2601 @item allow simultaneous multi-api support
2602 @item support dynamic connection of devices
2603 @item provide extensive audio device parameter control
2604 @item allow audio device capability probing
2605 @item automatic internal conversion for data format, channel number
2606 compensation, (de)interleaving, and byte-swapping
2607 @end itemize")
2608 (home-page "https://www.music.mcgill.ca/~gary/rtaudio/")
2609 ;; License is expat with a non-binding request to send modifications to
2610 ;; original developer.
2611 (license license:expat)))
2612
2613 (define-public python-pyaudio
2614 (package
2615 (name "python-pyaudio")
2616 (version "0.2.11")
2617 (source
2618 (origin
2619 (method url-fetch)
2620 (uri (pypi-uri "PyAudio" version))
2621 (sha256
2622 (base32
2623 "0x7vdsigm7xgvyg3shd3lj113m8zqj2pxmrgdyj66kmnw0qdxgwk"))))
2624 (build-system python-build-system)
2625 (inputs
2626 (list portaudio))
2627 (home-page "https://people.csail.mit.edu/hubert/pyaudio/")
2628 (synopsis "Bindings for PortAudio v19")
2629 (description "This package provides bindings for PortAudio v19, the
2630 cross-platform audio input/output stream library.")
2631 (license license:expat)))
2632
2633 (define-public python-pyliblo
2634 (package
2635 (name "python-pyliblo")
2636 (version "0.10.0")
2637 (source (origin
2638 (method url-fetch)
2639 (uri (string-append "http://das.nasophon.de/download/pyliblo-"
2640 version ".tar.gz"))
2641 (sha256
2642 (base32
2643 "13vry6xhxm7adnbyj28w1kpwrh0kf7nw83cz1yq74wl21faz2rzw"))))
2644 (build-system python-build-system)
2645 (arguments `(#:tests? #f)) ;no tests
2646 (native-inputs
2647 (list python-cython))
2648 (inputs
2649 (list liblo))
2650 (home-page "http://das.nasophon.de/pyliblo/")
2651 (synopsis "Python bindings for liblo")
2652 (description
2653 "Pyliblo is a Python wrapper for the liblo Open Sound Control (OSC)
2654 library. It supports almost the complete functionality of liblo, allowing you
2655 to send and receive OSC messages using a nice and simple Python API. Also
2656 included are the command line utilities @code{send_osc} and @code{dump_osc}.")
2657 (license license:lgpl2.1+)))
2658
2659 (define-public python-soundfile
2660 (package
2661 (name "python-soundfile")
2662 (version "0.10.3.post1")
2663 (source
2664 (origin
2665 (method url-fetch)
2666 (uri (pypi-uri "SoundFile" version))
2667 (sha256
2668 (base32
2669 "0yqhrfz7xkvqrwdxdx2ydy4h467sk7z3gf984y1x2cq7cm1gy329"))))
2670 (build-system python-build-system)
2671 (propagated-inputs
2672 (list python-cffi python-numpy libsndfile))
2673 (native-inputs
2674 (list python-pytest))
2675 (arguments
2676 `(#:tests? #f ; missing OGG support
2677 #:phases
2678 (modify-phases %standard-phases
2679 (add-after 'unpack 'patch
2680 (lambda* (#:key inputs #:allow-other-keys)
2681 (substitute* "soundfile.py"
2682 (("_find_library\\('sndfile'\\)")
2683 (string-append "\"" (assoc-ref inputs "libsndfile")
2684 "/lib/libsndfile.so\""))))))))
2685 (home-page "https://github.com/bastibe/SoundFile")
2686 (synopsis "Python bindings for libsndfile")
2687 (description "This package provides python bindings for libsndfile based on
2688 CFFI and NumPy.")
2689 (license license:expat)))
2690
2691 (define-public python-python3-midi
2692 (package
2693 (name "python-python3-midi")
2694 (version "0.2.5")
2695 (source
2696 (origin
2697 (method url-fetch)
2698 (uri (pypi-uri "python3_midi" version))
2699 (sha256
2700 (base32
2701 "1z9j1w7mpn3xhkcpxmqm5rvmj6nffb5rf14bv7n3sdh07nf6n7sf"))))
2702 (build-system python-build-system)
2703 (home-page "https://github.com/NFJones/python3-midi")
2704 (synopsis "Python MIDI API")
2705 (description "This package provides a python API to read and write MIDI
2706 files.")
2707 (license license:expat)))
2708
2709 (define-public audio-to-midi
2710 (package
2711 (name "audio-to-midi")
2712 (version "2020.7")
2713 (source
2714 (origin
2715 (method git-fetch)
2716 (uri (git-reference
2717 (url "https://github.com/NFJones/audio-to-midi")
2718 (commit (string-append "v" version))))
2719 (file-name (git-file-name name version))
2720 (sha256
2721 (base32
2722 "12wf17abn3psbsg2r2lk0xdnk8n5cd5rrvjlpxjnjfhd09n7qqgm"))))
2723 (build-system python-build-system)
2724 (propagated-inputs
2725 (list python-cffi
2726 python-cython
2727 python-numpy
2728 python-progressbar2
2729 python-pycparser
2730 python-python3-midi
2731 python-soundfile))
2732 (native-inputs
2733 (list libsndfile))
2734 (arguments
2735 `(#:phases
2736 (modify-phases %standard-phases
2737 (add-after 'unpack 'fix-versions
2738 (lambda _
2739 (substitute* "requirements.txt" (("==") ">=")))))))
2740 (home-page "https://github.com/NFJones/audio-to-midi")
2741 (synopsis "Convert audio to multichannel MIDI")
2742 (description "@command{audio-to-midi} converts audio files to multichannel
2743 MIDI files. It accomplishes this by performing FFTs on all channels of the
2744 audio data at user-specified time steps. It then separates the resulting
2745 frequency analysis into equivalence classes which correspond to the twelve tone
2746 scale; the volume of each class being the average volume of its constituent
2747 frequencies. This data is then formatted to MIDI and written to disk.")
2748 (license license:expat)))
2749
2750 (define-public lilv
2751 (package
2752 (name "lilv")
2753 (version "0.24.12")
2754 (source (origin
2755 (method url-fetch)
2756 (uri (string-append "https://download.drobilla.net/lilv-"
2757 version ".tar.bz2"))
2758 (sha256
2759 (base32
2760 "0qchfsyrsrp2pdpd59025kllycr04ddpzd03ha1iz70ci687g8r6"))))
2761 (build-system waf-build-system)
2762 (arguments
2763 `(#:tests? #f ; no check target
2764 #:phases
2765 (modify-phases %standard-phases
2766 (add-before 'configure 'set-ldflags
2767 (lambda* (#:key outputs #:allow-other-keys)
2768 (setenv "LDFLAGS"
2769 (string-append "-Wl,-rpath="
2770 (assoc-ref outputs "out") "/lib"))))
2771 (add-after 'unpack 'full-store-path-to-shared-library
2772 (lambda* (#:key outputs #:allow-other-keys)
2773 (with-directory-excursion "bindings/python"
2774 (substitute* "lilv.py"
2775 (("liblilv-0.so") (string-append (assoc-ref outputs "out")
2776 "/lib/liblilv-0.so")))))))))
2777 ;; Required by lilv-0.pc.
2778 (propagated-inputs
2779 (list lv2 serd sord sratom))
2780 (native-inputs
2781 (list python pkg-config))
2782 (home-page "https://drobilla.net/software/lilv")
2783 (synopsis "Library to simplify use of LV2 plugins in applications")
2784 (description
2785 "Lilv is a C library to make the use of LV2 plugins as simple as possible
2786 for applications. Lilv is the successor to SLV2, rewritten to be
2787 significantly faster and have minimal dependencies.")
2788 (license license:isc)))
2789
2790 (define-public lv2
2791 (package
2792 (name "lv2")
2793 (version "1.18.2")
2794 (source (origin
2795 (method url-fetch)
2796 (uri (string-append "https://lv2plug.in/spec/lv2-"
2797 version ".tar.bz2"))
2798 (sha256
2799 (base32
2800 "0pp0n9x1rg8d4fw853z9cvfifjdi4bl85yjxxddqa1acfjy1z2af"))))
2801 (build-system waf-build-system)
2802 (arguments
2803 `(#:tests? #f ; no check target
2804 #:configure-flags '("--no-plugins")))
2805 (inputs
2806 ;; Leaving off cairo and gtk+-2.0 which are needed for example plugins
2807 (list libsndfile))
2808 (native-inputs
2809 (list pkg-config))
2810 (home-page "https://lv2plug.in/")
2811 (synopsis "LV2 audio plugin specification")
2812 (description
2813 "LV2 is an open specification for audio plugins and host applications.
2814 At its core, LV2 is a simple stable interface, accompanied by extensions which
2815 add functionality to support the needs of increasingly powerful audio
2816 software.")
2817 (license license:isc)))
2818
2819 (define-public ttl2c
2820 (package
2821 (name "ttl2c")
2822 (version "1.0.0")
2823 (source (origin
2824 (method git-fetch)
2825 (uri (git-reference
2826 (url "https://github.com/lvtk/ttl2c")
2827 (commit version)))
2828 (file-name (git-file-name name version))
2829 (sha256
2830 (base32
2831 "0aybx8i5i0sridi9130a3937xgmfmjkk8m48f9whvhlhbzwy3xbl"))))
2832 (build-system waf-build-system)
2833 (arguments
2834 (list
2835 #:tests? #false ;no check target
2836 #:phases
2837 `(modify-phases %standard-phases
2838 (add-before 'configure 'setup-waf
2839 (lambda* (#:key inputs #:allow-other-keys)
2840 (let ((waf (assoc-ref inputs "python-waf")))
2841 (copy-file (string-append waf "/bin/waf") "waf")))))))
2842 (inputs (list boost))
2843 (native-inputs (list python-waf))
2844 (home-page "https://github.com/lvtk/ttl2c")
2845 (synopsis "Turtle to C header conversion utility for LV2 plugins")
2846 (description
2847 "This package provides a conversion utility for LV2 Plugin developers to
2848 generate C headers from Turtle files.")
2849 (license license:gpl3+)))
2850
2851 (define-public lv2-mda-piano
2852 (package
2853 (name "lv2-mda-piano")
2854 (version "0.0.2")
2855 (source (origin
2856 (method git-fetch)
2857 (uri (git-reference
2858 (url "http://git.elephly.net/software/lv2-mdametapiano.git")
2859 (commit version)))
2860 (file-name (git-file-name name version))
2861 (sha256
2862 (base32
2863 "07lywf6lpfpndg3i9w752mmlg2hgn1bwp23h8b0mdj6awh67abqd"))))
2864 (build-system gnu-build-system)
2865 (arguments
2866 `(#:make-flags (list
2867 "TYPE=mdaPiano"
2868 (string-append "PREFIX=" (assoc-ref %outputs "out")))
2869 #:tests? #f ; no check target
2870 #:phases (modify-phases %standard-phases (delete 'configure))))
2871 (inputs
2872 (list lv2 lvtk))
2873 (native-inputs
2874 (list pkg-config ttl2c))
2875 (native-search-paths
2876 (list (search-path-specification
2877 (variable "LV2_PATH")
2878 (files '("lib/lv2")))))
2879 (home-page "https://elephly.net/lv2/mdapiano.html")
2880 (synopsis "LV2 port of the mda Piano plugin")
2881 (description "An LV2 port of the mda Piano VSTi.")
2882 (license license:gpl3+)))
2883
2884 (define-public lv2-mda-epiano
2885 (package (inherit lv2-mda-piano)
2886 (name "lv2-mda-epiano")
2887 (arguments
2888 `(#:make-flags (list
2889 "TYPE=mdaEPiano"
2890 (string-append "PREFIX=" (assoc-ref %outputs "out")))
2891 #:tests? #f ; no check target
2892 #:phases (modify-phases %standard-phases (delete 'configure))))
2893 (home-page "https://elephly.net/lv2/mdaepiano.html")
2894 (synopsis "LV2 port of the mda EPiano plugin")
2895 (description "An LV2 port of the mda EPiano VSTi.")))
2896
2897 (define-public lvtk-2
2898 ;; Use the latest commit, as the latest release was made in 2014 and depends
2899 ;; on Python 2.
2900 (let ((commit "a73feabe772f9650aa071e6a4df660e549ab7c48")
2901 (revision "0"))
2902 (package
2903 (name "lvtk")
2904 (version (git-version "2" revision commit))
2905 (source (origin
2906 (method git-fetch)
2907 (uri (git-reference
2908 (url "https://github.com/lvtk/lvtk")
2909 (commit commit)))
2910 (file-name (git-file-name name version))
2911 (sha256
2912 (base32
2913 "0scmv8b4jlm88d21dqqchjy98wb93zclc9x960h213gdi871vsaj"))))
2914 (build-system waf-build-system)
2915 (arguments (list #:tests? #f)) ;no check target
2916 (inputs (list boost gtkmm lv2))
2917 (native-inputs (list pkg-config))
2918 (home-page "https://github.com/lvtk/lvtk")
2919 (synopsis "C++ libraries for LV2 plugins")
2920 (description
2921 "The LV2 Toolkit (LVTK) contains libraries that wrap the LV2 C API and
2922 extensions into easy to use C++ classes. It is the successor of
2923 lv2-c++-tools.")
2924 (license license:isc))))
2925
2926 (define-public lvtk-1
2927 ;; Use the latest commit, as the latest release was made in 2014 and depends
2928 ;; on Python 2.
2929 (let ((commit "23dd99531d88d7821b69f6f0d60516ef322a6729")
2930 (revision "0"))
2931 (package
2932 (name "lvtk")
2933 (version (git-version "1.2.0" revision commit))
2934 (source (origin
2935 (method git-fetch)
2936 (uri (git-reference
2937 (url "https://github.com/lvtk/lvtk")
2938 (commit commit)))
2939 (file-name (git-file-name name version))
2940 (sha256
2941 (base32
2942 "0iw7skvsn3whw69dhcxbbdns7mssaf6z6iyzxjav53607ibyfr8d"))))
2943 (build-system waf-build-system)
2944 (arguments
2945 (list
2946 #:tests? #false ;no check target
2947 #:configure-flags
2948 #~(list (string-append "--boost-includes="
2949 #$(this-package-input "boost")
2950 "/include"))
2951 #:phases
2952 `(modify-phases %standard-phases
2953 (add-before 'configure 'setup-waf
2954 (lambda* (#:key inputs #:allow-other-keys)
2955 (let ((waf (assoc-ref inputs "python-waf")))
2956 (copy-file (string-append waf "/bin/waf") "waf")))))))
2957 (inputs (list boost gtkmm lv2))
2958 (native-inputs (list pkg-config python-waf))
2959 (home-page "https://github.com/lvtk/lvtk")
2960 (synopsis "C++ libraries for LV2 plugins")
2961 (description
2962 "The LV2 Toolkit (LVTK) contains libraries that wrap the LV2 C API and
2963 extensions into easy to use C++ classes. It is the successor of
2964 lv2-c++-tools.")
2965 (license license:isc))))
2966
2967 (define-public lvtk lvtk-1)
2968
2969 (define-public openal
2970 (package
2971 (name "openal")
2972 (version "1.20.1")
2973 (source (origin
2974 (method url-fetch)
2975 (uri (string-append
2976 "https://openal-soft.org/openal-releases/openal-soft-"
2977 version ".tar.bz2"))
2978 (sha256
2979 (base32
2980 "0vax0b1lgd4212bpxa1rciz52d4mv3dkfvcbbhzw4cjp698v1kmn"))))
2981 (build-system cmake-build-system)
2982 (arguments
2983 `(#:tests? #f ; no check target
2984 #:phases
2985 (modify-phases %standard-phases
2986 (add-after
2987 'unpack 'use-full-library-paths
2988 (lambda* (#:key inputs #:allow-other-keys)
2989 (substitute* "alc/backends/pulseaudio.cpp"
2990 (("#define PALIB \"libpulse\\.so\\.0\"")
2991 (string-append "#define PALIB \""
2992 (assoc-ref inputs "pulseaudio")
2993 "/lib/libpulse.so.0"
2994 "\"")))
2995 (substitute* "alc/backends/alsa.cpp"
2996 (("LoadLib\\(\"libasound\\.so\\.2\"\\)")
2997 (string-append "LoadLib(\""
2998 (assoc-ref inputs "alsa-lib")
2999 "/lib/libasound.so.2"
3000 "\")")))
3001 #t)))))
3002 (inputs
3003 (list alsa-lib pulseaudio))
3004 (synopsis "3D audio API")
3005 (description
3006 "OpenAL provides capabilities for playing audio in a virtual 3D
3007 environment. Distance attenuation, doppler shift, and directional sound
3008 emitters are among the features handled by the API. More advanced effects,
3009 including air absorption, occlusion, and environmental reverb, are available
3010 through the EFX extension. It also facilitates streaming audio, multi-channel
3011 buffers, and audio capture.")
3012 (home-page "https://openal-soft.org/")
3013 (license license:lgpl2.0+)))
3014
3015 (define-public freealut
3016 (package
3017 (name "freealut")
3018 (version "1.1.0")
3019 (source (origin
3020 (method url-fetch)
3021 ;; Upstream url is unclear, many systems use Fedora, there is also
3022 ;; https://github.com/vancegroup/freealut though the status of it
3023 ;; (official? unofficial?) is not clear.
3024 (uri (string-append
3025 "https://pkgs.fedoraproject.org/repo/pkgs/" name "/" name "-"
3026 version ".tar.gz" "/e089b28a0267faabdb6c079ee173664a/" name
3027 "-" version ".tar.gz"))
3028 (sha256
3029 (base32
3030 "0kzlil6112x2429nw6mycmif8y6bxr2cwjcvp18vh6s7g63ymlb0"))))
3031 (build-system cmake-build-system)
3032 (arguments
3033 `(#:tests? #f)) ; no check target
3034 (inputs
3035 (list openal))
3036 (synopsis "Free implementation of OpenAL's ALUT standard")
3037 (description "freealut is the OpenAL Utility Toolkit.")
3038 (home-page "https://kcat.strangesoft.net/openal.html")
3039 (license license:lgpl2.0)))
3040
3041 (define-public patchage
3042 (package
3043 (name "patchage")
3044 (version "1.0.4")
3045 (source (origin
3046 (method url-fetch)
3047 (uri (string-append "https://download.drobilla.net/patchage-"
3048 version
3049 ".tar.bz2"))
3050 (sha256
3051 (base32
3052 "0gbakiw3mikgbvy3pssrmqmn7z5c7kp4vyaxj5rs4jnkscxgw9vw"))))
3053 (build-system waf-build-system)
3054 (arguments
3055 `(#:tests? #f)) ; no check target
3056 (inputs
3057 (list alsa-lib
3058 boost
3059 jack-1
3060 ganv
3061 glibmm
3062 gtkmm-2
3063 dbus-glib))
3064 (native-inputs
3065 (list pkg-config))
3066 (home-page "https://drobilla.net/software/patchage.html")
3067 (synopsis "Modular patch bay for audio and MIDI systems")
3068 (description
3069 "Patchage is a modular patch bay for audio and MIDI systems based on JACK
3070 and ALSA.")
3071 (license license:gpl3+)))
3072
3073 (define-public pcaudiolib
3074 (package
3075 (name "pcaudiolib")
3076 (version "1.1")
3077 (home-page "https://github.com/espeak-ng/pcaudiolib")
3078 (source (origin
3079 (method git-fetch)
3080 (uri (git-reference (url home-page) (commit version)))
3081 (file-name (git-file-name name version))
3082 (sha256
3083 (base32
3084 "0c55hlqqh0m7bcb3nlgv1s4a22s5bgczr1cakjh3767rjb10khi0"))))
3085 (build-system gnu-build-system)
3086 (arguments
3087 `(#:configure-flags '("--disable-static")))
3088 (native-inputs
3089 (list autoconf automake libtool pkg-config which))
3090 (inputs
3091 (list alsa-lib pulseaudio))
3092 (synopsis "Portable C audio library")
3093 (description
3094 "The Portable C Audio Library (pcaudiolib) provides a C@tie{}API to
3095 different audio devices such as ALSA or PulseAudio.")
3096 (license (list license:gpl3+
3097 ;; The bundled TPCircularBuffer uses a custom license.
3098 (license:non-copyleft
3099 "file://src/TPCircularBuffer/README.markdown")))))
3100
3101 (define-public qjackctl
3102 (package
3103 (name "qjackctl")
3104 (version "0.9.8")
3105 (source (origin
3106 (method url-fetch)
3107 (uri (string-append "mirror://sourceforge/qjackctl/qjackctl/"
3108 version "/qjackctl-" version ".tar.gz"))
3109 (sha256
3110 (base32
3111 "1rvxgxd7bbv7yazcpw3ily0jlra8ms5c0kkf7cybgivahw59zk87"))))
3112 (build-system cmake-build-system)
3113 (arguments
3114 '(#:tests? #f)) ; no check target
3115 (inputs
3116 (list alsa-lib
3117 jack-1
3118 portaudio
3119 qtbase-5
3120 qtsvg-5))
3121 (native-inputs
3122 (list pkg-config qttools-5))
3123 (home-page "https://qjackctl.sourceforge.io/")
3124 (synopsis "Jack server control application")
3125 (description "Control a Jack server. Allows you to plug various sources
3126 into various outputs and to start, stop and configure jackd")
3127 (license license:gpl2+)))
3128
3129 (define-public qjackrcd
3130 (package
3131 (name "qjackrcd")
3132 (version "1.2.2")
3133 (source (origin
3134 (method git-fetch)
3135 (uri (git-reference
3136 (url "https://github.com/orouits/qjackrcd")
3137 (commit (string-append "v" version))))
3138 (file-name (git-file-name name version))
3139 (sha256
3140 (base32
3141 "1l5iq2mkqd4gn9yr8xbh9qlpp1clcflazychl4vhdbz0bzq4c6al"))))
3142 (build-system gnu-build-system)
3143 (arguments
3144 `(#:phases
3145 (modify-phases %standard-phases
3146 (replace 'configure
3147 (lambda* (#:key outputs #:allow-other-keys)
3148 (invoke "qmake"
3149 (string-append "PREFIX="
3150 (assoc-ref outputs "out"))))))))
3151 (native-inputs
3152 (list qtbase-5)) ; for qmake
3153 (inputs
3154 (list jack-1 libsndfile qtbase-5))
3155 (home-page "https://sourceforge.net/projects/qjackrcd/")
3156 (synopsis "Stereo audio recorder for JACK")
3157 (description "QJackRcd is a simple graphical stereo recorder for JACK
3158 supporting silence processing for automatic pause, file splitting, and
3159 background file post-processing.")
3160 (license license:gpl2+)))
3161
3162 (define-public supercollider
3163 (package
3164 (name "supercollider")
3165 (version "3.12.1")
3166 (source
3167 (origin
3168 (method git-fetch)
3169 (uri (git-reference
3170 (url "https://github.com/supercollider/supercollider")
3171 (commit (string-append "Version-" version))
3172 ;; for nova-simd, nova-tt, hidapi, TLSF, oscpack
3173 (recursive? #t)))
3174 (file-name (git-file-name name version))
3175 (sha256
3176 (base32
3177 "0id522338a464j1slcspajwc7klypbc9qpigw5mqjhrw970wij5z"))
3178 (modules '((guix build utils)
3179 (ice-9 ftw)))
3180 (snippet
3181 ;; The build system doesn't allow us to unbundle the following
3182 ;; libraries. hidapi is also heavily patched and upstream not
3183 ;; actively maintained.
3184 '(let ((keep-dirs '("nova-simd" "nova-tt" "hidapi"
3185 "TLSF-2.4.6" "oscpack_1_1_0" "." "..")))
3186 (with-directory-excursion "./external_libraries"
3187 (for-each
3188 delete-file-recursively
3189 (scandir "."
3190 (lambda (x)
3191 (and (eq? (stat:type (stat x)) 'directory)
3192 (not (member (basename x) keep-dirs)))))))
3193 ;; To find the Guix provided ableton-link library.
3194 (substitute* "lang/CMakeLists.txt"
3195 (("include\\(\\.\\./external_libraries/link/\
3196 AbletonLinkConfig\\.cmake\\)")
3197 "find_package(AbletonLink NAMES AbletonLink ableton-link \
3198 link REQUIRED)"))))))
3199 (build-system cmake-build-system)
3200 (outputs
3201 '("out" ;core language
3202 "ide")) ;qt ide
3203 (arguments
3204 `(#:configure-flags '("-DSYSTEM_BOOST=ON"
3205 "-DSYSTEM_YAMLCPP=ON"
3206 "-DSC_QT=ON"
3207 "-DCMAKE_BUILD_TYPE=Release"
3208 "-DFORTIFY=ON"
3209 ;; "-DLIBSCSYNTH=ON" ; TODO: Re-enable?
3210 "-DSC_EL=OFF") ;scel is packaged individually as emacs-scel
3211 #:phases
3212 (modify-phases %standard-phases
3213 ;; HOME must be defined otherwise supercollider throws a "ERROR:
3214 ;; Primitive '_FileMkDir' failed." error when generating the doc.
3215 ;; The graphical tests also hang without it.
3216 (add-after 'unpack 'set-home-directory
3217 (lambda _
3218 (setenv "HOME" (getcwd))))
3219 (add-after 'unpack 'patch-scclass-dir
3220 (lambda* (#:key outputs #:allow-other-keys)
3221 (let* ((out (assoc-ref outputs "out"))
3222 (scclass-dir
3223 (string-append out
3224 "/share/SuperCollider/SCClassLibrary")))
3225 (substitute* "lang/LangSource/SC_LanguageConfig.cpp"
3226 (((string-append
3227 "SC_Filesystem::instance\\(\\)\\.getDirectory"
3228 "\\(DirName::Resource\\) / CLASS_LIB_DIR_NAME"))
3229 (string-append "Path(\"" scclass-dir "\")"))))))
3230 (add-before 'build 'prepare-x
3231 (lambda _
3232 (system "Xvfb &")
3233 (setenv "DISPLAY" ":0")))
3234 (add-before 'install 'install-ide
3235 (lambda* (#:key outputs #:allow-other-keys)
3236 (let* ((out (assoc-ref outputs "out"))
3237 (ide (assoc-ref outputs "ide"))
3238 (scide "editors/sc-ide/scide"))
3239 (install-file scide
3240 (string-append ide "/bin"))
3241 (delete-file scide)))))))
3242 (native-inputs
3243 (list ableton-link pkg-config qttools-5 xorg-server-for-tests))
3244 (inputs (list jack-1
3245 libsndfile
3246 fftw
3247 libxt
3248 readline ;readline support for sclang's CLI
3249 alsa-lib ;for sclang's MIDI interface
3250 eudev ;for user interactions with devices
3251 avahi ;zeroconf service discovery support
3252 icu4c
3253 boost
3254 boost-sync
3255 yaml-cpp
3256 qtbase-5
3257 qtdeclarative-5
3258 qtsvg-5
3259 qtwebchannel-5
3260 qtwebsockets-5))
3261 (propagated-inputs ;to get native-search-path
3262 (list qtwebengine-5))
3263 (home-page "https://github.com/supercollider/supercollider")
3264 (synopsis "Synthesis engine and programming language")
3265 (description "SuperCollider is a synthesis engine (@code{scsynth} or
3266 @code{supernova}) and programming language (@code{sclang}). It can be used
3267 for experimenting with sound synthesis and algorithmic composition.
3268
3269 SuperCollider requires jackd to be installed in your user profile and your
3270 user must be allowed to access the realtime features of the kernel. Search
3271 for \"realtime\" in the index of the Guix manual to learn how to achieve this
3272 using Guix System.")
3273 (license license:gpl2+)))
3274
3275 (define-public libshout-idjc
3276 (package
3277 (name "libshout-idjc")
3278 (version "2.4.4")
3279 (source
3280 (origin
3281 (method url-fetch)
3282 (uri (string-append "mirror://sourceforge/libshoutidjc.idjc.p"
3283 "/libshout-idjc-" version ".tar.gz"))
3284 (sha256
3285 (base32 "1r9z8ggxylr2ab0isaljbm574rplnlcb12758j994h54nh2vikwb"))))
3286 (build-system gnu-build-system)
3287 (native-inputs
3288 (list pkg-config))
3289 (inputs
3290 (list libogg libtheora libvorbis speex))
3291 (home-page "http://idjc.sourceforge.net/")
3292 (synopsis "Broadcast streaming library with IDJC extensions")
3293 (description "This package provides libshout plus IDJC extensions.")
3294 ;; GNU Library (not Lesser) General Public License.
3295 (license license:lgpl2.0+)))
3296
3297 (define-public resample
3298 (package
3299 (name "resample")
3300 (version "1.8.1")
3301 (source (origin
3302 (method url-fetch)
3303 (uri (string-append "https://ccrma.stanford.edu/~jos/gz/resample-"
3304 version
3305 ".tar.gz"))
3306 (sha256 (base32
3307 "074zj8ydp05yy1hjcglfv3hkvj4cm50f9nralka1992pm6yf8yvy"))))
3308 (build-system gnu-build-system)
3309 (native-inputs
3310 (list autoconf automake pkg-config libtool))
3311 (synopsis "Sampling rate conversion and filter design utilities")
3312 (description "This package contains the @command{resample} and
3313 @command{windowfilter} command line utilities. The @command{resample} command
3314 allows changing the sampling rate of a sound file, while the
3315 @command{windowfilter} command allows designing Finite Impulse Response (FIR)
3316 filters using the so-called @emph{window method}.")
3317 (home-page "https://ccrma.stanford.edu/~jos/resample/Free_Resampling_Software.html")
3318 (license license:lgpl2.1+)))
3319
3320 (define-public rubberband
3321 (package
3322 (name "rubberband")
3323 (version "1.8.2")
3324 (source (origin
3325 (method url-fetch)
3326 (uri
3327 (string-append "https://bitbucket.org/breakfastquay/rubberband/get/v"
3328 version
3329 ".tar.bz2"))
3330 (file-name (string-append name "-" version ".tar.bz2"))
3331 (sha256
3332 (base32
3333 "0462fmjnfqpv2qi0s6ny42drqarkr0xy9lw8frjmfgzyzl5n9294"))))
3334 (build-system gnu-build-system)
3335 (arguments
3336 `(#:tests? #f ; no check target
3337 #:phases
3338 (modify-phases %standard-phases
3339 (add-after 'unpack 'skip-jni-installation
3340 ;; ‘make install’ unconditionally installs librubberband-jni.so,
3341 ;; which is never built by ‘make all’. Skip it.
3342 (lambda _
3343 (substitute* "Makefile.in"
3344 ((".*cp -f \\$\\(JNI_TARGET\\).*") ""))
3345 #t)))))
3346 (inputs
3347 (list ladspa libsamplerate vamp))
3348 (native-inputs
3349 (list pkg-config))
3350 (home-page "https://breakfastquay.com/rubberband/")
3351 (synopsis "Audio time-stretching and pitch-shifting library")
3352 (description
3353 "Rubber Band is a library and utility program that permits changing the
3354 tempo and pitch of an audio recording independently of one another.")
3355 (license license:gpl2+)))
3356
3357 (define-public rtmidi
3358 (package
3359 (name "rtmidi")
3360 (version "5.0.0")
3361 (source (origin
3362 (method url-fetch)
3363 (uri (string-append "https://www.music.mcgill.ca/~gary/rtmidi"
3364 "/release/rtmidi-" version ".tar.gz"))
3365 (file-name (string-append "rtmidi-" version ".tar.gz"))
3366 (sha256
3367 (base32
3368 "1ff2yfq3k4l209fr71v3w98fpjjv1chs09vkbmxj03lcikahxns8"))))
3369 (build-system gnu-build-system)
3370 (inputs
3371 (list jack-1 alsa-lib))
3372 (native-inputs
3373 (list autoconf automake libtool pkg-config))
3374 (home-page "https://www.music.mcgill.ca/~gary/rtmidi")
3375 (synopsis "Cross-platform MIDI library for C++")
3376 (description
3377 "RtMidi is a set of C++ classes (RtMidiIn, RtMidiOut, and API specific
3378 classes) that provide a common cross-platform API for realtime MIDI
3379 input/output.")
3380 (license license:expat)))
3381
3382 (define-public rtmidi-4.0
3383 (package
3384 (inherit rtmidi)
3385 (version "4.0.0")
3386 (source (origin
3387 (method url-fetch)
3388 (uri (string-append "https://www.music.mcgill.ca/~gary/rtmidi"
3389 "/release/rtmidi-" version ".tar.gz"))
3390 (file-name (string-append "rtmidi-" version ".tar.gz"))
3391 (sha256
3392 (base32
3393 "1k962ljpnwyjw9jjiky2372khhri1wqvrj5qsalfpys31xqzw31p"))))))
3394
3395 (define-public sratom
3396 (package
3397 (name "sratom")
3398 (version "0.6.6")
3399 (source (origin
3400 (method url-fetch)
3401 (uri (string-append "https://download.drobilla.net/sratom-"
3402 version ".tar.bz2"))
3403 (sha256
3404 (base32
3405 "178v90qvsp6lw4sqdmdz0bzyjkgwhv9m75ph1d1z8say5bv0p4gv"))))
3406 (build-system waf-build-system)
3407 (arguments `(#:tests? #f)) ;no check target
3408 (propagated-inputs
3409 ;; In Requires of sratom-0.pc.
3410 (list lv2 serd sord))
3411 (native-inputs
3412 (list pkg-config))
3413 (home-page "https://drobilla.net/software/sratom/")
3414 (synopsis "Library for serialising LV2 atoms to/from RDF")
3415 (description
3416 "Sratom is a library for serialising LV2 atoms to/from RDF, particularly
3417 the Turtle syntax.")
3418 (license license:isc)))
3419
3420 (define-public suil
3421 (package
3422 (name "suil")
3423 (version "0.10.10")
3424 (source (origin
3425 (method url-fetch)
3426 (uri (string-append "https://download.drobilla.net/suil-"
3427 version ".tar.bz2"))
3428 (sha256
3429 (base32
3430 "1ysbazqlbyxlzyr9zk7dj2mgb6pn0amllj2cd5g1m56wnzk0h3vm"))))
3431 (build-system waf-build-system)
3432 (arguments
3433 `(#:tests? #f)) ;no check target
3434 (inputs
3435 (list lv2
3436 gtk+-2
3437 gtk+
3438 qtbase-5))
3439 (native-inputs
3440 (list pkg-config))
3441 (home-page "https://drobilla.net/software/suil/")
3442 (synopsis "Library for loading and wrapping LV2 plugin UIs")
3443 (description
3444 "Suil is a lightweight C library for loading and wrapping LV2 plugin UIs.
3445
3446 Suil makes it possible to load a UI of a toolkit in a host using another
3447 toolkit. The API is designed such that hosts do not need to explicitly
3448 support specific toolkits – if Suil supports a particular toolkit, then UIs in
3449 that toolkit will work in all hosts that use Suil automatically.
3450
3451 Suil currently supports every combination of Gtk, Qt, and X11.")
3452 (license license:isc)))
3453
3454 (define-public libebur128
3455 (package
3456 (name "libebur128")
3457 (version "1.2.6")
3458 (source
3459 (origin
3460 (method git-fetch)
3461 (uri (git-reference
3462 (url "https://github.com/jiixyj/libebur128")
3463 (commit (string-append "v" version))))
3464 (file-name (git-file-name name version))
3465 (sha256
3466 (base32 "0xkpz5rzz1j1srhprbh89669gw8z5f1njpvcnxqgf7qax69vd8sh"))))
3467 (build-system cmake-build-system)
3468 (arguments
3469 `(;; Tests require proprietary .wav files. See
3470 ;; https://github.com/jiixyj/libebur128/issues/82.
3471 #:tests? #f
3472 #:configure-flags '("-DBUILD_STATIC_LIBS=OFF")))
3473 (home-page "https://github.com/jiixyj/libebur128")
3474 (synopsis "Library implementing the EBU R 128 loudness standard")
3475 (description
3476 "@code{libebur128} is a C library that implements the EBU R 128 standard
3477 for loudness normalisation.")
3478 (license license:expat)))
3479
3480 (define-public timidity++
3481 (package
3482 (name "timidity++")
3483 (version "2.15.0")
3484 (source (origin
3485 (method url-fetch)
3486 (uri (string-append "mirror://sourceforge/timidity/TiMidity++"
3487 "/TiMidity++-" version
3488 "/TiMidity++-" version ".tar.bz2"))
3489 (sha256
3490 (base32
3491 "1xf8n6dqzvi6nr2asags12ijbj1lwk1hgl3s27vm2szib8ww07qn"))))
3492 (build-system gnu-build-system)
3493 (arguments
3494 '(#:configure-flags
3495 (list "--enable-audio=alsa,flac,jack,ao,vorbis,speex"
3496 "--enable-ncurses"
3497 "--enable-server"
3498 "--enable-alsaseq"
3499 (string-append "--with-default-path="
3500 (assoc-ref %outputs "out") "/etc/timidity"))
3501 #:phases
3502 (modify-phases %standard-phases
3503 (add-after 'install 'install-config
3504 (lambda _
3505 (let ((out (string-append (assoc-ref %outputs "out")
3506 "/etc/timidity")))
3507 (mkdir-p out)
3508 (call-with-output-file
3509 (string-append out "/timidity.cfg")
3510 (lambda (port)
3511 (format port (string-append "source "
3512 (assoc-ref %build-inputs "freepats")
3513 "/share/freepats/freepats.cfg")))))
3514 #t)))))
3515 (inputs
3516 (list alsa-lib
3517 ao
3518 flac
3519 jack-1
3520 libogg
3521 libvorbis
3522 speex
3523 ncurses
3524 freepats))
3525 (native-inputs
3526 (list pkg-config))
3527 (home-page "http://timidity.sourceforge.net/")
3528 (synopsis "Software synthesizer for playing MIDI files")
3529 (description
3530 "TiMidity++ is a software synthesizer. It can play MIDI files by
3531 converting them into PCM waveform data; give it a MIDI data along with digital
3532 instrument data files, then it synthesizes them in real-time, and plays. It
3533 can not only play sounds, but also can save the generated waveforms into hard
3534 disks as various audio file formats.")
3535 (license license:gpl2+)))
3536
3537 (define-public vamp
3538 (package
3539 (name "vamp")
3540 (version "2.6")
3541 (source (origin
3542 (method url-fetch)
3543 (uri (string-append
3544 "https://code.soundsoftware.ac.uk"
3545 "/attachments/download/1520/vamp-plugin-sdk-"
3546 version ".tar.gz"))
3547 (sha256
3548 (base32
3549 "0pzq0yy2kdl3jgfc2aqmh5m55nk1ild0hq8mydiiw35c6y0mglyh"))))
3550 (build-system gnu-build-system)
3551 (arguments
3552 `(#:tests? #f ; no check target
3553 #:phases
3554 (modify-phases %standard-phases
3555 (add-after 'install 'remove-libvamp-hostsdk.la
3556 (lambda* (#:key outputs #:allow-other-keys)
3557 ;; https://bugs.launchpad.net/ubuntu/+source/vamp-plugin-sdk/+bug/1253656
3558 (for-each delete-file
3559 (let ((out (assoc-ref outputs "out")))
3560 (list (string-append out "/lib/libvamp-sdk.la")
3561 (string-append out "/lib/libvamp-hostsdk.la"))))
3562 #t)))))
3563 (inputs
3564 (list libsndfile))
3565 (native-inputs
3566 (list pkg-config))
3567 (home-page "https://vamp-plugins.org")
3568 (synopsis "Modular and extensible audio processing system")
3569 (description
3570 "Vamp is an audio processing plugin system for plugins that extract
3571 descriptive information from audio data — typically referred to as audio
3572 analysis plugins or audio feature extraction plugins.")
3573 (license
3574 (license:x11-style
3575 "https://code.soundsoftware.ac.uk/projects/vamp-plugin-sdk/repository/entry/COPYING"))))
3576
3577 (define-public libsbsms
3578 (package
3579 (name "libsbsms")
3580 (version "2.0.2")
3581 (source
3582 (origin
3583 (method url-fetch)
3584 (uri (string-append "mirror://sourceforge/sbsms/sbsms/" version
3585 "/libsbsms-" version ".tar.gz"))
3586 (sha256
3587 (base32 "1vmf84iy4dkwxv887grnlsfk43fmhd9gbg26gc2kgcv40sbkvayf"))))
3588 (build-system gnu-build-system)
3589 (native-inputs (list automake))
3590 (arguments
3591 `(#:configure-flags
3592 ;; Disable the use of SSE unless on x86_64.
3593 ,(if (not (string-prefix? "x86_64" (or (%current-target-system)
3594 (%current-system))))
3595 ''("--disable-sse")
3596 ''())
3597 #:phases
3598 (modify-phases %standard-phases
3599 (add-after
3600 'unpack 'fix-ar-lib-path
3601 (lambda* (#:key inputs #:allow-other-keys)
3602 ;; Originally a symlink to '/usr/local/share/automake-1.12/ar-lib'.
3603 (delete-file "ar-lib")
3604 (symlink
3605 (search-input-file inputs
3606 (string-append "/share/automake-"
3607 ,(package-version automake)
3608 "/ar-lib"))
3609 "ar-lib")
3610 #t)))))
3611 (home-page "http://sbsms.sourceforge.net/")
3612 (synopsis "Library for time stretching and pitch scaling of audio")
3613 (description
3614 "SBSMS (Subband Sinusoidal Modeling Synthesis) is software for time
3615 stretching and pitch scaling of audio. This package contains the library.")
3616 ;; There is no explicit declaration of a license, but a COPYING file
3617 ;; containing gpl2.
3618 (license license:gpl2)))
3619
3620 (define-public libkeyfinder
3621 (package
3622 (name "libkeyfinder")
3623 (version "2.2.7")
3624 (source
3625 (origin
3626 (method git-fetch)
3627 (uri (git-reference
3628 (url "https://github.com/mixxxdj/libkeyfinder")
3629 (commit version)))
3630 (file-name (git-file-name name version))
3631 (sha256
3632 (base32 "0nvhdzy0m3bchk3dpnspv2f518p2v9fjcrv36z1sva1pv9a2g35w"))))
3633 (build-system cmake-build-system)
3634 (native-inputs
3635 (list catch2))
3636 (inputs
3637 (list fftw))
3638 (home-page "https://mixxxdj.github.io/libkeyfinder/")
3639 (synopsis "Musical key detection for digital audio")
3640 (description
3641 "@code{libkeyfinder} is a small C++11 library for estimating the musical
3642 key of digital audio.")
3643 (license license:gpl3+)))
3644
3645 (define-public wavpack
3646 (package
3647 (name "wavpack")
3648 (version "5.4.0")
3649 (source
3650 (origin
3651 (method url-fetch)
3652 (uri (string-append "https://github.com/dbry/WavPack/releases/download/"
3653 version "/wavpack-" version ".tar.xz"))
3654 (sha256
3655 (base32 "0ycbqarw25x7208jilh86vwwiqklr7f617jps9mllqc659mnmpjb"))))
3656 (build-system gnu-build-system)
3657 (arguments
3658 '(#:configure-flags
3659 (list "--disable-static"
3660 "--enable-tests")
3661 #:phases
3662 (modify-phases %standard-phases
3663 (replace 'check
3664 (lambda* (#:key tests? #:allow-other-keys)
3665 (when tests?
3666 (invoke "./cli/wvtest" "--default" "--short"))
3667 #t)))))
3668 (home-page "https://www.wavpack.com/")
3669 (synopsis "Hybrid lossless audio codec")
3670 (description
3671 "WavPack is an audio compression format with lossless, lossy and hybrid
3672 compression modes. This package contains command-line programs and library to
3673 encode and decode wavpack files.")
3674 (license license:bsd-3)))
3675
3676 (define-public libmodplug
3677 (package
3678 (name "libmodplug")
3679 (version "0.8.9.0")
3680 (source (origin
3681 (method url-fetch)
3682 (uri (string-append
3683 "mirror://sourceforge/modplug-xmms/"
3684 name "/" version "/" name "-" version ".tar.gz"))
3685 (sha256
3686 (base32
3687 "1pnri98a603xk47smnxr551svbmgbzcw018mq1k6srbrq6kaaz25"))))
3688 (build-system gnu-build-system)
3689 (home-page "http://modplug-xmms.sourceforge.net/")
3690 (synopsis "Mod file playing library")
3691 (description
3692 "Libmodplug renders mod music files as raw audio data, for playing or
3693 conversion. mod, .s3m, .it, .xm, and a number of lesser-known formats are
3694 supported. Optional features include high-quality resampling, bass expansion,
3695 surround and reverb.")
3696 (license license:public-domain)))
3697
3698 (define-public libxmp
3699 (package
3700 (name "libxmp")
3701 (version "4.4.1")
3702 (source (origin
3703 (method url-fetch)
3704 (uri (string-append "mirror://sourceforge/xmp/libxmp/" version "/"
3705 name "-" version ".tar.gz"))
3706 (sha256
3707 (base32
3708 "1kycz4jsyvmf7ny9227b497wc7y5ligydi6fvvldmkf8hk63ad9m"))))
3709 (build-system gnu-build-system)
3710 (home-page "http://xmp.sourceforge.net/")
3711 (synopsis "Module player library")
3712 (description
3713 "Libxmp is a library that renders module files to PCM data. It supports
3714 over 90 mainstream and obscure module formats including Protracker (MOD),
3715 Scream Tracker 3 (S3M), Fast Tracker II (XM), and Impulse Tracker (IT).")
3716 (license license:lgpl2.1+)))
3717
3718 (define-public xmp
3719 (package
3720 (name "xmp")
3721 (version "4.1.0")
3722 (source (origin
3723 (method url-fetch)
3724 (uri (string-append "mirror://sourceforge/xmp/xmp/" version "/"
3725 name "-" version ".tar.gz"))
3726 (sha256
3727 (base32
3728 "17i8fc7x7yn3z1x963xp9iv108gxfakxmdgmpv3mlm438w3n3g8x"))))
3729 (build-system gnu-build-system)
3730 (native-inputs
3731 (list pkg-config))
3732 (inputs
3733 (list libxmp pulseaudio))
3734 (home-page "http://xmp.sourceforge.net/")
3735 (synopsis "Extended module player")
3736 (description
3737 "Xmp is a portable module player that plays over 90 mainstream and
3738 obscure module formats, including Protracker MOD, Fasttracker II XM, Scream
3739 Tracker 3 S3M and Impulse Tracker IT files.")
3740 (license license:gpl2+)))
3741
3742 (define-public soundtouch
3743 (package
3744 (name "soundtouch")
3745 (version "2.2")
3746 (source
3747 (origin
3748 (method git-fetch)
3749 (uri (git-reference
3750 (url "https://gitlab.com/soundtouch/soundtouch.git")
3751 (commit version)))
3752 (file-name (git-file-name name version))
3753 (sha256
3754 (base32 "12i6yg8vvqwyk412lxl2krbfby6hnxld8qxy0k4m5xp4g94jiq4p"))))
3755 (build-system gnu-build-system)
3756 (native-inputs
3757 (list autoconf automake libtool file))
3758 (home-page "https://www.surina.net/soundtouch/")
3759 (synopsis
3760 "Audio processing library for changing tempo, pitch and playback rate")
3761 (description
3762 "SoundTouch is an audio processing library for changing the tempo, pitch
3763 and playback rates of audio streams or audio files. It is intended for
3764 application developers writing sound processing tools that require tempo/pitch
3765 control functionality, or just for playing around with the sound effects.")
3766 (license license:lgpl2.1+)))
3767
3768 (define-public sox
3769 (package
3770 (name "sox")
3771 (version "14.4.2")
3772 (source (origin
3773 (method url-fetch)
3774 (uri (string-append "mirror://sourceforge/sox/sox/" version "/"
3775 name "-" version ".tar.bz2"))
3776 (sha256
3777 (base32
3778 "170lx90r1nlnb2j6lg00524iwvqy72p48vii4xc5prrh8dnrb9l1"))))
3779 (build-system gnu-build-system)
3780 (arguments
3781 '(#:configure-flags
3782 ;; The upstream asks to identify the distribution to diagnose SoX
3783 ;; bug reports.
3784 '("--with-distro=Guix System Distribution")))
3785 (native-inputs
3786 (list pkg-config))
3787 (inputs
3788 (list alsa-lib
3789 ao
3790 flac
3791 lame
3792 libid3tag
3793 libltdl
3794 libmad
3795 libpng
3796 libvorbis
3797 pulseaudio))
3798 (home-page "http://sox.sourceforge.net")
3799 (synopsis "Sound processing utility")
3800 (description
3801 "SoX (Sound eXchange) is a command line utility that can convert
3802 various formats of computer audio files to other formats. It can also
3803 apply various effects to these sound files, and, as an added bonus, SoX
3804 can play and record audio files.")
3805 ;; sox.c is distributed under GPL, while the files that make up
3806 ;; libsox are licensed under LGPL.
3807 (license (list license:gpl2+ license:lgpl2.1+))))
3808
3809 (define-public soxr
3810 (package
3811 (name "soxr")
3812 (version "0.1.3")
3813 (source
3814 (origin
3815 (method url-fetch)
3816 (uri
3817 (string-append "mirror://sourceforge/soxr/soxr-" version
3818 "-Source.tar.xz"))
3819 (sha256
3820 (base32 "12aql6svkplxq5fjycar18863hcq84c5kx8g6f4rj0lcvigw24di"))))
3821 (build-system cmake-build-system)
3822 (arguments '(#:tests? #f)) ;no 'check' target
3823 (home-page "https://sourceforge.net/p/soxr/wiki/Home/")
3824 (synopsis "One-dimensional sample-rate conversion library")
3825 (description
3826 "The SoX Resampler library (libsoxr) performs one-dimensional sample-rate
3827 conversion. It may be used, for example, to resample PCM-encoded audio.")
3828 (license license:lgpl2.1+)))
3829
3830 (define-public twolame
3831 (package
3832 (name "twolame")
3833 (version "0.4.0")
3834 (source
3835 (origin
3836 (method url-fetch)
3837 (uri (string-append "mirror://sourceforge/twolame/twolame/" version
3838 "/twolame-" version ".tar.gz"))
3839 (sha256
3840 (base32 "0zf8sxqb02w07ah55b1y7ab643zmpbhn62spa9pqra0rc17l4dfc"))))
3841 (build-system gnu-build-system)
3842 (inputs
3843 (list libsndfile))
3844 (native-inputs
3845 (list perl which)) ;used in tests/test.pl
3846 (home-page "https://www.twolame.org/")
3847 (synopsis "MPEG Audio Layer 2 (MP2) encoder")
3848 (description
3849 "TwoLAME is an optimised MPEG Audio Layer 2 (MP2) encoder based on
3850 tooLAME by Mike Cheng, which in turn is based upon the ISO dist10 code and
3851 portions of LAME.")
3852 (license license:lgpl2.1+)))
3853
3854 (define-public portaudio
3855 (package
3856 (name "portaudio")
3857 (version "190600.20161030")
3858 (source
3859 (origin
3860 (method url-fetch)
3861 (uri (string-append
3862 "http://www.portaudio.com/archives/pa_stable_v"
3863 (string-map (lambda (c) (if (char=? c #\.) #\_ c)) version)
3864 ".tgz"))
3865 (sha256
3866 (base32 "04qmin6nj144b8qb9kkd9a52xfvm0qdgm8bg8jbl7s3frmyiv8pm"))
3867 (patches (search-patches "portaudio-audacity-compat.patch"))))
3868 (build-system gnu-build-system)
3869 (inputs
3870 ;; TODO: Add ASIHPI.
3871 (list alsa-lib jack-1))
3872 ;; Autoreconf is necessary because the audacity-compat patch modifies .in
3873 ;; files.
3874 (native-inputs
3875 (list autoconf automake libtool pkg-config))
3876 (arguments
3877 '(#:tests? #f ;no 'check' target
3878 #:parallel-build? #f ;fails on some systems
3879 #:configure-flags '("--with-pic"
3880 "--enable-cxx"
3881 ;; XXX: The following prevents a build error
3882 ;; because of missing depcomp when C++ bindings are
3883 ;; requested.
3884 "--disable-dependency-tracking")
3885 #:phases
3886 (modify-phases %standard-phases
3887 ;; This is needed for linking the static libraries
3888 (add-after 'unpack 'build-only-position-independent-code
3889 (lambda _
3890 (substitute* "configure.in"
3891 (("AC_PROG_LIBTOOL" m)
3892 (string-append m "\nAM_PROG_AR\nLT_INIT([pic-only])")))
3893 (delete-file "configure")
3894 #t))
3895 ;; Some headers are not installed by default, but are needed by
3896 ;; packages like Kaldi.
3897 (add-after 'install 'install-missing-headers
3898 (lambda* (#:key outputs #:allow-other-keys)
3899 (install-file "src/common/pa_ringbuffer.h"
3900 (string-append (assoc-ref outputs "out") "/include"))
3901 #t)))))
3902 (home-page "http://www.portaudio.com/")
3903 (synopsis "Audio I/O library")
3904 (description
3905 "PortAudio is a portable C/C++ audio I/O library providing a simple API
3906 to record and/or play sound using a callback function or a blocking read/write
3907 interface.")
3908 (license license:expat)))
3909
3910 (define-public qsynth
3911 (package
3912 (name "qsynth")
3913 (version "0.5.7")
3914 (source
3915 (origin
3916 (method url-fetch)
3917 (uri (list
3918 (string-append "mirror://sourceforge/qsynth/qsynth/" version
3919 "/qsynth-" version ".tar.gz")
3920 (string-append "mirror://sourceforge/qsynth/qsynth (attic)"
3921 "/qsynth-" version ".tar.gz")))
3922 (sha256
3923 (base32 "18im4w8agj60nkppwbkxqnhpp13z5li3w30kklv4lgs20rvgbvl6"))))
3924 (build-system gnu-build-system)
3925 (arguments
3926 `(#:tests? #f)) ; no "check" phase
3927 (native-inputs
3928 (list qttools-5 pkg-config))
3929 (inputs
3930 (list fluidsynth qtbase-5 qtx11extras))
3931 (home-page "https://qsynth.sourceforge.io")
3932 (synopsis "Graphical user interface for FluidSynth")
3933 (description
3934 "Qsynth is a GUI front-end application for the FluidSynth SoundFont
3935 synthesizer written in C++.")
3936 (license license:gpl2+)))
3937
3938 (define-public rsound
3939 (package
3940 (name "rsound")
3941 (version "1.1")
3942 (source
3943 (origin
3944 (method git-fetch)
3945 (uri (git-reference
3946 (url "https://github.com/Themaister/RSound")
3947 (commit (string-append "v" version))))
3948 (file-name (git-file-name name version))
3949 (sha256
3950 (base32 "0gspmr3klwnq98h17p5hc6ifygya4p80g4g8r7a1qavm3mv19waf"))))
3951 (build-system gnu-build-system)
3952 (inputs
3953 (list alsa-lib
3954 jack-1
3955 ao
3956 libsamplerate
3957 openal
3958 portaudio
3959 pulseaudio))
3960 (arguments
3961 '(#:phases
3962 (modify-phases %standard-phases
3963 (replace 'configure
3964 (lambda* (#:key outputs #:allow-other-keys)
3965 (setenv "CC" "gcc")
3966 (invoke "./configure"
3967 (string-append "--prefix=" (assoc-ref outputs "out"))))))
3968 ;; No 'check' target.
3969 #:tests? #f))
3970 (home-page "https://themaister.net/rsound.html")
3971 (synopsis "Networked audio system")
3972 (description
3973 "RSound allows you to send audio from an application and transfer it
3974 directly to a different computer on your LAN network. It is an audio daemon
3975 with a much different focus than most other audio daemons.")
3976 (license license:gpl3+)))
3977
3978 (define-public xjackfreak
3979 (package
3980 (name "xjackfreak")
3981 (version "1.0")
3982 (source (origin
3983 (method git-fetch)
3984 (uri (git-reference
3985 (url "https://github.com/johnhldavis/xjackfreak")
3986 (commit (string-append "v" version))))
3987 (file-name (git-file-name name version))
3988 (sha256
3989 (base32
3990 "18c546qidbrj0f5wfiq5llii2192xpln0ab3r4vpr7i3wybxqjfz"))))
3991 (build-system gnu-build-system)
3992 (arguments
3993 `(#:make-flags
3994 (list (string-append "docdir=" (assoc-ref %outputs "out")
3995 "/share/doc/xjackfreak"))))
3996 (inputs
3997 (list jack-1 libx11 libxt libxext))
3998 (native-inputs
3999 (list pkg-config))
4000 (home-page "https://github.com/johnhldavis/xjackfreak")
4001 (synopsis "JACK audio frequency analyzer and display")
4002 (description
4003 "XJackFreak is an audio analysis and equalizing tool for the Jack Audio
4004 Connection Kit. It can display the FFT of any input, modify it and output the
4005 result.")
4006 (license license:gpl3+)))
4007
4008 (define-public zita-convolver
4009 (package
4010 (name "zita-convolver")
4011 (version "4.0.3")
4012 (source (origin
4013 (method url-fetch)
4014 (uri (string-append
4015 "http://kokkinizita.linuxaudio.org"
4016 "/linuxaudio/downloads/zita-convolver-"
4017 version ".tar.bz2"))
4018 (snippet
4019 ;; Don't optimize for a specific processor architecture.
4020 '(begin
4021 (substitute* "source/Makefile"
4022 (("^CXXFLAGS \\+= -march=native") ""))
4023 #t))
4024 (modules '((guix build utils)))
4025 (sha256
4026 (base32
4027 "0prji66p86z2bzminywkwchr5bfgxcg2i8y803pydd1hzf2198cs"))))
4028 (build-system gnu-build-system)
4029 (arguments
4030 `(#:tests? #f ; no "check" target
4031 #:make-flags
4032 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
4033 (string-append "SUFFIX="))
4034 #:phases
4035 (modify-phases %standard-phases
4036 (add-after 'unpack 'patch-makefile-and-enter-directory
4037 (lambda _
4038 (substitute* "source/Makefile"
4039 (("ldconfig") "true")
4040 (("^LIBDIR =.*") "LIBDIR = lib\n"))
4041 (chdir "source")
4042 #t))
4043 (add-after 'install 'install-symlink
4044 (lambda _
4045 (symlink "libzita-convolver.so"
4046 (string-append (assoc-ref %outputs "out")
4047 "/lib/libzita-convolver.so.4"))
4048 #t))
4049 ;; no configure script
4050 (delete 'configure))))
4051 (inputs (list fftwf))
4052 (home-page "https://kokkinizita.linuxaudio.org")
4053 (synopsis "Fast, partitioned convolution engine library")
4054 (description
4055 "Zita convolver is a C++ library providing a real-time convolution
4056 engine.")
4057 (license license:gpl3+)))
4058
4059 (define-public zita-resampler
4060 (package
4061 (name "zita-resampler")
4062 (version "1.6.2")
4063 (source (origin
4064 (method url-fetch)
4065 (uri (string-append
4066 "http://kokkinizita.linuxaudio.org"
4067 "/linuxaudio/downloads/zita-resampler-"
4068 version ".tar.bz2"))
4069 (snippet
4070 ;; Don't optimize for a specific processor architecture.
4071 '(begin
4072 (substitute* '("apps/Makefile" "source/Makefile")
4073 (("^CXXFLAGS \\+= -march=native") ""))
4074 #t))
4075 (modules '((guix build utils)))
4076 (sha256
4077 (base32
4078 "1my5k2dh2dkvjp6xjnf9qy6i7s28z13kw1n9pwa4a2cpwbzawfr3"))))
4079 (build-system gnu-build-system)
4080 (arguments
4081 `(#:tests? #f ; no "check" target
4082 #:make-flags
4083 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
4084 (string-append "SUFFIX="))
4085 #:phases
4086 (modify-phases %standard-phases
4087 (add-after
4088 'unpack 'patch-makefile-and-enter-directory
4089 (lambda _
4090 (substitute* "source/Makefile"
4091 (("ldconfig") "true")
4092 (("^LIBDIR =.*") "LIBDIR = lib\n"))
4093 (chdir "source")
4094 #t))
4095 (add-after
4096 'install 'install-symlink
4097 (lambda _
4098 (symlink "libzita-resampler.so"
4099 (string-append (assoc-ref %outputs "out")
4100 "/lib/libzita-resampler.so.1"))
4101 #t))
4102 ;; no configure script
4103 (delete 'configure))))
4104 (home-page "https://kokkinizita.linuxaudio.org/linuxaudio/zita-resampler/resampler.html")
4105 (synopsis "C++ library for resampling audio signals")
4106 (description
4107 "Libzita-resampler is a C++ library for resampling audio signals. It is
4108 designed to be used within a real-time processing context, to be fast, and to
4109 provide high-quality sample rate conversion.")
4110 (license license:gpl3+)))
4111
4112 (define-public zita-alsa-pcmi
4113 (package
4114 (name "zita-alsa-pcmi")
4115 (version "0.3.2")
4116 (source (origin
4117 (method url-fetch)
4118 (uri (string-append
4119 "http://kokkinizita.linuxaudio.org"
4120 "/linuxaudio/downloads/zita-alsa-pcmi-"
4121 version ".tar.bz2"))
4122 (sha256
4123 (base32
4124 "12d7vdg74yh21w69qi0wg57iz4876j94qbiq09bvscih6xz9y78s"))))
4125 (build-system gnu-build-system)
4126 (arguments
4127 `(#:tests? #f ; no "check" target
4128 #:make-flags
4129 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
4130 (string-append "SUFFIX="))
4131 #:phases
4132 (modify-phases %standard-phases
4133 (add-after 'unpack 'patch-makefile-and-enter-directory
4134 (lambda _
4135 (substitute* "source/Makefile"
4136 (("ldconfig") "true")
4137 (("^LIBDIR =.*") "LIBDIR = lib\n"))
4138 (chdir "source")
4139 #t))
4140 (add-after 'install 'install-symlink
4141 (lambda _
4142 (symlink "libzita-alsa-pcmi.so"
4143 (string-append (assoc-ref %outputs "out")
4144 "/lib/libzita-alsa-pcmi.so.0"))
4145 #t))
4146 ;; no configure script
4147 (delete 'configure))))
4148 (inputs
4149 (list alsa-lib fftw))
4150 (home-page "https://kokkinizita.linuxaudio.org")
4151 (synopsis "C++ wrapper around the ALSA API")
4152 (description
4153 "Zita-alsa-pcmi is a C++ wrapper around the ALSA API. It provides easy
4154 access to ALSA PCM devices, taking care of the many functions required to
4155 open, initialise and use a hw: device in mmap mode, and providing floating
4156 point audio data.")
4157 (license license:gpl3+)))
4158
4159 (define-public cuetools
4160 (package
4161 (name "cuetools")
4162 (version "1.4.1")
4163 (source (origin
4164 (method git-fetch)
4165 (uri (git-reference
4166 (url "https://github.com/svend/cuetools")
4167 (commit version)))
4168 (file-name (git-file-name name version))
4169 (sha256
4170 (base32
4171 "02ksv1ahf1v4cr2xbclsfv5x17m9ivzbssb5r8xjm97yh8a7spa3"))))
4172 (build-system gnu-build-system)
4173 ;; The source checkout is not bootstrapped.
4174 (native-inputs
4175 (list autoconf automake flex bison))
4176 (synopsis "Cue and toc file parsers and utilities")
4177 (description "Cuetools is a set of programs that are useful for manipulating
4178 and using CUE sheet (cue) files and Table of Contents (toc) files. CUE and TOC
4179 files are a way to represent the layout of a data or audio CD in a
4180 machine-readable ASCII format.")
4181 (home-page "https://github.com/svend/cuetools")
4182 (license license:gpl2+)))
4183
4184 (define-public mp3guessenc
4185 (package
4186 (name "mp3guessenc")
4187 (version "0.27.5")
4188 (source
4189 (origin
4190 (method url-fetch)
4191 (uri (string-append "mirror://sourceforge/mp3guessenc/mp3guessenc-"
4192 (version-major+minor version) "/mp3guessenc-"
4193 version ".tar.gz"))
4194 (sha256
4195 (base32 "1fa3sbwwn4p2v1749lzy040bfy1xfd574mf2frwgg9ikgk3vlb3c"))))
4196 (build-system gnu-build-system)
4197 (arguments
4198 `(#:tests? #f ; no tests
4199 #:make-flags
4200 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
4201 #:phases
4202 (modify-phases %standard-phases
4203 (delete 'configure)))) ; no configure phase
4204 (home-page "https://mp3guessenc.sourceforge.io")
4205 (synopsis "Analyze MPEG layer I/II/III files")
4206 (description "mp3guessenc is a command line utility that tries to detect the
4207 encoder used for an MPEG Layer III (MP3) file, as well as scan any MPEG audio
4208 file (any layer) and print a lot of useful information.")
4209 (license license:lgpl2.1+)))
4210
4211 (define-public shntool
4212 (package
4213 (name "shntool")
4214 (version "3.0.10")
4215 (source (origin
4216 (method url-fetch)
4217 (uri (list
4218 (string-append "http://etree.org/shnutils/shntool/dist/src/"
4219 "shntool-" version ".tar.gz")
4220 (string-append "mirror://debian/pool/main/s/shntool/shntool_"
4221 version ".orig.tar.gz")))
4222 (sha256
4223 (base32
4224 "00i1rbjaaws3drkhiczaign3lnbhr161b7rbnjr8z83w8yn2wc3l"))))
4225 (build-system gnu-build-system)
4226 (synopsis "WAVE audio data processing tool")
4227 (description "shntool is a multi-purpose WAVE data processing and reporting
4228 utility. File formats are abstracted from its core, so it can process any file
4229 that contains WAVE data, compressed or not---provided there exists a format
4230 module to handle that particular file type. It can also generate CUE files, and
4231 use them split WAVE data into multiple files.")
4232 (home-page "http://etree.org/shnutils/shntool/")
4233 ;; 'install-sh' bears the x11 license
4234 (license (list license:gpl2+ license:x11))))
4235
4236 (define-public dcadec
4237 (package
4238 (name "dcadec")
4239 (version "0.2.0")
4240 (source (origin
4241 (method git-fetch)
4242 (uri (git-reference
4243 (url "https://github.com/foo86/dcadec")
4244 (commit (string-append "v" version))))
4245 (file-name (git-file-name name version))
4246 (sha256
4247 (base32
4248 "07nd0ajizrp1w02bsyfcv18431r8m8rq8gjfmz9wmckpg7cxj2hs"))))
4249 (build-system gnu-build-system)
4250 (arguments
4251 ;; Test files are missing: https://github.com/foo86/dcadec/issues/53
4252 `(#:tests? #f
4253 #:make-flags
4254 (list (string-append "CC=" ,(cc-for-target))
4255 ;; Build shared library.
4256 "CONFIG_SHARED=1"
4257 (string-append "PREFIX=" (assoc-ref %outputs "out"))
4258 ;; Set proper runpath.
4259 (string-append "LDFLAGS=-Wl,-rpath="
4260 (assoc-ref %outputs "out")
4261 "/lib"))
4262 #:phases
4263 (modify-phases %standard-phases
4264 ;; No configure script, just a hand-written Makefile.
4265 (delete 'configure))))
4266 (synopsis "DTS Coherent Acoustics decoder")
4267 (description "Dcadec is a DTS Coherent Acoustics surround sound decoder
4268 with support for HD extensions.")
4269 (home-page "https://github.com/foo86/dcadec")
4270 (license license:lgpl2.1+)))
4271
4272 (define-public drc
4273 (package
4274 (name "drc")
4275 (version "3.2.3")
4276 (source
4277 (origin
4278 (method url-fetch)
4279 (uri (string-append "mirror://sourceforge/drc-fir/drc-fir/"
4280 version "/drc-" version ".tar.gz"))
4281 (sha256
4282 (base32
4283 "08ljj4776pjx119zjmfqa8w56bf7x0m7spmi27yk1m455bmiglrj"))))
4284 (build-system gnu-build-system)
4285 (arguments
4286 (list
4287 #:tests? #false ;there are none
4288 #:make-flags
4289 #~(list (string-append "INSTALL_PREFIX=" #$output)
4290 "-C" "source")
4291 #:phases
4292 '(modify-phases %standard-phases
4293 (delete 'configure))))
4294 (inputs (list fftw))
4295 (home-page "http://drc-fir.sourceforge.net/")
4296 (synopsis "Digital room correction")
4297 (description
4298 "DRC is a program used to generate correction filters for acoustic
4299 compensation of HiFi and audio systems in general, including listening room
4300 compensation. DRC generates just the FIR correction filters, which can be
4301 used with a real time or offline convolver to provide real time or offline
4302 correction. DRC doesn't provide convolution features, and provides only some
4303 simplified, although really accurate, measuring tools.")
4304 (license license:gpl2+)))
4305
4306 (define-public bs1770gain
4307 (package
4308 (name "bs1770gain")
4309 (version "0.7.0")
4310 (home-page "https://manpages.debian.org/sid/bs1770gain/bs1770gain.1.en.html")
4311 (source
4312 (origin
4313 (method url-fetch)
4314 (uri (string-append "mirror://sourceforge/bs1770gain/bs1770gain/"
4315 version "/bs1770gain-" version ".tar.gz"))
4316 (sha256
4317 (base32 "0a2dcaxvxy5m3a5sb1lhplsymvz3ypaiidc5xn9qy01h53zvyvkp"))
4318 (modules '((guix build utils)))
4319 (snippet
4320 `(begin
4321 ;; XXX
4322 (substitute* (find-files "." "\\.[ch]$")
4323 (("^ \\* N..o.*") ""))
4324 (substitute* "libbg/bgx.c"
4325 (("#define BG.* ") "#define BS ")
4326 (("BG.*NO?.*N.*S.*E.*N.*SE?") "NO")
4327 (("\"( #|N).*\"") "\"\""))
4328 (substitute* (list "config.h"
4329 "configure.ac"
4330 "configure")
4331 (("https?://bs1770gain[^/]*/")
4332 ,home-page))
4333 #t))))
4334 (build-system gnu-build-system)
4335 (inputs (list ffmpeg sox))
4336 (synopsis "Tool to adjust loudness of media files")
4337 (description
4338 "BS1770GAIN is a loudness scanner compliant with ITU-R BS.1770 and its
4339 flavors EBU R128, ATSC A/85, and ReplayGain 2.0. It helps normalizing the
4340 loudness of audio and video files to the same level.")
4341 (license license:gpl2+)))
4342
4343 (define-public filteraudio
4344 (let ((revision "1")
4345 (commit "2fc669581e2a0ff87fba8de85861b49133306094"))
4346 (package
4347 (name "filteraudio")
4348 (version (string-append "0.0.0-" revision "."
4349 (string-take commit 7)))
4350 (source
4351 (origin
4352 (method git-fetch)
4353 (uri (git-reference
4354 (url "https://github.com/irungentoo/filter_audio")
4355 (commit commit)))
4356 (file-name (string-append name "-" version "-checkout"))
4357 (sha256
4358 (base32
4359 "0hbb290n3wb23f2k692a6bhc23nnqmxqi9sc9j15pnya8wifw64g"))))
4360 (build-system gnu-build-system)
4361 (arguments
4362 `(#:make-flags (list (string-append "PREFIX=" %output)
4363 (string-append "CC=" ,(cc-for-target)))
4364 #:tests? #f ; No tests
4365 #:phases
4366 (modify-phases %standard-phases
4367 ;; No configure script
4368 (delete 'configure))))
4369 (synopsis "Lightweight audio filtering library")
4370 (description "An easy to use audio filtering library made from webrtc
4371 code, used in @code{libtoxcore}.")
4372 (home-page "https://github.com/irungentoo/filter_audio")
4373 (license license:bsd-3))))
4374
4375 (define-public gsm
4376 (package
4377 (name "gsm")
4378 (version "1.0.20")
4379 (source
4380 (origin
4381 (method url-fetch)
4382 (uri
4383 (string-append "http://www.quut.com/" name "/" name
4384 "-" version ".tar.gz"))
4385 (sha256
4386 (base32 "1gwhmqs24c14gc9qr91iqb2jkbr3qqy4dvf27yf8j7mq322w65b3"))))
4387 (build-system gnu-build-system)
4388 (arguments
4389 `(#:test-target "tst"
4390 #:make-flags (list (string-append "INSTALL_ROOT=" %output))
4391 #:phases
4392 (modify-phases %standard-phases
4393 (add-after 'unpack 'add-fpic-ccflag
4394 (lambda _
4395 ;; The -fPIC compiler option is needed when building
4396 ;; mediastreamer.
4397 (substitute* "Makefile"
4398 (("^CCFLAGS.*" all)
4399 (string-append all "CCFLAGS += -fPIC\n")))))
4400 (add-before 'install 'pre-install
4401 (lambda _
4402 (let ((out (assoc-ref %outputs "out")))
4403 (mkdir-p (string-append out "/inc"))
4404 (mkdir-p (string-append out "/man"))
4405 (mkdir-p (string-append out "/man/man1"))
4406 (mkdir-p (string-append out "/man/man3"))
4407 (mkdir-p (string-append out "/bin"))
4408 (mkdir-p (string-append out "/lib")))))
4409 (add-after 'install 'post-install
4410 (lambda _
4411 (let ((out (assoc-ref %outputs "out")))
4412 (rename-file (string-append out "/inc")
4413 (string-append out "/include"))
4414 (mkdir-p (string-append out "/include/gsm"))
4415 (copy-recursively "inc"
4416 (string-append out "/include/gsm")))))
4417 (delete 'configure)))) ; no configure script
4418 (synopsis "GSM 06.10 lossy speech compression library")
4419 (description "This C library provides an encoder and a decoder for the GSM
4420 06.10 RPE-LTP lossy speech compression algorithm.")
4421 (home-page "http://quut.com/gsm/")
4422 (license (license:non-copyleft "file://COPYRIGHT"))))
4423
4424 (define-public python-pyalsaaudio
4425 (package
4426 (name "python-pyalsaaudio")
4427 (version "0.8.4")
4428 (source (origin
4429 (method url-fetch)
4430 (uri (pypi-uri "pyalsaaudio" version))
4431 (sha256
4432 (base32
4433 "1180ypn9596rq4b7y7dyv627j1q0fqilmkkrckclnzsdakdgis44"))))
4434 (build-system python-build-system)
4435 (arguments
4436 `(#:tests? #f)) ; tests require access to ALSA devices.
4437 (inputs
4438 (list alsa-lib))
4439 (home-page "https://larsimmisch.github.io/pyalsaaudio/")
4440 (synopsis "ALSA wrappers for Python")
4441 (description
4442 "This package contains wrappers for accessing the ALSA API from Python.
4443 It is currently fairly complete for PCM devices, and has some support for
4444 mixers.")
4445 (license license:psfl)))
4446
4447 (define-public ldacbt
4448 (package
4449 (name "ldacbt")
4450 (version "2.0.2.3")
4451 (source (origin
4452 (method url-fetch)
4453 (uri (string-append "https://github.com/EHfive/ldacBT"
4454 "/releases/download/v" version
4455 "/ldacBT-" version ".tar.gz"))
4456 (sha256
4457 (base32
4458 "1d65dms4klzql29abi15i90f41h523kl6mxrz9hi6p5vg37fxn2b"))))
4459 (build-system cmake-build-system)
4460 (arguments `(#:tests? #f)) ; no check target
4461 (home-page "https://github.com/EHfive/ldacBT/")
4462 (synopsis "LDAC Bluetooth encoder and ABR library")
4463 (description "This package provides an encoder for the LDAC
4464 high-resolution Bluetooth audio streaming codec for streaming at up to 990
4465 kbps at 24 bit/96 kHz.")
4466 (license license:asl2.0)))
4467
4468 (define-public bluez-alsa
4469 (package
4470 (name "bluez-alsa")
4471 (version "3.0.0")
4472 (source (origin
4473 ;; The tarballs are mere snapshots and don't contain a
4474 ;; bootstrapped build system.
4475 (method git-fetch)
4476 (uri (git-reference
4477 (url "https://github.com/Arkq/bluez-alsa")
4478 (commit (string-append "v" version))))
4479 (file-name (git-file-name name version))
4480 (sha256
4481 (base32
4482 "1jlsgxyqfhncfhx1sy3ry0dp6p95kd4agh7g2b7g51h0c4cv74h8"))))
4483 (build-system gnu-build-system)
4484 (arguments
4485 `(#:configure-flags
4486 (list "--enable-ldac"
4487 (string-append "--with-alsaplugindir="
4488 (assoc-ref %outputs "out")
4489 "/lib/alsa-lib")
4490 (string-append "--with-dbusconfdir="
4491 (assoc-ref %outputs "out")
4492 "/etc/dbus-1/system.d"))))
4493 (native-inputs
4494 (list autoconf automake libtool pkg-config))
4495 (inputs
4496 (list alsa-lib
4497 bluez
4498 dbus
4499 glib
4500 ldacbt
4501 libbsd
4502 ncurses
4503 ortp
4504 sbc))
4505 (home-page "https://github.com/Arkq/bluez-alsa")
4506 (synopsis "Bluetooth ALSA backend")
4507 (description "This project is a rebirth of a direct integration between
4508 Bluez and ALSA. Since Bluez >= 5, the built-in integration has been removed
4509 in favor of 3rd party audio applications. From now on, Bluez acts as a
4510 middleware between an audio application, which implements Bluetooth audio
4511 profile, and a Bluetooth audio device. BlueALSA registers all known Bluetooth
4512 audio profiles in Bluez, so in theory every Bluetooth device (with audio
4513 capabilities) can be connected. In order to access the audio stream, one has
4514 to connect to the ALSA PCM device called @code{bluealsa}. The device is based
4515 on the ALSA software PCM plugin.")
4516 (license license:expat)))
4517
4518 (define-public snd
4519 (package
4520 (name "snd")
4521 (version "20.9")
4522 (source (origin
4523 (method url-fetch)
4524 (uri (string-append "ftp://ccrma-ftp.stanford.edu/pub/Lisp/"
4525 "snd-" version ".tar.gz"))
4526 (sha256
4527 (base32
4528 "0jxkycxn6jcbs4gklk9sk3gfr0y26dz1m71nxah9rnx80wnzj6hr"))))
4529 (build-system glib-or-gtk-build-system)
4530 (arguments
4531 `(#:tests? #f ; no tests
4532 #:out-of-source? #f ; for the 'install-doc' phase
4533 #:configure-flags
4534 (let* ((out (assoc-ref %outputs "out"))
4535 (docdir (string-append out "/share/doc/"
4536 ,name "-" ,version)))
4537 (list "--with-alsa" "--with-jack" "--with-gmp"
4538 (string-append "--with-doc-dir=" docdir)))
4539 #:phases
4540 (modify-phases %standard-phases
4541 (add-after 'install 'install-doc
4542 (lambda* (#:key outputs #:allow-other-keys)
4543 (let* ((out (assoc-ref outputs "out"))
4544 (doc (string-append out "/share/doc/"
4545 ,name "-" ,version)))
4546 (for-each
4547 (lambda (f)
4548 (install-file f doc))
4549 (find-files "." "\\.html$"))
4550 (copy-recursively "pix" (string-append doc "/pix"))
4551 #t))))))
4552 (native-inputs
4553 (list pkg-config))
4554 (inputs
4555 (list alsa-lib
4556 fftw
4557 flac
4558 gmp
4559 gsl
4560 gtk+
4561 jack-1
4562 libsamplerate
4563 mpc
4564 mpfr
4565 mpg123
4566 speex
4567 timidity++
4568 vorbis-tools
4569 wavpack))
4570 (synopsis "Sound editor")
4571 (home-page "https://ccrma.stanford.edu/software/snd/")
4572 (description
4573 "Snd is a sound editor modelled loosely after Emacs. It can be
4574 customized and extended using either the s7 Scheme implementation (included in
4575 the Snd sources), Ruby, or Forth.")
4576 (license (license:non-copyleft "file://COPYING"))))
4577
4578 (define-public noise-repellent
4579 (package
4580 (name "noise-repellent")
4581 (version "0.1.5")
4582 (source (origin
4583 (method git-fetch)
4584 (uri (git-reference
4585 (url "https://github.com/lucianodato/noise-repellent")
4586 (commit version)))
4587 (file-name (string-append name "-" version "-checkout"))
4588 (sha256
4589 (base32
4590 "0hb89x9i2knzan46q4nwscf5zmnb2nwf4w13xl2c0y1mx1ls1mwl"))))
4591 (build-system meson-build-system)
4592 (arguments
4593 `(#:configure-flags
4594 (list (string-append "--prefix=" (assoc-ref %outputs "out")
4595 "/lib/lv2"))))
4596 (inputs
4597 (list lv2 fftwf))
4598 (native-inputs
4599 (list pkg-config))
4600 (home-page "https://github.com/lucianodato/noise-repellent")
4601 (synopsis "LV2 plugin for broadband noise reduction")
4602 (description "Noise Repellent is an LV2 plugin to reduce noise. It has
4603 the following features:
4604
4605 @enumerate
4606 @item Spectral gating and spectral subtraction suppression rule
4607 @item Adaptive and manual noise thresholds estimation
4608 @item Adjustable noise floor
4609 @item Adjustable offset of thresholds to perform over-subtraction
4610 @item Time smoothing and a masking estimation to reduce artifacts
4611 @item Basic onset detector to avoid transients suppression
4612 @item Whitening of the noise floor to mask artifacts and to recover higher
4613 frequencies
4614 @item Option to listen to the residual signal
4615 @item Soft bypass
4616 @item Noise profile saved with the session
4617 @end enumerate
4618 ")
4619 (license license:lgpl3+)))
4620
4621 (define-public lv2-speech-denoiser
4622 (let ((commit "04cfba929630404f8d4f4ca5bac8d9b09a99152f")
4623 (revision "1"))
4624 (package
4625 (name "lv2-speech-denoiser")
4626 (version (git-version "0" revision commit))
4627 (source
4628 (origin
4629 (method git-fetch)
4630 (uri (git-reference
4631 (url "https://github.com/lucianodato/speech-denoiser/")
4632 (commit commit)))
4633 (file-name (git-file-name name version))
4634 (sha256
4635 (base32 "189l6lz8sz5vr6bjyzgcsrvksl1w6crqsg0q65r94b5yjsmjnpr4"))))
4636 (build-system meson-build-system)
4637 (arguments
4638 `(;; Using a "release" build is recommended for performance
4639 #:build-type "release"
4640 #:phases
4641 (modify-phases %standard-phases
4642 (add-after 'unpack 'patch-meson-build
4643 (lambda _
4644 (substitute* "meson.build"
4645 (("install_folder = 'sdenoise.lv2'")
4646 "install_folder = 'lib/lv2/sdenoise.lv2'")
4647 (("build/manifest.ttl") "../build/manifest.ttl"))
4648 #t))
4649 (add-after 'unpack 'build-rnnoise
4650 (lambda _
4651 (with-directory-excursion "rnnoise"
4652 (let ((old-CFLAGS (getenv "CFLAGS")))
4653 (setenv "CFLAGS" "-fvisibility=hidden -fPIC -Wl,--exclude-libs,ALL")
4654 (setenv "CONFIG_SHELL" (which "bash"))
4655 (invoke "autoreconf" "-vif")
4656 (invoke "sh" "configure"
4657 "--disable-examples"
4658 "--disable-doc"
4659 "--disable-shared"
4660 "--enable-static")
4661 (invoke "make")
4662 (setenv "CFLAGS" old-CFLAGS))))))))
4663 (inputs
4664 (list lv2))
4665 (native-inputs
4666 (list autoconf automake libtool pkg-config))
4667 (home-page "https://github.com/werman/noise-suppression-for-voice")
4668 (synopsis "Speech denoise LV2 plugin based on Xiph's RNNoise library")
4669 (description "RNNoise is a library that uses deep learning to apply
4670 noise suppression to audio sources with voice presence. This package provides
4671 an LV2 audio plugin.")
4672 (license license:lgpl3+))))
4673
4674 (define-public cli-visualizer
4675 (package
4676 (name "cli-visualizer")
4677 (version "1.8")
4678 (source
4679 (origin
4680 (method git-fetch)
4681 (uri (git-reference
4682 (url "https://github.com/dpayne/cli-visualizer")
4683 (commit (string-append "v" version))))
4684 (file-name (git-file-name name version))
4685 (sha256
4686 (base32 "003mbbwsz43mg3d7llphpypqa9g7rs1p1cdbqi1mbc2bfrc1gcq2"))))
4687 (build-system cmake-build-system)
4688 (native-inputs
4689 ;; TODO: Try using the latest googletest for versions > 1.8.
4690 (list ;; ("googletest" ,googletest-1.8)
4691 which))
4692 (inputs
4693 (list fftw ncurses pulseaudio))
4694 (arguments
4695 '(#:tests? #f
4696 ;; XXX Enable tests after patching them to use the system googletest.
4697 ;; #:configure-flags (list "-DVIS_WITH_TESTS=true")
4698 #:phases
4699 (modify-phases %standard-phases
4700 (add-after 'install 'install-examples
4701 (lambda* (#:key outputs #:allow-other-keys)
4702 (with-directory-excursion "../source/examples"
4703 (delete-file "mac_osx_config")
4704 (for-each (lambda (file)
4705 (install-file file
4706 (string-append
4707 (assoc-ref outputs "out")
4708 "/share/doc")))
4709 (find-files ".")))
4710 #t)))))
4711 (home-page "https://github.com/dpayne/cli-visualizer/")
4712 (synopsis "Command-line audio visualizer")
4713 (description "@code{cli-visualizer} displays fast-Fourier
4714 transforms (FFTs) of the sound being played, as well as other graphical
4715 representations.")
4716 (license license:expat)))
4717
4718 (define-public cava
4719 (package
4720 (name "cava")
4721 (version "0.7.4")
4722 (source (origin
4723 (method git-fetch)
4724 (uri (git-reference
4725 (url "https://github.com/karlstav/cava")
4726 (commit version)))
4727 (file-name (git-file-name name version))
4728 (sha256
4729 (base32
4730 "1mziklmqifhnb4kg9ia2r56r8wjn6xp40bkpf484hsgqvnrccl86"))
4731 (modules '((guix build utils)))
4732 (snippet
4733 #~(begin
4734 (delete-file-recursively "iniparser")
4735 (substitute* "configure.ac"
4736 (("AC_CONFIG_FILES\\(iniparser/Makefile\\)") ""))
4737 (substitute* "Makefile.am"
4738 (("SUBDIRS = iniparser") ""))))))
4739 (build-system gnu-build-system)
4740 (native-inputs (list autoconf automake libtool))
4741 (inputs (list fftw ncurses pulseaudio iniparser))
4742 (arguments
4743 (list #:configure-flags
4744 #~(list (string-append "PREFIX="
4745 #$output)
4746 (string-append "FONT_DIR="
4747 #$output "/share/consolefonts"))
4748 #:make-flags
4749 #~(let ((lib (string-append #$output "/lib")))
4750 (list (string-append "cava_LDFLAGS = -L" lib " -Wl,-rpath " lib " -lrt")))
4751 #:phases
4752 #~(modify-phases %standard-phases
4753 (replace 'bootstrap
4754 (lambda _
4755 (setenv "HOME"
4756 (getcwd))
4757 (invoke "sh" "autogen.sh")))
4758 (add-before 'build 'make-cava-ldflags
4759 (lambda _
4760 (mkdir-p (string-append #$output "/lib"))))
4761 (add-after 'install 'data
4762 (lambda _
4763 (for-each (lambda (file)
4764 (install-file file
4765 (string-append #$output
4766 "/share/doc/examples")))
4767 (find-files "example_files")))))))
4768 (home-page "https://karlstav.github.io/cava/")
4769 (synopsis "Console audio visualizer for ALSA, MPD, and PulseAudio")
4770 (description "C.A.V.A. is a bar audio spectrum visualizer for the terminal
4771 using ALSA, MPD, PulseAudio, or a FIFO buffer as its input.")
4772 (license license:expat)))
4773
4774 (define-public fluid-3
4775 (let ((commit "871c8ce2002e8b3c198f532fdb4fbcce7914f951"))
4776 (package
4777 (name "fluid-3")
4778 (version "2.1")
4779 (source
4780 (origin
4781 (method url-fetch)
4782 ;; Only one file is required, but the release bundles the whole
4783 ;; software which is 50MiB as tar and 200MiB unpacked. The website
4784 ;; directly links the soundfont release to the github file download.
4785 (uri (string-append "https://github.com/musescore/MuseScore/raw/"
4786 commit "/share/sound/FluidR3Mono_GM.sf3"))
4787 (file-name (string-append name "-" version ".sf3"))
4788 (sha256
4789 (base32
4790 "1hjfg5i15bw9279007xs92zsggjgn4s4k9pc00s851l3kvc6dkfg"))))
4791 (build-system trivial-build-system)
4792 (arguments
4793 `(#:modules ((guix build utils))
4794 #:builder
4795 (begin
4796 (use-modules (guix build utils))
4797 (let ((file (assoc-ref %build-inputs "source"))
4798 (out (string-append %output "/share/soundfonts")))
4799 (mkdir-p out)
4800 (copy-file file (string-append out "/FluidR3Mono_GM.sf3"))
4801 #t))))
4802 (home-page "https://github.com/musescore/MuseScore/tree/master/share/sound")
4803 (synopsis "Pro-quality GM soundfont")
4804 (description "Fluid-3 is Frank Wen's pro-quality GM soundfont.")
4805 (license license:expat))))
4806
4807 (define-public libfdk
4808 (package
4809 (name "libfdk")
4810 (version "2.0.1")
4811 (source
4812 (origin
4813 (method git-fetch)
4814 (uri (git-reference
4815 (url "https://github.com/mstorsjo/fdk-aac")
4816 (commit (string-append "v" version))))
4817 (file-name (git-file-name name version))
4818 (sha256
4819 (base32
4820 "1fkrnzs78fmj11n9z3l0w53i2fl16jcfiyavwidck9bzmkmsf486"))))
4821 (build-system gnu-build-system)
4822 (native-inputs
4823 (list autoconf automake libtool))
4824 (home-page "https://github.com/mstorsjo/fdk-aac")
4825 (synopsis "Fraunhofer FDK AAC library")
4826 (description "FDK is a library for encoding and decoding Advanced Audio
4827 Coding (AAC) format audio, developed by Fraunhofer IIS, and included as part of
4828 Android. It supports several Audio Object Types including MPEG-2 and MPEG-4 AAC
4829 LC, HE-AAC (AAC LC + SBR), HE-AACv2 (LC + SBR + PS) as well AAC-LD (low delay)
4830 and AAC-ELD (enhanced low delay) for real-time communication. The encoding
4831 library supports sample rates up to 96 kHz and up to eight channels (7.1
4832 surround).")
4833 (license (license:fsf-free "https://github.com/mstorsjo/fdk-aac/blob/master/NOTICE"
4834 "https://www.gnu.org/licenses/license-list.html#fdk"))))
4835
4836 (define-public libopenshot-audio
4837 (package
4838 (name "libopenshot-audio")
4839 (version "0.2.2")
4840 (source (origin
4841 (method git-fetch)
4842 (uri (git-reference
4843 (url "https://github.com/OpenShot/libopenshot-audio")
4844 (commit (string-append "v" version))))
4845 (file-name (git-file-name name version))
4846 (sha256
4847 (base32
4848 "03dygh85riljk7dpn5a5a0d22a2kz45fs13gzwqgnbzzr1k17p2y"))))
4849 (build-system cmake-build-system)
4850 (inputs
4851 (list alsa-lib
4852 ;; The following are for JUCE GUI components:
4853 libx11
4854 freetype
4855 libxrandr
4856 libxinerama
4857 libxcursor))
4858 (arguments
4859 `(#:tests? #f ;there are no tests
4860 #:configure-flags
4861 (list (string-append "-DCMAKE_CXX_FLAGS=-I"
4862 (assoc-ref %build-inputs "freetype")
4863 "/include/freetype2"))))
4864 (home-page "https://openshot.org")
4865 (synopsis "Audio editing and playback for OpenShot")
4866 (description "OpenShot Audio Library (libopenshot-audio) allows
4867 high-quality editing and playback of audio, and is based on the JUCE
4868 library.")
4869 (license license:lgpl3+)))
4870
4871 (define-public faudio
4872 (package
4873 (name "faudio")
4874 (version "21.10")
4875 (source
4876 (origin
4877 (method git-fetch)
4878 (uri (git-reference
4879 (url "https://github.com/FNA-XNA/FAudio")
4880 (commit version)))
4881 (file-name (git-file-name name version))
4882 (sha256
4883 (base32 "0l9bicg8v1shsyq9k48zh4wv5kwfs6lfjmm9blzd13xrgmhd07w2"))))
4884 (arguments
4885 '(#:tests? #f ; No tests.
4886 #:configure-flags '("-DGSTREAMER=ON")))
4887 (build-system cmake-build-system)
4888 (native-inputs (list pkg-config))
4889 (inputs (list gstreamer gst-plugins-base sdl2))
4890 (home-page "https://github.com/FNA-XNA/FAudio")
4891 (synopsis "XAudio reimplementation")
4892 (description "FAudio is an XAudio reimplementation that focuses solely on
4893 developing fully accurate DirectX Audio runtime libraries.")
4894 (license
4895 (list license:zlib
4896 ;; stb & utils/{ui,wav}common are dual-licenced under either of:
4897 license:expat
4898 license:public-domain))))
4899
4900 (define-public gnaural
4901 (package
4902 (name "gnaural")
4903 (version "20110606")
4904 (source
4905 (origin
4906 (method url-fetch)
4907 (uri (string-append "mirror://sourceforge/gnaural/Gnaural/gnaural_"
4908 version ".tar.xz"))
4909 (sha256
4910 (base32
4911 "1gq519c0imsh57zklyi0f8h64l3ai48lh672c834470z8c6kvbfi"))))
4912 (build-system gnu-build-system)
4913 (inputs
4914 (list alsa-lib gtk+-2 libsndfile portaudio))
4915 (native-inputs
4916 (list pkg-config))
4917 (home-page "http://gnaural.sourceforge.net/")
4918 (synopsis "Binaural beat synthesizer")
4919 (description "Gnaural is a programmable auditory binaural beat synthesizer
4920 intended to be used for brainwave entrainment. Gnaural supports creation of
4921 binaural beat tracks of different frequencies and exporting of tracks into
4922 different audio formats. Gnaural can also be linked over the internet with
4923 other Gnaural instances, allowing synchronous sessions between many users.")
4924 (license license:gpl2+)))
4925
4926 (define-public darkice
4927 (package
4928 (name "darkice")
4929 (version "1.4")
4930 (source (origin
4931 (method url-fetch)
4932 (uri (string-append "https://github.com/rafael2k/darkice/releases/"
4933 "download/v" version "/darkice-"
4934 version ".tar.gz"))
4935 (sha256
4936 (base32
4937 "05yq7lggxygrkd76yiqby3msrgdn082p0qlvmzzv9xbw8hmyra76"))))
4938 (build-system gnu-build-system)
4939 (native-inputs (list pkg-config))
4940 (inputs (list lame
4941 libvorbis
4942 opus
4943 twolame
4944 alsa-lib
4945 pulseaudio
4946 jack-1
4947 libsamplerate))
4948 (arguments
4949 `(#:configure-flags
4950 (list (string-append "--with-lame-prefix="
4951 (assoc-ref %build-inputs "lame")))))
4952 (home-page "http://www.darkice.org/")
4953 (synopsis "Live audio streamer")
4954 (description "DarkIce is a live audio streamer. It takes audio input from
4955 a sound card, encodes it into Ogg Vorbis and/or mp3, and sends the audio
4956 stream to one or more IceCast and/or ShoutCast servers.")
4957 (license license:gpl3+)))
4958
4959 (define-public libltc
4960 (package
4961 (name "libltc")
4962 (version "1.3.1")
4963 (source
4964 (origin
4965 (method url-fetch)
4966 (uri
4967 (string-append "https://github.com/x42/libltc/releases/download/v"
4968 version "/libltc-" version ".tar.gz"))
4969 (sha256
4970 (base32
4971 "173h9dgmain3nyrwk6q2d7yl4fnh4vacag4s2p01n5b7nyrkxrjh"))))
4972 (build-system gnu-build-system)
4973 (arguments
4974 `(#:parallel-tests? #f)) ;tests fail otherwise
4975 (native-inputs
4976 (list doxygen pkg-config))
4977 (synopsis "Encode or decode Linear/Longitudinal Time Code (LTC) audio")
4978 (description "Libltc is a POSIX-C Library for handling
4979 @dfn{Linear/Longitudinal Time Code} (LTC) data.")
4980 (home-page "https://x42.github.io/libltc/")
4981 (license license:lgpl3+)))
4982
4983 (define-public ttaenc
4984 (package
4985 (name "ttaenc")
4986 (version "3.4.1")
4987 (source
4988 (origin
4989 (method url-fetch)
4990 (uri (string-append "mirror://sourceforge/tta/"
4991 "tta/ttaenc-src"
4992 "/ttaenc-" version "-src.tgz"))
4993 (sha256
4994 (base32
4995 "1iixpr4b89g9g1hwn8ak8k8iflcww3r5f09a117qdidc2nqcijdj"))))
4996 (build-system gnu-build-system)
4997 (arguments
4998 `(#:tests? #f ;no tests
4999 #:make-flags
5000 (list (string-append "CC=" ,(cc-for-target))
5001 (string-append "INSDIR=" (assoc-ref %outputs "out") "/bin"))
5002 #:phases
5003 (modify-phases %standard-phases
5004 (delete 'configure) ; no configure
5005 (add-before 'install 'make-bindir
5006 (lambda* (#:key outputs #:allow-other-keys)
5007 (let* ((out (assoc-ref outputs "out")))
5008 (mkdir-p (string-append out "/bin"))
5009 #t))))))
5010 (synopsis "TTA lossless audio encoder")
5011 (description
5012 "TTA performs lossless compression on multichannel 8,16 and 24 bits
5013 data of the Wav audio files. Being lossless means that no data-
5014 quality is lost in the compression - when uncompressed, the data will
5015 be identical to the original. The compression ratios of TTA depend on
5016 the type of music file being compressed, but the compression size
5017 will generally range between 30% - 70% of the original. TTA format
5018 supports both of ID3v1/v2 and APEv2 tags.")
5019 (home-page "http://tausoft.org/")
5020 (license license:gpl2+)))
5021
5022 (define-public libsoundio
5023 (package
5024 (name "libsoundio")
5025 (version "2.0.0")
5026 (source
5027 (origin
5028 (method git-fetch)
5029 (uri (git-reference
5030 (url "https://github.com/andrewrk/libsoundio")
5031 (commit version)))
5032 (file-name (git-file-name name version))
5033 (sha256
5034 (base32
5035 "12l4rvaypv87vigdrmjz48d4d6sq4gfxf5asvnc4adyabxb73i4x"))))
5036 (build-system cmake-build-system)
5037 (arguments
5038 `(#:tests? #f)) ;no tests included
5039 (inputs
5040 (list alsa-lib jack-1 pulseaudio))
5041 (native-inputs
5042 (list pkg-config))
5043 (home-page "http://libsound.io")
5044 (synopsis "C library for real-time audio input and output")
5045 (description "@code{libsoundio} is a C library providing audio input and
5046 output. The API is suitable for real-time software such as digital audio
5047 workstations as well as consumer software such as music players.")
5048 (license license:expat)))
5049
5050 (define-public redkite
5051 (package
5052 (name "redkite")
5053 (version "1.3.1") ;marked unmaintained as of Oct. 2021
5054 (source
5055 (origin
5056 (method git-fetch)
5057 (uri (git-reference
5058 (url "https://github.com/free-sm/redkite")
5059 (commit (string-append "v" version))))
5060 (file-name (git-file-name name version))
5061 (sha256
5062 (base32 "1zb2k2a4m7z2ravqrjn8fq8lic20wbr2m8kja3p3113jsk7j9zvd"))))
5063 (build-system cmake-build-system)
5064 (arguments
5065 `(#:tests? #f)) ;no tests included
5066 (propagated-inputs
5067 (list cairo))
5068 (native-inputs
5069 (list pkg-config))
5070 (synopsis "Small GUI toolkit")
5071 (description "Redkite is a small GUI toolkit developed in C++17 and
5072 inspired from other well known GUI toolkits such as Qt and GTK. It is
5073 minimal on purpose and is intended to be statically linked to applications,
5074 therefore satisfying any requirements they may have to be self contained,
5075 as is the case with audio plugins.")
5076 (home-page "https://gitlab.com/geontime/redkite")
5077 (license license:gpl3+)))
5078
5079 (define-public carla
5080 (package
5081 (name "carla")
5082 (version "2.4.1")
5083 (source
5084 (origin
5085 (method git-fetch)
5086 (uri
5087 (git-reference
5088 (url "https://github.com/falkTX/Carla")
5089 (commit (string-append "v" version))))
5090 (file-name (git-file-name name version))
5091 (sha256
5092 (base32 "01ngkmfcxyg1bb4qmfvlkkjbx4lx62akxqhizl8zmqnhfcy4p9bx"))))
5093 (build-system gnu-build-system)
5094 (arguments
5095 (list #:tests? #f ; no "check" target
5096 #:make-flags
5097 #~(list (string-append "PREFIX=" #$output))
5098 #:phases
5099 #~(modify-phases %standard-phases
5100 (delete 'configure) ; no configure script
5101 (add-before 'build 'set-CC-variable-and-show-features
5102 (lambda _
5103 (setenv "CC" #$(cc-for-target))
5104 (invoke "make" "features")))
5105 (add-after 'install 'make-carla-executable
5106 (lambda _
5107 (chmod (string-append #$output "/share/carla/carla") #o555)))
5108 (add-after 'install 'wrap-executables
5109 (lambda* (#:key inputs #:allow-other-keys)
5110 (wrap-script (string-append #$output "/bin/carla")
5111 #:guile (search-input-file inputs "bin/guile")
5112 `("GUIX_PYTHONPATH" ":" prefix
5113 (,(getenv "GUIX_PYTHONPATH")))))))))
5114 (inputs
5115 (list alsa-lib
5116 ffmpeg
5117 fluidsynth
5118 file
5119 liblo
5120 libsndfile
5121 libx11
5122 gtk+-2 ;needed for bridging GTK2 plugins in GTK3 hosts
5123 gtk+
5124 python-pyliblo
5125 python-pyqt
5126 python-rdflib
5127 ;; python-pyqt shows the following error without python-wrapper:
5128 ;; Error while finding module specification for 'PyQt5.uic.pyuic'
5129 ;; (ModuleNotFoundError: No module named 'PyQt5')
5130 python-wrapper
5131 qtbase-5
5132 zlib
5133
5134 ;; For WRAP-SCRIPT above.
5135 guile-2.2))
5136 (native-inputs
5137 (list pkg-config))
5138 (home-page "https://kx.studio/Applications:Carla")
5139 (synopsis "Audio plugin host")
5140 (description "Carla is a modular audio plugin host, with features like
5141 transport control, automation of parameters via MIDI CC and remote control
5142 over OSC. Carla currently supports LADSPA (including LRDF), DSSI, LV2, VST2,
5143 and VST3 plugin formats, plus SF2 and SFZ file support. It uses JACK as the
5144 default and preferred audio driver but also supports native drivers like ALSA.")
5145 (license license:gpl2+)))
5146
5147 (define-public ecasound
5148 (package
5149 (name "ecasound")
5150 (version "2.9.3")
5151 (source (origin
5152 (method url-fetch)
5153 (uri (string-append "https://nosignal.fi/download/ecasound-"
5154 version ".tar.gz"))
5155 (sha256
5156 (base32 "1m7njfjdb7sqf0lhgc4swihgdr4snkg8v02wcly08wb5ar2fr2s6"))))
5157 (build-system gnu-build-system)
5158 (native-inputs (list pkg-config))
5159 ;; It would be nice to add mikmod to inputs if that gets packaged
5160 ;; eventually.
5161 (inputs (list alsa-lib
5162 jack-1
5163 mpg123
5164 lame
5165 vorbis-tools
5166 faad2
5167 flac
5168 timidity++
5169 libsndfile
5170 libsamplerate
5171 ncurses
5172 ladspa
5173 lilv))
5174 (home-page "https://nosignal.fi/ecasound/index.php")
5175 (synopsis "Multitrack audio processing")
5176 (description "Ecasound is a software package designed for multitrack audio
5177 processing. It can be used for simple tasks like audio playback, recording and
5178 format conversions, as well as for multitrack effect processing, mixing,
5179 recording and signal recycling. Ecasound supports a wide range of audio inputs,
5180 outputs and effect algorithms. Effects and audio objects can be combined in
5181 various ways, and their parameters can be controlled by operator objects like
5182 oscillators and MIDI-CCs. A versatile console mode user-interface is included
5183 in the package.")
5184 ;; As an exception to the above, the C, C++ and python implementations
5185 ;; of the Ecasound Control Interface (ECI) are licensed under the LGPL
5186 ;; (see the file 'COPYING.LGPL'). This allows writing ECI applications
5187 ;; that are not licensed under GPL.
5188 (license (list license:gpl2 license:lgpl2.1))))
5189
5190 (define-public libaudec
5191 (package
5192 (name "libaudec")
5193 (version "0.2.4")
5194 (source
5195 (origin
5196 (method git-fetch)
5197 (uri (git-reference
5198 (url "https://git.zrythm.org/zrythm/libaudec")
5199 (commit (string-append "v" version))))
5200 (file-name (git-file-name name version))
5201 (sha256
5202 (base32
5203 "1570m2dfia17dbkhd2qhx8jjihrpm7g8nnyg6n4wif4vv229s7dz"))))
5204 (build-system meson-build-system)
5205 (arguments
5206 `(#:configure-flags
5207 ;; Build the tests.
5208 `("-Dtests=true")))
5209 (inputs
5210 (list libsamplerate libsndfile))
5211 (native-inputs
5212 (list pkg-config))
5213 (synopsis "Library for reading and resampling audio files")
5214 (description "libaudec is a wrapper library over ffmpeg, sndfile and
5215 libsamplerate for reading and resampling audio files, based on Robin Gareus'
5216 @code{audio_decoder} code.")
5217 (home-page "https://git.zrythm.org/zrythm/libaudec")
5218 (license license:agpl3+)))
5219
5220 (define-public lv2lint
5221 (package
5222 (name "lv2lint")
5223 (version "0.8.0")
5224 (source
5225 (origin
5226 (method git-fetch)
5227 (uri (git-reference
5228 (url "https://git.open-music-kontrollers.ch/lv2/lv2lint")
5229 (commit version)))
5230 (file-name (git-file-name name version))
5231 (sha256
5232 (base32
5233 "1jrka0hsn4n1clri7zfkcl3c2vi52144lkpjm81l51ff8rqy8ks1"))))
5234 (build-system meson-build-system)
5235 (arguments
5236 `(#:configure-flags
5237 `("-Delf-tests=true" ; for checking symbol visibility
5238 "-Donline-tests=true"))) ; for checking URI existence
5239 (inputs
5240 (list curl libelf lilv))
5241 (native-inputs
5242 (list pkg-config))
5243 (synopsis "LV2 plugin lint tool")
5244 (description "lv2lint is an LV2 lint-like tool that checks whether a
5245 given plugin and its UI(s) match up with the provided metadata and adhere
5246 to well-known best practices.")
5247 (home-page "https://open-music-kontrollers.ch/lv2/lv2lint/")
5248 (license license:artistic2.0)))
5249
5250 (define-public lv2toweb
5251 (package
5252 (name "lv2toweb")
5253 (version "0.4")
5254 (source
5255 (origin
5256 (method git-fetch)
5257 (uri (git-reference
5258 (url "https://github.com/x42/lv2toweb")
5259 (commit (string-append "v" version))))
5260 (file-name (git-file-name name version))
5261 (sha256
5262 (base32
5263 "007aysqvgkf25za8nkmyd5g9kp1zla460dcpidlj5xg1zc3fcdfi"))))
5264 (build-system gnu-build-system)
5265 (arguments
5266 `(#:tests? #f ; no "check" target
5267 #:make-flags (list "CC=gcc"
5268 (string-append "PREFIX=" (assoc-ref %outputs "out")))
5269 #:phases
5270 (modify-phases %standard-phases
5271 (delete 'configure))))
5272 (inputs
5273 (list jalv lilv))
5274 (native-inputs
5275 (list help2man pkg-config))
5276 (synopsis "Documentation generator for LV2 plugins")
5277 (description
5278 "lv2toweb allows the user to create an xhtml page with information
5279 about the given LV2 plugin, provided that the plugin and its UI(s) match up
5280 with the provided metadata and adhere to well-known best practices.")
5281 (home-page "https://github.com/x42/lv2toweb")
5282 (license (list license:isc license:gpl2))))
5283
5284 (define-public ztoolkit
5285 (package
5286 (name "ztoolkit")
5287 (version "0.1.1")
5288 (source
5289 (origin
5290 (method git-fetch)
5291 (uri (git-reference
5292 (url "https://git.zrythm.org/zrythm/ztoolkit")
5293 (commit (string-append "v" version))))
5294 (file-name (git-file-name name version))
5295 (sha256
5296 (base32
5297 "07xl3cmdaf7k9mm58m93cn8i1jvgimmiifdw1w7v2jl88nx60pm1"))))
5298 (build-system meson-build-system)
5299 (native-inputs
5300 (list pkg-config))
5301 ;; These are listed as propagated inputs because they are dependencies
5302 ;; in pkgconfig.
5303 (propagated-inputs
5304 (list cairo libx11))
5305 (synopsis "GUI toolkit for LV2 plugins")
5306 (description "ZToolkit (Ztk) is a cross-platform GUI toolkit heavily
5307 inspired by GTK. It handles events and low level drawing on behalf of
5308 the user and provides a high-level API for managing the UI and custom
5309 widgets. ZToolkit is written in C and was created to be used for building
5310 audio plugin UIs, where the dependencies often need to be kept to a
5311 minimum.")
5312 (home-page "https://git.zrythm.org/zrythm/ztoolkit")
5313 (license license:agpl3+)))
5314
5315 (define-public libinstpatch
5316 (package
5317 (name "libinstpatch")
5318 (version "1.1.6")
5319 (source
5320 (origin
5321 (method git-fetch)
5322 (uri (git-reference
5323 (url "https://github.com/swami/libinstpatch")
5324 (commit (string-append "v" version))))
5325 (file-name (git-file-name name version))
5326 (sha256
5327 (base32 "1w3nk0vvd1cxic70n45zjip0bdsrja969myvyvkhq3ngbarbykir"))))
5328 (build-system cmake-build-system)
5329 (arguments
5330 `(#:tests? #f)) ;there are no tests
5331 (native-inputs
5332 `(("glib:bin" ,glib "bin")
5333 ("pkg-config" ,pkg-config)))
5334 (inputs
5335 (list glib libsndfile))
5336 (home-page "http://www.swamiproject.org/")
5337 (synopsis "Instrument file software library")
5338 (description
5339 "libInstPatch is a library for processing digital sample based MIDI
5340 instrument \"patch\" files. The types of files libInstPatch supports are used
5341 for creating instrument sounds for wavetable synthesis. libInstPatch provides
5342 an object framework (based on GObject) to load patch files, which can then be
5343 edited, converted, compressed and saved.")
5344 (license license:lgpl2.1)))
5345
5346 (define-public ztoolkit-rsvg
5347 (package/inherit ztoolkit
5348 (name "ztoolkit-rsvg")
5349 (arguments
5350 `(#:configure-flags `("-Denable_rsvg=true")))
5351 (propagated-inputs
5352 `(("librsvg" ,librsvg)
5353 ,@(package-propagated-inputs ztoolkit)))
5354 (synopsis "ZToolkit with SVG support")))
5355
5356 (define-public lsp-dsp-lib
5357 (package
5358 (name "lsp-dsp-lib")
5359 (version "0.5.14")
5360 (source
5361 (origin
5362 (method url-fetch)
5363 (uri (string-append "https://github.com/sadko4u/lsp-dsp-lib/"
5364 "releases/download/" version
5365 "/lsp-dsp-lib-" version "-src.tar.gz"))
5366 (sha256
5367 (base32 "1gcznkyybywbgdi2fhx27i8sckhy6ahvxax72b213g1lr5aaw7bq"))))
5368 (build-system gnu-build-system)
5369 (arguments
5370 (list #:tests? #f ; no tests
5371 #:make-flags
5372 #~(list (string-append "CC=" #$(cc-for-target)))
5373 #:phases
5374 #~(modify-phases %standard-phases
5375 (add-after 'unpack 'omit-static-library
5376 (lambda _
5377 (substitute* "src/Makefile"
5378 ((".*cp \\$\\(ARTIFACT_SLIB\\).*") "") ; don't install it
5379 ((" \\$\\(ARTIFACT_SLIB\\)") "")))) ; don't build it
5380 (replace 'configure
5381 (lambda _
5382 (invoke "make" "config"
5383 (string-append "PREFIX=" #$output)))))))
5384 (home-page "https://github.com/sadko4u/lsp-dsp-lib")
5385 (synopsis "Digital signal processing library")
5386 (description "The LSP DSP library provides a set of functions that perform
5387 SIMD-optimized computing on several hardware architectures. All functions
5388 currently operate on IEEE-754 single-precision floating-point numbers.")
5389 (license license:lgpl3+)))
5390
5391 (define-public codec2
5392 (package
5393 (name "codec2")
5394 (version "0.9.2")
5395 (source
5396 (origin
5397 (method git-fetch)
5398 (uri (git-reference
5399 (url "https://github.com/drowe67/codec2")
5400 (commit (string-append "v" version))))
5401 (file-name (git-file-name name version))
5402 (sha256
5403 (base32 "1jpvr7bra8srz8jvnlbmhf8andbaavq5v01qjnp2f61za93rzwba"))))
5404 (build-system cmake-build-system)
5405 (native-inputs
5406 (list bc octave valgrind))
5407 (arguments
5408 `(#:tests? #f ; TODO: Fix tests (paths, graphic toolkit, octave modules).
5409 #:phases
5410 (modify-phases %standard-phases
5411 (add-before 'check 'set-test-environment
5412 (lambda _
5413 (setenv "HOME" "/tmp")
5414 #t)))))
5415 (synopsis "Speech codec")
5416 (description
5417 "Codec 2 is a speech codec designed for communications quality speech
5418 between 700 and 3200 bit/s. The main application is low bandwidth HF/VHF
5419 digital radio.")
5420 (home-page "https://www.rowetel.com/?page_id=452")
5421 (license license:lgpl2.1)))
5422
5423 (define-public mbelib
5424 ;; No release since 2016, use commit directly.
5425 (let ((commit "9a04ed5c78176a9965f3d43f7aa1b1f5330e771f")
5426 (revision "1"))
5427 (package
5428 (name "mbelib")
5429 (version (git-version "1.3.0" revision commit))
5430 (source
5431 (origin
5432 (method git-fetch)
5433 (uri (git-reference
5434 (url "https://github.com/szechyjs/mbelib")
5435 (commit commit)))
5436 (file-name (git-file-name name version))
5437 (sha256
5438 (base32 "0a7xmf87xnjzm5b437j2vnwv39x0ascja1j04c5wj6xs1529gw8h"))))
5439 (build-system cmake-build-system)
5440 (home-page "https://github.com/szechyjs/mbelib")
5441 (synopsis "P25 Phase 1 and ProVoice vocoder")
5442 (description
5443 "The mbelib library provides support for the 7200x4400 bit/s codec used
5444 in P25 Phase 1, the 7100x4400 bit/s codec used in ProVoice and the @emph{Half
5445 Rate} 3600x2250 bit/s vocoder used in various radio systems.")
5446 (license (list license:bsd-3 ; test/ framework
5447 license:isc))))) ; the rest
5448
5449 (define-public ableton-link
5450 (package
5451 (name "ableton-link")
5452 (version "3.0.3")
5453 (source (origin
5454 (method git-fetch)
5455 (uri (git-reference
5456 (url "https://github.com/Ableton/link")
5457 (commit (string-append "Link-" version))))
5458 (file-name (git-file-name name version))
5459 (sha256
5460 (base32
5461 "1wplqj11ww64gmw2kzlxpvfs3v04m2036f7k5ndm34zcv12b91fa"))
5462 (modules '((guix build utils)))
5463 (patches
5464 (search-patches "ableton-link-system-libraries-debian.patch"))
5465 (snippet
5466 '(begin
5467 ;; Tests assume that CMake's "build" directory is a
5468 ;; sub-directory of the source tree, so we fix it.
5469 (substitute* "ci/run-tests.py"
5470 (("root_dir,") "root_dir, os.pardir,"))
5471 ;; Unbundle dependencies.
5472 (delete-file-recursively "third_party")
5473 (delete-file-recursively "modules")))))
5474 (build-system cmake-build-system)
5475 (native-inputs
5476 (list catch-framework
5477 python ;for running tests
5478 portaudio ;for portaudio examples
5479 qtbase-5 ;for Qt examples
5480 qtdeclarative-5
5481 qttools-5))
5482 (inputs
5483 (list jack-1 ;for JACK examples
5484 qtquickcontrols-5)) ;for Qt examples
5485 (propagated-inputs
5486 ;; This is because include/ableton/platforms/asio/AsioWrapper.hpp
5487 ;; contains '#include <asio.hpp>'.
5488 (list asio))
5489 (arguments
5490 `(#:configure-flags
5491 '("-DLINK_BUILD_QT_EXAMPLES=ON"
5492 "-DLINK_BUILD_JACK=ON")
5493 #:phases
5494 (modify-phases %standard-phases
5495 (replace 'check
5496 (lambda* (#:key inputs tests? #:allow-other-keys)
5497 (when tests?
5498 (let* ((python (search-input-file inputs "/bin/python3"))
5499 (run-tests "../source/ci/run-tests.py"))
5500 (invoke python run-tests "--target" "LinkCoreTest")
5501 (invoke python run-tests "--target" "LinkDiscoveryTest")))))
5502 (add-before 'install 'patch-cmake
5503 (lambda* (#:key inputs #:allow-other-keys)
5504 (let* ((source "../source/"))
5505 (substitute* (string-append source
5506 "cmake_include/AsioStandaloneConfig.cmake")
5507 (((string-append "\\$\\{CMAKE_CURRENT_LIST_DIR\\}/\\.\\./"
5508 "modules/asio-standalone/asio/include"))
5509 (string-append (assoc-ref inputs "asio")
5510 "/include")))
5511 (substitute* (string-append source "AbletonLinkConfig.cmake")
5512 (("\\$\\{CMAKE_CURRENT_LIST_DIR\\}/include")
5513 "${CMAKE_CURRENT_LIST_DIR}/../../../include")
5514 (("\\$\\{CMAKE_CURRENT_LIST_DIR\\}/include/ableton/Link\\.hpp")
5515 "${CMAKE_CURRENT_LIST_DIR}/../../../include/ableton/Link.hpp")))))
5516 (replace 'install
5517 (lambda* (#:key outputs #:allow-other-keys)
5518 (let* ((out (assoc-ref outputs "out"))
5519 (bin (string-append out "/bin"))
5520 (lib-cmake (string-append out "/lib/cmake/ableton-link"))
5521 (source "../source"))
5522 (for-each (lambda (test-file)
5523 (delete-file test-file))
5524 '("bin/LinkDiscoveryTest" "bin/LinkCoreTest"))
5525 (copy-recursively "bin" bin)
5526 (copy-recursively (string-append source "/include/ableton")
5527 (string-append out "/include/ableton"))
5528 (install-file (string-append source "/AbletonLinkConfig.cmake")
5529 lib-cmake)
5530 (install-file (string-append source
5531 "/cmake_include/AsioStandaloneConfig.cmake")
5532 (string-append lib-cmake "/cmake_include"))))))))
5533 (home-page "https://github.com/Ableton/link")
5534 (synopsis "Synchronize musical beat, tempo, and phase across multiple applications")
5535 (description
5536 "Ableton Link is a C++ library that synchronizes musical beat, tempo, and phase
5537 across multiple applications running on one or more devices. Applications on devices
5538 connected to a local network discover each other automatically and form a musical
5539 session in which each participant can perform independently: anyone can start or stop
5540 while still staying in time.")
5541 (license license:gpl2+)))
5542
5543 (define-public butt
5544 (package
5545 (name "butt")
5546 (version "0.1.34")
5547 (source (origin
5548 (method url-fetch)
5549 (uri (string-append "mirror://sourceforge/butt/butt/butt-"
5550 version "/butt-" version ".tar.gz"))
5551 (sha256
5552 (base32
5553 "0zd1g1673pv8z437y34fllxska8dzpd7mygpham35pzwpdyc5c1p"))
5554 (modules '((guix build utils)))
5555 (snippet
5556 '(substitute* "src/butt.cpp"
5557 ((".*zica.*") "")))))
5558 (build-system gnu-build-system)
5559 (arguments
5560 (list #:phases
5561 #~(modify-phases %standard-phases
5562 (add-after 'install 'install-documentation
5563 (lambda _
5564 (let ((doc (string-append #$output "/share/doc/" #$name)))
5565 (install-file "README" doc)
5566 (copy-file #$(this-package-native-input "manual")
5567 (string-append doc "/butt-manual.pdf"))))))))
5568 (native-inputs
5569 `(("pkg-config" ,pkg-config)
5570 ("manual"
5571 ,(origin
5572 (method url-fetch)
5573 (uri (string-append "https://danielnoethen.de/butt/butt-"
5574 version "_manual.pdf"))
5575 (sha256
5576 (base32 "0kadqzzbk25n0aqxgbqhg4mq4hsbjq44phzcx5qj1b8847yzz8si"))))))
5577 (inputs
5578 (list dbus
5579 flac
5580 fltk
5581 lame
5582 libfdk
5583 libsamplerate
5584 libvorbis
5585 libx11
5586 libxext
5587 libxfixes
5588 libxft
5589 libxrender
5590 libogg
5591 openssl
5592 opus
5593 portaudio))
5594 (home-page "https://danielnoethen.de/butt/")
5595 (synopsis "Audio streaming tool")
5596 (description "Butt is a tool to stream audio to a ShoutCast or
5597 Icecast server.")
5598 (license license:gpl2+)))
5599
5600 (define-public siggen
5601 (package
5602 (name "siggen")
5603 (version "2.3.10")
5604 (source
5605 (origin
5606 (method git-fetch)
5607 (uri (git-reference
5608 (url "https://github.com/bleskodev/siggen")
5609 (commit "a407611b59d59c7770bbe62ba9b8e9a948cf3210")))
5610 (file-name (git-file-name name version))
5611 (sha256
5612 (base32
5613 "0szhgfd9kddr6qsz0imp0x66jjn6ry236f35vjl82ivc1v2bllcb"))))
5614 (build-system gnu-build-system)
5615 (arguments
5616 `(#:make-flags (list (string-append "INSDIR=" %output "/bin")
5617 (string-append "MANDIR=" %output "/share/man"))
5618 #:tests? #f ; no tests
5619 #:phases
5620 (modify-phases %standard-phases
5621 ;; Patch misc.c to prevent a segfault.
5622 (add-after 'unpack 'patch-segfault
5623 (lambda _
5624 (substitute* "misc.c"
5625 (("#include <stdio.h>\n" all)
5626 (string-append all "#include <string.h>\n")))))
5627 (delete 'configure)
5628 (replace 'install
5629 (lambda* (#:key make-flags outputs #:allow-other-keys)
5630 (let ((out (assoc-ref outputs "out")))
5631 (for-each (lambda (dir)
5632 (mkdir-p (string-append out dir)))
5633 (list "/bin" "/share/man/man1" "/share/man/man5"))
5634 (apply invoke "make" "sysinstall" make-flags)))))))
5635 (inputs
5636 (list ncurses))
5637 (native-inputs
5638 `(("groff" ,groff-minimal) ; for nroff
5639 ("util-linux" ,util-linux))) ; for col
5640 (home-page "https://github.com/bleskodev/siggen")
5641 (synopsis "Signal generation tools")
5642 (description "siggen is a set of tools for imitating a laboratory signal
5643 generator, generating audio signals out of Linux's /dev/dsp audio
5644 device. There is support for mono and/or stereo and 8 or 16 bit samples.")
5645 (license license:gpl2)))
5646
5647 (define-public python-pysox
5648 ;; PyPi does not include the data folder containing audio files for testing.
5649 (let ((commit "3d0053381c24ae3490f759d4de87194b85789d36")
5650 (revision "0"))
5651 (package
5652 (name "python-pysox")
5653 (version (git-version "1.4.2" revision commit))
5654 (source
5655 (origin
5656 (method git-fetch)
5657 (uri (git-reference
5658 (url "https://github.com/rabitt/pysox")
5659 (commit commit)))
5660 (file-name (git-file-name name version))
5661 (sha256
5662 (base32
5663 "0i62jx92vfpcr2z7lp69yzqdi9idfs3pifl3rzm2akc2c4cr1mac"))))
5664 (build-system python-build-system)
5665 (arguments
5666 `(#:phases
5667 (modify-phases %standard-phases
5668 (add-after 'unpack 'patch-sox
5669 (lambda* (#:key inputs #:allow-other-keys)
5670 (let* ((sox-store-path (assoc-ref inputs "sox"))
5671 (sox-bin (string-append sox-store-path "/bin/sox")))
5672 (substitute* "sox/__init__.py"
5673 (("sox -h")
5674 (string-append sox-bin " -h")))
5675 (substitute* "sox/core.py"
5676 (("\\['sox")
5677 (string-append "['" sox-bin))))))
5678 (replace 'check
5679 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
5680 (when tests?
5681 (add-installed-pythonpath inputs outputs)
5682 (invoke "pytest")))))))
5683 (propagated-inputs
5684 (list python-numpy python-typing-extensions))
5685 (native-inputs
5686 (list sox python-pytest python-pytest-cov python-soundfile))
5687 (home-page "https://github.com/rabitt/pysox")
5688 (synopsis "Python wrapper around SoX")
5689 (description "@code{python-pysox} is a wrapper around the @command{sox}
5690 command line tool. The API offers @code{Transformer} and @code{Combiner}
5691 classes that allow the user to incrementally build up effects and audio
5692 manipulations. @code{python-pysox} also provides methods for querying audio
5693 information such as sample rate, determining whether an audio file is silent,
5694 and much more.")
5695 (license license:bsd-3))))
5696
5697 (define-public python-resampy
5698 (package
5699 (name "python-resampy")
5700 (version "0.2.2")
5701 (source
5702 (origin
5703 (method git-fetch)
5704 (uri
5705 (git-reference
5706 ;; PyPi does not include tests.
5707 (url "https://github.com/bmcfee/resampy")
5708 (commit version)))
5709 (file-name (git-file-name name version))
5710 (sha256
5711 (base32 "0qmkxl5sbgh0j73n667vyi7ywzh09iaync91yp1j5rrcmwsn0qfs"))))
5712 (build-system python-build-system)
5713 (arguments
5714 '(#:phases
5715 (modify-phases %standard-phases
5716 (replace 'check
5717 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
5718 (when tests?
5719 (add-installed-pythonpath inputs outputs)
5720 (invoke "pytest" "tests")))))))
5721 (propagated-inputs
5722 (list python-numba python-numpy python-scipy python-six))
5723 (native-inputs
5724 (list python-pytest python-pytest-cov))
5725 (home-page "https://github.com/bmcfee/resampy")
5726 (synopsis "Efficient signal resampling")
5727 (description
5728 "@code{python-resampy} implements the band-limited sinc interpolation
5729 method for sampling rate conversion as described by Julius O. Smith at the
5730 @url{https://ccrma.stanford.edu/~jos/resample/, Digital Audio Resampling
5731 Home Page}.")
5732 (license license:isc)))
5733
5734 (define-public python-librosa
5735 (package
5736 (name "python-librosa")
5737 (version "0.8.1")
5738 (source
5739 (origin
5740 (method url-fetch)
5741 (uri (pypi-uri "librosa" version))
5742 (sha256
5743 (base32 "1cx6rhcvak0hy6bx84jwzpxmwgi92m82w77279akwjmfd3khagf5"))))
5744 (build-system python-build-system)
5745 (arguments
5746 ;; Tests require internet connection to download MATLAB scripts for
5747 ;; generating the testing data.
5748 `(#:tests? #f))
5749 (propagated-inputs
5750 (list python-audioread
5751 python-decorator
5752 python-joblib
5753 python-numba
5754 python-numpy
5755 python-packaging
5756 python-pooch
5757 python-resampy
5758 python-scikit-learn
5759 python-scipy
5760 python-soundfile))
5761 (home-page "https://librosa.org")
5762 (synopsis "Python module for audio and music processing")
5763 (description
5764 "@code{librosa} is a python package for music and audio analysis. It
5765 provides the building blocks necessary to create music information retrieval
5766 systems.")
5767 (license license:isc)))
5768
5769 (define-public mda-lv2
5770 (package
5771 (name "mda-lv2")
5772 (version "1.2.6")
5773 (source
5774 (origin
5775 (method url-fetch)
5776 (uri (string-append "http://download.drobilla.net/mda-lv2-"
5777 version ".tar.bz2"))
5778 (sha256
5779 (base32 "1nspk2j11l65m5r9z5isw8j749vh9a89wgx8mkrrq15f4iq12rnd"))))
5780 (build-system waf-build-system)
5781 (arguments
5782 `(#:tests? #f ; There are no tests.
5783 #:configure-flags
5784 (list (string-append "--prefix="
5785 (assoc-ref %outputs "out")))))
5786 (inputs
5787 (list lv2))
5788 (native-inputs
5789 (list pkg-config))
5790 (native-search-paths
5791 (list (search-path-specification
5792 (variable "LV2_PATH")
5793 (files '("lib/lv2")))))
5794 (home-page "https://drobilla.net/software/mda-lv2")
5795 (synopsis "Audio plug-in pack for LV2")
5796 (description
5797 "MDA-LV2 is an LV2 port of the MDA plugins. It includes effects and a few
5798 instrument plugins.")
5799 (license license:gpl3+)))
5800
5801 (define-public libodiosacd
5802 (package
5803 (name "libodiosacd")
5804 (version "21.8.30")
5805 (source (origin
5806 (method git-fetch)
5807 (uri (git-reference
5808 (url "https://github.com/tari01/libodiosacd")
5809 (commit version)))
5810 (file-name (git-file-name name version))
5811 (sha256
5812 (base32
5813 "0iamf7wksbql0qfigdv5ahaax53ms2yligdav8dw6x0ay88x4lhi"))))
5814 (build-system gnu-build-system)
5815 (arguments
5816 `(#:tests? #f ; no check target
5817 #:phases
5818 (modify-phases %standard-phases
5819 (add-after 'unpack 'patch-makefile
5820 (lambda _
5821 (substitute* "Makefile"
5822 (("\\$\\(DESTDIR\\)/usr")
5823 "\\$(DESTDIR)"))))
5824 (delete 'configure)) ; no configure script
5825 #:make-flags
5826 (list (string-append "DESTDIR=" %output))))
5827 (synopsis "Library for decoding Super Audio CDs (SACD)")
5828 (description
5829 "The Odio SACD shared library is a decoding engine which takes a Super
5830 Audio CD source and extracts a 24-bit high resolution WAV file. It handles
5831 both DST and DSD streams.")
5832 (home-page "https://tari.in/www/software/libodiosacd/")
5833 (license license:gpl3+)))
5834
5835 (define-public odio-sacd
5836 (package
5837 (name "odio-sacd")
5838 (version "21.1.9")
5839 (source (origin
5840 (method git-fetch)
5841 (uri (git-reference
5842 (url "https://github.com/tari01/odio-sacd")
5843 (commit version)))
5844 (file-name (git-file-name name version))
5845 (sha256
5846 (base32
5847 "0314srqk0r4qv292qiaply619l2fw04nkdwvqhj3q1dqzv41g4qk"))))
5848 (inputs (list libodiosacd))
5849 ;; Build system and arguments for libodiosacd are identical.
5850 (build-system (package-build-system libodiosacd))
5851 (arguments (package-arguments libodiosacd))
5852 (synopsis "Rip Super Audio CDs (SACD)")
5853 (description
5854 "Odio SACD is a command-line application which takes a Super Audio CD
5855 source and extracts a 24-bit high resolution WAV file. It handles both DST
5856 and DSD streams.")
5857 (home-page "https://tari.in/www/software/odio-sacd/")
5858 (license license:gpl3+)))
5859
5860 (define-public qpwgraph
5861 (package
5862 (name "qpwgraph")
5863 (version "0.3.5")
5864 (source (origin
5865 (method git-fetch)
5866 (uri (git-reference
5867 (url "https://gitlab.freedesktop.org/rncbc/qpwgraph")
5868 (commit (string-append "v" version))))
5869 (file-name (git-file-name name version))
5870 (sha256
5871 (base32
5872 "01f4zabn22dp0yl7szxck6gkbayk1p5iqajfgzls7mdkba7515b6"))))
5873 (build-system cmake-build-system)
5874 (arguments (list #:tests? #f)) ;; no tests
5875 (inputs (list alsa-lib
5876 libxkbcommon
5877 pipewire-0.3
5878 qtbase
5879 qtsvg))
5880 (native-inputs (list pkg-config))
5881 (synopsis "PipeWire graph manager")
5882 (description
5883 "qpwgraph is a graph manager dedicated to PipeWire, using the Qt C++
5884 framework. It provides a visual interface to audio and video connections
5885 managed by PipeWire.")
5886 (home-page "https://gitlab.freedesktop.org/rncbc/qpwgraph")
5887 (license license:gpl2)))
5888
5889 (define-public streamripper
5890 (package
5891 (name "streamripper")
5892 (version "1.64.6")
5893 (source
5894 (origin
5895 (method url-fetch)
5896 (uri (string-append "https://sourceforge.net/projects/streamripper"
5897 "/files/streamripper%20(current)/"
5898 version "/streamripper-" version ".tar.gz"))
5899 (sha256
5900 (base32 "0hnyv3206r0rfprn3k7k6a0j959kagsfyrmyjm3gsf3vkhp5zmy1"))
5901 (modules '((guix build utils)))
5902 (snippet
5903 ;; Delete bundled copy of libmad.
5904 '(delete-file-recursively "libmad-0.15.1b"))))
5905 (build-system gnu-build-system)
5906 (native-inputs (list pkg-config))
5907 (inputs (list faad2 glib libmad libvorbis))
5908 (home-page "http://streamripper.sourceforge.net")
5909 (synopsis "Record audio streams to your hard drive")
5910 (description "Streamripper records shoutcast-compatible
5911 streams. For shoutcast style streams it finds the “meta data” or track
5912 separation data, and uses that as a marker for where the track should
5913 be separated.")
5914 (license license:gpl2+)))