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