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