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