gnu: Add ttl2c.
[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.5.23")
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 "1yz5jnr76hh7rmxkpdi7gyrw1wp4gyqfpq8zyl97qdi5ga5gjznq"))))
1964 (build-system gnu-build-system)
1965 (arguments
1966 (substitute-keyword-arguments (package-arguments faust)
1967 ((#:make-flags flags)
1968 `(list (string-append "prefix=" (assoc-ref %outputs "out"))
1969 "world"))))
1970 (native-inputs
1971 `(("llvm" ,llvm-3.8)
1972 ("which" ,which)
1973 ("xxd" ,xxd)
1974 ("ctags" ,emacs-minimal) ; for ctags
1975 ("pkg-config" ,pkg-config)))
1976 (inputs
1977 (list libsndfile libmicrohttpd ncurses openssl zlib))))
1978
1979 (define-public freepats
1980 (package
1981 (name "freepats")
1982 (version "20060219")
1983 (source (origin
1984 (method url-fetch)
1985 (uri (string-append "http://freepats.zenvoid.org/freepats-"
1986 version ".tar.bz2"))
1987 (sha256
1988 (base32
1989 "12iw36rd94zirll96cd5k0va7p5hxmf2shvjlhzihcmjaw8flq82"))))
1990 (build-system trivial-build-system)
1991 (arguments
1992 `(#:modules ((guix build utils))
1993 #:builder (begin
1994 (use-modules (guix build utils))
1995 (let ((out (string-append %output "/share/freepats")))
1996 (setenv "PATH" (string-append
1997 (assoc-ref %build-inputs "bzip2") "/bin:"
1998 (assoc-ref %build-inputs "tar") "/bin"))
1999 (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
2000 (chdir "freepats")
2001 ;; Use absolute pattern references
2002 (substitute* "freepats.cfg"
2003 (("Tone_000") (string-append out "/Tone_000"))
2004 (("Drum_000") (string-append out "/Drum_000")))
2005 (mkdir-p out)
2006 (copy-recursively "." out)
2007 #t))))
2008 (native-inputs
2009 (list tar bzip2))
2010 (home-page "http://freepats.zenvoid.org")
2011 (synopsis "GUS compatible patches for MIDI players")
2012 (description
2013 "FreePats is a project to create a free and open set of GUS compatible
2014 patches that can be used with softsynths such as Timidity and WildMidi.")
2015 ;; GPLv2+ with exception for compositions using these patches.
2016 (license license:gpl2+)))
2017
2018 (define-public freepats-gm
2019 (package
2020 (name "freepats-gm")
2021 (version "20210329")
2022 (source (origin
2023 (method url-fetch)
2024 (uri (string-append "https://freepats.zenvoid.org/SoundSets/"
2025 "FreePats-GeneralMIDI/FreePatsGM-SF2-" version ".7z"))
2026 (sha256
2027 (base32
2028 "19a1mp9yi33j2zff4mjvhrjz97dwwgjwzfdlf84j9xyydhx0crhc"))))
2029 (build-system trivial-build-system)
2030 (native-inputs
2031 `(("p7zip" ,p7zip)))
2032 (arguments
2033 `(#:modules ((guix build utils))
2034 #:builder
2035 (let ((dir (string-append "FreePatsGM-SF2-" ,version))
2036 (file (string-append "FreePatsGM-" ,version ".sf2"))
2037 (out (string-append %output "/share/soundfonts"))
2038 (doc (string-append %output "/share/doc/freepats-gm-" ,version)))
2039 (use-modules (guix build utils))
2040 (invoke (string-append (assoc-ref %build-inputs "p7zip") "/bin/7z")
2041 "e" (assoc-ref %build-inputs "source")
2042 (string-append dir "/" file)
2043 (string-append dir "/gpl.txt")
2044 (string-append dir "/cc0.txt")
2045 (string-append dir "/readme.txt"))
2046 (mkdir-p out)
2047 (copy-file file (string-append out "/FreePatsGM.sf2"))
2048 (mkdir-p doc)
2049 (for-each
2050 (lambda (file)
2051 (copy-file file (string-append doc "/" file)))
2052 (find-files "." "\\.txt$"))
2053 #t)))
2054 (home-page "https://freepats.zenvoid.org/SoundSets/general-midi.html")
2055 (synopsis "General MIDI sound set")
2056 (description "FreePats is a project to create a free (as in free software)
2057 collection of digital instruments for music production. This sound bank is a
2058 partial release of the General MIDI sound set.")
2059 (license (list
2060 license:gpl3+ ; with sampling exception
2061 license:cc0))))
2062
2063 (define-public guitarix
2064 (package
2065 (name "guitarix")
2066 (version "0.43.1")
2067 (source (origin
2068 (method url-fetch)
2069 (uri (string-append
2070 "mirror://sourceforge/guitarix/guitarix/guitarix2-"
2071 version ".tar.xz"))
2072 (sha256
2073 (base32
2074 "1bsjlfd7x09p3iiljilyfbns6hpqn9cgp6psl4ccd6i1lwascfrm"))))
2075 (build-system waf-build-system)
2076 (arguments
2077 `(#:tests? #f ; no "check" target
2078 #:configure-flags
2079 (list
2080 ;; Add the output lib directory to the RUNPATH.
2081 (string-append "--ldflags=-Wl,-rpath=" %output "/lib"))))
2082 (inputs
2083 (list libsndfile
2084 boost
2085 curl
2086 avahi
2087 eigen
2088 lv2
2089 lilv
2090 ladspa
2091 jack-1
2092 gtkmm-3
2093 gtk+
2094 fftwf
2095 lrdf
2096 zita-resampler
2097 zita-convolver))
2098 (native-inputs
2099 `(("gperf" ,gperf)
2100 ("faust" ,faust)
2101 ("intltool" ,intltool)
2102 ("gettext" ,gettext-minimal)
2103 ("pkg-config" ,pkg-config)
2104 ("sassc" ,sassc)))
2105 (native-search-paths
2106 (list (search-path-specification
2107 (variable "LV2_PATH")
2108 (files '("lib/lv2")))))
2109 (home-page "https://guitarix.org/")
2110 (synopsis "Virtual guitar amplifier")
2111 (description "Guitarix is a virtual guitar amplifier running JACK.
2112 Guitarix takes the signal from your guitar as a mono-signal from your sound
2113 card. The input is processed by a main amp and a rack-section. Both can be
2114 routed separately and deliver a processed stereo-signal via JACK. You may
2115 fill the rack with effects from more than 25 built-in modules including stuff
2116 from a simple noise gate to modulation effects like flanger, phaser or
2117 auto-wah.")
2118 (license license:gpl2+)))
2119
2120 (define-public guitarix-lv2
2121 (package (inherit guitarix)
2122 (name "guitarix-lv2")
2123 (arguments
2124 (substitute-keyword-arguments (package-arguments guitarix)
2125 ((#:configure-flags flags)
2126 `(cons "--no-standalone" ,flags))))))
2127
2128 (define-public rakarrack
2129 (package
2130 (name "rakarrack")
2131 (version "0.6.1")
2132 (source (origin
2133 (method url-fetch)
2134 (uri (string-append "mirror://sourceforge/rakarrack/rakarrack/"
2135 "rakarrack-" version "/rakarrack-"
2136 version ".tar.bz2"))
2137 (sha256
2138 (base32
2139 "1rpf63pdn54c4yg13k7cb1w1c7zsvl97c4qxcpz41c8l91xd55kn"))
2140 (modules '((guix build utils)))
2141 (snippet
2142 '(begin
2143 (substitute* '("src/process.C"
2144 "src/global.h")
2145 (("#include <Fl/") "#include <FL/"))
2146 #t))))
2147 (build-system gnu-build-system)
2148 (inputs
2149 (list alsa-utils
2150 fltk
2151 libx11
2152 libxext
2153 libxfixes
2154 libxft
2155 libxrender
2156 libxpm
2157 fontconfig
2158 freetype
2159 jack-1
2160 alsa-lib
2161 libsndfile
2162 libsamplerate
2163 zlib))
2164 (home-page "http://rakarrack.sourceforge.net/")
2165 (synopsis "Audio effects processor")
2166 (description
2167 "Rakarrack is a richly featured multi-effects processor emulating a
2168 guitar effects pedalboard. Effects include compressor, expander, noise gate,
2169 equalizers, exciter, flangers, chorus, various delay and reverb effects,
2170 distortion modules and many more. Most of the effects engine is built from
2171 modules found in the excellent software synthesizer ZynAddSubFX. Presets and
2172 user interface are optimized for guitar, but Rakarrack processes signals in
2173 stereo while it does not apply internal band-limiting filtering, and thus is
2174 well suited to all musical instruments and vocals.")
2175 ;; The code is explicitly licensed under the GPL version 2 only.
2176 (license license:gpl2)))
2177
2178 (define-public ir
2179 (package
2180 (name "ir")
2181 (version "1.3.4")
2182 (source (origin
2183 (method git-fetch)
2184 (uri (git-reference
2185 (url "https://github.com/tomszilagyi/ir.lv2")
2186 (commit version)))
2187 (file-name (git-file-name name version))
2188 (sha256
2189 (base32
2190 "0svmjhg4r6wy5ci5rwz43ybll7yxjv7nnj7nyqscbzhr3gi5aib0"))))
2191 (build-system gnu-build-system)
2192 (arguments
2193 `(#:tests? #f ; no tests
2194 #:make-flags
2195 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
2196 (string-append "INSTDIR="
2197 (assoc-ref %outputs "out") "/lib/lv2"))
2198 #:phases
2199 (modify-phases %standard-phases
2200 (delete 'configure) ; no configure script
2201 ;; See https://github.com/tomszilagyi/ir.lv2/pull/20
2202 (add-after 'unpack 'fix-type
2203 (lambda _
2204 (substitute* '("ir_gui.cc" "lv2_ui.h")
2205 (("_LV2UI_Descriptor") "LV2UI_Descriptor"))
2206 #t)))))
2207 (inputs
2208 (list libsndfile
2209 libsamplerate
2210 lv2
2211 glib
2212 gtk+-2
2213 zita-convolver))
2214 (native-inputs
2215 (list pkg-config))
2216 (native-search-paths
2217 (list (search-path-specification
2218 (variable "LV2_PATH")
2219 (files '("lib/lv2")))))
2220 (home-page "https://tomszilagyi.github.io/plugins/ir.lv2")
2221 (synopsis "LV2 convolution reverb")
2222 (description
2223 "IR is a low-latency, real-time, high performance signal convolver
2224 especially for creating reverb effects. It supports impulse responses with 1,
2225 2 or 4 channels, in any soundfile format supported by libsndfile.")
2226 (license license:gpl2+)))
2227
2228 (define-public jack-1
2229 (package
2230 (name "jack")
2231 (version "0.125.0")
2232 (source
2233 (origin
2234 (method url-fetch)
2235 ;; jackaudio.org/downloads/jack-audio-connection-kit-0.125.0.tar.gz
2236 ;; no longer exists (404). Use an unofficial mirror.
2237 (uri (string-append "https://crux.ster.zone/downloads/"
2238 "jack-audio-connection-kit/"
2239 "jack-audio-connection-kit-" version ".tar.gz"))
2240 (sha256
2241 (base32 "0i6l25dmfk2ji2lrakqq9icnwjxklgcjzzk65dmsff91z2zva5rm"))))
2242 (build-system gnu-build-system)
2243 (arguments
2244 `(#:phases (modify-phases %standard-phases
2245 (add-after 'unpack 'patch-configure
2246 (lambda _
2247 (substitute* "configure"
2248 ;; Install to <out/lib> regardless of platform.
2249 (("libnn=lib64") "libnn=lib"))
2250 #t)))))
2251 (inputs
2252 (list alsa-lib readline))
2253 ;; uuid.h is included in the JACK type headers
2254 ;; db.h is included in the libjack metadata headers
2255 (propagated-inputs
2256 `(("libuuid" ,util-linux "lib")
2257 ("bdb" ,bdb)))
2258 (native-inputs
2259 (list pkg-config))
2260 (home-page "https://jackaudio.org/")
2261 (synopsis "JACK audio connection kit")
2262 (description
2263 "JACK is a low-latency audio server. It can connect a number of
2264 different applications to an audio device, as well as allowing them to share
2265 audio between themselves. JACK is different from other audio server efforts
2266 in that it has been designed from the ground up to be suitable for
2267 professional audio work. This means that it focuses on two key areas:
2268 synchronous execution of all clients, and low latency operation.")
2269 ;; Most files are licensed under the GPL. However, the libjack/ tree is
2270 ;; licensed under the LGPL in order to allow for proprietary usage.
2271 (license (list license:gpl2+ license:lgpl2.1+))))
2272
2273 ;; Packages depending on JACK should always prefer jack-1. Both jack-1 and
2274 ;; jack-2 implement the same API. JACK2 is provided primarily as a client
2275 ;; program for users who might benefit from the D-BUS features.
2276 (define-public jack-2
2277 (package
2278 (inherit jack-1)
2279 (name "jack2")
2280 (version "1.9.21")
2281 (source (origin
2282 (method git-fetch)
2283 (uri (git-reference
2284 (url "https://github.com/jackaudio/jack2")
2285 (commit (string-append "v" version))))
2286 (file-name (git-file-name name version))
2287 (sha256
2288 (base32
2289 "0sbrffmdbajvrk7iqvsvrnwnpvmicvbjyq3f52r6ashdsznsz03b"))))
2290 (build-system waf-build-system)
2291 (arguments
2292 `(#:tests? #f ; no check target
2293 #:configure-flags '("--dbus" "--alsa")
2294 #:phases
2295 (modify-phases %standard-phases
2296 (add-before 'configure 'set-linkflags
2297 (lambda _
2298 ;; Ensure -lstdc++ is the tail of LDFLAGS or the simdtests.cpp
2299 ;; will not link with undefined reference to symbol
2300 ;; '__gxx_personality_v0@@CXXABI_1.3'
2301 (setenv "LDFLAGS" "-lstdc++")
2302 ;; Add $libdir to the RUNPATH of all the binaries.
2303 (substitute* "wscript"
2304 ((".*CFLAGS.*-Wall.*" m)
2305 (string-append m
2306 " conf.env.append_unique('LINKFLAGS',"
2307 "'-Wl,-rpath=" %output "/lib')\n")))))
2308 (add-after 'install 'wrap-python-scripts
2309 (lambda* (#:key outputs #:allow-other-keys)
2310 ;; Make sure 'jack_control' runs with the correct PYTHONPATH.
2311 (wrap-program (search-input-file outputs "bin/jack_control")
2312 `("GUIX_PYTHONPATH" ":"
2313 prefix (,(getenv "GUIX_PYTHONPATH")))))))))
2314 (inputs
2315 (list alsa-lib
2316 dbus
2317 expat
2318 libsamplerate
2319 opus
2320 python-dbus
2321 readline))
2322 (native-inputs
2323 (list pkg-config))
2324 ;; Most files are under GPLv2+, but some headers are under LGPLv2.1+
2325 (license (list license:gpl2+ license:lgpl2.1+))))
2326
2327 (define-public jalv
2328 (package
2329 (name "jalv")
2330 (version "1.6.6")
2331 (source (origin
2332 (method url-fetch)
2333 (uri (string-append "https://download.drobilla.net/jalv-"
2334 version ".tar.bz2"))
2335 (sha256
2336 (base32
2337 "05lycfq0f06zjp5xqvzjz9hx9kmqx72yng1lghh76hv63dw43lcj"))))
2338 (build-system waf-build-system)
2339 (arguments
2340 `(#:tests? #f)) ; no check target
2341 (inputs
2342 (list lv2
2343 lilv
2344 suil
2345 gtk
2346 gtkmm
2347 qtbase-5
2348 jack-1))
2349 (native-inputs
2350 (list pkg-config))
2351 (home-page "https://drobilla.net/software/jalv/")
2352 (synopsis "Simple LV2 host for JACK")
2353 (description
2354 "Jalv is a simple but fully featured LV2 host for JACK. It runs LV2
2355 plugins and exposes their ports as JACK ports, essentially making any LV2
2356 plugin function as a JACK application.")
2357 (license license:isc)))
2358
2359 (define-public ladspa
2360 (package
2361 (name "ladspa")
2362 (version "1.13")
2363 (source
2364 (origin
2365 (method url-fetch)
2366 ;; Since the official link is dead,
2367 ;; we download the tarball from Debian or Internet Archive.
2368 (uri (list (string-append "http://http.debian.net"
2369 "/debian/pool/main/l/ladspa-sdk/ladspa-sdk_"
2370 version ".orig.tar.gz")
2371 (string-append "https://web.archive.org/web/20140717172251/"
2372 "http://www.ladspa.org/download/ladspa_sdk_"
2373 version ".tgz")))
2374 (sha256
2375 (base32
2376 "0srh5n2l63354bc0srcrv58rzjkn4gv8qjqzg8dnq3rs4m7kzvdm"))))
2377 (build-system gnu-build-system)
2378 (arguments
2379 `(#:tests? #f ; the "test" target is a listening test only
2380 #:phases
2381 (modify-phases %standard-phases
2382 (replace 'configure
2383 (lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
2384 (chdir "src")
2385 (let ((out (assoc-ref outputs "out")))
2386 (substitute* "makefile"
2387 (("/usr/lib/ladspa/") (string-append out "/lib/ladspa/"))
2388 (("/usr/include/") (string-append out "/include/"))
2389 (("/usr/bin/") (string-append out "/bin/"))
2390 (("-mkdirhier") "mkdir -p")
2391 (("^CC.*") "CC = gcc\n")
2392 (("^CPP.*") "CPP = g++\n")))
2393 #t))
2394 (delete 'build))))
2395 ;; Since the home page is gone, we provide a link to the archived version.
2396 (home-page
2397 "https://web.archive.org/web/20140729190945/http://www.ladspa.org/")
2398 (synopsis "Linux Audio Developer's Simple Plugin API (LADSPA)")
2399 (description
2400 "LADSPA is a standard that allows software audio processors and effects
2401 to be plugged into a wide range of audio synthesis and recording packages.")
2402 (license license:lgpl2.1+)))
2403
2404 (define-public lash
2405 (package
2406 (name "lash")
2407 (version "0.6.0-rc2")
2408 (source (origin
2409 (method url-fetch)
2410 ;; The tilde is not permitted in the builder name, but is used
2411 ;; in the tarball.
2412 (uri (string-append
2413 "mirror://savannah/lash/lash-"
2414 (string-join (string-split version #\-) "~")
2415 ".tar.bz2"))
2416 (file-name (string-append name "-" version ".tar.bz2"))
2417 (sha256
2418 (base32
2419 "12z1vx3krrzsfccpah9xjs68900xvr7bw92wx8np5871i2yv47iw"))))
2420 (build-system gnu-build-system)
2421 (arguments
2422 '(;; Glibc no longer includes Sun RPC support, so tell the build system
2423 ;; to use libtirpc instead.
2424 #:make-flags (list (string-append "CFLAGS=-I"
2425 (assoc-ref %build-inputs "libtirpc")
2426 "/include/tirpc -ltirpc"))
2427 #:phases
2428 (modify-phases %standard-phases
2429 ;; lashd embeds an ancient version of sigsegv so we just skip it
2430 (add-after 'unpack 'skip-lashd
2431 (lambda _
2432 (substitute* '("Makefile.am" "Makefile.in")
2433 (("lashd ") ""))
2434 #t)))
2435 #:configure-flags '("--disable-static")))
2436 (inputs
2437 `(("bdb" ,bdb)
2438 ("gtk" ,gtk+-2)
2439 ("jack" ,jack-1)
2440 ("libtirpc" ,libtirpc)
2441 ("readline" ,readline)
2442 ("python" ,python-2)))
2443 ;; According to pkg-config, packages depending on lash also need to have
2444 ;; at least the following packages declared as inputs.
2445 (propagated-inputs
2446 (list alsa-lib dbus libxml2))
2447 (native-inputs
2448 (list pkg-config))
2449 (home-page "https://www.nongnu.org/lash/")
2450 (synopsis "Audio application session manager")
2451 (description
2452 "LASH is a session management system for audio applications. It allows
2453 you to save and restore audio sessions consisting of multiple interconneced
2454 applications, restoring program state (i.e. loaded patches) and the
2455 connections between them.")
2456 (license license:gpl2+)))
2457
2458 (define-public libbs2b
2459 (package
2460 (name "libbs2b")
2461 (version "3.1.0")
2462 (source (origin
2463 (method url-fetch)
2464 (uri (string-append "mirror://sourceforge/bs2b/libbs2b/" version
2465 "/libbs2b-" version ".tar.lzma"))
2466 (sha256
2467 (base32
2468 "1mcc4gjkmphczjybnsrip3gq1f974knzys7x49bv197xk3fn8wdr"))))
2469 (build-system gnu-build-system)
2470 (native-inputs (list pkg-config))
2471 (inputs (list libsndfile))
2472 (home-page "https://sourceforge.net/projects/bs2b/")
2473 (synopsis "Bauer stereophonic-to-binaural DSP")
2474 (description
2475 "The Bauer stereophonic-to-binaural DSP (bs2b) library and plugins is
2476 designed to improve headphone listening of stereo audio records. Recommended
2477 for headphone prolonged listening to disable superstereo fatigue without
2478 essential distortions.")
2479 (license license:expat)))
2480
2481 (define-public ladspa-bs2b
2482 (package
2483 (name "ladspa-bs2b")
2484 (version "0.9.1")
2485 (source (origin
2486 (method url-fetch)
2487 (uri (string-append
2488 "mirror://sourceforge/bs2b/plugins/LADSPA%20plugin/"
2489 version "/" name "-" version ".tar.gz"))
2490 (sha256
2491 (base32
2492 "1b4aipbj1ba5k99gbc7gmgy14sywyrjd8rpyqj5l905j0mjv8jg2"))))
2493 (build-system gnu-build-system)
2494 (native-inputs (list pkg-config))
2495 (inputs (list ladspa libbs2b))
2496 (home-page "https://sourceforge.net/projects/bs2b/")
2497 (synopsis "Bauer stereophonic-to-binaural DSP - LADSPA plugin")
2498 (description "The Bauer stereophonic-to-binaural DSP (bs2b) library and
2499 plugins is designed to improve headphone listening of stereo audio records.
2500 Recommended for headphone prolonged listening to disable superstereo fatigue
2501 without essential distortions. This package contains a LADSPA plugin for use
2502 with applications that support them (e.g. PulseAudio).")
2503 (license license:gpl2+)))
2504
2505 (define-public liblo
2506 (package
2507 (name "liblo")
2508 (version "0.31")
2509 (source (origin
2510 (method url-fetch)
2511 (uri (string-append "mirror://sourceforge/liblo/liblo/" version
2512 "/liblo-" version ".tar.gz"))
2513 (sha256
2514 (base32
2515 "0l67rkdhfa8cffa0nynql3lh2xlbn1454h6qxhjddp1029p48krb"))))
2516 (build-system gnu-build-system)
2517 (arguments
2518 `(;; liblo test FAILED
2519 ;; liblo server error 19 in setsockopt(IP_ADD_MEMBERSHIP): No such device
2520 #:tests? #f))
2521 (home-page "http://liblo.sourceforge.net")
2522 (synopsis "Implementation of the Open Sound Control protocol")
2523 (description
2524 "liblo is a lightweight library that provides an easy to use
2525 implementation of the Open Sound Control (@dfn{OSC}) protocol.")
2526 (license license:lgpl2.1+)))
2527
2528 (define-public rtaudio
2529 (package
2530 (name "rtaudio")
2531 (version "5.1.0")
2532 (source
2533 (origin
2534 (method git-fetch)
2535 (uri (git-reference
2536 (url "https://github.com/thestk/rtaudio")
2537 (commit version)))
2538 (file-name (git-file-name name version))
2539 (sha256
2540 (base32 "156c2dgh6jrsyfn1y89nslvaxm4yifmxridsb708yvkaym02w2l8"))))
2541 (build-system cmake-build-system)
2542 (arguments
2543 `(#:phases
2544 (modify-phases %standard-phases
2545 ;; The header that pkg-config expects is include/rtaudio/RtAudio.h,
2546 ;; but this package installs it as include/RtAudio.h by default.
2547 (add-after 'install 'fix-inc-path
2548 (lambda* (#:key outputs #:allow-other-keys)
2549 (let* ((out (assoc-ref outputs "out"))
2550 (inc (string-append out "/include")))
2551 (mkdir-p (string-append inc "/rtaudio"))
2552 (rename-file (string-append inc "/RtAudio.h")
2553 (string-append inc "/rtaudio/RtAudio.h"))))))))
2554 (native-inputs
2555 (list pkg-config))
2556 (inputs
2557 (list alsa-lib jack-1 pulseaudio))
2558 (synopsis "Common API for real-time audio I/O")
2559 (description
2560 "RtAudio is a set of C++ classes that provides a common API for real-time
2561 audio input/output. It was designed with the following objectives:
2562
2563 @itemize
2564 @item object-oriented C++ design
2565 @item simple, common API across all supported platforms
2566 @item only one source and one header file for easy inclusion in programming
2567 projects
2568 @item allow simultaneous multi-api support
2569 @item support dynamic connection of devices
2570 @item provide extensive audio device parameter control
2571 @item allow audio device capability probing
2572 @item automatic internal conversion for data format, channel number
2573 compensation, (de)interleaving, and byte-swapping
2574 @end itemize")
2575 (home-page "https://www.music.mcgill.ca/~gary/rtaudio/")
2576 ;; License is expat with a non-binding request to send modifications to
2577 ;; original developer.
2578 (license license:expat)))
2579
2580 (define-public python-pyaudio
2581 (package
2582 (name "python-pyaudio")
2583 (version "0.2.11")
2584 (source
2585 (origin
2586 (method url-fetch)
2587 (uri (pypi-uri "PyAudio" version))
2588 (sha256
2589 (base32
2590 "0x7vdsigm7xgvyg3shd3lj113m8zqj2pxmrgdyj66kmnw0qdxgwk"))))
2591 (build-system python-build-system)
2592 (inputs
2593 (list portaudio))
2594 (home-page "https://people.csail.mit.edu/hubert/pyaudio/")
2595 (synopsis "Bindings for PortAudio v19")
2596 (description "This package provides bindings for PortAudio v19, the
2597 cross-platform audio input/output stream library.")
2598 (license license:expat)))
2599
2600 (define-public python-pyliblo
2601 (package
2602 (name "python-pyliblo")
2603 (version "0.10.0")
2604 (source (origin
2605 (method url-fetch)
2606 (uri (string-append "http://das.nasophon.de/download/pyliblo-"
2607 version ".tar.gz"))
2608 (sha256
2609 (base32
2610 "13vry6xhxm7adnbyj28w1kpwrh0kf7nw83cz1yq74wl21faz2rzw"))))
2611 (build-system python-build-system)
2612 (arguments `(#:tests? #f)) ;no tests
2613 (native-inputs
2614 (list python-cython))
2615 (inputs
2616 (list liblo))
2617 (home-page "http://das.nasophon.de/pyliblo/")
2618 (synopsis "Python bindings for liblo")
2619 (description
2620 "Pyliblo is a Python wrapper for the liblo Open Sound Control (OSC)
2621 library. It supports almost the complete functionality of liblo, allowing you
2622 to send and receive OSC messages using a nice and simple Python API. Also
2623 included are the command line utilities @code{send_osc} and @code{dump_osc}.")
2624 (license license:lgpl2.1+)))
2625
2626 (define-public python-soundfile
2627 (package
2628 (name "python-soundfile")
2629 (version "0.10.3.post1")
2630 (source
2631 (origin
2632 (method url-fetch)
2633 (uri (pypi-uri "SoundFile" version))
2634 (sha256
2635 (base32
2636 "0yqhrfz7xkvqrwdxdx2ydy4h467sk7z3gf984y1x2cq7cm1gy329"))))
2637 (build-system python-build-system)
2638 (propagated-inputs
2639 (list python-cffi python-numpy libsndfile))
2640 (native-inputs
2641 (list python-pytest))
2642 (arguments
2643 `(#:tests? #f ; missing OGG support
2644 #:phases
2645 (modify-phases %standard-phases
2646 (add-after 'unpack 'patch
2647 (lambda* (#:key inputs #:allow-other-keys)
2648 (substitute* "soundfile.py"
2649 (("_find_library\\('sndfile'\\)")
2650 (string-append "\"" (assoc-ref inputs "libsndfile")
2651 "/lib/libsndfile.so\""))))))))
2652 (home-page "https://github.com/bastibe/SoundFile")
2653 (synopsis "Python bindings for libsndfile")
2654 (description "This package provides python bindings for libsndfile based on
2655 CFFI and NumPy.")
2656 (license license:expat)))
2657
2658 (define-public python-python3-midi
2659 (package
2660 (name "python-python3-midi")
2661 (version "0.2.5")
2662 (source
2663 (origin
2664 (method url-fetch)
2665 (uri (pypi-uri "python3_midi" version))
2666 (sha256
2667 (base32
2668 "1z9j1w7mpn3xhkcpxmqm5rvmj6nffb5rf14bv7n3sdh07nf6n7sf"))))
2669 (build-system python-build-system)
2670 (home-page "https://github.com/NFJones/python3-midi")
2671 (synopsis "Python MIDI API")
2672 (description "This package provides a python API to read and write MIDI
2673 files.")
2674 (license license:expat)))
2675
2676 (define-public audio-to-midi
2677 (package
2678 (name "audio-to-midi")
2679 (version "2020.7")
2680 (source
2681 (origin
2682 (method git-fetch)
2683 (uri (git-reference
2684 (url "https://github.com/NFJones/audio-to-midi")
2685 (commit (string-append "v" version))))
2686 (file-name (git-file-name name version))
2687 (sha256
2688 (base32
2689 "12wf17abn3psbsg2r2lk0xdnk8n5cd5rrvjlpxjnjfhd09n7qqgm"))))
2690 (build-system python-build-system)
2691 (propagated-inputs
2692 (list python-cffi
2693 python-cython
2694 python-numpy
2695 python-progressbar2
2696 python-pycparser
2697 python-python3-midi
2698 python-soundfile))
2699 (native-inputs
2700 (list libsndfile))
2701 (arguments
2702 `(#:phases
2703 (modify-phases %standard-phases
2704 (add-after 'unpack 'fix-versions
2705 (lambda _
2706 (substitute* "requirements.txt" (("==") ">=")))))))
2707 (home-page "https://github.com/NFJones/audio-to-midi")
2708 (synopsis "Convert audio to multichannel MIDI")
2709 (description "@command{audio-to-midi} converts audio files to multichannel
2710 MIDI files. It accomplishes this by performing FFTs on all channels of the
2711 audio data at user-specified time steps. It then separates the resulting
2712 frequency analysis into equivalence classes which correspond to the twelve tone
2713 scale; the volume of each class being the average volume of its constituent
2714 frequencies. This data is then formatted to MIDI and written to disk.")
2715 (license license:expat)))
2716
2717 (define-public lilv
2718 (package
2719 (name "lilv")
2720 (version "0.24.12")
2721 (source (origin
2722 (method url-fetch)
2723 (uri (string-append "https://download.drobilla.net/lilv-"
2724 version ".tar.bz2"))
2725 (sha256
2726 (base32
2727 "0qchfsyrsrp2pdpd59025kllycr04ddpzd03ha1iz70ci687g8r6"))))
2728 (build-system waf-build-system)
2729 (arguments
2730 `(#:tests? #f ; no check target
2731 #:phases
2732 (modify-phases %standard-phases
2733 (add-before 'configure 'set-ldflags
2734 (lambda* (#:key outputs #:allow-other-keys)
2735 (setenv "LDFLAGS"
2736 (string-append "-Wl,-rpath="
2737 (assoc-ref outputs "out") "/lib"))))
2738 (add-after 'unpack 'full-store-path-to-shared-library
2739 (lambda* (#:key outputs #:allow-other-keys)
2740 (with-directory-excursion "bindings/python"
2741 (substitute* "lilv.py"
2742 (("liblilv-0.so") (string-append (assoc-ref outputs "out")
2743 "/lib/liblilv-0.so")))))))))
2744 ;; Required by lilv-0.pc.
2745 (propagated-inputs
2746 (list lv2 serd sord sratom))
2747 (native-inputs
2748 (list python pkg-config))
2749 (home-page "https://drobilla.net/software/lilv")
2750 (synopsis "Library to simplify use of LV2 plugins in applications")
2751 (description
2752 "Lilv is a C library to make the use of LV2 plugins as simple as possible
2753 for applications. Lilv is the successor to SLV2, rewritten to be
2754 significantly faster and have minimal dependencies.")
2755 (license license:isc)))
2756
2757 (define-public lv2
2758 (package
2759 (name "lv2")
2760 (version "1.18.2")
2761 (source (origin
2762 (method url-fetch)
2763 (uri (string-append "https://lv2plug.in/spec/lv2-"
2764 version ".tar.bz2"))
2765 (sha256
2766 (base32
2767 "0pp0n9x1rg8d4fw853z9cvfifjdi4bl85yjxxddqa1acfjy1z2af"))))
2768 (build-system waf-build-system)
2769 (arguments
2770 `(#:tests? #f ; no check target
2771 #:configure-flags '("--no-plugins")))
2772 (inputs
2773 ;; Leaving off cairo and gtk+-2.0 which are needed for example plugins
2774 (list libsndfile))
2775 (native-inputs
2776 (list pkg-config))
2777 (home-page "https://lv2plug.in/")
2778 (synopsis "LV2 audio plugin specification")
2779 (description
2780 "LV2 is an open specification for audio plugins and host applications.
2781 At its core, LV2 is a simple stable interface, accompanied by extensions which
2782 add functionality to support the needs of increasingly powerful audio
2783 software.")
2784 (license license:isc)))
2785
2786 (define-public ttl2c
2787 (package
2788 (name "ttl2c")
2789 (version "1.0.0")
2790 (source (origin
2791 (method git-fetch)
2792 (uri (git-reference
2793 (url "https://github.com/lvtk/ttl2c")
2794 (commit version)))
2795 (file-name (git-file-name name version))
2796 (sha256
2797 (base32
2798 "0aybx8i5i0sridi9130a3937xgmfmjkk8m48f9whvhlhbzwy3xbl"))))
2799 (build-system waf-build-system)
2800 (arguments
2801 (list
2802 #:tests? #false ;no check target
2803 #:phases
2804 `(modify-phases %standard-phases
2805 (add-before 'configure 'setup-waf
2806 (lambda* (#:key inputs #:allow-other-keys)
2807 (let ((waf (assoc-ref inputs "python-waf")))
2808 (copy-file (string-append waf "/bin/waf") "waf")))))))
2809 (inputs (list boost))
2810 (native-inputs (list python-waf))
2811 (home-page "https://github.com/lvtk/ttl2c")
2812 (synopsis "Turtle to C header conversion utility for LV2 plugins")
2813 (description
2814 "This package provides a conversion utility for LV2 Plugin developers to
2815 generate C headers from Turtle files.")
2816 (license license:gpl3+)))
2817
2818 (define-public lv2-mda-piano
2819 (package
2820 (name "lv2-mda-piano")
2821 (version "0.0.2")
2822 (source (origin
2823 (method git-fetch)
2824 (uri (git-reference
2825 (url "http://git.elephly.net/software/lv2-mdametapiano.git")
2826 (commit version)))
2827 (file-name (git-file-name name version))
2828 (sha256
2829 (base32
2830 "07lywf6lpfpndg3i9w752mmlg2hgn1bwp23h8b0mdj6awh67abqd"))))
2831 (build-system gnu-build-system)
2832 (arguments
2833 `(#:make-flags (list
2834 "TYPE=mdaPiano"
2835 (string-append "PREFIX=" (assoc-ref %outputs "out")))
2836 #:tests? #f ; no check target
2837 #:phases (modify-phases %standard-phases (delete 'configure))))
2838 (inputs
2839 (list lv2 lvtk))
2840 (native-inputs
2841 (list pkg-config))
2842 (native-search-paths
2843 (list (search-path-specification
2844 (variable "LV2_PATH")
2845 (files '("lib/lv2")))))
2846 (home-page "https://elephly.net/lv2/mdapiano.html")
2847 (synopsis "LV2 port of the mda Piano plugin")
2848 (description "An LV2 port of the mda Piano VSTi.")
2849 (license license:gpl3+)))
2850
2851 (define-public lv2-mda-epiano
2852 (package (inherit lv2-mda-piano)
2853 (name "lv2-mda-epiano")
2854 (arguments
2855 `(#:make-flags (list
2856 "TYPE=mdaEPiano"
2857 (string-append "PREFIX=" (assoc-ref %outputs "out")))
2858 #:tests? #f ; no check target
2859 #:phases (modify-phases %standard-phases (delete 'configure))))
2860 (home-page "https://elephly.net/lv2/mdaepiano.html")
2861 (synopsis "LV2 port of the mda EPiano plugin")
2862 (description "An LV2 port of the mda EPiano VSTi.")))
2863
2864 (define-public lvtk
2865 ;; Use the latest commit, as the latest release was made in 2014 and depends
2866 ;; on Python 2.
2867 (let ((commit "a73feabe772f9650aa071e6a4df660e549ab7c48")
2868 (revision "0"))
2869 (package
2870 (name "lvtk")
2871 (version (git-version "1.2.0" revision commit))
2872 (source (origin
2873 (method git-fetch)
2874 (uri (git-reference
2875 (url "https://github.com/lvtk/lvtk")
2876 (commit commit)))
2877 (file-name (git-file-name name version))
2878 (sha256
2879 (base32
2880 "0scmv8b4jlm88d21dqqchjy98wb93zclc9x960h213gdi871vsaj"))))
2881 (build-system waf-build-system)
2882 (arguments (list #:tests? #f)) ;no check target
2883 (inputs (list boost gtkmm lv2))
2884 (native-inputs (list pkg-config))
2885 (home-page "https://github.com/lvtk/lvtk")
2886 (synopsis "C++ libraries for LV2 plugins")
2887 (description
2888 "The LV2 Toolkit (LVTK) contains libraries that wrap the LV2 C API and
2889 extensions into easy to use C++ classes. It is the successor of
2890 lv2-c++-tools.")
2891 (license license:isc))))
2892
2893 (define-public openal
2894 (package
2895 (name "openal")
2896 (version "1.20.1")
2897 (source (origin
2898 (method url-fetch)
2899 (uri (string-append
2900 "https://openal-soft.org/openal-releases/openal-soft-"
2901 version ".tar.bz2"))
2902 (sha256
2903 (base32
2904 "0vax0b1lgd4212bpxa1rciz52d4mv3dkfvcbbhzw4cjp698v1kmn"))))
2905 (build-system cmake-build-system)
2906 (arguments
2907 `(#:tests? #f ; no check target
2908 #:phases
2909 (modify-phases %standard-phases
2910 (add-after
2911 'unpack 'use-full-library-paths
2912 (lambda* (#:key inputs #:allow-other-keys)
2913 (substitute* "alc/backends/pulseaudio.cpp"
2914 (("#define PALIB \"libpulse\\.so\\.0\"")
2915 (string-append "#define PALIB \""
2916 (assoc-ref inputs "pulseaudio")
2917 "/lib/libpulse.so.0"
2918 "\"")))
2919 (substitute* "alc/backends/alsa.cpp"
2920 (("LoadLib\\(\"libasound\\.so\\.2\"\\)")
2921 (string-append "LoadLib(\""
2922 (assoc-ref inputs "alsa-lib")
2923 "/lib/libasound.so.2"
2924 "\")")))
2925 #t)))))
2926 (inputs
2927 (list alsa-lib pulseaudio))
2928 (synopsis "3D audio API")
2929 (description
2930 "OpenAL provides capabilities for playing audio in a virtual 3D
2931 environment. Distance attenuation, doppler shift, and directional sound
2932 emitters are among the features handled by the API. More advanced effects,
2933 including air absorption, occlusion, and environmental reverb, are available
2934 through the EFX extension. It also facilitates streaming audio, multi-channel
2935 buffers, and audio capture.")
2936 (home-page "https://openal-soft.org/")
2937 (license license:lgpl2.0+)))
2938
2939 (define-public freealut
2940 (package
2941 (name "freealut")
2942 (version "1.1.0")
2943 (source (origin
2944 (method url-fetch)
2945 ;; Upstream url is unclear, many systems use Fedora, there is also
2946 ;; https://github.com/vancegroup/freealut though the status of it
2947 ;; (official? unofficial?) is not clear.
2948 (uri (string-append
2949 "https://pkgs.fedoraproject.org/repo/pkgs/" name "/" name "-"
2950 version ".tar.gz" "/e089b28a0267faabdb6c079ee173664a/" name
2951 "-" version ".tar.gz"))
2952 (sha256
2953 (base32
2954 "0kzlil6112x2429nw6mycmif8y6bxr2cwjcvp18vh6s7g63ymlb0"))))
2955 (build-system cmake-build-system)
2956 (arguments
2957 `(#:tests? #f)) ; no check target
2958 (inputs
2959 (list openal))
2960 (synopsis "Free implementation of OpenAL's ALUT standard")
2961 (description "freealut is the OpenAL Utility Toolkit.")
2962 (home-page "https://kcat.strangesoft.net/openal.html")
2963 (license license:lgpl2.0)))
2964
2965 (define-public patchage
2966 (package
2967 (name "patchage")
2968 (version "1.0.4")
2969 (source (origin
2970 (method url-fetch)
2971 (uri (string-append "https://download.drobilla.net/patchage-"
2972 version
2973 ".tar.bz2"))
2974 (sha256
2975 (base32
2976 "0gbakiw3mikgbvy3pssrmqmn7z5c7kp4vyaxj5rs4jnkscxgw9vw"))))
2977 (build-system waf-build-system)
2978 (arguments
2979 `(#:tests? #f)) ; no check target
2980 (inputs
2981 (list alsa-lib
2982 boost
2983 jack-1
2984 ganv
2985 glibmm
2986 gtkmm-2
2987 dbus-glib))
2988 (native-inputs
2989 (list pkg-config))
2990 (home-page "https://drobilla.net/software/patchage.html")
2991 (synopsis "Modular patch bay for audio and MIDI systems")
2992 (description
2993 "Patchage is a modular patch bay for audio and MIDI systems based on JACK
2994 and ALSA.")
2995 (license license:gpl3+)))
2996
2997 (define-public pcaudiolib
2998 (package
2999 (name "pcaudiolib")
3000 (version "1.1")
3001 (home-page "https://github.com/espeak-ng/pcaudiolib")
3002 (source (origin
3003 (method git-fetch)
3004 (uri (git-reference (url home-page) (commit version)))
3005 (file-name (git-file-name name version))
3006 (sha256
3007 (base32
3008 "0c55hlqqh0m7bcb3nlgv1s4a22s5bgczr1cakjh3767rjb10khi0"))))
3009 (build-system gnu-build-system)
3010 (arguments
3011 `(#:configure-flags '("--disable-static")))
3012 (native-inputs
3013 (list autoconf automake libtool pkg-config which))
3014 (inputs
3015 (list alsa-lib pulseaudio))
3016 (synopsis "Portable C audio library")
3017 (description
3018 "The Portable C Audio Library (pcaudiolib) provides a C@tie{}API to
3019 different audio devices such as ALSA or PulseAudio.")
3020 (license (list license:gpl3+
3021 ;; The bundled TPCircularBuffer uses a custom license.
3022 (license:non-copyleft
3023 "file://src/TPCircularBuffer/README.markdown")))))
3024
3025 (define-public qjackctl
3026 (package
3027 (name "qjackctl")
3028 (version "0.9.7")
3029 (source (origin
3030 (method url-fetch)
3031 (uri (string-append "mirror://sourceforge/qjackctl/qjackctl/"
3032 version "/qjackctl-" version ".tar.gz"))
3033 (sha256
3034 (base32
3035 "104hfvr15v8cbkzil8slrqj48y3fl7lx060alj80q1sjh5hl6j2j"))))
3036 (build-system cmake-build-system)
3037 (arguments
3038 '(#:tests? #f)) ; no check target
3039 (inputs
3040 (list jack-1 alsa-lib portaudio qtbase-5 qtx11extras))
3041 (native-inputs
3042 (list pkg-config qttools))
3043 (home-page "https://qjackctl.sourceforge.io/")
3044 (synopsis "Jack server control application")
3045 (description "Control a Jack server. Allows you to plug various sources
3046 into various outputs and to start, stop and configure jackd")
3047 (license license:gpl2+)))
3048
3049 (define-public qjackrcd
3050 (package
3051 (name "qjackrcd")
3052 (version "1.2.2")
3053 (source (origin
3054 (method git-fetch)
3055 (uri (git-reference
3056 (url "https://github.com/orouits/qjackrcd")
3057 (commit (string-append "v" version))))
3058 (file-name (git-file-name name version))
3059 (sha256
3060 (base32
3061 "1l5iq2mkqd4gn9yr8xbh9qlpp1clcflazychl4vhdbz0bzq4c6al"))))
3062 (build-system gnu-build-system)
3063 (arguments
3064 `(#:phases
3065 (modify-phases %standard-phases
3066 (replace 'configure
3067 (lambda* (#:key outputs #:allow-other-keys)
3068 (invoke "qmake"
3069 (string-append "PREFIX="
3070 (assoc-ref outputs "out"))))))))
3071 (native-inputs
3072 (list qtbase-5)) ; for qmake
3073 (inputs
3074 (list jack-1 libsndfile qtbase-5))
3075 (home-page "https://sourceforge.net/projects/qjackrcd/")
3076 (synopsis "Stereo audio recorder for JACK")
3077 (description "QJackRcd is a simple graphical stereo recorder for JACK
3078 supporting silence processing for automatic pause, file splitting, and
3079 background file post-processing.")
3080 (license license:gpl2+)))
3081
3082 (define-public supercollider
3083 (package
3084 (name "supercollider")
3085 (version "3.12.1")
3086 (source
3087 (origin
3088 (method git-fetch)
3089 (uri (git-reference
3090 (url "https://github.com/supercollider/supercollider")
3091 (commit (string-append "Version-" version))
3092 ;; for nova-simd, nova-tt, hidapi, TLSF, oscpack
3093 (recursive? #t)))
3094 (file-name (git-file-name name version))
3095 (sha256
3096 (base32
3097 "0id522338a464j1slcspajwc7klypbc9qpigw5mqjhrw970wij5z"))
3098 (modules '((guix build utils)
3099 (ice-9 ftw)))
3100 (snippet
3101 ;; The build system doesn't allow us to unbundle the following
3102 ;; libraries. hidapi is also heavily patched and upstream not
3103 ;; actively maintained.
3104 '(let ((keep-dirs '("nova-simd" "nova-tt" "hidapi"
3105 "TLSF-2.4.6" "oscpack_1_1_0" "." "..")))
3106 (with-directory-excursion "./external_libraries"
3107 (for-each
3108 delete-file-recursively
3109 (scandir "."
3110 (lambda (x)
3111 (and (eq? (stat:type (stat x)) 'directory)
3112 (not (member (basename x) keep-dirs)))))))
3113 ;; To find the Guix provided ableton-link library.
3114 (substitute* "lang/CMakeLists.txt"
3115 (("include\\(\\.\\./external_libraries/link/\
3116 AbletonLinkConfig\\.cmake\\)")
3117 "find_package(AbletonLink NAMES AbletonLink ableton-link \
3118 link REQUIRED)"))))))
3119 (build-system cmake-build-system)
3120 (outputs
3121 '("out" ;core language
3122 "ide")) ;qt ide
3123 (arguments
3124 `(#:configure-flags '("-DSYSTEM_BOOST=ON"
3125 "-DSYSTEM_YAMLCPP=ON"
3126 "-DSC_QT=ON"
3127 "-DCMAKE_BUILD_TYPE=Release"
3128 "-DFORTIFY=ON"
3129 ;; "-DLIBSCSYNTH=ON" ; TODO: Re-enable?
3130 "-DSC_EL=OFF") ;scel is packaged individually as emacs-scel
3131 #:phases
3132 (modify-phases %standard-phases
3133 ;; HOME must be defined otherwise supercollider throws a "ERROR:
3134 ;; Primitive '_FileMkDir' failed." error when generating the doc.
3135 ;; The graphical tests also hang without it.
3136 (add-after 'unpack 'set-home-directory
3137 (lambda _
3138 (setenv "HOME" (getcwd))))
3139 (add-after 'unpack 'patch-scclass-dir
3140 (lambda* (#:key outputs #:allow-other-keys)
3141 (let* ((out (assoc-ref outputs "out"))
3142 (scclass-dir
3143 (string-append out
3144 "/share/SuperCollider/SCClassLibrary")))
3145 (substitute* "lang/LangSource/SC_LanguageConfig.cpp"
3146 (((string-append
3147 "SC_Filesystem::instance\\(\\)\\.getDirectory"
3148 "\\(DirName::Resource\\) / CLASS_LIB_DIR_NAME"))
3149 (string-append "Path(\"" scclass-dir "\")"))))))
3150 (add-before 'build 'prepare-x
3151 (lambda _
3152 (system "Xvfb &")
3153 (setenv "DISPLAY" ":0")))
3154 (add-before 'install 'install-ide
3155 (lambda* (#:key outputs #:allow-other-keys)
3156 (let* ((out (assoc-ref outputs "out"))
3157 (ide (assoc-ref outputs "ide"))
3158 (scide "editors/sc-ide/scide"))
3159 (install-file scide
3160 (string-append ide "/bin"))
3161 (delete-file scide)))))))
3162 (native-inputs
3163 (list ableton-link pkg-config qttools xorg-server-for-tests))
3164 (inputs (list jack-1
3165 libsndfile
3166 fftw
3167 libxt
3168 readline ;readline support for sclang's CLI
3169 alsa-lib ;for sclang's MIDI interface
3170 eudev ;for user interactions with devices
3171 avahi ;zeroconf service discovery support
3172 icu4c
3173 boost
3174 boost-sync
3175 yaml-cpp
3176 qtbase-5
3177 qtdeclarative
3178 qtsvg
3179 qtwebchannel
3180 qtwebsockets))
3181 (propagated-inputs ;to get native-search-path
3182 (list qtwebengine))
3183 (home-page "https://github.com/supercollider/supercollider")
3184 (synopsis "Synthesis engine and programming language")
3185 (description "SuperCollider is a synthesis engine (@code{scsynth} or
3186 @code{supernova}) and programming language (@code{sclang}). It can be used
3187 for experimenting with sound synthesis and algorithmic composition.
3188
3189 SuperCollider requires jackd to be installed in your user profile and your
3190 user must be allowed to access the realtime features of the kernel. Search
3191 for \"realtime\" in the index of the Guix manual to learn how to achieve this
3192 using Guix System.")
3193 (license license:gpl2+)))
3194
3195 (define-public libshout-idjc
3196 (package
3197 (name "libshout-idjc")
3198 (version "2.4.4")
3199 (source
3200 (origin
3201 (method url-fetch)
3202 (uri (string-append "mirror://sourceforge/libshoutidjc.idjc.p"
3203 "/libshout-idjc-" version ".tar.gz"))
3204 (sha256
3205 (base32 "1r9z8ggxylr2ab0isaljbm574rplnlcb12758j994h54nh2vikwb"))))
3206 (build-system gnu-build-system)
3207 (native-inputs
3208 (list pkg-config))
3209 (inputs
3210 (list libogg libtheora libvorbis speex))
3211 (home-page "http://idjc.sourceforge.net/")
3212 (synopsis "Broadcast streaming library with IDJC extensions")
3213 (description "This package provides libshout plus IDJC extensions.")
3214 ;; GNU Library (not Lesser) General Public License.
3215 (license license:lgpl2.0+)))
3216
3217 (define-public resample
3218 (package
3219 (name "resample")
3220 (version "1.8.1")
3221 (source (origin
3222 (method url-fetch)
3223 (uri (string-append "https://ccrma.stanford.edu/~jos/gz/resample-"
3224 version
3225 ".tar.gz"))
3226 (sha256 (base32
3227 "074zj8ydp05yy1hjcglfv3hkvj4cm50f9nralka1992pm6yf8yvy"))))
3228 (build-system gnu-build-system)
3229 (native-inputs
3230 (list autoconf automake pkg-config libtool))
3231 (synopsis "Sampling rate conversion and filter design utilities")
3232 (description "This package contains the @command{resample} and
3233 @command{windowfilter} command line utilities. The @command{resample} command
3234 allows changing the sampling rate of a sound file, while the
3235 @command{windowfilter} command allows designing Finite Impulse Response (FIR)
3236 filters using the so-called @emph{window method}.")
3237 (home-page "https://ccrma.stanford.edu/~jos/resample/Free_Resampling_Software.html")
3238 (license license:lgpl2.1+)))
3239
3240 (define-public rubberband
3241 (package
3242 (name "rubberband")
3243 (version "1.8.2")
3244 (source (origin
3245 (method url-fetch)
3246 (uri
3247 (string-append "https://bitbucket.org/breakfastquay/rubberband/get/v"
3248 version
3249 ".tar.bz2"))
3250 (file-name (string-append name "-" version ".tar.bz2"))
3251 (sha256
3252 (base32
3253 "0462fmjnfqpv2qi0s6ny42drqarkr0xy9lw8frjmfgzyzl5n9294"))))
3254 (build-system gnu-build-system)
3255 (arguments
3256 `(#:tests? #f ; no check target
3257 #:phases
3258 (modify-phases %standard-phases
3259 (add-after 'unpack 'skip-jni-installation
3260 ;; ‘make install’ unconditionally installs librubberband-jni.so,
3261 ;; which is never built by ‘make all’. Skip it.
3262 (lambda _
3263 (substitute* "Makefile.in"
3264 ((".*cp -f \\$\\(JNI_TARGET\\).*") ""))
3265 #t)))))
3266 (inputs
3267 (list ladspa libsamplerate vamp))
3268 (native-inputs
3269 (list pkg-config))
3270 (home-page "https://breakfastquay.com/rubberband/")
3271 (synopsis "Audio time-stretching and pitch-shifting library")
3272 (description
3273 "Rubber Band is a library and utility program that permits changing the
3274 tempo and pitch of an audio recording independently of one another.")
3275 (license license:gpl2+)))
3276
3277 (define-public rtmidi
3278 (package
3279 (name "rtmidi")
3280 (version "5.0.0")
3281 (source (origin
3282 (method url-fetch)
3283 (uri (string-append "https://www.music.mcgill.ca/~gary/rtmidi"
3284 "/release/rtmidi-" version ".tar.gz"))
3285 (file-name (string-append "rtmidi-" version ".tar.gz"))
3286 (sha256
3287 (base32
3288 "1ff2yfq3k4l209fr71v3w98fpjjv1chs09vkbmxj03lcikahxns8"))))
3289 (build-system gnu-build-system)
3290 (inputs
3291 (list jack-1 alsa-lib))
3292 (native-inputs
3293 (list autoconf automake libtool pkg-config))
3294 (home-page "https://www.music.mcgill.ca/~gary/rtmidi")
3295 (synopsis "Cross-platform MIDI library for C++")
3296 (description
3297 "RtMidi is a set of C++ classes (RtMidiIn, RtMidiOut, and API specific
3298 classes) that provide a common cross-platform API for realtime MIDI
3299 input/output.")
3300 (license license:expat)))
3301
3302 (define-public rtmidi-4.0
3303 (package
3304 (inherit rtmidi)
3305 (version "4.0.0")
3306 (source (origin
3307 (method url-fetch)
3308 (uri (string-append "https://www.music.mcgill.ca/~gary/rtmidi"
3309 "/release/rtmidi-" version ".tar.gz"))
3310 (file-name (string-append "rtmidi-" version ".tar.gz"))
3311 (sha256
3312 (base32
3313 "1k962ljpnwyjw9jjiky2372khhri1wqvrj5qsalfpys31xqzw31p"))))))
3314
3315 (define-public sratom
3316 (package
3317 (name "sratom")
3318 (version "0.6.6")
3319 (source (origin
3320 (method url-fetch)
3321 (uri (string-append "https://download.drobilla.net/sratom-"
3322 version ".tar.bz2"))
3323 (sha256
3324 (base32
3325 "178v90qvsp6lw4sqdmdz0bzyjkgwhv9m75ph1d1z8say5bv0p4gv"))))
3326 (build-system waf-build-system)
3327 (arguments `(#:tests? #f)) ;no check target
3328 (propagated-inputs
3329 ;; In Requires of sratom-0.pc.
3330 (list lv2 serd sord))
3331 (native-inputs
3332 (list pkg-config))
3333 (home-page "https://drobilla.net/software/sratom/")
3334 (synopsis "Library for serialising LV2 atoms to/from RDF")
3335 (description
3336 "Sratom is a library for serialising LV2 atoms to/from RDF, particularly
3337 the Turtle syntax.")
3338 (license license:isc)))
3339
3340 (define-public suil
3341 (package
3342 (name "suil")
3343 (version "0.10.10")
3344 (source (origin
3345 (method url-fetch)
3346 (uri (string-append "https://download.drobilla.net/suil-"
3347 version ".tar.bz2"))
3348 (sha256
3349 (base32
3350 "1ysbazqlbyxlzyr9zk7dj2mgb6pn0amllj2cd5g1m56wnzk0h3vm"))))
3351 (build-system waf-build-system)
3352 (arguments
3353 `(#:tests? #f)) ;no check target
3354 (inputs
3355 (list lv2
3356 gtk+-2
3357 gtk+
3358 qtbase-5))
3359 (native-inputs
3360 (list pkg-config))
3361 (home-page "https://drobilla.net/software/suil/")
3362 (synopsis "Library for loading and wrapping LV2 plugin UIs")
3363 (description
3364 "Suil is a lightweight C library for loading and wrapping LV2 plugin UIs.
3365
3366 Suil makes it possible to load a UI of a toolkit in a host using another
3367 toolkit. The API is designed such that hosts do not need to explicitly
3368 support specific toolkits – if Suil supports a particular toolkit, then UIs in
3369 that toolkit will work in all hosts that use Suil automatically.
3370
3371 Suil currently supports every combination of Gtk, Qt, and X11.")
3372 (license license:isc)))
3373
3374 (define-public libebur128
3375 (package
3376 (name "libebur128")
3377 (version "1.2.6")
3378 (source
3379 (origin
3380 (method git-fetch)
3381 (uri (git-reference
3382 (url "https://github.com/jiixyj/libebur128")
3383 (commit (string-append "v" version))))
3384 (file-name (git-file-name name version))
3385 (sha256
3386 (base32 "0xkpz5rzz1j1srhprbh89669gw8z5f1njpvcnxqgf7qax69vd8sh"))))
3387 (build-system cmake-build-system)
3388 (arguments
3389 `(;; Tests require proprietary .wav files. See
3390 ;; https://github.com/jiixyj/libebur128/issues/82.
3391 #:tests? #f
3392 #:configure-flags '("-DBUILD_STATIC_LIBS=OFF")))
3393 (home-page "https://github.com/jiixyj/libebur128")
3394 (synopsis "Library implementing the EBU R 128 loudness standard")
3395 (description
3396 "@code{libebur128} is a C library that implements the EBU R 128 standard
3397 for loudness normalisation.")
3398 (license license:expat)))
3399
3400 (define-public timidity++
3401 (package
3402 (name "timidity++")
3403 (version "2.15.0")
3404 (source (origin
3405 (method url-fetch)
3406 (uri (string-append "mirror://sourceforge/timidity/TiMidity++"
3407 "/TiMidity++-" version
3408 "/TiMidity++-" version ".tar.bz2"))
3409 (sha256
3410 (base32
3411 "1xf8n6dqzvi6nr2asags12ijbj1lwk1hgl3s27vm2szib8ww07qn"))))
3412 (build-system gnu-build-system)
3413 (arguments
3414 '(#:configure-flags
3415 (list "--enable-audio=alsa,flac,jack,ao,vorbis,speex"
3416 "--enable-ncurses"
3417 "--enable-server"
3418 "--enable-alsaseq"
3419 (string-append "--with-default-path="
3420 (assoc-ref %outputs "out") "/etc/timidity"))
3421 #:phases
3422 (modify-phases %standard-phases
3423 (add-after 'install 'install-config
3424 (lambda _
3425 (let ((out (string-append (assoc-ref %outputs "out")
3426 "/etc/timidity")))
3427 (mkdir-p out)
3428 (call-with-output-file
3429 (string-append out "/timidity.cfg")
3430 (lambda (port)
3431 (format port (string-append "source "
3432 (assoc-ref %build-inputs "freepats")
3433 "/share/freepats/freepats.cfg")))))
3434 #t)))))
3435 (inputs
3436 (list alsa-lib
3437 ao
3438 flac
3439 jack-1
3440 libogg
3441 libvorbis
3442 speex
3443 ncurses
3444 freepats))
3445 (native-inputs
3446 (list pkg-config))
3447 (home-page "http://timidity.sourceforge.net/")
3448 (synopsis "Software synthesizer for playing MIDI files")
3449 (description
3450 "TiMidity++ is a software synthesizer. It can play MIDI files by
3451 converting them into PCM waveform data; give it a MIDI data along with digital
3452 instrument data files, then it synthesizes them in real-time, and plays. It
3453 can not only play sounds, but also can save the generated waveforms into hard
3454 disks as various audio file formats.")
3455 (license license:gpl2+)))
3456
3457 (define-public vamp
3458 (package
3459 (name "vamp")
3460 (version "2.6")
3461 (source (origin
3462 (method url-fetch)
3463 (uri (string-append
3464 "https://code.soundsoftware.ac.uk"
3465 "/attachments/download/1520/vamp-plugin-sdk-"
3466 version ".tar.gz"))
3467 (sha256
3468 (base32
3469 "0pzq0yy2kdl3jgfc2aqmh5m55nk1ild0hq8mydiiw35c6y0mglyh"))))
3470 (build-system gnu-build-system)
3471 (arguments
3472 `(#:tests? #f ; no check target
3473 #:phases
3474 (modify-phases %standard-phases
3475 (add-after 'install 'remove-libvamp-hostsdk.la
3476 (lambda* (#:key outputs #:allow-other-keys)
3477 ;; https://bugs.launchpad.net/ubuntu/+source/vamp-plugin-sdk/+bug/1253656
3478 (for-each delete-file
3479 (let ((out (assoc-ref outputs "out")))
3480 (list (string-append out "/lib/libvamp-sdk.la")
3481 (string-append out "/lib/libvamp-hostsdk.la"))))
3482 #t)))))
3483 (inputs
3484 (list libsndfile))
3485 (native-inputs
3486 (list pkg-config))
3487 (home-page "https://vamp-plugins.org")
3488 (synopsis "Modular and extensible audio processing system")
3489 (description
3490 "Vamp is an audio processing plugin system for plugins that extract
3491 descriptive information from audio data — typically referred to as audio
3492 analysis plugins or audio feature extraction plugins.")
3493 (license
3494 (license:x11-style
3495 "https://code.soundsoftware.ac.uk/projects/vamp-plugin-sdk/repository/entry/COPYING"))))
3496
3497 (define-public libsbsms
3498 (package
3499 (name "libsbsms")
3500 (version "2.0.2")
3501 (source
3502 (origin
3503 (method url-fetch)
3504 (uri (string-append "mirror://sourceforge/sbsms/sbsms/" version
3505 "/libsbsms-" version ".tar.gz"))
3506 (sha256
3507 (base32 "1vmf84iy4dkwxv887grnlsfk43fmhd9gbg26gc2kgcv40sbkvayf"))))
3508 (build-system gnu-build-system)
3509 (native-inputs (list automake))
3510 (arguments
3511 `(#:configure-flags
3512 ;; Disable the use of SSE unless on x86_64.
3513 ,(if (not (string-prefix? "x86_64" (or (%current-target-system)
3514 (%current-system))))
3515 ''("--disable-sse")
3516 ''())
3517 #:phases
3518 (modify-phases %standard-phases
3519 (add-after
3520 'unpack 'fix-ar-lib-path
3521 (lambda* (#:key inputs #:allow-other-keys)
3522 ;; Originally a symlink to '/usr/local/share/automake-1.12/ar-lib'.
3523 (delete-file "ar-lib")
3524 (symlink
3525 (search-input-file inputs
3526 (string-append "/share/automake-"
3527 ,(package-version automake)
3528 "/ar-lib"))
3529 "ar-lib")
3530 #t)))))
3531 (home-page "http://sbsms.sourceforge.net/")
3532 (synopsis "Library for time stretching and pitch scaling of audio")
3533 (description
3534 "SBSMS (Subband Sinusoidal Modeling Synthesis) is software for time
3535 stretching and pitch scaling of audio. This package contains the library.")
3536 ;; There is no explicit declaration of a license, but a COPYING file
3537 ;; containing gpl2.
3538 (license license:gpl2)))
3539
3540 (define-public libkeyfinder
3541 (package
3542 (name "libkeyfinder")
3543 (version "2.2.6")
3544 (source
3545 (origin
3546 (method git-fetch)
3547 (uri (git-reference
3548 (url "https://github.com/mixxxdj/libkeyfinder")
3549 (commit (string-append "v" version))))
3550 (file-name (git-file-name name version))
3551 (sha256
3552 (base32 "0s7nqjmv44q5qjynfcs0j6h4a6qcz4mxzandkkdjjbnwv5rxc3zg"))))
3553 (build-system cmake-build-system)
3554 (native-inputs
3555 (list catch-framework2))
3556 (inputs
3557 (list fftw))
3558 (home-page "https://mixxxdj.github.io/libkeyfinder/")
3559 (synopsis "Musical key detection for digital audio")
3560 (description
3561 "@code{libkeyfinder} is a small C++11 library for estimating the musical
3562 key of digital audio.")
3563 (license license:gpl3+)))
3564
3565 (define-public wavpack
3566 (package
3567 (name "wavpack")
3568 (version "5.4.0")
3569 (source
3570 (origin
3571 (method url-fetch)
3572 (uri (string-append "https://github.com/dbry/WavPack/releases/download/"
3573 version "/wavpack-" version ".tar.xz"))
3574 (sha256
3575 (base32 "0ycbqarw25x7208jilh86vwwiqklr7f617jps9mllqc659mnmpjb"))))
3576 (build-system gnu-build-system)
3577 (arguments
3578 '(#:configure-flags
3579 (list "--disable-static"
3580 "--enable-tests")
3581 #:phases
3582 (modify-phases %standard-phases
3583 (replace 'check
3584 (lambda* (#:key tests? #:allow-other-keys)
3585 (when tests?
3586 (invoke "./cli/wvtest" "--default" "--short"))
3587 #t)))))
3588 (home-page "https://www.wavpack.com/")
3589 (synopsis "Hybrid lossless audio codec")
3590 (description
3591 "WavPack is an audio compression format with lossless, lossy and hybrid
3592 compression modes. This package contains command-line programs and library to
3593 encode and decode wavpack files.")
3594 (license license:bsd-3)))
3595
3596 (define-public libmodplug
3597 (package
3598 (name "libmodplug")
3599 (version "0.8.9.0")
3600 (source (origin
3601 (method url-fetch)
3602 (uri (string-append
3603 "mirror://sourceforge/modplug-xmms/"
3604 name "/" version "/" name "-" version ".tar.gz"))
3605 (sha256
3606 (base32
3607 "1pnri98a603xk47smnxr551svbmgbzcw018mq1k6srbrq6kaaz25"))))
3608 (build-system gnu-build-system)
3609 (home-page "http://modplug-xmms.sourceforge.net/")
3610 (synopsis "Mod file playing library")
3611 (description
3612 "Libmodplug renders mod music files as raw audio data, for playing or
3613 conversion. mod, .s3m, .it, .xm, and a number of lesser-known formats are
3614 supported. Optional features include high-quality resampling, bass expansion,
3615 surround and reverb.")
3616 (license license:public-domain)))
3617
3618 (define-public libxmp
3619 (package
3620 (name "libxmp")
3621 (version "4.4.1")
3622 (source (origin
3623 (method url-fetch)
3624 (uri (string-append "mirror://sourceforge/xmp/libxmp/" version "/"
3625 name "-" version ".tar.gz"))
3626 (sha256
3627 (base32
3628 "1kycz4jsyvmf7ny9227b497wc7y5ligydi6fvvldmkf8hk63ad9m"))))
3629 (build-system gnu-build-system)
3630 (home-page "http://xmp.sourceforge.net/")
3631 (synopsis "Module player library")
3632 (description
3633 "Libxmp is a library that renders module files to PCM data. It supports
3634 over 90 mainstream and obscure module formats including Protracker (MOD),
3635 Scream Tracker 3 (S3M), Fast Tracker II (XM), and Impulse Tracker (IT).")
3636 (license license:lgpl2.1+)))
3637
3638 (define-public xmp
3639 (package
3640 (name "xmp")
3641 (version "4.1.0")
3642 (source (origin
3643 (method url-fetch)
3644 (uri (string-append "mirror://sourceforge/xmp/xmp/" version "/"
3645 name "-" version ".tar.gz"))
3646 (sha256
3647 (base32
3648 "17i8fc7x7yn3z1x963xp9iv108gxfakxmdgmpv3mlm438w3n3g8x"))))
3649 (build-system gnu-build-system)
3650 (native-inputs
3651 (list pkg-config))
3652 (inputs
3653 (list libxmp pulseaudio))
3654 (home-page "http://xmp.sourceforge.net/")
3655 (synopsis "Extended module player")
3656 (description
3657 "Xmp is a portable module player that plays over 90 mainstream and
3658 obscure module formats, including Protracker MOD, Fasttracker II XM, Scream
3659 Tracker 3 S3M and Impulse Tracker IT files.")
3660 (license license:gpl2+)))
3661
3662 (define-public soundtouch
3663 (package
3664 (name "soundtouch")
3665 (version "2.2")
3666 (source
3667 (origin
3668 (method git-fetch)
3669 (uri (git-reference
3670 (url "https://gitlab.com/soundtouch/soundtouch.git")
3671 (commit version)))
3672 (file-name (git-file-name name version))
3673 (sha256
3674 (base32 "12i6yg8vvqwyk412lxl2krbfby6hnxld8qxy0k4m5xp4g94jiq4p"))))
3675 (build-system gnu-build-system)
3676 (native-inputs
3677 (list autoconf automake libtool file))
3678 (home-page "https://www.surina.net/soundtouch/")
3679 (synopsis
3680 "Audio processing library for changing tempo, pitch and playback rate")
3681 (description
3682 "SoundTouch is an audio processing library for changing the tempo, pitch
3683 and playback rates of audio streams or audio files. It is intended for
3684 application developers writing sound processing tools that require tempo/pitch
3685 control functionality, or just for playing around with the sound effects.")
3686 (license license:lgpl2.1+)))
3687
3688 (define-public sox
3689 (package
3690 (name "sox")
3691 (version "14.4.2")
3692 (source (origin
3693 (method url-fetch)
3694 (uri (string-append "mirror://sourceforge/sox/sox/" version "/"
3695 name "-" version ".tar.bz2"))
3696 (sha256
3697 (base32
3698 "170lx90r1nlnb2j6lg00524iwvqy72p48vii4xc5prrh8dnrb9l1"))))
3699 (build-system gnu-build-system)
3700 (arguments
3701 '(#:configure-flags
3702 ;; The upstream asks to identify the distribution to diagnose SoX
3703 ;; bug reports.
3704 '("--with-distro=Guix System Distribution")))
3705 (native-inputs
3706 (list pkg-config))
3707 (inputs
3708 (list alsa-lib
3709 ao
3710 flac
3711 lame
3712 libid3tag
3713 libltdl
3714 libmad
3715 libpng
3716 libvorbis
3717 pulseaudio))
3718 (home-page "http://sox.sourceforge.net")
3719 (synopsis "Sound processing utility")
3720 (description
3721 "SoX (Sound eXchange) is a command line utility that can convert
3722 various formats of computer audio files to other formats. It can also
3723 apply various effects to these sound files, and, as an added bonus, SoX
3724 can play and record audio files.")
3725 ;; sox.c is distributed under GPL, while the files that make up
3726 ;; libsox are licensed under LGPL.
3727 (license (list license:gpl2+ license:lgpl2.1+))))
3728
3729 (define-public soxr
3730 (package
3731 (name "soxr")
3732 (version "0.1.3")
3733 (source
3734 (origin
3735 (method url-fetch)
3736 (uri
3737 (string-append "mirror://sourceforge/soxr/soxr-" version
3738 "-Source.tar.xz"))
3739 (sha256
3740 (base32 "12aql6svkplxq5fjycar18863hcq84c5kx8g6f4rj0lcvigw24di"))))
3741 (build-system cmake-build-system)
3742 (arguments '(#:tests? #f)) ;no 'check' target
3743 (home-page "https://sourceforge.net/p/soxr/wiki/Home/")
3744 (synopsis "One-dimensional sample-rate conversion library")
3745 (description
3746 "The SoX Resampler library (libsoxr) performs one-dimensional sample-rate
3747 conversion. It may be used, for example, to resample PCM-encoded audio.")
3748 (license license:lgpl2.1+)))
3749
3750 (define-public twolame
3751 (package
3752 (name "twolame")
3753 (version "0.4.0")
3754 (source
3755 (origin
3756 (method url-fetch)
3757 (uri (string-append "mirror://sourceforge/twolame/twolame/" version
3758 "/twolame-" version ".tar.gz"))
3759 (sha256
3760 (base32 "0zf8sxqb02w07ah55b1y7ab643zmpbhn62spa9pqra0rc17l4dfc"))))
3761 (build-system gnu-build-system)
3762 (inputs
3763 (list libsndfile))
3764 (native-inputs
3765 (list perl which)) ;used in tests/test.pl
3766 (home-page "https://www.twolame.org/")
3767 (synopsis "MPEG Audio Layer 2 (MP2) encoder")
3768 (description
3769 "TwoLAME is an optimised MPEG Audio Layer 2 (MP2) encoder based on
3770 tooLAME by Mike Cheng, which in turn is based upon the ISO dist10 code and
3771 portions of LAME.")
3772 (license license:lgpl2.1+)))
3773
3774 (define-public portaudio
3775 (package
3776 (name "portaudio")
3777 (version "190600.20161030")
3778 (source
3779 (origin
3780 (method url-fetch)
3781 (uri (string-append
3782 "http://www.portaudio.com/archives/pa_stable_v"
3783 (string-map (lambda (c) (if (char=? c #\.) #\_ c)) version)
3784 ".tgz"))
3785 (sha256
3786 (base32 "04qmin6nj144b8qb9kkd9a52xfvm0qdgm8bg8jbl7s3frmyiv8pm"))
3787 (patches (search-patches "portaudio-audacity-compat.patch"))))
3788 (build-system gnu-build-system)
3789 (inputs
3790 ;; TODO: Add ASIHPI.
3791 (list alsa-lib jack-1))
3792 ;; Autoreconf is necessary because the audacity-compat patch modifies .in
3793 ;; files.
3794 (native-inputs
3795 (list autoconf automake libtool pkg-config))
3796 (arguments
3797 '(#:tests? #f ;no 'check' target
3798 #:parallel-build? #f ;fails on some systems
3799 #:configure-flags '("--with-pic"
3800 "--enable-cxx"
3801 ;; XXX: The following prevents a build error
3802 ;; because of missing depcomp when C++ bindings are
3803 ;; requested.
3804 "--disable-dependency-tracking")
3805 #:phases
3806 (modify-phases %standard-phases
3807 ;; This is needed for linking the static libraries
3808 (add-after 'unpack 'build-only-position-independent-code
3809 (lambda _
3810 (substitute* "configure.in"
3811 (("AC_PROG_LIBTOOL" m)
3812 (string-append m "\nAM_PROG_AR\nLT_INIT([pic-only])")))
3813 (delete-file "configure")
3814 #t))
3815 ;; Some headers are not installed by default, but are needed by
3816 ;; packages like Kaldi.
3817 (add-after 'install 'install-missing-headers
3818 (lambda* (#:key outputs #:allow-other-keys)
3819 (install-file "src/common/pa_ringbuffer.h"
3820 (string-append (assoc-ref outputs "out") "/include"))
3821 #t)))))
3822 (home-page "http://www.portaudio.com/")
3823 (synopsis "Audio I/O library")
3824 (description
3825 "PortAudio is a portable C/C++ audio I/O library providing a simple API
3826 to record and/or play sound using a callback function or a blocking read/write
3827 interface.")
3828 (license license:expat)))
3829
3830 (define-public qsynth
3831 (package
3832 (name "qsynth")
3833 (version "0.5.7")
3834 (source
3835 (origin
3836 (method url-fetch)
3837 (uri (list
3838 (string-append "mirror://sourceforge/qsynth/qsynth/" version
3839 "/qsynth-" version ".tar.gz")
3840 (string-append "mirror://sourceforge/qsynth/qsynth (attic)"
3841 "/qsynth-" version ".tar.gz")))
3842 (sha256
3843 (base32 "18im4w8agj60nkppwbkxqnhpp13z5li3w30kklv4lgs20rvgbvl6"))))
3844 (build-system gnu-build-system)
3845 (arguments
3846 `(#:tests? #f)) ; no "check" phase
3847 (native-inputs
3848 (list qttools pkg-config))
3849 (inputs
3850 (list fluidsynth qtbase-5 qtx11extras))
3851 (home-page "https://qsynth.sourceforge.io")
3852 (synopsis "Graphical user interface for FluidSynth")
3853 (description
3854 "Qsynth is a GUI front-end application for the FluidSynth SoundFont
3855 synthesizer written in C++.")
3856 (license license:gpl2+)))
3857
3858 (define-public rsound
3859 (package
3860 (name "rsound")
3861 (version "1.1")
3862 (source
3863 (origin
3864 (method git-fetch)
3865 (uri (git-reference
3866 (url "https://github.com/Themaister/RSound")
3867 (commit (string-append "v" version))))
3868 (file-name (git-file-name name version))
3869 (sha256
3870 (base32 "0gspmr3klwnq98h17p5hc6ifygya4p80g4g8r7a1qavm3mv19waf"))))
3871 (build-system gnu-build-system)
3872 (inputs
3873 (list alsa-lib
3874 jack-1
3875 ao
3876 libsamplerate
3877 openal
3878 portaudio
3879 pulseaudio))
3880 (arguments
3881 '(#:phases
3882 (modify-phases %standard-phases
3883 (replace 'configure
3884 (lambda* (#:key outputs #:allow-other-keys)
3885 (setenv "CC" "gcc")
3886 (invoke "./configure"
3887 (string-append "--prefix=" (assoc-ref outputs "out"))))))
3888 ;; No 'check' target.
3889 #:tests? #f))
3890 (home-page "https://themaister.net/rsound.html")
3891 (synopsis "Networked audio system")
3892 (description
3893 "RSound allows you to send audio from an application and transfer it
3894 directly to a different computer on your LAN network. It is an audio daemon
3895 with a much different focus than most other audio daemons.")
3896 (license license:gpl3+)))
3897
3898 (define-public xjackfreak
3899 (package
3900 (name "xjackfreak")
3901 (version "1.0")
3902 (source (origin
3903 (method git-fetch)
3904 (uri (git-reference
3905 (url "https://github.com/johnhldavis/xjackfreak")
3906 (commit (string-append "v" version))))
3907 (file-name (git-file-name name version))
3908 (sha256
3909 (base32
3910 "18c546qidbrj0f5wfiq5llii2192xpln0ab3r4vpr7i3wybxqjfz"))))
3911 (build-system gnu-build-system)
3912 (arguments
3913 `(#:make-flags
3914 (list (string-append "docdir=" (assoc-ref %outputs "out")
3915 "/share/doc/xjackfreak"))))
3916 (inputs
3917 (list jack-1 libx11 libxt libxext))
3918 (native-inputs
3919 (list pkg-config))
3920 (home-page "https://github.com/johnhldavis/xjackfreak")
3921 (synopsis "JACK audio frequency analyzer and display")
3922 (description
3923 "XJackFreak is an audio analysis and equalizing tool for the Jack Audio
3924 Connection Kit. It can display the FFT of any input, modify it and output the
3925 result.")
3926 (license license:gpl3+)))
3927
3928 (define-public zita-convolver
3929 (package
3930 (name "zita-convolver")
3931 (version "4.0.3")
3932 (source (origin
3933 (method url-fetch)
3934 (uri (string-append
3935 "http://kokkinizita.linuxaudio.org"
3936 "/linuxaudio/downloads/zita-convolver-"
3937 version ".tar.bz2"))
3938 (snippet
3939 ;; Don't optimize for a specific processor architecture.
3940 '(begin
3941 (substitute* "source/Makefile"
3942 (("^CXXFLAGS \\+= -march=native") ""))
3943 #t))
3944 (modules '((guix build utils)))
3945 (sha256
3946 (base32
3947 "0prji66p86z2bzminywkwchr5bfgxcg2i8y803pydd1hzf2198cs"))))
3948 (build-system gnu-build-system)
3949 (arguments
3950 `(#:tests? #f ; no "check" target
3951 #:make-flags
3952 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
3953 (string-append "SUFFIX="))
3954 #:phases
3955 (modify-phases %standard-phases
3956 (add-after 'unpack 'patch-makefile-and-enter-directory
3957 (lambda _
3958 (substitute* "source/Makefile"
3959 (("ldconfig") "true")
3960 (("^LIBDIR =.*") "LIBDIR = lib\n"))
3961 (chdir "source")
3962 #t))
3963 (add-after 'install 'install-symlink
3964 (lambda _
3965 (symlink "libzita-convolver.so"
3966 (string-append (assoc-ref %outputs "out")
3967 "/lib/libzita-convolver.so.4"))
3968 #t))
3969 ;; no configure script
3970 (delete 'configure))))
3971 (inputs (list fftwf))
3972 (home-page "https://kokkinizita.linuxaudio.org")
3973 (synopsis "Fast, partitioned convolution engine library")
3974 (description
3975 "Zita convolver is a C++ library providing a real-time convolution
3976 engine.")
3977 (license license:gpl3+)))
3978
3979 (define-public zita-resampler
3980 (package
3981 (name "zita-resampler")
3982 (version "1.6.2")
3983 (source (origin
3984 (method url-fetch)
3985 (uri (string-append
3986 "http://kokkinizita.linuxaudio.org"
3987 "/linuxaudio/downloads/zita-resampler-"
3988 version ".tar.bz2"))
3989 (snippet
3990 ;; Don't optimize for a specific processor architecture.
3991 '(begin
3992 (substitute* '("apps/Makefile" "source/Makefile")
3993 (("^CXXFLAGS \\+= -march=native") ""))
3994 #t))
3995 (modules '((guix build utils)))
3996 (sha256
3997 (base32
3998 "1my5k2dh2dkvjp6xjnf9qy6i7s28z13kw1n9pwa4a2cpwbzawfr3"))))
3999 (build-system gnu-build-system)
4000 (arguments
4001 `(#:tests? #f ; no "check" target
4002 #:make-flags
4003 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
4004 (string-append "SUFFIX="))
4005 #:phases
4006 (modify-phases %standard-phases
4007 (add-after
4008 'unpack 'patch-makefile-and-enter-directory
4009 (lambda _
4010 (substitute* "source/Makefile"
4011 (("ldconfig") "true")
4012 (("^LIBDIR =.*") "LIBDIR = lib\n"))
4013 (chdir "source")
4014 #t))
4015 (add-after
4016 'install 'install-symlink
4017 (lambda _
4018 (symlink "libzita-resampler.so"
4019 (string-append (assoc-ref %outputs "out")
4020 "/lib/libzita-resampler.so.1"))
4021 #t))
4022 ;; no configure script
4023 (delete 'configure))))
4024 (home-page "https://kokkinizita.linuxaudio.org/linuxaudio/zita-resampler/resampler.html")
4025 (synopsis "C++ library for resampling audio signals")
4026 (description
4027 "Libzita-resampler is a C++ library for resampling audio signals. It is
4028 designed to be used within a real-time processing context, to be fast, and to
4029 provide high-quality sample rate conversion.")
4030 (license license:gpl3+)))
4031
4032 (define-public zita-alsa-pcmi
4033 (package
4034 (name "zita-alsa-pcmi")
4035 (version "0.3.2")
4036 (source (origin
4037 (method url-fetch)
4038 (uri (string-append
4039 "http://kokkinizita.linuxaudio.org"
4040 "/linuxaudio/downloads/zita-alsa-pcmi-"
4041 version ".tar.bz2"))
4042 (sha256
4043 (base32
4044 "12d7vdg74yh21w69qi0wg57iz4876j94qbiq09bvscih6xz9y78s"))))
4045 (build-system gnu-build-system)
4046 (arguments
4047 `(#:tests? #f ; no "check" target
4048 #:make-flags
4049 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
4050 (string-append "SUFFIX="))
4051 #:phases
4052 (modify-phases %standard-phases
4053 (add-after 'unpack 'patch-makefile-and-enter-directory
4054 (lambda _
4055 (substitute* "source/Makefile"
4056 (("ldconfig") "true")
4057 (("^LIBDIR =.*") "LIBDIR = lib\n"))
4058 (chdir "source")
4059 #t))
4060 (add-after 'install 'install-symlink
4061 (lambda _
4062 (symlink "libzita-alsa-pcmi.so"
4063 (string-append (assoc-ref %outputs "out")
4064 "/lib/libzita-alsa-pcmi.so.0"))
4065 #t))
4066 ;; no configure script
4067 (delete 'configure))))
4068 (inputs
4069 (list alsa-lib fftw))
4070 (home-page "https://kokkinizita.linuxaudio.org")
4071 (synopsis "C++ wrapper around the ALSA API")
4072 (description
4073 "Zita-alsa-pcmi is a C++ wrapper around the ALSA API. It provides easy
4074 access to ALSA PCM devices, taking care of the many functions required to
4075 open, initialise and use a hw: device in mmap mode, and providing floating
4076 point audio data.")
4077 (license license:gpl3+)))
4078
4079 (define-public cuetools
4080 (package
4081 (name "cuetools")
4082 (version "1.4.1")
4083 (source (origin
4084 (method git-fetch)
4085 (uri (git-reference
4086 (url "https://github.com/svend/cuetools")
4087 (commit version)))
4088 (file-name (git-file-name name version))
4089 (sha256
4090 (base32
4091 "02ksv1ahf1v4cr2xbclsfv5x17m9ivzbssb5r8xjm97yh8a7spa3"))))
4092 (build-system gnu-build-system)
4093 ;; The source checkout is not bootstrapped.
4094 (native-inputs
4095 (list autoconf automake flex bison))
4096 (synopsis "Cue and toc file parsers and utilities")
4097 (description "Cuetools is a set of programs that are useful for manipulating
4098 and using CUE sheet (cue) files and Table of Contents (toc) files. CUE and TOC
4099 files are a way to represent the layout of a data or audio CD in a
4100 machine-readable ASCII format.")
4101 (home-page "https://github.com/svend/cuetools")
4102 (license license:gpl2+)))
4103
4104 (define-public mp3guessenc
4105 (package
4106 (name "mp3guessenc")
4107 (version "0.27.5")
4108 (source
4109 (origin
4110 (method url-fetch)
4111 (uri (string-append "mirror://sourceforge/mp3guessenc/mp3guessenc-"
4112 (version-major+minor version) "/mp3guessenc-"
4113 version ".tar.gz"))
4114 (sha256
4115 (base32 "1fa3sbwwn4p2v1749lzy040bfy1xfd574mf2frwgg9ikgk3vlb3c"))))
4116 (build-system gnu-build-system)
4117 (arguments
4118 `(#:tests? #f ; no tests
4119 #:make-flags
4120 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
4121 #:phases
4122 (modify-phases %standard-phases
4123 (delete 'configure)))) ; no configure phase
4124 (home-page "https://mp3guessenc.sourceforge.io")
4125 (synopsis "Analyze MPEG layer I/II/III files")
4126 (description "mp3guessenc is a command line utility that tries to detect the
4127 encoder used for an MPEG Layer III (MP3) file, as well as scan any MPEG audio
4128 file (any layer) and print a lot of useful information.")
4129 (license license:lgpl2.1+)))
4130
4131 (define-public shntool
4132 (package
4133 (name "shntool")
4134 (version "3.0.10")
4135 (source (origin
4136 (method url-fetch)
4137 (uri (list
4138 (string-append "http://etree.org/shnutils/shntool/dist/src/"
4139 "shntool-" version ".tar.gz")
4140 (string-append "mirror://debian/pool/main/s/shntool/shntool_"
4141 version ".orig.tar.gz")))
4142 (sha256
4143 (base32
4144 "00i1rbjaaws3drkhiczaign3lnbhr161b7rbnjr8z83w8yn2wc3l"))))
4145 (build-system gnu-build-system)
4146 (synopsis "WAVE audio data processing tool")
4147 (description "shntool is a multi-purpose WAVE data processing and reporting
4148 utility. File formats are abstracted from its core, so it can process any file
4149 that contains WAVE data, compressed or not---provided there exists a format
4150 module to handle that particular file type. It can also generate CUE files, and
4151 use them split WAVE data into multiple files.")
4152 (home-page "http://etree.org/shnutils/shntool/")
4153 ;; 'install-sh' bears the x11 license
4154 (license (list license:gpl2+ license:x11))))
4155
4156 (define-public dcadec
4157 (package
4158 (name "dcadec")
4159 (version "0.2.0")
4160 (source (origin
4161 (method git-fetch)
4162 (uri (git-reference
4163 (url "https://github.com/foo86/dcadec")
4164 (commit (string-append "v" version))))
4165 (file-name (git-file-name name version))
4166 (sha256
4167 (base32
4168 "07nd0ajizrp1w02bsyfcv18431r8m8rq8gjfmz9wmckpg7cxj2hs"))))
4169 (build-system gnu-build-system)
4170 (arguments
4171 ;; Test files are missing: https://github.com/foo86/dcadec/issues/53
4172 `(#:tests? #f
4173 #:make-flags
4174 (list (string-append "CC=" ,(cc-for-target))
4175 ;; Build shared library.
4176 "CONFIG_SHARED=1"
4177 (string-append "PREFIX=" (assoc-ref %outputs "out"))
4178 ;; Set proper runpath.
4179 (string-append "LDFLAGS=-Wl,-rpath="
4180 (assoc-ref %outputs "out")
4181 "/lib"))
4182 #:phases
4183 (modify-phases %standard-phases
4184 ;; No configure script, just a hand-written Makefile.
4185 (delete 'configure))))
4186 (synopsis "DTS Coherent Acoustics decoder")
4187 (description "Dcadec is a DTS Coherent Acoustics surround sound decoder
4188 with support for HD extensions.")
4189 (home-page "https://github.com/foo86/dcadec")
4190 (license license:lgpl2.1+)))
4191
4192 (define-public drc
4193 (package
4194 (name "drc")
4195 (version "3.2.3")
4196 (source
4197 (origin
4198 (method url-fetch)
4199 (uri (string-append "mirror://sourceforge/drc-fir/drc-fir/"
4200 version "/drc-" version ".tar.gz"))
4201 (sha256
4202 (base32
4203 "08ljj4776pjx119zjmfqa8w56bf7x0m7spmi27yk1m455bmiglrj"))))
4204 (build-system gnu-build-system)
4205 (arguments
4206 (list
4207 #:tests? #false ;there are none
4208 #:make-flags
4209 #~(list (string-append "INSTALL_PREFIX=" #$output)
4210 "-C" "source")
4211 #:phases
4212 '(modify-phases %standard-phases
4213 (delete 'configure))))
4214 (inputs (list fftw))
4215 (home-page "http://drc-fir.sourceforge.net/")
4216 (synopsis "Digital room correction")
4217 (description
4218 "DRC is a program used to generate correction filters for acoustic
4219 compensation of HiFi and audio systems in general, including listening room
4220 compensation. DRC generates just the FIR correction filters, which can be
4221 used with a real time or offline convolver to provide real time or offline
4222 correction. DRC doesn't provide convolution features, and provides only some
4223 simplified, although really accurate, measuring tools.")
4224 (license license:gpl2+)))
4225
4226 (define-public bs1770gain
4227 (package
4228 (name "bs1770gain")
4229 (version "0.7.0")
4230 (home-page "https://manpages.debian.org/sid/bs1770gain/bs1770gain.1.en.html")
4231 (source
4232 (origin
4233 (method url-fetch)
4234 (uri (string-append "mirror://sourceforge/bs1770gain/bs1770gain/"
4235 version "/bs1770gain-" version ".tar.gz"))
4236 (sha256
4237 (base32 "0a2dcaxvxy5m3a5sb1lhplsymvz3ypaiidc5xn9qy01h53zvyvkp"))
4238 (modules '((guix build utils)))
4239 (snippet
4240 `(begin
4241 ;; XXX
4242 (substitute* (find-files "." "\\.[ch]$")
4243 (("^ \\* N..o.*") ""))
4244 (substitute* "libbg/bgx.c"
4245 (("#define BG.* ") "#define BS ")
4246 (("BG.*NO?.*N.*S.*E.*N.*SE?") "NO")
4247 (("\"( #|N).*\"") "\"\""))
4248 (substitute* (list "config.h"
4249 "configure.ac"
4250 "configure")
4251 (("https?://bs1770gain[^/]*/")
4252 ,home-page))
4253 #t))))
4254 (build-system gnu-build-system)
4255 (inputs (list ffmpeg sox))
4256 (synopsis "Tool to adjust loudness of media files")
4257 (description
4258 "BS1770GAIN is a loudness scanner compliant with ITU-R BS.1770 and its
4259 flavors EBU R128, ATSC A/85, and ReplayGain 2.0. It helps normalizing the
4260 loudness of audio and video files to the same level.")
4261 (license license:gpl2+)))
4262
4263 (define-public filteraudio
4264 (let ((revision "1")
4265 (commit "2fc669581e2a0ff87fba8de85861b49133306094"))
4266 (package
4267 (name "filteraudio")
4268 (version (string-append "0.0.0-" revision "."
4269 (string-take commit 7)))
4270 (source
4271 (origin
4272 (method git-fetch)
4273 (uri (git-reference
4274 (url "https://github.com/irungentoo/filter_audio")
4275 (commit commit)))
4276 (file-name (string-append name "-" version "-checkout"))
4277 (sha256
4278 (base32
4279 "0hbb290n3wb23f2k692a6bhc23nnqmxqi9sc9j15pnya8wifw64g"))))
4280 (build-system gnu-build-system)
4281 (arguments
4282 `(#:make-flags (list (string-append "PREFIX=" %output)
4283 (string-append "CC=" ,(cc-for-target)))
4284 #:tests? #f ; No tests
4285 #:phases
4286 (modify-phases %standard-phases
4287 ;; No configure script
4288 (delete 'configure))))
4289 (synopsis "Lightweight audio filtering library")
4290 (description "An easy to use audio filtering library made from webrtc
4291 code, used in @code{libtoxcore}.")
4292 (home-page "https://github.com/irungentoo/filter_audio")
4293 (license license:bsd-3))))
4294
4295 (define-public gsm
4296 (package
4297 (name "gsm")
4298 (version "1.0.19")
4299 (source
4300 (origin
4301 (method url-fetch)
4302 (uri
4303 (string-append "http://www.quut.com/" name "/" name
4304 "-" version ".tar.gz"))
4305 (sha256
4306 (base32
4307 "1xkha9ss5g5qnfaybi8il0mcvp8knwg9plgh8404vh58d0pna0s9"))))
4308 (build-system gnu-build-system)
4309 (arguments
4310 `(#:test-target "tst"
4311 #:make-flags (list (string-append "INSTALL_ROOT=" %output))
4312 #:phases
4313 (modify-phases %standard-phases
4314 (add-after 'unpack 'add-fpic-ccflag
4315 (lambda _
4316 ;; The -fPIC compiler option is needed when building
4317 ;; mediastreamer.
4318 (substitute* "Makefile"
4319 (("^CCFLAGS.*" all)
4320 (string-append all "CCFLAGS += -fPIC\n")))
4321 #t))
4322 (add-before 'install 'pre-install
4323 (lambda _
4324 (let ((out (assoc-ref %outputs "out")))
4325 (mkdir-p (string-append out "/inc"))
4326 (mkdir-p (string-append out "/man"))
4327 (mkdir-p (string-append out "/man/man1"))
4328 (mkdir-p (string-append out "/man/man3"))
4329 (mkdir-p (string-append out "/bin"))
4330 (mkdir-p (string-append out "/lib")))
4331 #t))
4332 (add-after 'install 'post-install
4333 (lambda _
4334 (let ((out (assoc-ref %outputs "out")))
4335 (rename-file (string-append out "/inc")
4336 (string-append out "/include"))
4337 (mkdir-p (string-append out "/include/gsm"))
4338 (copy-recursively "inc"
4339 (string-append out "/include/gsm")))
4340 #t))
4341 (delete 'configure)))) ; no configure script
4342 (synopsis "GSM 06.10 lossy speech compression library")
4343 (description "This C library provides an encoder and a decoder for the GSM
4344 06.10 RPE-LTP lossy speech compression algorithm.")
4345 (home-page "http://quut.com/gsm/")
4346 (license (license:non-copyleft "file://COPYRIGHT"))))
4347
4348 (define-public python-pyalsaaudio
4349 (package
4350 (name "python-pyalsaaudio")
4351 (version "0.8.4")
4352 (source (origin
4353 (method url-fetch)
4354 (uri (pypi-uri "pyalsaaudio" version))
4355 (sha256
4356 (base32
4357 "1180ypn9596rq4b7y7dyv627j1q0fqilmkkrckclnzsdakdgis44"))))
4358 (build-system python-build-system)
4359 (arguments
4360 `(#:tests? #f)) ; tests require access to ALSA devices.
4361 (inputs
4362 (list alsa-lib))
4363 (home-page "https://larsimmisch.github.io/pyalsaaudio/")
4364 (synopsis "ALSA wrappers for Python")
4365 (description
4366 "This package contains wrappers for accessing the ALSA API from Python.
4367 It is currently fairly complete for PCM devices, and has some support for
4368 mixers.")
4369 (license license:psfl)))
4370
4371 (define-public ldacbt
4372 (package
4373 (name "ldacbt")
4374 (version "2.0.2.3")
4375 (source (origin
4376 (method url-fetch)
4377 (uri (string-append "https://github.com/EHfive/ldacBT"
4378 "/releases/download/v" version
4379 "/ldacBT-" version ".tar.gz"))
4380 (sha256
4381 (base32
4382 "1d65dms4klzql29abi15i90f41h523kl6mxrz9hi6p5vg37fxn2b"))))
4383 (build-system cmake-build-system)
4384 (arguments `(#:tests? #f)) ; no check target
4385 (home-page "https://github.com/EHfive/ldacBT/")
4386 (synopsis "LDAC Bluetooth encoder and ABR library")
4387 (description "This package provides an encoder for the LDAC
4388 high-resolution Bluetooth audio streaming codec for streaming at up to 990
4389 kbps at 24 bit/96 kHz.")
4390 (license license:asl2.0)))
4391
4392 (define-public bluez-alsa
4393 (package
4394 (name "bluez-alsa")
4395 (version "3.0.0")
4396 (source (origin
4397 ;; The tarballs are mere snapshots and don't contain a
4398 ;; bootstrapped build system.
4399 (method git-fetch)
4400 (uri (git-reference
4401 (url "https://github.com/Arkq/bluez-alsa")
4402 (commit (string-append "v" version))))
4403 (file-name (git-file-name name version))
4404 (sha256
4405 (base32
4406 "1jlsgxyqfhncfhx1sy3ry0dp6p95kd4agh7g2b7g51h0c4cv74h8"))))
4407 (build-system gnu-build-system)
4408 (arguments
4409 `(#:configure-flags
4410 (list "--enable-ldac"
4411 (string-append "--with-alsaplugindir="
4412 (assoc-ref %outputs "out")
4413 "/lib/alsa-lib")
4414 (string-append "--with-dbusconfdir="
4415 (assoc-ref %outputs "out")
4416 "/etc/dbus-1/system.d"))))
4417 (native-inputs
4418 (list autoconf automake libtool pkg-config))
4419 (inputs
4420 (list alsa-lib
4421 bluez
4422 dbus
4423 glib
4424 ldacbt
4425 libbsd
4426 ncurses
4427 ortp
4428 sbc))
4429 (home-page "https://github.com/Arkq/bluez-alsa")
4430 (synopsis "Bluetooth ALSA backend")
4431 (description "This project is a rebirth of a direct integration between
4432 Bluez and ALSA. Since Bluez >= 5, the built-in integration has been removed
4433 in favor of 3rd party audio applications. From now on, Bluez acts as a
4434 middleware between an audio application, which implements Bluetooth audio
4435 profile, and a Bluetooth audio device. BlueALSA registers all known Bluetooth
4436 audio profiles in Bluez, so in theory every Bluetooth device (with audio
4437 capabilities) can be connected. In order to access the audio stream, one has
4438 to connect to the ALSA PCM device called @code{bluealsa}. The device is based
4439 on the ALSA software PCM plugin.")
4440 (license license:expat)))
4441
4442 (define-public snd
4443 (package
4444 (name "snd")
4445 (version "20.9")
4446 (source (origin
4447 (method url-fetch)
4448 (uri (string-append "ftp://ccrma-ftp.stanford.edu/pub/Lisp/"
4449 "snd-" version ".tar.gz"))
4450 (sha256
4451 (base32
4452 "0jxkycxn6jcbs4gklk9sk3gfr0y26dz1m71nxah9rnx80wnzj6hr"))))
4453 (build-system glib-or-gtk-build-system)
4454 (arguments
4455 `(#:tests? #f ; no tests
4456 #:out-of-source? #f ; for the 'install-doc' phase
4457 #:configure-flags
4458 (let* ((out (assoc-ref %outputs "out"))
4459 (docdir (string-append out "/share/doc/"
4460 ,name "-" ,version)))
4461 (list "--with-alsa" "--with-jack" "--with-gmp"
4462 (string-append "--with-doc-dir=" docdir)))
4463 #:phases
4464 (modify-phases %standard-phases
4465 (add-after 'install 'install-doc
4466 (lambda* (#:key outputs #:allow-other-keys)
4467 (let* ((out (assoc-ref outputs "out"))
4468 (doc (string-append out "/share/doc/"
4469 ,name "-" ,version)))
4470 (for-each
4471 (lambda (f)
4472 (install-file f doc))
4473 (find-files "." "\\.html$"))
4474 (copy-recursively "pix" (string-append doc "/pix"))
4475 #t))))))
4476 (native-inputs
4477 (list pkg-config))
4478 (inputs
4479 (list alsa-lib
4480 fftw
4481 flac
4482 gmp
4483 gsl
4484 gtk+
4485 jack-1
4486 libsamplerate
4487 mpc
4488 mpfr
4489 mpg123
4490 speex
4491 timidity++
4492 vorbis-tools
4493 wavpack))
4494 (synopsis "Sound editor")
4495 (home-page "https://ccrma.stanford.edu/software/snd/")
4496 (description
4497 "Snd is a sound editor modelled loosely after Emacs. It can be
4498 customized and extended using either the s7 Scheme implementation (included in
4499 the Snd sources), Ruby, or Forth.")
4500 (license (license:non-copyleft "file://COPYING"))))
4501
4502 (define-public noise-repellent
4503 (package
4504 (name "noise-repellent")
4505 (version "0.1.5")
4506 (source (origin
4507 (method git-fetch)
4508 (uri (git-reference
4509 (url "https://github.com/lucianodato/noise-repellent")
4510 (commit version)))
4511 (file-name (string-append name "-" version "-checkout"))
4512 (sha256
4513 (base32
4514 "0hb89x9i2knzan46q4nwscf5zmnb2nwf4w13xl2c0y1mx1ls1mwl"))))
4515 (build-system meson-build-system)
4516 (arguments
4517 `(#:configure-flags
4518 (list (string-append "--prefix=" (assoc-ref %outputs "out")
4519 "/lib/lv2"))))
4520 (inputs
4521 (list lv2 fftwf))
4522 (native-inputs
4523 (list pkg-config))
4524 (home-page "https://github.com/lucianodato/noise-repellent")
4525 (synopsis "LV2 plugin for broadband noise reduction")
4526 (description "Noise Repellent is an LV2 plugin to reduce noise. It has
4527 the following features:
4528
4529 @enumerate
4530 @item Spectral gating and spectral subtraction suppression rule
4531 @item Adaptive and manual noise thresholds estimation
4532 @item Adjustable noise floor
4533 @item Adjustable offset of thresholds to perform over-subtraction
4534 @item Time smoothing and a masking estimation to reduce artifacts
4535 @item Basic onset detector to avoid transients suppression
4536 @item Whitening of the noise floor to mask artifacts and to recover higher
4537 frequencies
4538 @item Option to listen to the residual signal
4539 @item Soft bypass
4540 @item Noise profile saved with the session
4541 @end enumerate
4542 ")
4543 (license license:lgpl3+)))
4544
4545 (define-public lv2-speech-denoiser
4546 (let ((commit "04cfba929630404f8d4f4ca5bac8d9b09a99152f")
4547 (revision "1"))
4548 (package
4549 (name "lv2-speech-denoiser")
4550 (version (git-version "0" revision commit))
4551 (source
4552 (origin
4553 (method git-fetch)
4554 (uri (git-reference
4555 (url "https://github.com/lucianodato/speech-denoiser/")
4556 (commit commit)))
4557 (file-name (git-file-name name version))
4558 (sha256
4559 (base32 "189l6lz8sz5vr6bjyzgcsrvksl1w6crqsg0q65r94b5yjsmjnpr4"))))
4560 (build-system meson-build-system)
4561 (arguments
4562 `(;; Using a "release" build is recommended for performance
4563 #:build-type "release"
4564 #:phases
4565 (modify-phases %standard-phases
4566 (add-after 'unpack 'patch-meson-build
4567 (lambda _
4568 (substitute* "meson.build"
4569 (("install_folder = 'sdenoise.lv2'")
4570 "install_folder = 'lib/lv2/sdenoise.lv2'")
4571 (("build/manifest.ttl") "../build/manifest.ttl"))
4572 #t))
4573 (add-after 'unpack 'build-rnnoise
4574 (lambda _
4575 (with-directory-excursion "rnnoise"
4576 (let ((old-CFLAGS (getenv "CFLAGS")))
4577 (setenv "CFLAGS" "-fvisibility=hidden -fPIC -Wl,--exclude-libs,ALL")
4578 (setenv "CONFIG_SHELL" (which "bash"))
4579 (invoke "autoreconf" "-vif")
4580 (invoke "sh" "configure"
4581 "--disable-examples"
4582 "--disable-doc"
4583 "--disable-shared"
4584 "--enable-static")
4585 (invoke "make")
4586 (setenv "CFLAGS" old-CFLAGS))))))))
4587 (inputs
4588 (list lv2))
4589 (native-inputs
4590 (list autoconf automake libtool pkg-config))
4591 (home-page "https://github.com/werman/noise-suppression-for-voice")
4592 (synopsis "Speech denoise LV2 plugin based on Xiph's RNNoise library")
4593 (description "RNNoise is a library that uses deep learning to apply
4594 noise suppression to audio sources with voice presence. This package provides
4595 an LV2 audio plugin.")
4596 (license license:lgpl3+))))
4597
4598 (define-public cli-visualizer
4599 (package
4600 (name "cli-visualizer")
4601 (version "1.8")
4602 (source
4603 (origin
4604 (method git-fetch)
4605 (uri (git-reference
4606 (url "https://github.com/dpayne/cli-visualizer")
4607 (commit (string-append "v" version))))
4608 (file-name (git-file-name name version))
4609 (sha256
4610 (base32 "003mbbwsz43mg3d7llphpypqa9g7rs1p1cdbqi1mbc2bfrc1gcq2"))))
4611 (build-system cmake-build-system)
4612 (native-inputs
4613 ;; TODO: Try using the latest googletest for versions > 1.8.
4614 (list ;; ("googletest" ,googletest-1.8)
4615 which))
4616 (inputs
4617 (list fftw ncurses pulseaudio))
4618 (arguments
4619 '(#:tests? #f
4620 ;; XXX Enable tests after patching them to use the system googletest.
4621 ;; #:configure-flags (list "-DVIS_WITH_TESTS=true")
4622 #:phases
4623 (modify-phases %standard-phases
4624 (add-after 'install 'install-examples
4625 (lambda* (#:key outputs #:allow-other-keys)
4626 (with-directory-excursion "../source/examples"
4627 (delete-file "mac_osx_config")
4628 (for-each (lambda (file)
4629 (install-file file
4630 (string-append
4631 (assoc-ref outputs "out")
4632 "/share/doc")))
4633 (find-files ".")))
4634 #t)))))
4635 (home-page "https://github.com/dpayne/cli-visualizer/")
4636 (synopsis "Command-line audio visualizer")
4637 (description "@code{cli-visualizer} displays fast-Fourier
4638 transforms (FFTs) of the sound being played, as well as other graphical
4639 representations.")
4640 (license license:expat)))
4641
4642 (define-public cava
4643 (package
4644 (name "cava")
4645 (version "0.7.4")
4646 (source (origin
4647 (method git-fetch)
4648 (uri (git-reference
4649 (url "https://github.com/karlstav/cava")
4650 (commit version)))
4651 (file-name (git-file-name name version))
4652 (sha256
4653 (base32
4654 "1mziklmqifhnb4kg9ia2r56r8wjn6xp40bkpf484hsgqvnrccl86"))
4655 (modules '((guix build utils)))
4656 (snippet
4657 #~(begin
4658 (delete-file-recursively "iniparser")
4659 (substitute* "configure.ac"
4660 (("AC_CONFIG_FILES\\(iniparser/Makefile\\)") ""))
4661 (substitute* "Makefile.am"
4662 (("SUBDIRS = iniparser") ""))))))
4663 (build-system gnu-build-system)
4664 (native-inputs (list autoconf automake libtool))
4665 (inputs (list fftw ncurses pulseaudio iniparser))
4666 (arguments
4667 (list #:configure-flags
4668 #~(list (string-append "PREFIX="
4669 #$output)
4670 (string-append "FONT_DIR="
4671 #$output "/share/consolefonts"))
4672 #:make-flags
4673 #~(let ((lib (string-append #$output "/lib")))
4674 (list (string-append "cava_LDFLAGS = -L" lib " -Wl,-rpath " lib " -lrt")))
4675 #:phases
4676 #~(modify-phases %standard-phases
4677 (replace 'bootstrap
4678 (lambda _
4679 (setenv "HOME"
4680 (getcwd))
4681 (invoke "sh" "autogen.sh")))
4682 (add-before 'build 'make-cava-ldflags
4683 (lambda _
4684 (mkdir-p (string-append #$output "/lib"))))
4685 (add-after 'install 'data
4686 (lambda _
4687 (for-each (lambda (file)
4688 (install-file file
4689 (string-append #$output
4690 "/share/doc/examples")))
4691 (find-files "example_files")))))))
4692 (home-page "https://karlstav.github.io/cava/")
4693 (synopsis "Console audio visualizer for ALSA, MPD, and PulseAudio")
4694 (description "C.A.V.A. is a bar audio spectrum visualizer for the terminal
4695 using ALSA, MPD, PulseAudio, or a FIFO buffer as its input.")
4696 (license license:expat)))
4697
4698 (define-public fluid-3
4699 (let ((commit "871c8ce2002e8b3c198f532fdb4fbcce7914f951"))
4700 (package
4701 (name "fluid-3")
4702 (version "2.1")
4703 (source
4704 (origin
4705 (method url-fetch)
4706 ;; Only one file is required, but the release bundles the whole
4707 ;; software which is 50MiB as tar and 200MiB unpacked. The website
4708 ;; directly links the soundfont release to the github file download.
4709 (uri (string-append "https://github.com/musescore/MuseScore/raw/"
4710 commit "/share/sound/FluidR3Mono_GM.sf3"))
4711 (file-name (string-append name "-" version ".sf3"))
4712 (sha256
4713 (base32
4714 "1hjfg5i15bw9279007xs92zsggjgn4s4k9pc00s851l3kvc6dkfg"))))
4715 (build-system trivial-build-system)
4716 (arguments
4717 `(#:modules ((guix build utils))
4718 #:builder
4719 (begin
4720 (use-modules (guix build utils))
4721 (let ((file (assoc-ref %build-inputs "source"))
4722 (out (string-append %output "/share/soundfonts")))
4723 (mkdir-p out)
4724 (copy-file file (string-append out "/FluidR3Mono_GM.sf3"))
4725 #t))))
4726 (home-page "https://github.com/musescore/MuseScore/tree/master/share/sound")
4727 (synopsis "Pro-quality GM soundfont")
4728 (description "Fluid-3 is Frank Wen's pro-quality GM soundfont.")
4729 (license license:expat))))
4730
4731 (define-public libfdk
4732 (package
4733 (name "libfdk")
4734 (version "2.0.1")
4735 (source
4736 (origin
4737 (method git-fetch)
4738 (uri (git-reference
4739 (url "https://github.com/mstorsjo/fdk-aac")
4740 (commit (string-append "v" version))))
4741 (file-name (git-file-name name version))
4742 (sha256
4743 (base32
4744 "1fkrnzs78fmj11n9z3l0w53i2fl16jcfiyavwidck9bzmkmsf486"))))
4745 (build-system gnu-build-system)
4746 (native-inputs
4747 (list autoconf automake libtool))
4748 (home-page "https://github.com/mstorsjo/fdk-aac")
4749 (synopsis "Fraunhofer FDK AAC library")
4750 (description "FDK is a library for encoding and decoding Advanced Audio
4751 Coding (AAC) format audio, developed by Fraunhofer IIS, and included as part of
4752 Android. It supports several Audio Object Types including MPEG-2 and MPEG-4 AAC
4753 LC, HE-AAC (AAC LC + SBR), HE-AACv2 (LC + SBR + PS) as well AAC-LD (low delay)
4754 and AAC-ELD (enhanced low delay) for real-time communication. The encoding
4755 library supports sample rates up to 96 kHz and up to eight channels (7.1
4756 surround).")
4757 (license (license:fsf-free "https://github.com/mstorsjo/fdk-aac/blob/master/NOTICE"
4758 "https://www.gnu.org/licenses/license-list.html#fdk"))))
4759
4760 (define-public libopenshot-audio
4761 (package
4762 (name "libopenshot-audio")
4763 (version "0.2.2")
4764 (source (origin
4765 (method git-fetch)
4766 (uri (git-reference
4767 (url "https://github.com/OpenShot/libopenshot-audio")
4768 (commit (string-append "v" version))))
4769 (file-name (git-file-name name version))
4770 (sha256
4771 (base32
4772 "03dygh85riljk7dpn5a5a0d22a2kz45fs13gzwqgnbzzr1k17p2y"))))
4773 (build-system cmake-build-system)
4774 (inputs
4775 (list alsa-lib
4776 ;; The following are for JUCE GUI components:
4777 libx11
4778 freetype
4779 libxrandr
4780 libxinerama
4781 libxcursor))
4782 (arguments
4783 `(#:tests? #f ;there are no tests
4784 #:configure-flags
4785 (list (string-append "-DCMAKE_CXX_FLAGS=-I"
4786 (assoc-ref %build-inputs "freetype")
4787 "/include/freetype2"))))
4788 (home-page "https://openshot.org")
4789 (synopsis "Audio editing and playback for OpenShot")
4790 (description "OpenShot Audio Library (libopenshot-audio) allows
4791 high-quality editing and playback of audio, and is based on the JUCE
4792 library.")
4793 (license license:lgpl3+)))
4794
4795 (define-public faudio
4796 (package
4797 (name "faudio")
4798 (version "21.10")
4799 (source
4800 (origin
4801 (method git-fetch)
4802 (uri (git-reference
4803 (url "https://github.com/FNA-XNA/FAudio")
4804 (commit version)))
4805 (file-name (git-file-name name version))
4806 (sha256
4807 (base32 "0l9bicg8v1shsyq9k48zh4wv5kwfs6lfjmm9blzd13xrgmhd07w2"))))
4808 (arguments
4809 '(#:tests? #f ; No tests.
4810 #:configure-flags '("-DGSTREAMER=ON")))
4811 (build-system cmake-build-system)
4812 (native-inputs (list pkg-config))
4813 (inputs (list gstreamer gst-plugins-base sdl2))
4814 (home-page "https://github.com/FNA-XNA/FAudio")
4815 (synopsis "XAudio reimplementation")
4816 (description "FAudio is an XAudio reimplementation that focuses solely on
4817 developing fully accurate DirectX Audio runtime libraries.")
4818 (license
4819 (list license:zlib
4820 ;; stb & utils/{ui,wav}common are dual-licenced under either of:
4821 license:expat
4822 license:public-domain))))
4823
4824 (define-public gnaural
4825 (package
4826 (name "gnaural")
4827 (version "20110606")
4828 (source
4829 (origin
4830 (method url-fetch)
4831 (uri (string-append "mirror://sourceforge/gnaural/Gnaural/gnaural_"
4832 version ".tar.xz"))
4833 (sha256
4834 (base32
4835 "1gq519c0imsh57zklyi0f8h64l3ai48lh672c834470z8c6kvbfi"))))
4836 (build-system gnu-build-system)
4837 (inputs
4838 (list alsa-lib gtk+-2 libsndfile portaudio))
4839 (native-inputs
4840 (list pkg-config))
4841 (home-page "http://gnaural.sourceforge.net/")
4842 (synopsis "Binaural beat synthesizer")
4843 (description "Gnaural is a programmable auditory binaural beat synthesizer
4844 intended to be used for brainwave entrainment. Gnaural supports creation of
4845 binaural beat tracks of different frequencies and exporting of tracks into
4846 different audio formats. Gnaural can also be linked over the internet with
4847 other Gnaural instances, allowing synchronous sessions between many users.")
4848 (license license:gpl2+)))
4849
4850 (define-public darkice
4851 (package
4852 (name "darkice")
4853 (version "1.4")
4854 (source (origin
4855 (method url-fetch)
4856 (uri (string-append "https://github.com/rafael2k/darkice/releases/"
4857 "download/v" version "/darkice-"
4858 version ".tar.gz"))
4859 (sha256
4860 (base32
4861 "05yq7lggxygrkd76yiqby3msrgdn082p0qlvmzzv9xbw8hmyra76"))))
4862 (build-system gnu-build-system)
4863 (native-inputs (list pkg-config))
4864 (inputs (list lame
4865 libvorbis
4866 opus
4867 twolame
4868 alsa-lib
4869 pulseaudio
4870 jack-1
4871 libsamplerate))
4872 (arguments
4873 `(#:configure-flags
4874 (list (string-append "--with-lame-prefix="
4875 (assoc-ref %build-inputs "lame")))))
4876 (home-page "http://www.darkice.org/")
4877 (synopsis "Live audio streamer")
4878 (description "DarkIce is a live audio streamer. It takes audio input from
4879 a sound card, encodes it into Ogg Vorbis and/or mp3, and sends the audio
4880 stream to one or more IceCast and/or ShoutCast servers.")
4881 (license license:gpl3+)))
4882
4883 (define-public libltc
4884 (package
4885 (name "libltc")
4886 (version "1.3.1")
4887 (source
4888 (origin
4889 (method url-fetch)
4890 (uri
4891 (string-append "https://github.com/x42/libltc/releases/download/v"
4892 version "/libltc-" version ".tar.gz"))
4893 (sha256
4894 (base32
4895 "173h9dgmain3nyrwk6q2d7yl4fnh4vacag4s2p01n5b7nyrkxrjh"))))
4896 (build-system gnu-build-system)
4897 (arguments
4898 `(#:parallel-tests? #f)) ;tests fail otherwise
4899 (native-inputs
4900 (list doxygen pkg-config))
4901 (synopsis "Encode or decode Linear/Longitudinal Time Code (LTC) audio")
4902 (description "Libltc is a POSIX-C Library for handling
4903 @dfn{Linear/Longitudinal Time Code} (LTC) data.")
4904 (home-page "https://x42.github.io/libltc/")
4905 (license license:lgpl3+)))
4906
4907 (define-public ttaenc
4908 (package
4909 (name "ttaenc")
4910 (version "3.4.1")
4911 (source
4912 (origin
4913 (method url-fetch)
4914 (uri (string-append "mirror://sourceforge/tta/"
4915 "tta/ttaenc-src"
4916 "/ttaenc-" version "-src.tgz"))
4917 (sha256
4918 (base32
4919 "1iixpr4b89g9g1hwn8ak8k8iflcww3r5f09a117qdidc2nqcijdj"))))
4920 (build-system gnu-build-system)
4921 (arguments
4922 `(#:tests? #f ;no tests
4923 #:make-flags
4924 (list (string-append "CC=" ,(cc-for-target))
4925 (string-append "INSDIR=" (assoc-ref %outputs "out") "/bin"))
4926 #:phases
4927 (modify-phases %standard-phases
4928 (delete 'configure) ; no configure
4929 (add-before 'install 'make-bindir
4930 (lambda* (#:key outputs #:allow-other-keys)
4931 (let* ((out (assoc-ref outputs "out")))
4932 (mkdir-p (string-append out "/bin"))
4933 #t))))))
4934 (synopsis "TTA lossless audio encoder")
4935 (description
4936 "TTA performs lossless compression on multichannel 8,16 and 24 bits
4937 data of the Wav audio files. Being lossless means that no data-
4938 quality is lost in the compression - when uncompressed, the data will
4939 be identical to the original. The compression ratios of TTA depend on
4940 the type of music file being compressed, but the compression size
4941 will generally range between 30% - 70% of the original. TTA format
4942 supports both of ID3v1/v2 and APEv2 tags.")
4943 (home-page "http://tausoft.org/")
4944 (license license:gpl2+)))
4945
4946 (define-public libsoundio
4947 (package
4948 (name "libsoundio")
4949 (version "2.0.0")
4950 (source
4951 (origin
4952 (method git-fetch)
4953 (uri (git-reference
4954 (url "https://github.com/andrewrk/libsoundio")
4955 (commit version)))
4956 (file-name (git-file-name name version))
4957 (sha256
4958 (base32
4959 "12l4rvaypv87vigdrmjz48d4d6sq4gfxf5asvnc4adyabxb73i4x"))))
4960 (build-system cmake-build-system)
4961 (arguments
4962 `(#:tests? #f)) ;no tests included
4963 (inputs
4964 (list alsa-lib jack-1 pulseaudio))
4965 (native-inputs
4966 (list pkg-config))
4967 (home-page "http://libsound.io")
4968 (synopsis "C library for real-time audio input and output")
4969 (description "@code{libsoundio} is a C library providing audio input and
4970 output. The API is suitable for real-time software such as digital audio
4971 workstations as well as consumer software such as music players.")
4972 (license license:expat)))
4973
4974 (define-public redkite
4975 (package
4976 (name "redkite")
4977 (version "1.3.1") ;marked unmaintained as of Oct. 2021
4978 (source
4979 (origin
4980 (method git-fetch)
4981 (uri (git-reference
4982 (url "https://github.com/free-sm/redkite")
4983 (commit (string-append "v" version))))
4984 (file-name (git-file-name name version))
4985 (sha256
4986 (base32 "1zb2k2a4m7z2ravqrjn8fq8lic20wbr2m8kja3p3113jsk7j9zvd"))))
4987 (build-system cmake-build-system)
4988 (arguments
4989 `(#:tests? #f)) ;no tests included
4990 (propagated-inputs
4991 (list cairo))
4992 (native-inputs
4993 (list pkg-config))
4994 (synopsis "Small GUI toolkit")
4995 (description "Redkite is a small GUI toolkit developed in C++17 and
4996 inspired from other well known GUI toolkits such as Qt and GTK. It is
4997 minimal on purpose and is intended to be statically linked to applications,
4998 therefore satisfying any requirements they may have to be self contained,
4999 as is the case with audio plugins.")
5000 (home-page "https://gitlab.com/geontime/redkite")
5001 (license license:gpl3+)))
5002
5003 (define-public carla
5004 (package
5005 (name "carla")
5006 (version "2.4.1")
5007 (source
5008 (origin
5009 (method git-fetch)
5010 (uri
5011 (git-reference
5012 (url "https://github.com/falkTX/Carla")
5013 (commit (string-append "v" version))))
5014 (file-name (git-file-name name version))
5015 (sha256
5016 (base32 "01ngkmfcxyg1bb4qmfvlkkjbx4lx62akxqhizl8zmqnhfcy4p9bx"))))
5017 (build-system gnu-build-system)
5018 (arguments
5019 (list #:tests? #f ; no "check" target
5020 #:make-flags
5021 #~(list (string-append "PREFIX=" #$output))
5022 #:phases
5023 #~(modify-phases %standard-phases
5024 (delete 'configure) ; no configure script
5025 (add-before 'build 'set-CC-variable-and-show-features
5026 (lambda _
5027 (setenv "CC" #$(cc-for-target))
5028 (invoke "make" "features")))
5029 (add-after 'install 'make-carla-executable
5030 (lambda _
5031 (chmod (string-append #$output "/share/carla/carla") #o555)))
5032 (add-after 'install 'wrap-executables
5033 (lambda* (#:key inputs #:allow-other-keys)
5034 (wrap-script (string-append #$output "/bin/carla")
5035 #:guile (search-input-file inputs "bin/guile")
5036 `("GUIX_PYTHONPATH" ":" prefix
5037 (,(getenv "GUIX_PYTHONPATH")))))))))
5038 (inputs
5039 (list alsa-lib
5040 ffmpeg
5041 fluidsynth
5042 file
5043 liblo
5044 libsndfile
5045 libx11
5046 gtk+-2 ;needed for bridging GTK2 plugins in GTK3 hosts
5047 gtk+
5048 python-pyliblo
5049 python-pyqt
5050 python-rdflib
5051 ;; python-pyqt shows the following error without python-wrapper:
5052 ;; Error while finding module specification for 'PyQt5.uic.pyuic'
5053 ;; (ModuleNotFoundError: No module named 'PyQt5')
5054 python-wrapper
5055 qtbase-5
5056 zlib
5057
5058 ;; For WRAP-SCRIPT above.
5059 guile-2.2))
5060 (native-inputs
5061 (list pkg-config))
5062 (home-page "https://kx.studio/Applications:Carla")
5063 (synopsis "Audio plugin host")
5064 (description "Carla is a modular audio plugin host, with features like
5065 transport control, automation of parameters via MIDI CC and remote control
5066 over OSC. Carla currently supports LADSPA (including LRDF), DSSI, LV2, VST2,
5067 and VST3 plugin formats, plus SF2 and SFZ file support. It uses JACK as the
5068 default and preferred audio driver but also supports native drivers like ALSA.")
5069 (license license:gpl2+)))
5070
5071 (define-public ecasound
5072 (package
5073 (name "ecasound")
5074 (version "2.9.3")
5075 (source (origin
5076 (method url-fetch)
5077 (uri (string-append "https://nosignal.fi/download/ecasound-"
5078 version ".tar.gz"))
5079 (sha256
5080 (base32 "1m7njfjdb7sqf0lhgc4swihgdr4snkg8v02wcly08wb5ar2fr2s6"))))
5081 (build-system gnu-build-system)
5082 (native-inputs (list pkg-config))
5083 ;; It would be nice to add mikmod to inputs if that gets packaged
5084 ;; eventually.
5085 (inputs (list alsa-lib
5086 jack-1
5087 mpg123
5088 lame
5089 vorbis-tools
5090 faad2
5091 flac
5092 timidity++
5093 libsndfile
5094 libsamplerate
5095 ncurses
5096 ladspa
5097 lilv))
5098 (home-page "https://nosignal.fi/ecasound/index.php")
5099 (synopsis "Multitrack audio processing")
5100 (description "Ecasound is a software package designed for multitrack audio
5101 processing. It can be used for simple tasks like audio playback, recording and
5102 format conversions, as well as for multitrack effect processing, mixing,
5103 recording and signal recycling. Ecasound supports a wide range of audio inputs,
5104 outputs and effect algorithms. Effects and audio objects can be combined in
5105 various ways, and their parameters can be controlled by operator objects like
5106 oscillators and MIDI-CCs. A versatile console mode user-interface is included
5107 in the package.")
5108 ;; As an exception to the above, the C, C++ and python implementations
5109 ;; of the Ecasound Control Interface (ECI) are licensed under the LGPL
5110 ;; (see the file 'COPYING.LGPL'). This allows writing ECI applications
5111 ;; that are not licensed under GPL.
5112 (license (list license:gpl2 license:lgpl2.1))))
5113
5114 (define-public libaudec
5115 (package
5116 (name "libaudec")
5117 (version "0.2.4")
5118 (source
5119 (origin
5120 (method git-fetch)
5121 (uri (git-reference
5122 (url "https://git.zrythm.org/zrythm/libaudec")
5123 (commit (string-append "v" version))))
5124 (file-name (git-file-name name version))
5125 (sha256
5126 (base32
5127 "1570m2dfia17dbkhd2qhx8jjihrpm7g8nnyg6n4wif4vv229s7dz"))))
5128 (build-system meson-build-system)
5129 (arguments
5130 `(#:configure-flags
5131 ;; Build the tests.
5132 `("-Dtests=true")))
5133 (inputs
5134 (list libsamplerate libsndfile))
5135 (native-inputs
5136 (list pkg-config))
5137 (synopsis "Library for reading and resampling audio files")
5138 (description "libaudec is a wrapper library over ffmpeg, sndfile and
5139 libsamplerate for reading and resampling audio files, based on Robin Gareus'
5140 @code{audio_decoder} code.")
5141 (home-page "https://git.zrythm.org/zrythm/libaudec")
5142 (license license:agpl3+)))
5143
5144 (define-public lv2lint
5145 (package
5146 (name "lv2lint")
5147 (version "0.8.0")
5148 (source
5149 (origin
5150 (method git-fetch)
5151 (uri (git-reference
5152 (url "https://git.open-music-kontrollers.ch/lv2/lv2lint")
5153 (commit version)))
5154 (file-name (git-file-name name version))
5155 (sha256
5156 (base32
5157 "1jrka0hsn4n1clri7zfkcl3c2vi52144lkpjm81l51ff8rqy8ks1"))))
5158 (build-system meson-build-system)
5159 (arguments
5160 `(#:configure-flags
5161 `("-Delf-tests=true" ; for checking symbol visibility
5162 "-Donline-tests=true"))) ; for checking URI existence
5163 (inputs
5164 (list curl libelf lilv))
5165 (native-inputs
5166 (list pkg-config))
5167 (synopsis "LV2 plugin lint tool")
5168 (description "lv2lint is an LV2 lint-like tool that checks whether a
5169 given plugin and its UI(s) match up with the provided metadata and adhere
5170 to well-known best practices.")
5171 (home-page "https://open-music-kontrollers.ch/lv2/lv2lint/")
5172 (license license:artistic2.0)))
5173
5174 (define-public lv2toweb
5175 (package
5176 (name "lv2toweb")
5177 (version "0.4")
5178 (source
5179 (origin
5180 (method git-fetch)
5181 (uri (git-reference
5182 (url "https://github.com/x42/lv2toweb")
5183 (commit (string-append "v" version))))
5184 (file-name (git-file-name name version))
5185 (sha256
5186 (base32
5187 "007aysqvgkf25za8nkmyd5g9kp1zla460dcpidlj5xg1zc3fcdfi"))))
5188 (build-system gnu-build-system)
5189 (arguments
5190 `(#:tests? #f ; no "check" target
5191 #:make-flags (list "CC=gcc"
5192 (string-append "PREFIX=" (assoc-ref %outputs "out")))
5193 #:phases
5194 (modify-phases %standard-phases
5195 (delete 'configure))))
5196 (inputs
5197 (list jalv lilv))
5198 (native-inputs
5199 (list help2man pkg-config))
5200 (synopsis "Documentation generator for LV2 plugins")
5201 (description
5202 "lv2toweb allows the user to create an xhtml page with information
5203 about the given LV2 plugin, provided that the plugin and its UI(s) match up
5204 with the provided metadata and adhere to well-known best practices.")
5205 (home-page "https://github.com/x42/lv2toweb")
5206 (license (list license:isc license:gpl2))))
5207
5208 (define-public ztoolkit
5209 (package
5210 (name "ztoolkit")
5211 (version "0.1.1")
5212 (source
5213 (origin
5214 (method git-fetch)
5215 (uri (git-reference
5216 (url "https://git.zrythm.org/zrythm/ztoolkit")
5217 (commit (string-append "v" version))))
5218 (file-name (git-file-name name version))
5219 (sha256
5220 (base32
5221 "07xl3cmdaf7k9mm58m93cn8i1jvgimmiifdw1w7v2jl88nx60pm1"))))
5222 (build-system meson-build-system)
5223 (native-inputs
5224 (list pkg-config))
5225 ;; These are listed as propagated inputs because they are dependencies
5226 ;; in pkgconfig.
5227 (propagated-inputs
5228 (list cairo libx11))
5229 (synopsis "GUI toolkit for LV2 plugins")
5230 (description "ZToolkit (Ztk) is a cross-platform GUI toolkit heavily
5231 inspired by GTK. It handles events and low level drawing on behalf of
5232 the user and provides a high-level API for managing the UI and custom
5233 widgets. ZToolkit is written in C and was created to be used for building
5234 audio plugin UIs, where the dependencies often need to be kept to a
5235 minimum.")
5236 (home-page "https://git.zrythm.org/zrythm/ztoolkit")
5237 (license license:agpl3+)))
5238
5239 (define-public libinstpatch
5240 (package
5241 (name "libinstpatch")
5242 (version "1.1.6")
5243 (source
5244 (origin
5245 (method git-fetch)
5246 (uri (git-reference
5247 (url "https://github.com/swami/libinstpatch")
5248 (commit (string-append "v" version))))
5249 (file-name (git-file-name name version))
5250 (sha256
5251 (base32 "1w3nk0vvd1cxic70n45zjip0bdsrja969myvyvkhq3ngbarbykir"))))
5252 (build-system cmake-build-system)
5253 (arguments
5254 `(#:tests? #f)) ;there are no tests
5255 (native-inputs
5256 `(("glib:bin" ,glib "bin")
5257 ("pkg-config" ,pkg-config)))
5258 (inputs
5259 (list glib libsndfile))
5260 (home-page "http://www.swamiproject.org/")
5261 (synopsis "Instrument file software library")
5262 (description
5263 "libInstPatch is a library for processing digital sample based MIDI
5264 instrument \"patch\" files. The types of files libInstPatch supports are used
5265 for creating instrument sounds for wavetable synthesis. libInstPatch provides
5266 an object framework (based on GObject) to load patch files, which can then be
5267 edited, converted, compressed and saved.")
5268 (license license:lgpl2.1)))
5269
5270 (define-public ztoolkit-rsvg
5271 (package/inherit ztoolkit
5272 (name "ztoolkit-rsvg")
5273 (arguments
5274 `(#:configure-flags `("-Denable_rsvg=true")))
5275 (propagated-inputs
5276 `(("librsvg" ,librsvg)
5277 ,@(package-propagated-inputs ztoolkit)))
5278 (synopsis "ZToolkit with SVG support")))
5279
5280 (define-public lsp-dsp-lib
5281 (package
5282 (name "lsp-dsp-lib")
5283 (version "0.5.14")
5284 (source
5285 (origin
5286 (method url-fetch)
5287 (uri (string-append "https://github.com/sadko4u/lsp-dsp-lib/"
5288 "releases/download/" version
5289 "/lsp-dsp-lib-" version "-src.tar.gz"))
5290 (sha256
5291 (base32 "1gcznkyybywbgdi2fhx27i8sckhy6ahvxax72b213g1lr5aaw7bq"))))
5292 (build-system gnu-build-system)
5293 (arguments
5294 (list #:tests? #f ; no tests
5295 #:make-flags
5296 #~(list (string-append "CC=" #$(cc-for-target)))
5297 #:phases
5298 #~(modify-phases %standard-phases
5299 (add-after 'unpack 'omit-static-library
5300 (lambda _
5301 (substitute* "src/Makefile"
5302 ((".*cp \\$\\(ARTIFACT_SLIB\\).*") "") ; don't install it
5303 ((" \\$\\(ARTIFACT_SLIB\\)") "")))) ; don't build it
5304 (replace 'configure
5305 (lambda _
5306 (invoke "make" "config"
5307 (string-append "PREFIX=" #$output)))))))
5308 (home-page "https://github.com/sadko4u/lsp-dsp-lib")
5309 (synopsis "Digital signal processing library")
5310 (description "The LSP DSP library provides a set of functions that perform
5311 SIMD-optimized computing on several hardware architectures. All functions
5312 currently operate on IEEE-754 single-precision floating-point numbers.")
5313 (license license:lgpl3+)))
5314
5315 (define-public codec2
5316 (package
5317 (name "codec2")
5318 (version "0.9.2")
5319 (source
5320 (origin
5321 (method git-fetch)
5322 (uri (git-reference
5323 (url "https://github.com/drowe67/codec2")
5324 (commit (string-append "v" version))))
5325 (file-name (git-file-name name version))
5326 (sha256
5327 (base32 "1jpvr7bra8srz8jvnlbmhf8andbaavq5v01qjnp2f61za93rzwba"))))
5328 (build-system cmake-build-system)
5329 (native-inputs
5330 (list bc octave valgrind))
5331 (arguments
5332 `(#:tests? #f ; TODO: Fix tests (paths, graphic toolkit, octave modules).
5333 #:phases
5334 (modify-phases %standard-phases
5335 (add-before 'check 'set-test-environment
5336 (lambda _
5337 (setenv "HOME" "/tmp")
5338 #t)))))
5339 (synopsis "Speech codec")
5340 (description
5341 "Codec 2 is a speech codec designed for communications quality speech
5342 between 700 and 3200 bit/s. The main application is low bandwidth HF/VHF
5343 digital radio.")
5344 (home-page "https://www.rowetel.com/?page_id=452")
5345 (license license:lgpl2.1)))
5346
5347 (define-public mbelib
5348 ;; No release since 2016, use commit directly.
5349 (let ((commit "9a04ed5c78176a9965f3d43f7aa1b1f5330e771f")
5350 (revision "1"))
5351 (package
5352 (name "mbelib")
5353 (version (git-version "1.3.0" revision commit))
5354 (source
5355 (origin
5356 (method git-fetch)
5357 (uri (git-reference
5358 (url "https://github.com/szechyjs/mbelib")
5359 (commit commit)))
5360 (file-name (git-file-name name version))
5361 (sha256
5362 (base32 "0a7xmf87xnjzm5b437j2vnwv39x0ascja1j04c5wj6xs1529gw8h"))))
5363 (build-system cmake-build-system)
5364 (home-page "https://github.com/szechyjs/mbelib")
5365 (synopsis "P25 Phase 1 and ProVoice vocoder")
5366 (description
5367 "The mbelib library provides support for the 7200x4400 bit/s codec used
5368 in P25 Phase 1, the 7100x4400 bit/s codec used in ProVoice and the @emph{Half
5369 Rate} 3600x2250 bit/s vocoder used in various radio systems.")
5370 (license (list license:bsd-3 ; test/ framework
5371 license:isc))))) ; the rest
5372
5373 (define-public ableton-link
5374 (package
5375 (name "ableton-link")
5376 (version "3.0.3")
5377 (source (origin
5378 (method git-fetch)
5379 (uri (git-reference
5380 (url "https://github.com/Ableton/link")
5381 (commit (string-append "Link-" version))))
5382 (file-name (git-file-name name version))
5383 (sha256
5384 (base32
5385 "1wplqj11ww64gmw2kzlxpvfs3v04m2036f7k5ndm34zcv12b91fa"))
5386 (modules '((guix build utils)))
5387 (patches
5388 (search-patches "ableton-link-system-libraries-debian.patch"))
5389 (snippet
5390 '(begin
5391 ;; Tests assume that CMake's "build" directory is a
5392 ;; sub-directory of the source tree, so we fix it.
5393 (substitute* "ci/run-tests.py"
5394 (("root_dir,") "root_dir, os.pardir,"))
5395 ;; Unbundle dependencies.
5396 (delete-file-recursively "third_party")
5397 (delete-file-recursively "modules")))))
5398 (build-system cmake-build-system)
5399 (native-inputs
5400 (list catch-framework
5401 python ;for running tests
5402 portaudio ;for portaudio examples
5403 qtbase-5 ;for Qt examples
5404 qtdeclarative
5405 qttools))
5406 (inputs
5407 (list jack-1 ;for JACK examples
5408 qtquickcontrols)) ;for Qt examples
5409 (propagated-inputs
5410 ;; This is because include/ableton/platforms/asio/AsioWrapper.hpp
5411 ;; contains '#include <asio.hpp>'.
5412 (list asio))
5413 (arguments
5414 `(#:configure-flags
5415 '("-DLINK_BUILD_QT_EXAMPLES=ON"
5416 "-DLINK_BUILD_JACK=ON")
5417 #:phases
5418 (modify-phases %standard-phases
5419 (replace 'check
5420 (lambda* (#:key inputs tests? #:allow-other-keys)
5421 (when tests?
5422 (let* ((python (search-input-file inputs "/bin/python3"))
5423 (run-tests "../source/ci/run-tests.py"))
5424 (invoke python run-tests "--target" "LinkCoreTest")
5425 (invoke python run-tests "--target" "LinkDiscoveryTest")))))
5426 (add-before 'install 'patch-cmake
5427 (lambda* (#:key inputs #:allow-other-keys)
5428 (let* ((source "../source/"))
5429 (substitute* (string-append source
5430 "cmake_include/AsioStandaloneConfig.cmake")
5431 (((string-append "\\$\\{CMAKE_CURRENT_LIST_DIR\\}/\\.\\./"
5432 "modules/asio-standalone/asio/include"))
5433 (string-append (assoc-ref inputs "asio")
5434 "/include")))
5435 (substitute* (string-append source "AbletonLinkConfig.cmake")
5436 (("\\$\\{CMAKE_CURRENT_LIST_DIR\\}/include")
5437 "${CMAKE_CURRENT_LIST_DIR}/../../../include")
5438 (("\\$\\{CMAKE_CURRENT_LIST_DIR\\}/include/ableton/Link\\.hpp")
5439 "${CMAKE_CURRENT_LIST_DIR}/../../../include/ableton/Link.hpp")))))
5440 (replace 'install
5441 (lambda* (#:key outputs #:allow-other-keys)
5442 (let* ((out (assoc-ref outputs "out"))
5443 (bin (string-append out "/bin"))
5444 (lib-cmake (string-append out "/lib/cmake/ableton-link"))
5445 (source "../source"))
5446 (for-each (lambda (test-file)
5447 (delete-file test-file))
5448 '("bin/LinkDiscoveryTest" "bin/LinkCoreTest"))
5449 (copy-recursively "bin" bin)
5450 (copy-recursively (string-append source "/include/ableton")
5451 (string-append out "/include/ableton"))
5452 (install-file (string-append source "/AbletonLinkConfig.cmake")
5453 lib-cmake)
5454 (install-file (string-append source
5455 "/cmake_include/AsioStandaloneConfig.cmake")
5456 (string-append lib-cmake "/cmake_include"))))))))
5457 (home-page "https://github.com/Ableton/link")
5458 (synopsis "Synchronize musical beat, tempo, and phase across multiple applications")
5459 (description
5460 "Ableton Link is a C++ library that synchronizes musical beat, tempo, and phase
5461 across multiple applications running on one or more devices. Applications on devices
5462 connected to a local network discover each other automatically and form a musical
5463 session in which each participant can perform independently: anyone can start or stop
5464 while still staying in time.")
5465 (license license:gpl2+)))
5466
5467 (define-public butt
5468 (package
5469 (name "butt")
5470 (version "0.1.34")
5471 (source (origin
5472 (method url-fetch)
5473 (uri (string-append "mirror://sourceforge/butt/butt/butt-"
5474 version "/butt-" version ".tar.gz"))
5475 (sha256
5476 (base32
5477 "0zd1g1673pv8z437y34fllxska8dzpd7mygpham35pzwpdyc5c1p"))
5478 (modules '((guix build utils)))
5479 (snippet
5480 '(substitute* "src/butt.cpp"
5481 ((".*zica.*") "")))))
5482 (build-system gnu-build-system)
5483 (arguments
5484 (list #:phases
5485 #~(modify-phases %standard-phases
5486 (add-after 'install 'install-documentation
5487 (lambda _
5488 (let ((doc (string-append #$output "/share/doc/" #$name)))
5489 (install-file "README" doc)
5490 (copy-file #$(this-package-native-input "manual")
5491 (string-append doc "/butt-manual.pdf"))))))))
5492 (native-inputs
5493 `(("pkg-config" ,pkg-config)
5494 ("manual"
5495 ,(origin
5496 (method url-fetch)
5497 (uri (string-append "https://danielnoethen.de/butt/butt-"
5498 version "_manual.pdf"))
5499 (sha256
5500 (base32 "0kadqzzbk25n0aqxgbqhg4mq4hsbjq44phzcx5qj1b8847yzz8si"))))))
5501 (inputs
5502 (list dbus
5503 flac
5504 fltk
5505 lame
5506 libfdk
5507 libsamplerate
5508 libvorbis
5509 libx11
5510 libxext
5511 libxfixes
5512 libxft
5513 libxrender
5514 libogg
5515 openssl
5516 opus
5517 portaudio))
5518 (home-page "https://danielnoethen.de/butt/")
5519 (synopsis "Audio streaming tool")
5520 (description "Butt is a tool to stream audio to a ShoutCast or
5521 Icecast server.")
5522 (license license:gpl2+)))
5523
5524 (define-public siggen
5525 (package
5526 (name "siggen")
5527 (version "2.3.10")
5528 (source
5529 (origin
5530 (method git-fetch)
5531 (uri (git-reference
5532 (url "https://github.com/bleskodev/siggen")
5533 (commit "a407611b59d59c7770bbe62ba9b8e9a948cf3210")))
5534 (file-name (git-file-name name version))
5535 (sha256
5536 (base32
5537 "0szhgfd9kddr6qsz0imp0x66jjn6ry236f35vjl82ivc1v2bllcb"))))
5538 (build-system gnu-build-system)
5539 (arguments
5540 `(#:make-flags (list (string-append "INSDIR=" %output "/bin")
5541 (string-append "MANDIR=" %output "/share/man"))
5542 #:tests? #f ; no tests
5543 #:phases
5544 (modify-phases %standard-phases
5545 ;; Patch misc.c to prevent a segfault.
5546 (add-after 'unpack 'patch-segfault
5547 (lambda _
5548 (substitute* "misc.c"
5549 (("#include <stdio.h>\n" all)
5550 (string-append all "#include <string.h>\n")))))
5551 (delete 'configure)
5552 (replace 'install
5553 (lambda* (#:key make-flags outputs #:allow-other-keys)
5554 (let ((out (assoc-ref outputs "out")))
5555 (for-each (lambda (dir)
5556 (mkdir-p (string-append out dir)))
5557 (list "/bin" "/share/man/man1" "/share/man/man5"))
5558 (apply invoke "make" "sysinstall" make-flags)))))))
5559 (inputs
5560 (list ncurses))
5561 (native-inputs
5562 `(("groff" ,groff-minimal) ; for nroff
5563 ("util-linux" ,util-linux))) ; for col
5564 (home-page "https://github.com/bleskodev/siggen")
5565 (synopsis "Signal generation tools")
5566 (description "siggen is a set of tools for imitating a laboratory signal
5567 generator, generating audio signals out of Linux's /dev/dsp audio
5568 device. There is support for mono and/or stereo and 8 or 16 bit samples.")
5569 (license license:gpl2)))
5570
5571 (define-public python-pysox
5572 ;; PyPi does not include the data folder containing audio files for testing.
5573 (let ((commit "3d0053381c24ae3490f759d4de87194b85789d36")
5574 (revision "0"))
5575 (package
5576 (name "python-pysox")
5577 (version (git-version "1.4.2" revision commit))
5578 (source
5579 (origin
5580 (method git-fetch)
5581 (uri (git-reference
5582 (url "https://github.com/rabitt/pysox")
5583 (commit commit)))
5584 (file-name (git-file-name name version))
5585 (sha256
5586 (base32
5587 "0i62jx92vfpcr2z7lp69yzqdi9idfs3pifl3rzm2akc2c4cr1mac"))))
5588 (build-system python-build-system)
5589 (arguments
5590 `(#:phases
5591 (modify-phases %standard-phases
5592 (add-after 'unpack 'patch-sox
5593 (lambda* (#:key inputs #:allow-other-keys)
5594 (let* ((sox-store-path (assoc-ref inputs "sox"))
5595 (sox-bin (string-append sox-store-path "/bin/sox")))
5596 (substitute* "sox/__init__.py"
5597 (("sox -h")
5598 (string-append sox-bin " -h")))
5599 (substitute* "sox/core.py"
5600 (("\\['sox")
5601 (string-append "['" sox-bin))))))
5602 (replace 'check
5603 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
5604 (when tests?
5605 (add-installed-pythonpath inputs outputs)
5606 (invoke "pytest")))))))
5607 (propagated-inputs
5608 (list python-numpy python-typing-extensions))
5609 (native-inputs
5610 (list sox python-pytest python-pytest-cov python-soundfile))
5611 (home-page "https://github.com/rabitt/pysox")
5612 (synopsis "Python wrapper around SoX")
5613 (description "@code{python-pysox} is a wrapper around the @command{sox}
5614 command line tool. The API offers @code{Transformer} and @code{Combiner}
5615 classes that allow the user to incrementally build up effects and audio
5616 manipulations. @code{python-pysox} also provides methods for querying audio
5617 information such as sample rate, determining whether an audio file is silent,
5618 and much more.")
5619 (license license:bsd-3))))
5620
5621 (define-public python-resampy
5622 (package
5623 (name "python-resampy")
5624 (version "0.2.2")
5625 (source
5626 (origin
5627 (method git-fetch)
5628 (uri
5629 (git-reference
5630 ;; PyPi does not include tests.
5631 (url "https://github.com/bmcfee/resampy")
5632 (commit version)))
5633 (file-name (git-file-name name version))
5634 (sha256
5635 (base32 "0qmkxl5sbgh0j73n667vyi7ywzh09iaync91yp1j5rrcmwsn0qfs"))))
5636 (build-system python-build-system)
5637 (arguments
5638 '(#:phases
5639 (modify-phases %standard-phases
5640 (replace 'check
5641 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
5642 (when tests?
5643 (add-installed-pythonpath inputs outputs)
5644 (invoke "pytest" "tests")))))))
5645 (propagated-inputs
5646 (list python-numba python-numpy python-scipy python-six))
5647 (native-inputs
5648 (list python-pytest python-pytest-cov))
5649 (home-page "https://github.com/bmcfee/resampy")
5650 (synopsis "Efficient signal resampling")
5651 (description
5652 "@code{python-resampy} implements the band-limited sinc interpolation
5653 method for sampling rate conversion as described by Julius O. Smith at the
5654 @url{https://ccrma.stanford.edu/~jos/resample/, Digital Audio Resampling
5655 Home Page}.")
5656 (license license:isc)))
5657
5658 (define-public python-librosa
5659 (package
5660 (name "python-librosa")
5661 (version "0.8.1")
5662 (source
5663 (origin
5664 (method url-fetch)
5665 (uri (pypi-uri "librosa" version))
5666 (sha256
5667 (base32 "1cx6rhcvak0hy6bx84jwzpxmwgi92m82w77279akwjmfd3khagf5"))))
5668 (build-system python-build-system)
5669 (arguments
5670 ;; Tests require internet connection to download MATLAB scripts for
5671 ;; generating the testing data.
5672 `(#:tests? #f))
5673 (propagated-inputs
5674 (list python-audioread
5675 python-decorator
5676 python-joblib
5677 python-numba
5678 python-numpy
5679 python-packaging
5680 python-pooch
5681 python-resampy
5682 python-scikit-learn
5683 python-scipy
5684 python-soundfile))
5685 (home-page "https://librosa.org")
5686 (synopsis "Python module for audio and music processing")
5687 (description
5688 "@code{librosa} is a python package for music and audio analysis. It
5689 provides the building blocks necessary to create music information retrieval
5690 systems.")
5691 (license license:isc)))
5692
5693 (define-public mda-lv2
5694 (package
5695 (name "mda-lv2")
5696 (version "1.2.6")
5697 (source
5698 (origin
5699 (method url-fetch)
5700 (uri (string-append "http://download.drobilla.net/mda-lv2-"
5701 version ".tar.bz2"))
5702 (sha256
5703 (base32 "1nspk2j11l65m5r9z5isw8j749vh9a89wgx8mkrrq15f4iq12rnd"))))
5704 (build-system waf-build-system)
5705 (arguments
5706 `(#:tests? #f ; There are no tests.
5707 #:configure-flags
5708 (list (string-append "--prefix="
5709 (assoc-ref %outputs "out")))))
5710 (inputs
5711 (list lv2))
5712 (native-inputs
5713 (list pkg-config))
5714 (native-search-paths
5715 (list (search-path-specification
5716 (variable "LV2_PATH")
5717 (files '("lib/lv2")))))
5718 (home-page "https://drobilla.net/software/mda-lv2")
5719 (synopsis "Audio plug-in pack for LV2")
5720 (description
5721 "MDA-LV2 is an LV2 port of the MDA plugins. It includes effects and a few
5722 instrument plugins.")
5723 (license license:gpl3+)))
5724
5725 (define-public libodiosacd
5726 (package
5727 (name "libodiosacd")
5728 (version "21.8.30")
5729 (source (origin
5730 (method git-fetch)
5731 (uri (git-reference
5732 (url "https://github.com/tari01/libodiosacd")
5733 (commit version)))
5734 (file-name (git-file-name name version))
5735 (sha256
5736 (base32
5737 "0iamf7wksbql0qfigdv5ahaax53ms2yligdav8dw6x0ay88x4lhi"))))
5738 (build-system gnu-build-system)
5739 (arguments
5740 `(#:tests? #f ; no check target
5741 #:phases
5742 (modify-phases %standard-phases
5743 (add-after 'unpack 'patch-makefile
5744 (lambda _
5745 (substitute* "Makefile"
5746 (("\\$\\(DESTDIR\\)/usr")
5747 "\\$(DESTDIR)"))))
5748 (delete 'configure)) ; no configure script
5749 #:make-flags
5750 (list (string-append "DESTDIR=" %output))))
5751 (synopsis "Library for decoding Super Audio CDs (SACD)")
5752 (description
5753 "The Odio SACD shared library is a decoding engine which takes a Super
5754 Audio CD source and extracts a 24-bit high resolution WAV file. It handles
5755 both DST and DSD streams.")
5756 (home-page "https://tari.in/www/software/libodiosacd/")
5757 (license license:gpl3+)))
5758
5759 (define-public odio-sacd
5760 (package
5761 (name "odio-sacd")
5762 (version "21.1.9")
5763 (source (origin
5764 (method git-fetch)
5765 (uri (git-reference
5766 (url "https://github.com/tari01/odio-sacd")
5767 (commit version)))
5768 (file-name (git-file-name name version))
5769 (sha256
5770 (base32
5771 "0314srqk0r4qv292qiaply619l2fw04nkdwvqhj3q1dqzv41g4qk"))))
5772 (inputs (list libodiosacd))
5773 ;; Build system and arguments for libodiosacd are identical.
5774 (build-system (package-build-system libodiosacd))
5775 (arguments (package-arguments libodiosacd))
5776 (synopsis "Rip Super Audio CDs (SACD)")
5777 (description
5778 "Odio SACD is a command-line application which takes a Super Audio CD
5779 source and extracts a 24-bit high resolution WAV file. It handles both DST
5780 and DSD streams.")
5781 (home-page "https://tari.in/www/software/odio-sacd/")
5782 (license license:gpl3+)))
5783
5784 (define-public qpwgraph
5785 (package
5786 (name "qpwgraph")
5787 (version "0.3.2")
5788 (source (origin
5789 (method git-fetch)
5790 (uri (git-reference
5791 (url "https://gitlab.freedesktop.org/rncbc/qpwgraph")
5792 (commit (string-append "v" version))))
5793 (file-name (git-file-name name version))
5794 (sha256
5795 (base32
5796 "1zja4klvzbfwi14ihiahl8zm869h0c1yrpfkzvixxjcps372hh07"))))
5797 (build-system cmake-build-system)
5798 (arguments
5799 `(#:tests? #f)) ;; no tests
5800 (inputs (list alsa-lib
5801 pipewire-0.3
5802 ;; qtsvg is still on version 5; use qtbase-5 to match
5803 qtbase-5
5804 qtsvg))
5805 (native-inputs (list pkg-config))
5806 (synopsis "PipeWire graph manager")
5807 (description
5808 "qpwgraph is a graph manager dedicated to PipeWire, using the Qt C++
5809 framework. It provides a visual interface to audio and video connections
5810 managed by PipeWire.")
5811 (home-page "https://gitlab.freedesktop.org/rncbc/qpwgraph")
5812 (license license:gpl2)))