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