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