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