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