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