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