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