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