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