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