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