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