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