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