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