gnu: bootstrap: Memoize 'bootstrap-origin'.
[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 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
26 ;;;
27 ;;; This file is part of GNU Guix.
28 ;;;
29 ;;; GNU Guix is free software; you can redistribute it and/or modify it
30 ;;; under the terms of the GNU General Public License as published by
31 ;;; the Free Software Foundation; either version 3 of the License, or (at
32 ;;; your option) any later version.
33 ;;;
34 ;;; GNU Guix is distributed in the hope that it will be useful, but
35 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
36 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
37 ;;; GNU General Public License for more details.
38 ;;;
39 ;;; You should have received a copy of the GNU General Public License
40 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
41
42 (define-module (gnu packages audio)
43 #:use-module (guix packages)
44 #:use-module (guix download)
45 #:use-module (guix git-download)
46 #:use-module (guix utils)
47 #:use-module ((guix licenses) #:prefix license:)
48 #:use-module (guix build-system gnu)
49 #:use-module (guix build-system waf)
50 #:use-module (guix build-system trivial)
51 #:use-module (guix build-system cmake)
52 #:use-module (guix build-system python)
53 #:use-module (guix build-system glib-or-gtk)
54 #:use-module (gnu packages)
55 #:use-module (gnu packages algebra)
56 #:use-module (gnu packages autotools)
57 #:use-module (gnu packages avahi)
58 #:use-module (gnu packages boost)
59 #:use-module (gnu packages backup)
60 #:use-module (gnu packages base)
61 #:use-module (gnu packages bison)
62 #:use-module (gnu packages check)
63 #:use-module (gnu packages compression)
64 #:use-module (gnu packages curl)
65 #:use-module (gnu packages dbm)
66 #:use-module (gnu packages emacs)
67 #:use-module (gnu packages file)
68 #:use-module (gnu packages flex)
69 #:use-module (gnu packages fltk)
70 #:use-module (gnu packages fontutils)
71 #:use-module (gnu packages gcc)
72 #:use-module (gnu packages gettext)
73 #:use-module (gnu packages glib)
74 #:use-module (gnu packages gtk)
75 #:use-module (gnu packages gnome)
76 #:use-module (gnu packages gnunet) ; libmicrohttpd
77 #:use-module (gnu packages gperf)
78 #:use-module (gnu packages icu4c)
79 #:use-module (gnu packages image)
80 #:use-module (gnu packages ncurses)
81 #:use-module (gnu packages onc-rpc)
82 #:use-module (gnu packages qt)
83 #:use-module (gnu packages libbsd)
84 #:use-module (gnu packages linux)
85 #:use-module (gnu packages libusb)
86 #:use-module (gnu packages llvm)
87 #:use-module (gnu packages mp3) ;taglib
88 #:use-module (gnu packages perl)
89 #:use-module (gnu packages pkg-config)
90 #:use-module (gnu packages pulseaudio) ;libsndfile, libsamplerate
91 #:use-module (gnu packages python)
92 #:use-module (gnu packages python-xyz)
93 #:use-module (gnu packages rdf)
94 #:use-module (gnu packages readline)
95 #:use-module (gnu packages sdl)
96 #:use-module (gnu packages serialization)
97 #:use-module (gnu packages telephony)
98 #:use-module (gnu packages tls)
99 #:use-module (gnu packages video)
100 #:use-module (gnu packages vim) ;xxd
101 #:use-module (gnu packages webkit)
102 #:use-module (gnu packages wxwidgets)
103 #:use-module (gnu packages xiph)
104 #:use-module (gnu packages xml)
105 #:use-module (gnu packages xorg)
106 #:use-module (gnu packages maths)
107 #:use-module (gnu packages multiprecision)
108 #:use-module (gnu packages music)
109 #:use-module (srfi srfi-1)
110 #:use-module (srfi srfi-26))
111
112 (define-public alsa-modular-synth
113 (package
114 (name "alsa-modular-synth")
115 (version "2.1.2")
116 (source (origin
117 (method url-fetch)
118 (uri (string-append "mirror://sourceforge/alsamodular/alsamodular"
119 "/" version "/ams-" version ".tar.bz2"))
120 (sha256
121 (base32
122 "1azbrhpfk4nnybr7kgmc7w6al6xnzppg853vas8gmkh185kk11l0"))))
123 (build-system gnu-build-system)
124 (arguments
125 `(#:configure-flags
126 '("--enable-qt5"
127 "CXXFLAGS=-std=gnu++11")
128 #:phases
129 (modify-phases %standard-phases
130 ;; Insert an extra space between linker flags.
131 (add-before 'configure 'add-missing-space
132 (lambda _
133 (substitute* "configure"
134 (("LIBS\\+=\\$LIBSsave") "LIBS+=\" $LIBSsave\"")
135 (("CFLAGS\\+=\\$CFLAGSsave") "CFLAGS+=\" $CFLAGSsave\""))
136 #t)))))
137 (inputs
138 `(("alsa-lib" ,alsa-lib)
139 ;; We cannot use zita-alsa-pcmi (the successor of clalsadrv) due to
140 ;; license incompatibility.
141 ("clalsadrv" ,clalsadrv)
142 ("fftw" ,fftw)
143 ("jack" ,jack-1)
144 ("ladspa" ,ladspa)
145 ("liblo" ,liblo)
146 ("qtbase" ,qtbase)
147 ("qttools" ,qttools)))
148 (native-inputs
149 `(("pkg-config" ,pkg-config)
150 ("gcc" ,gcc-5)))
151 (home-page "http://alsamodular.sourceforge.net/")
152 (synopsis "Realtime modular synthesizer and effect processor")
153 (description
154 "AlsaModularSynth is a digital implementation of a classical analog
155 modular synthesizer system. It uses virtual control voltages to control the
156 parameters of the modules. The control voltages which control the frequency
157 e.g. of the VCO (Voltage Controlled Oscillator) and VCF (Voltage Controlled
158 Filter) modules follow the convention of 1V / Octave.")
159 (license license:gpl2)))
160
161 (define-public aubio
162 (package
163 (name "aubio")
164 (version "0.4.9")
165 (source (origin
166 (method url-fetch)
167 (uri (string-append
168 "https://aubio.org/pub/aubio-" version ".tar.bz2"))
169 (sha256
170 (base32
171 "1npks71ljc48w6858l9bq30kaf5nph8z0v61jkfb70xb9np850nl"))))
172 (build-system waf-build-system)
173 (arguments
174 `(#:tests? #f ; no check target
175 #:configure-flags
176 (list
177 (string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") "/lib")
178 "--enable-fftw3f"
179 "--enable-jack"
180 "--enable-sndfile"
181 "--enable-samplerate"
182 "--enable-avcodec")
183 #:python ,python-2))
184 (inputs
185 `(("jack" ,jack-1)
186 ("libsndfile" ,libsndfile)
187 ("libsamplerate" ,libsamplerate)
188 ("fftwf" ,fftwf)
189 ("ffmpeg" ,ffmpeg))) ; for libavcodec
190 (native-inputs
191 `(("pkg-config" ,pkg-config)))
192 (home-page "https://aubio.org/")
193 (synopsis "Library for audio labelling")
194 (description
195 "aubio is a tool designed for the extraction of annotations from audio
196 signals. Its features include segmenting a sound file before each of its
197 attacks, performing pitch detection, tapping the beat and producing MIDI
198 streams from live audio.")
199 (license license:gpl3+)))
200
201 (define (ardour-rpath-phase major-version)
202 `(lambda* (#:key outputs #:allow-other-keys)
203 (let ((libdir (string-append (assoc-ref outputs "out")
204 "/lib/ardour" ,major-version)))
205 (substitute* "wscript"
206 (("linker_flags = \\[\\]")
207 (string-append "linker_flags = [\""
208 "-Wl,-rpath="
209 libdir ":"
210 libdir "/backends" ":"
211 libdir "/engines" ":"
212 libdir "/panners" ":"
213 libdir "/surfaces" ":"
214 libdir "/vamp" "\"]"))))
215 #t))
216
217 (define-public ardour
218 (package
219 (name "ardour")
220 (version "5.12")
221 (source (origin
222 (method git-fetch)
223 (uri (git-reference
224 (url "https://git.ardour.org/ardour/ardour.git")
225 (commit version)))
226 (snippet
227 ;; Ardour expects this file to exist at build time. The revision
228 ;; is the output of
229 ;; git describe HEAD | sed 's/^[A-Za-z]*+//'
230 `(call-with-output-file
231 "libs/ardour/revision.cc"
232 (lambda (port)
233 (format port ,(string-append "#include \"ardour/revision.h\"
234 namespace ARDOUR { const char* revision = \"" version "\" ; }"))
235 #t)))
236 (sha256
237 (base32
238 "0mla5lm51ryikc2rrk53max2m7a5ds6i1ai921l2h95wrha45nkr"))
239 (file-name (string-append name "-" version))))
240 (build-system waf-build-system)
241 (arguments
242 `(#:configure-flags '("--cxx11" ; required by gtkmm
243 "--no-phone-home" ; don't contact ardour.org
244 "--freedesktop" ; build .desktop file
245 "--test") ; build unit tests
246 #:phases
247 (modify-phases %standard-phases
248 (add-after 'unpack 'set-rpath-in-LDFLAGS
249 ,(ardour-rpath-phase (version-major version)))
250 (add-after 'install 'install-freedesktop-files
251 (lambda* (#:key outputs #:allow-other-keys)
252 (let* ((out (assoc-ref outputs "out"))
253 (share (string-append out "/share"))
254 (ver ,(version-major version)))
255 (for-each
256 (lambda (size)
257 (let ((dir (string-append share "/icons/hicolor/"
258 size "x" size "/apps")))
259 (mkdir-p dir)
260 (copy-file
261 (string-append "gtk2_ardour/resources/Ardour-icon_"
262 size "px.png")
263 (string-append dir "/ardour" ver ".png"))))
264 '("16" "22" "32" "48" "256"))
265 (install-file (string-append "build/gtk2_ardour/ardour"
266 ver ".desktop")
267 (string-append share "/applications/"))
268 (install-file (string-append "build/gtk2_ardour/ardour"
269 ver ".appdata.xml")
270 (string-append share "/appdata/")))
271 #t)))
272 #:test-target "test"
273 #:python ,python-2))
274 (inputs
275 `(("alsa-lib" ,alsa-lib)
276 ("atkmm" ,atkmm)
277 ("aubio" ,aubio)
278 ("boost" ,boost)
279 ("cairomm" ,cairomm)
280 ("curl" ,curl)
281 ("eudev" ,eudev)
282 ("fftw" ,fftw)
283 ("fftwf" ,fftwf)
284 ("flac" ,flac)
285 ("glibmm" ,glibmm)
286 ("gtkmm" ,gtkmm-2)
287 ("jack" ,jack-1)
288 ("libarchive" ,libarchive)
289 ("libart-lgpl" ,libart-lgpl)
290 ("libgnomecanvasmm" ,libgnomecanvasmm)
291 ("liblo" ,liblo)
292 ("libogg" ,libogg)
293 ("libsamplerate" ,libsamplerate)
294 ("libsndfile" ,libsndfile)
295 ("libusb" ,libusb)
296 ("libvorbis" ,libvorbis)
297 ("libxml2" ,libxml2)
298 ("lilv" ,lilv)
299 ("lrdf" ,lrdf)
300 ("lv2" ,lv2)
301 ("pangomm" ,pangomm)
302 ("python-rdflib" ,python-rdflib)
303 ("readline" ,readline)
304 ("redland" ,redland)
305 ("rubberband" ,rubberband)
306 ("serd" ,serd)
307 ("sord" ,sord)
308 ("sratom" ,sratom)
309 ("suil" ,suil)
310 ("taglib" ,taglib)
311 ("vamp" ,vamp)))
312 (native-inputs
313 `(("cppunit" ,cppunit)
314 ("gettext" ,gettext-minimal)
315 ("itstool" ,itstool)
316 ("perl" ,perl)
317 ("pkg-config" ,pkg-config)))
318 (home-page "http://ardour.org")
319 (synopsis "Digital audio workstation")
320 (description
321 "Ardour is a multi-channel digital audio workstation, allowing users to
322 record, edit, mix and master audio and MIDI projects. It is targeted at audio
323 engineers, musicians, soundtrack editors and composers.")
324 (license license:gpl2+)))
325
326 (define-public audacity
327 (package
328 (name "audacity")
329 (version "2.3.2")
330 (source
331 (origin
332 (method git-fetch)
333 (uri (git-reference
334 (url "https://github.com/audacity/audacity.git")
335 (commit (string-append "Audacity-" version))))
336 (file-name (git-file-name name version))
337 (sha256
338 (base32
339 "08w96124vv8k4myd4vifq73ningq6404x889wvg2sk016kc4dfv1"))
340 (patches (search-patches "audacity-build-with-system-portaudio.patch"))
341 (modules '((guix build utils)))
342 (snippet
343 ;; Remove bundled libraries.
344 '(begin
345 (for-each
346 (lambda (dir)
347 (delete-file-recursively (string-append "lib-src/" dir)))
348 '("expat" "ffmpeg" "libflac" "libid3tag" "libmad" "libogg"
349 "libsndfile" "libsoxr" "libvamp" "libvorbis" "lv2"
350 "portaudio-v19" "portmidi" "soundtouch" "twolame"
351 ;; FIXME: these libraries have not been packaged yet:
352 ;; "libnyquist"
353 ;; "libscorealign"
354 ;; "libwidgetextra"
355 ;; "portburn"
356 ;; "portsmf"
357 ;; "portmixer"
358
359 ;; FIXME: we have this library, but it differs in that the Slide
360 ;; class does not have a member "getInverseStretchedTime".
361 ;; "sbsms"
362 ))
363 #t))))
364 (build-system glib-or-gtk-build-system)
365 (inputs
366 `(("wxwidgets" ,wxwidgets)
367 ("gtk+" ,gtk+)
368 ("alsa-lib" ,alsa-lib)
369 ("jack" ,jack-1)
370 ("expat" ,expat)
371 ("ffmpeg" ,ffmpeg)
372 ("lame" ,lame)
373 ("flac" ,flac)
374 ("libid3tag" ,libid3tag)
375 ("libmad" ,libmad)
376 ;;("libsbsms" ,libsbsms) ;bundled version is modified
377 ("libsndfile" ,libsndfile)
378 ("soundtouch" ,soundtouch)
379 ("soxr" ,soxr) ;replaces libsamplerate
380 ("twolame" ,twolame)
381 ("vamp" ,vamp)
382 ("libvorbis" ,libvorbis)
383 ("lv2" ,lv2)
384 ("lilv" ,lilv) ;for lv2
385 ("suil" ,suil) ;for lv2
386 ("portaudio" ,portaudio)
387 ("portmidi" ,portmidi)))
388 (native-inputs
389 `(("autoconf" ,autoconf)
390 ("automake" ,automake)
391 ("gettext" ,gettext-minimal) ;for msgfmt
392 ("libtool" ,libtool)
393 ("pkg-config" ,pkg-config)
394 ("python" ,python-2)
395 ("which" ,which)))
396 (arguments
397 `(#:configure-flags
398 (let ((libid3tag (assoc-ref %build-inputs "libid3tag"))
399 (libmad (assoc-ref %build-inputs "libmad"))
400 (portmidi (assoc-ref %build-inputs "portmidi")))
401 (list
402 ;; Loading FFmpeg dynamically is problematic.
403 "--disable-dynamic-loading"
404 ;; SSE instructions are available on Intel systems only.
405 ,@(if (any (cute string-prefix? <> (or (%current-target-system)
406 (%current-system)))
407 '("x64_64" "i686"))
408 '()
409 '("--enable-sse=no"))
410 ;; portmidi, libid3tag and libmad provide no .pc files, so
411 ;; pkg-config fails to find them. Force their inclusion.
412 (string-append "ID3TAG_CFLAGS=-I" libid3tag "/include")
413 (string-append "ID3TAG_LIBS=-L" libid3tag "/lib -lid3tag -lz")
414 (string-append "LIBMAD_CFLAGS=-I" libmad "/include")
415 (string-append "LIBMAD_LIBS=-L" libmad "/lib -lmad")
416 (string-append "PORTMIDI_CFLAGS=-I" portmidi "/include")
417 (string-append "PORTMIDI_LIBS=-L" portmidi "/lib -lportmidi")
418 "EXPAT_USE_SYSTEM=yes"
419 "FFMPEG_USE_SYSTEM=yes"
420 "LAME_USE_SYSTEM=yes"
421 "LIBFLAC_USE_SYSTEM=yes"
422 "LIBID3TAG_USE_SYSTEM=yes"
423 "LIBMAD_USE_SYSTEM=yes"
424 "USE_LOCAL_LIBNYQUIST=" ;not packaged yet
425 ;;"LIBSBSMS_USE_SYSTEM=yes" ;bundled version is patched
426 "LIBSNDFILE_USE_SYSTEM=yes"
427 "LIBSOUNDTOUCH_USE_SYSTEM=yes"
428 "LIBSOXR_USE_SYSTEM=yes"
429 "LIBTWOLAME_USE_SYSTEM=yes"
430 "LIBVAMP_USE_SYSTEM=yes"
431 "LIBVORBIS_USE_SYSTEM=yes"
432 "LV2_USE_SYSTEM=yes"
433 "PORTAUDIO_USE_SYSTEM=yes"))
434 #:phases
435 (modify-phases %standard-phases
436 (add-after 'unpack 'fix-sbsms-check
437 (lambda _
438 ;; This check is wrong: there is no 2.2.0 release; not even the
439 ;; bundled sources match this release string.
440 (substitute* '("m4/audacity_checklib_libsbsms.m4"
441 "configure")
442 (("sbsms >= 2.2.0") "sbsms >= 2.0.0"))
443 #t))
444 (add-after 'unpack 'use-upstream-headers
445 (lambda* (#:key inputs #:allow-other-keys)
446 (substitute* '("src/NoteTrack.cpp"
447 "src/AudioIO.cpp"
448 "src/AudioIO.h")
449 (("../lib-src/portmidi/pm_common/portmidi.h") "portmidi.h")
450 (("../lib-src/portmidi/porttime/porttime.h") "porttime.h"))
451 (substitute* "src/prefs/MidiIOPrefs.cpp"
452 (("../../lib-src/portmidi/pm_common/portmidi.h") "portmidi.h"))
453 #t)))
454 ;; The test suite is not "well exercised" according to the developers,
455 ;; and fails with various errors. See
456 ;; <http://sourceforge.net/p/audacity/mailman/message/33524292/>.
457 #:tests? #f))
458 (home-page "https://www.audacityteam.org/")
459 (synopsis "Software for recording and editing sounds")
460 (description
461 "Audacity is a multi-track audio editor designed for recording, playing
462 and editing digital audio. It features digital effects and spectrum analysis
463 tools.")
464 (license license:gpl2+)))
465
466 (define-public autotalent
467 (package
468 (name "autotalent")
469 (version "0.2")
470 (source (origin
471 (method url-fetch)
472 (uri (string-append "http://tombaran.info/autotalent-"
473 version ".tar.gz"))
474 (sha256
475 (base32
476 "1n04qm66f14195ly6gsy3ra7v2j7zad5n19d8dwfmh0qs6h9hphh"))))
477 (build-system gnu-build-system)
478 (arguments
479 `(#:tests? #f ; no check target
480 #:phases
481 (modify-phases %standard-phases
482 ;; no configure script
483 (delete 'configure)
484 (add-before 'install 'prepare-target-directory
485 (lambda* (#:key outputs #:allow-other-keys)
486 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
487 #t))
488 (add-after 'unpack 'override-target-directory
489 (lambda* (#:key outputs #:allow-other-keys)
490 (substitute* "Makefile"
491 (("/usr/lib64/ladspa")
492 (string-append (assoc-ref outputs "out") "/lib/ladspa")))
493 #t)))))
494 (inputs
495 `(("ladspa" ,ladspa)))
496 (home-page "http://tombaran.info/autotalent.html")
497 (synopsis "Pitch-correction LADSPA audio plugin")
498 (description
499 "Autotalent is a LADSPA plugin for real-time pitch-correction. Among its
500 controls are allowable notes, strength of correction, LFO for vibrato and
501 formant warp.")
502 ;; All code except the FFT routine is licensed under GPLv2+.
503 ;; The FFT routine is under BSD-3.
504 (license license:gpl2+)))
505
506 (define-public azr3
507 (package
508 (name "azr3")
509 (version "1.2.3")
510 (source (origin
511 (method url-fetch)
512 (uri (string-append "mirror://savannah/ll-plugins/azr3-jack-"
513 version
514 ".tar.bz2"))
515 (sha256
516 (base32
517 "18mdw6nc0vgj6k9rsy0x8w64wvzld0frqshrxxbxfj9qi9843vlc"))
518 (patches (search-patches "azr3.patch"))))
519 (build-system gnu-build-system)
520 (arguments
521 `(#:tests? #f ; no check target
522 #:make-flags
523 (list "LV2PEG=ttl2c"
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 / rectangle 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.8")
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 "1s32c0jxjica2agy0mp36vgvpgj2vl5i5zvacd6igmbam0x4gs7c"))))
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 #:phases
1331 (modify-phases %standard-phases
1332 (add-after 'unpack 'fix-boost-includes
1333 (lambda _
1334 (substitute* "src/headers/gx_internal_plugins.h"
1335 (("namespace gx_jack" m)
1336 (string-append "#include <boost/noncopyable.hpp>\n" m)))
1337 (substitute* '("src/headers/gx_system.h"
1338 "src/headers/gx_parameter.h"
1339 "src/headers/gx_json.h")
1340 (("namespace gx_system" m)
1341 (string-append "#include <boost/noncopyable.hpp>\n" m)))
1342 #t)))))
1343 (inputs
1344 `(("libsndfile" ,libsndfile)
1345 ("boost" ,boost)
1346 ("curl" ,curl)
1347 ("avahi" ,avahi)
1348 ("eigen" ,eigen)
1349 ("lv2" ,lv2)
1350 ("lilv" ,lilv)
1351 ("ladspa" ,ladspa)
1352 ("jack" ,jack-1)
1353 ("gtkmm" ,gtkmm-2)
1354 ("gtk+" ,gtk+-2)
1355 ("fftwf" ,fftwf)
1356 ("lrdf" ,lrdf)
1357 ("zita-resampler" ,zita-resampler)
1358 ("zita-convolver" ,zita-convolver)))
1359 (native-inputs
1360 `(("gperf" ,gperf)
1361 ("faust" ,faust)
1362 ("intltool" ,intltool)
1363 ("gettext" ,gettext-minimal)
1364 ("pkg-config" ,pkg-config)))
1365 (native-search-paths
1366 (list (search-path-specification
1367 (variable "LV2_PATH")
1368 (files '("lib/lv2")))))
1369 (home-page "http://guitarix.org/")
1370 (synopsis "Virtual guitar amplifier")
1371 (description "Guitarix is a virtual guitar amplifier running JACK.
1372 Guitarix takes the signal from your guitar as a mono-signal from your sound
1373 card. The input is processed by a main amp and a rack-section. Both can be
1374 routed separately and deliver a processed stereo-signal via JACK. You may
1375 fill the rack with effects from more than 25 built-in modules including stuff
1376 from a simple noise gate to modulation effects like flanger, phaser or
1377 auto-wah.")
1378 (license license:gpl2+)))
1379
1380 (define-public guitarix-lv2
1381 (package (inherit guitarix)
1382 (name "guitarix-lv2")
1383 (arguments
1384 (substitute-keyword-arguments (package-arguments guitarix)
1385 ((#:configure-flags flags)
1386 `(cons "--no-standalone" ,flags))))))
1387
1388 (define-public rakarrack
1389 (package
1390 (name "rakarrack")
1391 (version "0.6.1")
1392 (source (origin
1393 (method url-fetch)
1394 (uri (string-append "mirror://sourceforge/rakarrack/rakarrack/"
1395 "rakarrack-" version "/rakarrack-"
1396 version ".tar.bz2"))
1397 (sha256
1398 (base32
1399 "1rpf63pdn54c4yg13k7cb1w1c7zsvl97c4qxcpz41c8l91xd55kn"))
1400 (modules '((guix build utils)))
1401 (snippet
1402 '(begin
1403 (substitute* '("src/process.C"
1404 "src/global.h")
1405 (("#include <Fl/") "#include <FL/"))
1406 #t))))
1407 (build-system gnu-build-system)
1408 (inputs
1409 `(("alsa-utils" ,alsa-utils)
1410 ("fltk" ,fltk)
1411 ("libx11" ,libx11)
1412 ("libxext" ,libxext)
1413 ("libxfixes" ,libxfixes)
1414 ("libxft" ,libxft)
1415 ("libxrender" ,libxrender)
1416 ("libxpm" ,libxpm)
1417 ("fontconfig" ,fontconfig)
1418 ("freetype" ,freetype)
1419 ("jack" ,jack-1)
1420 ("alsa-lib" ,alsa-lib)
1421 ("libsndfile" ,libsndfile)
1422 ("libsamplerate" ,libsamplerate)
1423 ("zlib" ,zlib)))
1424 (home-page "http://rakarrack.sourceforge.net/")
1425 (synopsis "Audio effects processor")
1426 (description
1427 "Rakarrack is a richly featured multi-effects processor emulating a
1428 guitar effects pedalboard. Effects include compressor, expander, noise gate,
1429 equalizers, exciter, flangers, chorus, various delay and reverb effects,
1430 distortion modules and many more. Most of the effects engine is built from
1431 modules found in the excellent software synthesizer ZynAddSubFX. Presets and
1432 user interface are optimized for guitar, but Rakarrack processes signals in
1433 stereo while it does not apply internal band-limiting filtering, and thus is
1434 well suited to all musical instruments and vocals.")
1435 ;; The code is explicitly licensed under the GPL version 2 only.
1436 (license license:gpl2)))
1437
1438 (define-public ir
1439 (package
1440 (name "ir")
1441 (version "1.3.2")
1442 (source (origin
1443 (method url-fetch)
1444 ;; The original home-page is gone. Download the tarball from an
1445 ;; archive mirror instead.
1446 (uri (list (string-append
1447 "https://web.archive.org/web/20150803095032/"
1448 "http://factorial.hu/system/files/ir.lv2-"
1449 version ".tar.gz")
1450 (string-append
1451 "https://mirrors.kernel.org/gentoo/distfiles/ir.lv2-"
1452 version ".tar.gz")))
1453 (sha256
1454 (base32
1455 "1jh2z01l9m4ar7yz0n911df07dygc7n4cl59p7qdjbh0nvkm747g"))))
1456 (build-system gnu-build-system)
1457 (arguments
1458 `(#:tests? #f ; no tests
1459 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
1460 #:phases (modify-phases %standard-phases
1461 (delete 'configure)))) ; no configure script
1462 (inputs
1463 `(("libsndfile" ,libsndfile)
1464 ("libsamplerate" ,libsamplerate)
1465 ("lv2" ,lv2)
1466 ("glib" ,glib)
1467 ("gtk+" ,gtk+-2)
1468 ("zita-convolver" ,zita-convolver)))
1469 (native-inputs
1470 `(("pkg-config" ,pkg-config)))
1471 (native-search-paths
1472 (list (search-path-specification
1473 (variable "LV2_PATH")
1474 (files '("lib/lv2")))))
1475 ;; Link to an archived copy of the home-page since the original is gone.
1476 (home-page (string-append "https://web.archive.org/web/20150803095032/"
1477 "http://factorial.hu/plugins/lv2/ir"))
1478 (synopsis "LV2 convolution reverb")
1479 (description
1480 "IR is a low-latency, real-time, high performance signal convolver
1481 especially for creating reverb effects. It supports impulse responses with 1,
1482 2 or 4 channels, in any soundfile format supported by libsndfile.")
1483 (license license:gpl2+)))
1484
1485 (define-public jack-1
1486 (package
1487 (name "jack")
1488 (version "0.125.0")
1489 (source (origin
1490 (method url-fetch)
1491 (uri (string-append
1492 "http://jackaudio.org/downloads/jack-audio-connection-kit-"
1493 version
1494 ".tar.gz"))
1495 (sha256
1496 (base32
1497 "0i6l25dmfk2ji2lrakqq9icnwjxklgcjzzk65dmsff91z2zva5rm"))))
1498 (build-system gnu-build-system)
1499 (arguments
1500 `(#:phases (modify-phases %standard-phases
1501 (add-after 'unpack 'patch-configure
1502 (lambda _
1503 (substitute* "configure"
1504 ;; Install to <out/lib> regardless of platform.
1505 (("libnn=lib64") "libnn=lib"))
1506 #t)))))
1507 (inputs
1508 `(("alsa-lib" ,alsa-lib)
1509 ("readline" ,readline)))
1510 ;; uuid.h is included in the JACK type headers
1511 ;; db.h is included in the libjack metadata headers
1512 (propagated-inputs
1513 `(("libuuid" ,util-linux)
1514 ("bdb" ,bdb)))
1515 (native-inputs
1516 `(("pkg-config" ,pkg-config)))
1517 (home-page "http://jackaudio.org/")
1518 (synopsis "JACK audio connection kit")
1519 (description
1520 "JACK is a low-latency audio server. It can connect a number of
1521 different applications to an audio device, as well as allowing them to share
1522 audio between themselves. JACK is different from other audio server efforts
1523 in that it has been designed from the ground up to be suitable for
1524 professional audio work. This means that it focuses on two key areas:
1525 synchronous execution of all clients, and low latency operation.")
1526 ;; Most files are licensed under the GPL. However, the libjack/ tree is
1527 ;; licensed under the LGPL in order to allow for proprietary usage.
1528 (license (list license:gpl2+ license:lgpl2.1+))))
1529
1530 ;; Packages depending on JACK should always prefer jack-1. Both jack-1 and
1531 ;; jack-2 implement the same API. JACK2 is provided primarily as a client
1532 ;; program for users who might benefit from the D-BUS features.
1533 (define-public jack-2
1534 (package (inherit jack-1)
1535 (name "jack2")
1536 (version "1.9.13")
1537 (source (origin
1538 (method url-fetch)
1539 (uri (string-append "https://github.com/jackaudio/jack2/releases/"
1540 "download/v" version "/jack2-"
1541 version ".tar.gz"))
1542 (file-name (string-append name "-" version ".tar.gz"))
1543 (sha256
1544 (base32
1545 "1d1d403jn4366mqig6g8ghr8057b3rn7gs26b5p3rkal34j20qw2"))))
1546 (build-system waf-build-system)
1547 (arguments
1548 `(#:tests? #f ; no check target
1549 #:configure-flags '("--dbus"
1550 "--alsa")
1551 #:phases
1552 (modify-phases %standard-phases
1553 (add-before 'configure 'set-linkflags
1554 (lambda _
1555 ;; Add $libdir to the RUNPATH of all the binaries.
1556 (substitute* "wscript"
1557 ((".*CFLAGS.*-Wall.*" m)
1558 (string-append m
1559 " conf.env.append_unique('LINKFLAGS',"
1560 "'-Wl,-rpath=" %output "/lib')\n")))
1561 #t))
1562 (add-after 'install 'wrap-python-scripts
1563 (lambda* (#:key inputs outputs #:allow-other-keys)
1564 ;; Make sure 'jack_control' runs with the correct PYTHONPATH.
1565 (let* ((out (assoc-ref outputs "out"))
1566 (path (getenv "PYTHONPATH")))
1567 (wrap-program (string-append out "/bin/jack_control")
1568 `("PYTHONPATH" ":" prefix (,path))))
1569 #t)))))
1570 (inputs
1571 `(("alsa-lib" ,alsa-lib)
1572 ("dbus" ,dbus)
1573 ("expat" ,expat)
1574 ("libsamplerate" ,libsamplerate)
1575 ("opus" ,opus)
1576 ("python-dbus" ,python-dbus)
1577 ("readline" ,readline)))
1578 (native-inputs
1579 `(("pkg-config" ,pkg-config)))
1580 ;; Most files are under GPLv2+, but some headers are under LGPLv2.1+
1581 (license (list license:gpl2+ license:lgpl2.1+))))
1582
1583 (define-public jalv
1584 (package
1585 (name "jalv")
1586 (version "1.6.0")
1587 (source (origin
1588 (method url-fetch)
1589 (uri (string-append "https://download.drobilla.net/jalv-"
1590 version ".tar.bz2"))
1591 (sha256
1592 (base32
1593 "1x2wpzzx2cgvz3dgdcgsj8dr0w3zsasy62mvl199bsdj5fbjaili"))))
1594 (build-system waf-build-system)
1595 (arguments
1596 `(#:tests? #f ; no check target
1597 #:python ,python-2))
1598 (inputs
1599 `(("lv2" ,lv2)
1600 ("lilv" ,lilv)
1601 ("suil" ,suil)
1602 ("gtk" ,gtk+)
1603 ("gtkmm" ,gtkmm)
1604 ("jack" ,jack-1)))
1605 (native-inputs
1606 `(("pkg-config" ,pkg-config)))
1607 (home-page "https://drobilla.net/software/jalv/")
1608 (synopsis "Simple LV2 host for JACK")
1609 (description
1610 "Jalv is a simple but fully featured LV2 host for JACK. It runs LV2
1611 plugins and exposes their ports as JACK ports, essentially making any LV2
1612 plugin function as a JACK application.")
1613 (license license:isc)))
1614
1615 (define-public ladspa
1616 (package
1617 (name "ladspa")
1618 (version "1.13")
1619 (source
1620 (origin
1621 (method url-fetch)
1622 ;; Since the official link is dead,
1623 ;; we download the tarball from Debian or Internet Archive.
1624 (uri (list (string-append "http://http.debian.net"
1625 "/debian/pool/main/l/ladspa-sdk/ladspa-sdk_"
1626 version ".orig.tar.gz")
1627 (string-append "https://web.archive.org/web/20140717172251/"
1628 "http://www.ladspa.org/download/ladspa_sdk_"
1629 version ".tgz")))
1630 (sha256
1631 (base32
1632 "0srh5n2l63354bc0srcrv58rzjkn4gv8qjqzg8dnq3rs4m7kzvdm"))))
1633 (build-system gnu-build-system)
1634 (arguments
1635 `(#:tests? #f ; the "test" target is a listening test only
1636 #:phases
1637 (modify-phases %standard-phases
1638 (replace 'configure
1639 (lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
1640 (chdir "src")
1641 (let ((out (assoc-ref outputs "out")))
1642 (substitute* "makefile"
1643 (("/usr/lib/ladspa/") (string-append out "/lib/ladspa/"))
1644 (("/usr/include/") (string-append out "/include/"))
1645 (("/usr/bin/") (string-append out "/bin/"))
1646 (("-mkdirhier") "mkdir -p")
1647 (("^CC.*") "CC = gcc\n")
1648 (("^CPP.*") "CPP = g++\n")))
1649 #t))
1650 (delete 'build))))
1651 ;; Since the home page is gone, we provide a link to the archived version.
1652 (home-page
1653 "https://web.archive.org/web/20140729190945/http://www.ladspa.org/")
1654 (synopsis "Linux Audio Developer's Simple Plugin API (LADSPA)")
1655 (description
1656 "LADSPA is a standard that allows software audio processors and effects
1657 to be plugged into a wide range of audio synthesis and recording packages.")
1658 (license license:lgpl2.1+)))
1659
1660 (define-public lash
1661 (package
1662 (name "lash")
1663 (version "0.6.0-rc2")
1664 (source (origin
1665 (method url-fetch)
1666 ;; The tilde is not permitted in the builder name, but is used
1667 ;; in the tarball.
1668 (uri (string-append
1669 "mirror://savannah/lash/lash-"
1670 (string-join (string-split version #\-) "~")
1671 ".tar.bz2"))
1672 (file-name (string-append name "-" version ".tar.bz2"))
1673 (sha256
1674 (base32
1675 "12z1vx3krrzsfccpah9xjs68900xvr7bw92wx8np5871i2yv47iw"))))
1676 (build-system gnu-build-system)
1677 (arguments
1678 '(;; Glibc no longer includes Sun RPC support, so tell the build system
1679 ;; to use libtirpc instead.
1680 #:make-flags (list (string-append "CFLAGS=-I"
1681 (assoc-ref %build-inputs "libtirpc")
1682 "/include/tirpc -ltirpc"))
1683 #:phases
1684 (modify-phases %standard-phases
1685 ;; lashd embeds an ancient version of sigsegv so we just skip it
1686 (add-after 'unpack 'skip-lashd
1687 (lambda _
1688 (substitute* '("Makefile.am" "Makefile.in")
1689 (("lashd ") ""))
1690 #t)))
1691 #:configure-flags '("--disable-static")))
1692 (inputs
1693 `(("bdb" ,bdb)
1694 ("gtk" ,gtk+-2)
1695 ("jack" ,jack-1)
1696 ("libtirpc" ,libtirpc)
1697 ("readline" ,readline)
1698 ("python" ,python-2)))
1699 ;; According to pkg-config, packages depending on lash also need to have
1700 ;; at least the following packages declared as inputs.
1701 (propagated-inputs
1702 `(("alsa-lib" ,alsa-lib)
1703 ("dbus" ,dbus)
1704 ("libxml2" ,libxml2)))
1705 (native-inputs
1706 `(("pkg-config" ,pkg-config)))
1707 (home-page "https://www.nongnu.org/lash/")
1708 (synopsis "Audio application session manager")
1709 (description
1710 "LASH is a session management system for audio applications. It allows
1711 you to save and restore audio sessions consisting of multiple interconneced
1712 applications, restoring program state (i.e. loaded patches) and the
1713 connections between them.")
1714 (license license:gpl2+)))
1715
1716 (define-public libbs2b
1717 (package
1718 (name "libbs2b")
1719 (version "3.1.0")
1720 (source (origin
1721 (method url-fetch)
1722 (uri (string-append "mirror://sourceforge/bs2b/libbs2b/" version
1723 "/libbs2b-" version ".tar.lzma"))
1724 (sha256
1725 (base32
1726 "1mcc4gjkmphczjybnsrip3gq1f974knzys7x49bv197xk3fn8wdr"))))
1727 (build-system gnu-build-system)
1728 (native-inputs `(("pkg-config" ,pkg-config)))
1729 (inputs `(("libsndfile" ,libsndfile)))
1730 (home-page "https://sourceforge.net/projects/bs2b/")
1731 (synopsis "Bauer stereophonic-to-binaural DSP")
1732 (description
1733 "The Bauer stereophonic-to-binaural DSP (bs2b) library and plugins is
1734 designed to improve headphone listening of stereo audio records. Recommended
1735 for headphone prolonged listening to disable superstereo fatigue without
1736 essential distortions.")
1737 (license license:expat)))
1738
1739 (define-public liblo
1740 (package
1741 (name "liblo")
1742 (version "0.30")
1743 (source (origin
1744 (method url-fetch)
1745 (uri (string-append "mirror://sourceforge/liblo/liblo/" version
1746 "/liblo-" version ".tar.gz"))
1747 (sha256
1748 (base32
1749 "06wdjzxjdshr6hyl4c94yvg3jixiylap8yjs8brdfpm297gck9rh"))))
1750 (build-system gnu-build-system)
1751 (arguments
1752 `(;; liblo test FAILED
1753 ;; liblo server error 19 in setsockopt(IP_ADD_MEMBERSHIP): No such device
1754 #:tests? #f))
1755 (home-page "http://liblo.sourceforge.net")
1756 (synopsis "Implementation of the Open Sound Control protocol")
1757 (description
1758 "liblo is a lightweight library that provides an easy to use
1759 implementation of the Open Sound Control (@dfn{OSC}) protocol.")
1760 (license license:lgpl2.1+)))
1761
1762 (define-public python-pyaudio
1763 (package
1764 (name "python-pyaudio")
1765 (version "0.2.11")
1766 (source
1767 (origin
1768 (method url-fetch)
1769 (uri (pypi-uri "PyAudio" version))
1770 (sha256
1771 (base32
1772 "0x7vdsigm7xgvyg3shd3lj113m8zqj2pxmrgdyj66kmnw0qdxgwk"))))
1773 (build-system python-build-system)
1774 (inputs
1775 `(("portaudio" ,portaudio)))
1776 (home-page "https://people.csail.mit.edu/hubert/pyaudio/")
1777 (synopsis "Bindings for PortAudio v19")
1778 (description "This package provides bindings for PortAudio v19, the
1779 cross-platform audio input/output stream library.")
1780 (license license:expat)))
1781
1782 (define-public python2-pyaudio
1783 (package-with-python2 python-pyaudio))
1784
1785 (define-public python-pyliblo
1786 (package
1787 (name "python-pyliblo")
1788 (version "0.10.0")
1789 (source (origin
1790 (method url-fetch)
1791 (uri (string-append "http://das.nasophon.de/download/pyliblo-"
1792 version ".tar.gz"))
1793 (sha256
1794 (base32
1795 "13vry6xhxm7adnbyj28w1kpwrh0kf7nw83cz1yq74wl21faz2rzw"))))
1796 (build-system python-build-system)
1797 (arguments `(#:tests? #f)) ;no tests
1798 (native-inputs
1799 `(("python-cython" ,python-cython)))
1800 (inputs
1801 `(("liblo" ,liblo)))
1802 (home-page "http://das.nasophon.de/pyliblo/")
1803 (synopsis "Python bindings for liblo")
1804 (description
1805 "Pyliblo is a Python wrapper for the liblo Open Sound Control (OSC)
1806 library. It supports almost the complete functionality of liblo, allowing you
1807 to send and receive OSC messages using a nice and simple Python API. Also
1808 included are the command line utilities @code{send_osc} and @code{dump_osc}.")
1809 (license license:lgpl2.1+)))
1810
1811 (define-public python2-pyliblo
1812 (package-with-python2 python-pyliblo))
1813
1814 (define-public lilv
1815 (package
1816 (name "lilv")
1817 (version "0.24.4")
1818 (source (origin
1819 (method url-fetch)
1820 (uri (string-append "https://download.drobilla.net/lilv-"
1821 version ".tar.bz2"))
1822 (sha256
1823 (base32
1824 "0f24cd7wkk5l969857g2ydz2kjjrkvvddg1g87xzzs78lsvq8fy3"))))
1825 (build-system waf-build-system)
1826 (arguments
1827 `(#:tests? #f ; no check target
1828 #:configure-flags (list "--bindings")
1829 #:phases
1830 (modify-phases %standard-phases
1831 (add-before
1832 'configure 'set-ldflags
1833 (lambda* (#:key outputs #:allow-other-keys)
1834 (setenv "LDFLAGS"
1835 (string-append "-Wl,-rpath="
1836 (assoc-ref outputs "out") "/lib"))
1837 #t))
1838 (add-after 'unpack 'full-store-path-to-shared-library
1839 (lambda* (#:key outputs #:allow-other-keys)
1840 (with-directory-excursion "bindings/python"
1841 (substitute* "lilv.py"
1842 (("liblilv-0.so") (string-append (assoc-ref outputs "out")
1843 "/lib/liblilv-0.so"))))
1844 #t)))))
1845 ;; Required by lilv-0.pc.
1846 (propagated-inputs
1847 `(("lv2" ,lv2)
1848 ("serd" ,serd)
1849 ("sord" ,sord)
1850 ("sratom" ,sratom)))
1851 (native-inputs
1852 `(("python" ,python)
1853 ("pkg-config" ,pkg-config)))
1854 (home-page "https://drobilla.net/software/lilv")
1855 (synopsis "Library to simplify use of LV2 plugins in applications")
1856 (description
1857 "Lilv is a C library to make the use of LV2 plugins as simple as possible
1858 for applications. Lilv is the successor to SLV2, rewritten to be
1859 significantly faster and have minimal dependencies.")
1860 (license license:isc)))
1861
1862 (define-public lv2
1863 (package
1864 (name "lv2")
1865 (version "1.16.0")
1866 (source (origin
1867 (method url-fetch)
1868 (uri (string-append "http://lv2plug.in/spec/lv2-"
1869 version ".tar.bz2"))
1870 (sha256
1871 (base32
1872 "1ppippbpdpv13ibs06b0bixnazwfhiw0d0ja6hx42jnkgdyp5hyy"))))
1873 (build-system waf-build-system)
1874 (arguments
1875 `(#:tests? #f ; no check target
1876 #:configure-flags '("--no-plugins")))
1877 (inputs
1878 ;; Leaving off cairo and gtk+-2.0 which are needed for example plugins
1879 `(("libsndfile" ,libsndfile)))
1880 (native-inputs
1881 `(("pkg-config" ,pkg-config)))
1882 (home-page "http://lv2plug.in/")
1883 (synopsis "LV2 audio plugin specification")
1884 (description
1885 "LV2 is an open specification for audio plugins and host applications.
1886 At its core, LV2 is a simple stable interface, accompanied by extensions which
1887 add functionality to support the needs of increasingly powerful audio
1888 software.")
1889 (license license:isc)))
1890
1891 (define-public lv2-mda-piano
1892 (package
1893 (name "lv2-mda-piano")
1894 (version "0.0.2")
1895 (source (origin
1896 (method git-fetch)
1897 (uri (git-reference
1898 (url "http://git.elephly.net/software/lv2-mdametapiano.git")
1899 (commit version)))
1900 (file-name (git-file-name name version))
1901 (sha256
1902 (base32
1903 "07lywf6lpfpndg3i9w752mmlg2hgn1bwp23h8b0mdj6awh67abqd"))))
1904 (build-system gnu-build-system)
1905 (arguments
1906 `(#:make-flags (list
1907 "TYPE=mdaPiano"
1908 (string-append "PREFIX=" (assoc-ref %outputs "out")))
1909 #:tests? #f ; no check target
1910 #:phases (modify-phases %standard-phases (delete 'configure))))
1911 (inputs
1912 `(("lv2" ,lv2)
1913 ("lvtk" ,lvtk)))
1914 (native-inputs
1915 `(("pkg-config" ,pkg-config)))
1916 (native-search-paths
1917 (list (search-path-specification
1918 (variable "LV2_PATH")
1919 (files '("lib/lv2")))))
1920 (home-page "http://elephly.net/lv2/mdapiano.html")
1921 (synopsis "LV2 port of the mda Piano plugin")
1922 (description "An LV2 port of the mda Piano VSTi.")
1923 (license license:gpl3+)))
1924
1925 (define-public lv2-mda-epiano
1926 (package (inherit lv2-mda-piano)
1927 (name "lv2-mda-epiano")
1928 (arguments
1929 `(#:make-flags (list
1930 "TYPE=mdaEPiano"
1931 (string-append "PREFIX=" (assoc-ref %outputs "out")))
1932 #:tests? #f ; no check target
1933 #:phases (modify-phases %standard-phases (delete 'configure))))
1934 (home-page "http://elephly.net/lv2/mdaepiano.html")
1935 (synopsis "LV2 port of the mda EPiano plugin")
1936 (description "An LV2 port of the mda EPiano VSTi.")))
1937
1938 (define-public lvtk
1939 (package
1940 (name "lvtk")
1941 (version "1.2.0")
1942 (source (origin
1943 (method git-fetch)
1944 (uri (git-reference
1945 (url "https://github.com/lvtk/lvtk.git")
1946 (commit version)))
1947 (file-name (git-file-name name version))
1948 (sha256
1949 (base32
1950 "1b01zvzl70ana6l1kn8fgyr7msnn3c7x61cgw7fdpp50322352p8"))))
1951 (build-system waf-build-system)
1952 (arguments
1953 `(#:tests? #f ; no check target
1954 #:python ,python-2
1955 #:configure-flags
1956 (list (string-append "--boost-includes="
1957 (assoc-ref %build-inputs "boost")
1958 "/include"))))
1959 (inputs
1960 `(("boost" ,boost)
1961 ("gtkmm" ,gtkmm-2)
1962 ("lv2" ,lv2)))
1963 (native-inputs
1964 `(("pkg-config" ,pkg-config)))
1965 (home-page "https://github.com/lvtk/lvtk")
1966 (synopsis "C++ libraries for LV2 plugins")
1967 (description
1968 "The LV2 Toolkit (LVTK) contains libraries that wrap the LV2 C API and
1969 extensions into easy to use C++ classes. It is the successor of
1970 lv2-c++-tools.")
1971 (license license:gpl3+)))
1972
1973 (define-public openal
1974 (package
1975 (name "openal")
1976 (version "1.19.1")
1977 (source (origin
1978 (method url-fetch)
1979 (uri (string-append
1980 "http://openal-soft.org/openal-releases/openal-soft-"
1981 version ".tar.bz2"))
1982 (sha256
1983 (base32
1984 "1sdjhkz2gd6lbnwphi1b6aw3br4wv2lik5vnqh6mxfc8a7zqfbsw"))))
1985 (build-system cmake-build-system)
1986 (arguments
1987 `(#:tests? #f ; no check target
1988 #:phases
1989 (modify-phases %standard-phases
1990 (add-after
1991 'unpack 'use-full-library-paths
1992 (lambda* (#:key inputs #:allow-other-keys)
1993 (substitute* "Alc/backends/pulseaudio.c"
1994 (("#define PALIB \"libpulse\\.so\\.0\"")
1995 (string-append "#define PALIB \""
1996 (assoc-ref inputs "pulseaudio")
1997 "/lib/libpulse.so.0"
1998 "\"")))
1999 (substitute* "Alc/backends/alsa.c"
2000 (("LoadLib\\(\"libasound\\.so\\.2\"\\)")
2001 (string-append "LoadLib(\""
2002 (assoc-ref inputs "alsa-lib")
2003 "/lib/libasound.so.2"
2004 "\")")))
2005 #t)))))
2006 (native-inputs
2007 `(;; FIXME: On i686-linux, GCC 7 hits an internal compiler error
2008 ;; upon building utils/makehrtf.c:3281:
2009 ;; "internal compiler error: in gen_rtx_SUBREG, at emit-rtl.c:908"
2010 ;; https://ci.guix.gnu.org/log/r2fjx9m75m9rifg2yjbnn853wqy2547n-openal-1.19.1
2011 ;; Remove this when the default compiler is GCC 9 or later.
2012 ("gcc" ,gcc-9)))
2013 (inputs
2014 `(("alsa-lib" ,alsa-lib)
2015 ("pulseaudio" ,pulseaudio)))
2016 (synopsis "3D audio API")
2017 (description
2018 "OpenAL provides capabilities for playing audio in a virtual 3D
2019 environment. Distance attenuation, doppler shift, and directional sound
2020 emitters are among the features handled by the API. More advanced effects,
2021 including air absorption, occlusion, and environmental reverb, are available
2022 through the EFX extension. It also facilitates streaming audio, multi-channel
2023 buffers, and audio capture.")
2024 (home-page "http://openal-soft.org/")
2025 (license license:lgpl2.0+)))
2026
2027 (define-public freealut
2028 (package
2029 (name "freealut")
2030 (version "1.1.0")
2031 (source (origin
2032 (method url-fetch)
2033 ;; Upstream url is unclear, many systems use Fedora, there is also
2034 ;; https://github.com/vancegroup/freealut though the status of it
2035 ;; (official? unofficial?) is not clear.
2036 (uri (string-append
2037 "https://pkgs.fedoraproject.org/repo/pkgs/" name "/" name "-"
2038 version ".tar.gz" "/e089b28a0267faabdb6c079ee173664a/" name
2039 "-" version ".tar.gz"))
2040 (sha256
2041 (base32
2042 "0kzlil6112x2429nw6mycmif8y6bxr2cwjcvp18vh6s7g63ymlb0"))))
2043 (build-system cmake-build-system)
2044 (arguments
2045 `(#:tests? #f)) ; no check target
2046 (inputs
2047 `(("openal" ,openal)))
2048 (synopsis "Free implementation of OpenAL's ALUT standard")
2049 (description "freealut is the OpenAL Utility Toolkit.")
2050 (home-page "http://kcat.strangesoft.net/openal.html")
2051 (license license:lgpl2.0)))
2052
2053 (define-public patchage
2054 (package
2055 (name "patchage")
2056 (version "1.0.0")
2057 (source (origin
2058 (method url-fetch)
2059 (uri (string-append "https://download.drobilla.net/patchage-"
2060 version
2061 ".tar.bz2"))
2062 (sha256
2063 (base32
2064 "1agdpwwi42176l4mxj0c4fsvdiv1ig56bfnnx0msckxmy57df8bb"))))
2065 (build-system waf-build-system)
2066 (arguments
2067 `(#:tests? #f ; no check target
2068 #:python ,python-2))
2069 (inputs
2070 `(("alsa-lib" ,alsa-lib)
2071 ("boost" ,boost)
2072 ("jack" ,jack-1)
2073 ("ganv" ,ganv)
2074 ("glibmm" ,glibmm)
2075 ("gtkmm" ,gtkmm-2)
2076 ("dbus-glib" ,dbus-glib)))
2077 (native-inputs
2078 `(("pkg-config" ,pkg-config)))
2079 (home-page "https://drobilla.net/software/patchage/")
2080 (synopsis "Modular patch bay for audio and MIDI systems")
2081 (description
2082 "Patchage is a modular patch bay for audio and MIDI systems based on JACK
2083 and ALSA.")
2084 (license license:gpl3+)))
2085
2086 (define-public pcaudiolib
2087 (package
2088 (name "pcaudiolib")
2089 (version "1.1")
2090 (home-page "https://github.com/espeak-ng/pcaudiolib")
2091 (source (origin
2092 (method git-fetch)
2093 (uri (git-reference (url home-page) (commit version)))
2094 (file-name (git-file-name name version))
2095 (sha256
2096 (base32
2097 "0c55hlqqh0m7bcb3nlgv1s4a22s5bgczr1cakjh3767rjb10khi0"))))
2098 (build-system gnu-build-system)
2099 (arguments
2100 `(#:configure-flags '("--disable-static")))
2101 (native-inputs
2102 `(("autoconf" ,autoconf)
2103 ("automake" ,automake)
2104 ("libtool" ,libtool)
2105 ("pkg-config" ,pkg-config)
2106 ("which" ,which)))
2107 (inputs
2108 `(("alsa-lib" ,alsa-lib)
2109 ("pulseaudio" ,pulseaudio)))
2110 (synopsis "Portable C audio library")
2111 (description
2112 "The Portable C Audio Library (pcaudiolib) provides a C@tie{}API to
2113 different audio devices such as ALSA or PulseAudio.")
2114 (license (list license:gpl3+
2115 ;; The bundled TPCircularBuffer uses a custom license.
2116 (license:non-copyleft
2117 "file://src/TPCircularBuffer/README.markdown")))))
2118
2119 (define-public qjackctl
2120 (package
2121 (name "qjackctl")
2122 (version "0.5.9")
2123 (source (origin
2124 (method url-fetch)
2125 (uri (string-append "mirror://sourceforge/qjackctl/qjackctl/"
2126 version "/qjackctl-" version ".tar.gz"))
2127 (sha256
2128 (base32
2129 "1saywsda9m124rmjp7i3n0llryaliabjxhqhvqr6dm983qy7pypk"))))
2130 (build-system gnu-build-system)
2131 (arguments
2132 '(#:tests? #f)) ; no check target
2133 (inputs
2134 `(("jack" ,jack-1)
2135 ("alsa-lib" ,alsa-lib)
2136 ("qtbase" ,qtbase)
2137 ("qtx11extras" ,qtx11extras)))
2138 (native-inputs
2139 `(("pkg-config" ,pkg-config)
2140 ("qttools" ,qttools)))
2141 (home-page "https://qjackctl.sourceforge.io/")
2142 (synopsis "Jack server control application")
2143 (description "Control a Jack server. Allows you to plug various sources
2144 into various outputs and to start, stop and configure jackd")
2145 (license license:gpl2+)))
2146
2147 (define-public qjackrcd
2148 (package
2149 (name "qjackrcd")
2150 (version "1.2.2")
2151 (source (origin
2152 (method git-fetch)
2153 (uri (git-reference
2154 (url "https://github.com/orouits/qjackrcd.git")
2155 (commit (string-append "v" version))))
2156 (file-name (git-file-name name version))
2157 (sha256
2158 (base32
2159 "1l5iq2mkqd4gn9yr8xbh9qlpp1clcflazychl4vhdbz0bzq4c6al"))))
2160 (build-system gnu-build-system)
2161 (arguments
2162 `(#:phases
2163 (modify-phases %standard-phases
2164 (replace 'configure
2165 (lambda* (#:key outputs #:allow-other-keys)
2166 (invoke "qmake"
2167 (string-append "PREFIX="
2168 (assoc-ref outputs "out"))))))))
2169 (native-inputs
2170 `(("qtbase" ,qtbase))) ; for qmake
2171 (inputs
2172 `(("jack" ,jack-1)
2173 ("libsndfile" ,libsndfile)
2174 ("qtbase" ,qtbase)))
2175 (home-page "https://sourceforge.net/projects/qjackrcd/")
2176 (synopsis "Stereo audio recorder for JACK")
2177 (description "QJackRcd is a simple graphical stereo recorder for JACK
2178 supporting silence processing for automatic pause, file splitting, and
2179 background file post-processing.")
2180 (license license:gpl2+)))
2181
2182 (define-public supercollider
2183 (package
2184 (name "supercollider")
2185 (version "3.10.3")
2186 (source (origin
2187 (method url-fetch)
2188 (uri (string-append
2189 "https://github.com/supercollider/supercollider"
2190 "/releases/download/Version-" version
2191 "/SuperCollider-" version "-Source-linux.tar.bz2"))
2192 (patches
2193 (search-patches "supercollider-boost-1.70-build-fix.patch"))
2194 (sha256
2195 (base32
2196 "0srm6wbazidkrd4ckjy4ypyhkdwcnx2i7k9msjyngalh0mrc9zz1"))))
2197 (build-system cmake-build-system)
2198 (arguments
2199 `(#:configure-flags '("-DSYSTEM_BOOST=on" "-DSYSTEM_YAMLCPP=on"
2200 "-DSC_QT=off"
2201 "-DSC_EL=off") ;scel is packaged individually as
2202 ;emacs-scel.
2203 #:modules ((guix build utils)
2204 (guix build cmake-build-system)
2205 (ice-9 ftw))
2206 #:phases
2207 (modify-phases %standard-phases
2208 (add-after 'unpack 'rm-bundled-libs
2209 (lambda _
2210 ;; The build system doesn't allow us to unbundle the following
2211 ;; libraries. hidapi is also heavily patched and upstream not
2212 ;; actively maintained.
2213 (let ((keep-dirs '("nova-simd" "nova-tt" "hidapi" "TLSF-2.4.6"
2214 "oscpack_1_1_0" "." "..")))
2215 (with-directory-excursion "./external_libraries"
2216 (for-each
2217 delete-file-recursively
2218 (scandir "."
2219 (lambda (x)
2220 (and (eq? (stat:type (stat x)) 'directory)
2221 (not (member (basename x) keep-dirs))))))))
2222 #t))
2223 ;; Some tests are broken (see:
2224 ;; https://github.com/supercollider/supercollider/issues/3555 and
2225 ;; https://github.com/supercollider/supercollider/issues/1736
2226 (add-after 'rm-bundled-libs 'disable-broken-tests
2227 (lambda _
2228 (substitute* "testsuite/server/supernova/CMakeLists.txt"
2229 (("server_test.cpp")
2230 "")
2231 (("perf_counter_test.cpp")
2232 ""))
2233 (delete-file "testsuite/server/supernova/server_test.cpp")
2234 (delete-file "testsuite/server/supernova/perf_counter_test.cpp")
2235 (substitute* "testsuite/CMakeLists.txt"
2236 (("add_subdirectory\\(sclang\\)")
2237 ""))
2238 (delete-file "testsuite/sclang/CMakeLists.txt")
2239 #t)))))
2240 (native-inputs
2241 `(("pkg-config" ,pkg-config)))
2242 (inputs
2243 `(("jack" ,jack-1)
2244 ("libsndfile" ,libsndfile)
2245 ("fftw" ,fftw)
2246 ("libxt" ,libxt)
2247 ("readline" ,readline) ;readline support for sclang's CLI
2248 ("alsa" ,alsa-lib) ;for sclang's MIDI interface
2249 ("eudev" ,eudev) ;for user interactions with devices
2250 ("avahi" ,avahi) ;zeroconf service discovery support
2251 ("icu4c" ,icu4c)
2252 ("boost" ,boost)
2253 ("boost-sync" ,boost-sync)
2254 ("yaml-cpp" ,yaml-cpp)))
2255 (home-page "https://github.com/supercollider/supercollider")
2256 (synopsis "Synthesis engine and programming language")
2257 (description "SuperCollider is a synthesis engine (@code{scsynth} or
2258 @code{supernova}) and programming language (@code{sclang}). It can be used
2259 for experimenting with sound synthesis and algorithmic composition.
2260
2261 SuperCollider requires jackd to be installed in your user profile and your
2262 user must be allowed to access the realtime features of the kernel. Search
2263 for \"realtime\" in the index of the Guix manual to learn how to achieve this
2264 using Guix System.")
2265 (license license:gpl2+)))
2266
2267 (define-public raul
2268 (package
2269 (name "raul")
2270 (version "0.8.0")
2271 (source (origin
2272 (method url-fetch)
2273 (uri (string-append "https://download.drobilla.net/raul-"
2274 version ".tar.bz2"))
2275 (sha256
2276 (base32
2277 "09ms40xc1x6qli6lxkwn5ibqh62nl9w7dq0b6jh1q2zvnrxwsd8b"))))
2278 (build-system waf-build-system)
2279 (arguments
2280 `(#:python ,python-2
2281 #:tests? #f)) ; no check target
2282 (inputs
2283 `(("glib" ,glib)
2284 ("boost" ,boost)))
2285 (native-inputs
2286 `(("pkg-config" ,pkg-config)))
2287 (home-page "https://drobilla.net/software/raul/")
2288 (synopsis "Real-time audio utility library")
2289 (description
2290 "Raul (Real-time Audio Utility Library) is a C++ utility library primarily
2291 aimed at audio/musical applications.")
2292 (license license:gpl2+)))
2293
2294 (define-public raul-devel
2295 (let ((commit "4db870b2b20b0a608ec0283139056b836c5b1624")
2296 (revision "1"))
2297 (package (inherit raul)
2298 (name "raul")
2299 (version (string-append "0.8.9-" revision "."
2300 (string-take commit 9)))
2301 (source (origin
2302 (method git-fetch)
2303 (uri (git-reference
2304 (url "https://git.drobilla.net/raul.git")
2305 (commit commit)))
2306 (file-name (string-append name "-" version "-checkout"))
2307 (sha256
2308 (base32
2309 "04fajrass3ymr72flx5js5vxc601ccrmx8ny8scp0rw7j0igyjdr")))))))
2310
2311 (define-public rubberband
2312 (package
2313 (name "rubberband")
2314 (version "1.8.2")
2315 (source (origin
2316 (method url-fetch)
2317 (uri
2318 (string-append "https://bitbucket.org/breakfastquay/rubberband/get/v"
2319 version
2320 ".tar.bz2"))
2321 (file-name (string-append name "-" version ".tar.bz2"))
2322 (sha256
2323 (base32
2324 "0462fmjnfqpv2qi0s6ny42drqarkr0xy9lw8frjmfgzyzl5n9294"))))
2325 (build-system gnu-build-system)
2326 (arguments
2327 `(#:tests? #f ; no check target
2328 #:phases
2329 (modify-phases %standard-phases
2330 (add-after 'unpack 'skip-jni-installation
2331 ;; ‘make install’ unconditionally installs librubberband-jni.so,
2332 ;; which is never built by ‘make all’. Skip it.
2333 (lambda _
2334 (substitute* "Makefile.in"
2335 ((".*cp -f \\$\\(JNI_TARGET\\).*") ""))
2336 #t)))))
2337 (inputs
2338 `(("ladspa" ,ladspa)
2339 ("libsamplerate" ,libsamplerate)
2340 ("vamp" ,vamp)))
2341 (native-inputs
2342 `(("pkg-config" ,pkg-config)))
2343 (home-page "https://breakfastquay.com/rubberband/")
2344 (synopsis "Audio time-stretching and pitch-shifting library")
2345 (description
2346 "Rubber Band is a library and utility program that permits changing the
2347 tempo and pitch of an audio recording independently of one another.")
2348 (license license:gpl2+)))
2349
2350 (define-public rtmidi
2351 (package
2352 (name "rtmidi")
2353 (version "2.1.0")
2354 (source (origin
2355 (method git-fetch)
2356 (uri (git-reference
2357 (url "https://github.com/powertab/rtmidi.git")
2358 (commit version)))
2359 (file-name (git-file-name name version))
2360 (sha256
2361 (base32
2362 "106v177y3nrjv2l1yskch4phpqd8h97b67zj0jiq9pc3c69jr1ay"))))
2363 (build-system gnu-build-system)
2364 (arguments
2365 `(#:tests? #f ;no "check" target
2366 #:phases
2367 (modify-phases %standard-phases
2368 (add-before 'build 'fix-makefile
2369 (lambda _
2370 (substitute* "Makefile"
2371 (("/bin/ln") "ln")
2372 (("RtMidi.h RtError.h") "RtMidi.h"))
2373 #t))
2374 (add-before 'install 'make-target-dirs
2375 (lambda _
2376 (let ((out (assoc-ref %outputs "out")))
2377 (mkdir-p (string-append out "/bin"))
2378 (mkdir (string-append out "/lib"))
2379 (mkdir (string-append out "/include")))
2380 #t)))))
2381 (inputs
2382 `(("jack" ,jack-1)
2383 ("alsa-lib" ,alsa-lib)))
2384 (native-inputs
2385 `(("autoconf" ,autoconf)
2386 ("automake" ,automake)
2387 ("libtool" ,libtool)
2388 ("pkg-config" ,pkg-config)))
2389 (home-page "https://github.com/powertab/rtmidi")
2390 (synopsis "Cross-platform MIDI library for C++")
2391 (description
2392 "RtMidi is a set of C++ classes (RtMidiIn, RtMidiOut, and API specific
2393 classes) that provide a common cross-platform API for realtime MIDI
2394 input/output.")
2395 (license license:expat)))
2396
2397 (define-public sratom
2398 (package
2399 (name "sratom")
2400 (version "0.6.2")
2401 (source (origin
2402 (method url-fetch)
2403 (uri (string-append "https://download.drobilla.net/sratom-"
2404 version ".tar.bz2"))
2405 (sha256
2406 (base32
2407 "0lz883ravxjf7r9wwbx2gx9m8vhyiavxrl9jdxfppjxnsralll8a"))))
2408 (build-system waf-build-system)
2409 (arguments `(#:tests? #f)) ; no check target
2410 (inputs
2411 `(("lv2" ,lv2)
2412 ("serd" ,serd)
2413 ("sord" ,sord)))
2414 (native-inputs
2415 `(("pkg-config" ,pkg-config)))
2416 (home-page "https://drobilla.net/software/sratom/")
2417 (synopsis "Library for serialising LV2 atoms to/from RDF")
2418 (description
2419 "Sratom is a library for serialising LV2 atoms to/from RDF, particularly
2420 the Turtle syntax.")
2421 (license license:isc)))
2422
2423 (define-public suil
2424 (package
2425 (name "suil")
2426 (version "0.10.4")
2427 (source (origin
2428 (method url-fetch)
2429 (uri (string-append "https://download.drobilla.net/suil-"
2430 version ".tar.bz2"))
2431 (sha256
2432 (base32
2433 "0ay7hl6nr6ip1nn9k2m8ri3b52b6sx9mhixmcy4fy3kr2a88ksd1"))))
2434 (build-system waf-build-system)
2435 (arguments
2436 `(#:tests? #f)) ;no check target
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.4.0")
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 "0zf8sxqb02w07ah55b1y7ab643zmpbhn62spa9pqra0rc17l4dfc"))))
2786 (build-system gnu-build-system)
2787 (inputs
2788 `(("libsndfile" ,libsndfile)))
2789 (native-inputs
2790 `(("perl" ,perl)
2791 ("which" ,which))) ;used in tests/test.pl
2792 (home-page "http://www.twolame.org/")
2793 (synopsis "MPEG Audio Layer 2 (MP2) encoder")
2794 (description
2795 "TwoLAME is an optimised MPEG Audio Layer 2 (MP2) encoder based on
2796 tooLAME by Mike Cheng, which in turn is based upon the ISO dist10 code and
2797 portions of LAME.")
2798 (license license:lgpl2.1+)))
2799
2800 (define-public portaudio
2801 (package
2802 (name "portaudio")
2803 (version "190600.20161030")
2804 (source
2805 (origin
2806 (method url-fetch)
2807 (uri (string-append
2808 "http://www.portaudio.com/archives/pa_stable_v"
2809 (string-map (lambda (c) (if (char=? c #\.) #\_ c)) version)
2810 ".tgz"))
2811 (sha256
2812 (base32 "04qmin6nj144b8qb9kkd9a52xfvm0qdgm8bg8jbl7s3frmyiv8pm"))
2813 (patches (search-patches "portaudio-audacity-compat.patch"))))
2814 (build-system gnu-build-system)
2815 (inputs
2816 ;; TODO: Add ASIHPI.
2817 `(("alsa-lib" ,alsa-lib)
2818 ("jack" ,jack-1)))
2819 ;; Autoreconf is necessary because the audacity-compat patch modifies .in
2820 ;; files.
2821 (native-inputs
2822 `(("autoconf" ,autoconf)
2823 ("automake" ,automake)
2824 ("libtool" ,libtool)
2825 ("pkg-config" ,pkg-config)))
2826 (arguments
2827 '(#:tests? #f ;no 'check' target
2828 #:configure-flags '("--with-pic")
2829 #:phases
2830 (modify-phases %standard-phases
2831 ;; This is needed for linking the static libraries
2832 (add-after 'unpack 'build-only-position-independent-code
2833 (lambda _
2834 (substitute* "configure.in"
2835 (("AC_PROG_LIBTOOL" m)
2836 (string-append m "\nAM_PROG_AR\nLT_INIT([pic-only])")))
2837 (delete-file "configure")
2838 #t))
2839 ;; Some headers are not installed by default, but are needed by
2840 ;; packages like Kaldi.
2841 (add-after 'install 'install-missing-headers
2842 (lambda* (#:key outputs #:allow-other-keys)
2843 (install-file "src/common/pa_ringbuffer.h"
2844 (string-append (assoc-ref outputs "out") "/include"))
2845 #t)))))
2846 (home-page "http://www.portaudio.com/")
2847 (synopsis "Audio I/O library")
2848 (description
2849 "PortAudio is a portable C/C++ audio I/O library providing a simple API
2850 to record and/or play sound using a callback function or a blocking read/write
2851 interface.")
2852 (license license:expat)))
2853
2854 (define-public qsynth
2855 (package
2856 (name "qsynth")
2857 (version "0.5.7")
2858 (source
2859 (origin
2860 (method url-fetch)
2861 (uri (string-append "mirror://sourceforge/qsynth/qsynth/" version
2862 "/qsynth-" version ".tar.gz"))
2863 (sha256
2864 (base32 "18im4w8agj60nkppwbkxqnhpp13z5li3w30kklv4lgs20rvgbvl6"))))
2865 (build-system gnu-build-system)
2866 (arguments
2867 `(#:tests? #f)) ; no "check" phase
2868 (native-inputs
2869 `(("qttools" ,qttools)
2870 ("pkg-config" ,pkg-config)))
2871 (inputs
2872 `(("fluidsynth" ,fluidsynth)
2873 ("qtbase" ,qtbase)
2874 ("qtx11extras" ,qtx11extras)))
2875 (home-page "https://qsynth.sourceforge.io")
2876 (synopsis "Graphical user interface for FluidSynth")
2877 (description
2878 "Qsynth is a GUI front-end application for the FluidSynth SoundFont
2879 synthesizer written in C++.")
2880 (license license:gpl2+)))
2881
2882 (define-public rsound
2883 (package
2884 (name "rsound")
2885 (version "1.1")
2886 (source
2887 (origin
2888 (method git-fetch)
2889 (uri (git-reference
2890 (url "https://github.com/Themaister/RSound.git")
2891 (commit (string-append "v" version))))
2892 (file-name (git-file-name name version))
2893 (sha256
2894 (base32 "0gspmr3klwnq98h17p5hc6ifygya4p80g4g8r7a1qavm3mv19waf"))))
2895 (build-system gnu-build-system)
2896 (inputs
2897 `(("alsa-lib" ,alsa-lib)
2898 ("jack" ,jack-1)
2899 ("ao" ,ao)
2900 ("libsamplerate" ,libsamplerate)
2901 ("openal" ,openal)
2902 ("portaudio" ,portaudio)
2903 ("pulseaudio" ,pulseaudio)))
2904 (arguments
2905 '(#:phases
2906 (modify-phases %standard-phases
2907 (replace 'configure
2908 (lambda* (#:key outputs #:allow-other-keys)
2909 (setenv "CC" "gcc")
2910 (invoke "./configure"
2911 (string-append "--prefix=" (assoc-ref outputs "out"))))))
2912 ;; No 'check' target.
2913 #:tests? #f))
2914 (home-page "http://themaister.net/rsound.html")
2915 (synopsis "Networked audio system")
2916 (description
2917 "RSound allows you to send audio from an application and transfer it
2918 directly to a different computer on your LAN network. It is an audio daemon
2919 with a much different focus than most other audio daemons.")
2920 (license license:gpl3+)))
2921
2922 (define-public xjackfreak
2923 (package
2924 (name "xjackfreak")
2925 (version "1.0")
2926 (source (origin
2927 (method git-fetch)
2928 (uri (git-reference
2929 (url "https://github.com/johnhldavis/xjackfreak.git")
2930 (commit (string-append "v" version))))
2931 (file-name (git-file-name name version))
2932 (sha256
2933 (base32
2934 "18c546qidbrj0f5wfiq5llii2192xpln0ab3r4vpr7i3wybxqjfz"))))
2935 (build-system gnu-build-system)
2936 (arguments
2937 `(#:make-flags
2938 (list (string-append "docdir=" (assoc-ref %outputs "out")
2939 "/share/doc/xjackfreak"))))
2940 (inputs
2941 `(("jack" ,jack-1)
2942 ("libx11" ,libx11)
2943 ("libxt" ,libxt)
2944 ("libxext" ,libxext)))
2945 (native-inputs
2946 `(("pkg-config" ,pkg-config)))
2947 (home-page "https://github.com/johnhldavis/xjackfreak")
2948 (synopsis "JACK audio frequency analyzer and display")
2949 (description
2950 "XJackFreak is an audio analysis and equalizing tool for the Jack Audio
2951 Connection Kit. It can display the FFT of any input, modify it and output the
2952 result.")
2953 (license license:gpl3+)))
2954
2955 (define-public zita-convolver
2956 (package
2957 (name "zita-convolver")
2958 (version "3.1.0")
2959 (source (origin
2960 (method url-fetch)
2961 (uri (string-append
2962 "http://kokkinizita.linuxaudio.org"
2963 "/linuxaudio/downloads/zita-convolver-"
2964 version ".tar.bz2"))
2965 (snippet
2966 ;; Don't optimize for a specific processor architecture.
2967 '(begin
2968 (substitute* "libs/Makefile"
2969 (("^CXXFLAGS \\+= -march=native") ""))
2970 #t))
2971 (modules '((guix build utils)))
2972 (sha256
2973 (base32
2974 "14qrnczhp5mbwhky64il7kxc4hl1mmh495v60va7i2qnhasr6zmz"))))
2975 (build-system gnu-build-system)
2976 (arguments
2977 `(#:tests? #f ; no "check" target
2978 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
2979 #:phases
2980 (modify-phases %standard-phases
2981 (add-after 'unpack 'patch-makefile-and-enter-directory
2982 (lambda _
2983 (substitute* "libs/Makefile"
2984 (("ldconfig") "true")
2985 (("^LIBDIR =.*") "LIBDIR = lib\n"))
2986 (chdir "libs")
2987 #t))
2988 (add-after 'install 'install-symlink
2989 (lambda _
2990 (symlink "libzita-convolver.so"
2991 (string-append (assoc-ref %outputs "out")
2992 "/lib/libzita-convolver.so.3"))
2993 #t))
2994 ;; no configure script
2995 (delete 'configure))))
2996 (inputs `(("fftwf" ,fftwf)))
2997 (home-page "https://kokkinizita.linuxaudio.org")
2998 (synopsis "Fast, partitioned convolution engine library")
2999 (description
3000 "Zita convolver is a C++ library providing a real-time convolution
3001 engine.")
3002 (license license:gpl3+)))
3003
3004 (define-public zita-resampler
3005 (package
3006 (name "zita-resampler")
3007 (version "1.3.0")
3008 (source (origin
3009 (method url-fetch)
3010 (uri (string-append
3011 "http://kokkinizita.linuxaudio.org"
3012 "/linuxaudio/downloads/zita-resampler-"
3013 version ".tar.bz2"))
3014 (snippet
3015 ;; Don't optimize for a specific processor architecture.
3016 '(begin
3017 (substitute* '("apps/Makefile" "libs/Makefile")
3018 (("^CXXFLAGS \\+= -march=native") ""))
3019 #t))
3020 (modules '((guix build utils)))
3021 (sha256
3022 (base32
3023 "0r9ary5sc3y8vba5pad581ha7mgsrlyai83w7w4x2fmhfy64q0wq"))))
3024 (build-system gnu-build-system)
3025 (arguments
3026 `(#:tests? #f ; no "check" target
3027 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
3028 #:phases
3029 (modify-phases %standard-phases
3030 (add-after
3031 'unpack 'patch-makefile-and-enter-directory
3032 (lambda _
3033 (substitute* "libs/Makefile"
3034 (("ldconfig") "true")
3035 (("^LIBDIR =.*") "LIBDIR = lib\n"))
3036 (chdir "libs")
3037 #t))
3038 (add-after
3039 'install 'install-symlink
3040 (lambda _
3041 (symlink "libzita-resampler.so"
3042 (string-append (assoc-ref %outputs "out")
3043 "/lib/libzita-resampler.so.1"))
3044 #t))
3045 ;; no configure script
3046 (delete 'configure))))
3047 (home-page "https://kokkinizita.linuxaudio.org/linuxaudio/zita-resampler/resampler.html")
3048 (synopsis "C++ library for resampling audio signals")
3049 (description
3050 "Libzita-resampler is a C++ library for resampling audio signals. It is
3051 designed to be used within a real-time processing context, to be fast, and to
3052 provide high-quality sample rate conversion.")
3053 (license license:gpl3+)))
3054
3055 (define-public zita-alsa-pcmi
3056 (package
3057 (name "zita-alsa-pcmi")
3058 (version "0.2.0")
3059 (source (origin
3060 (method url-fetch)
3061 (uri (string-append
3062 "http://kokkinizita.linuxaudio.org"
3063 "/linuxaudio/downloads/zita-alsa-pcmi-"
3064 version ".tar.bz2"))
3065 (sha256
3066 (base32
3067 "1rgv332g82rrrlm4vdam6p2pyrisxbi7b3izfaa0pcjglafsy7j9"))))
3068 (build-system gnu-build-system)
3069 (arguments
3070 `(#:tests? #f ; no "check" target
3071 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
3072 #:phases
3073 (modify-phases %standard-phases
3074 (add-after 'unpack 'patch-makefile-and-enter-directory
3075 (lambda _
3076 (substitute* "libs/Makefile"
3077 (("ldconfig") "true")
3078 (("^LIBDIR =.*") "LIBDIR = lib\n"))
3079 (chdir "libs")
3080 #t))
3081 (add-after 'install 'install-symlink
3082 (lambda _
3083 (symlink "libzita-alsa-pcmi.so"
3084 (string-append (assoc-ref %outputs "out")
3085 "/lib/libzita-alsa-pcmi.so.0"))
3086 #t))
3087 ;; no configure script
3088 (delete 'configure))))
3089 (inputs
3090 `(("alsa-lib" ,alsa-lib)
3091 ("fftw" ,fftw)))
3092 (home-page "https://kokkinizita.linuxaudio.org")
3093 (synopsis "C++ wrapper around the ALSA API")
3094 (description
3095 "Zita-alsa-pcmi is a C++ wrapper around the ALSA API. It provides easy
3096 access to ALSA PCM devices, taking care of the many functions required to
3097 open, initialise and use a hw: device in mmap mode, and providing floating
3098 point audio data.")
3099 (license license:gpl3+)))
3100
3101 (define-public cuetools
3102 (package
3103 (name "cuetools")
3104 (version "1.4.1")
3105 (source (origin
3106 (method git-fetch)
3107 (uri (git-reference
3108 (url "https://github.com/svend/cuetools.git")
3109 (commit version)))
3110 (file-name (git-file-name name version))
3111 (sha256
3112 (base32
3113 "02ksv1ahf1v4cr2xbclsfv5x17m9ivzbssb5r8xjm97yh8a7spa3"))))
3114 (build-system gnu-build-system)
3115 ;; The source checkout is not bootstrapped.
3116 (native-inputs
3117 `(("autoconf" ,autoconf)
3118 ("automake" ,automake)
3119 ("flex" ,flex)
3120 ("bison" ,bison)))
3121 (synopsis "Cue and toc file parsers and utilities")
3122 (description "Cuetools is a set of programs that are useful for manipulating
3123 and using CUE sheet (cue) files and Table of Contents (toc) files. CUE and TOC
3124 files are a way to represent the layout of a data or audio CD in a
3125 machine-readable ASCII format.")
3126 (home-page "https://github.com/svend/cuetools")
3127 (license license:gpl2+)))
3128
3129 (define-public shntool
3130 (package
3131 (name "shntool")
3132 (version "3.0.10")
3133 (source (origin
3134 (method url-fetch)
3135 (uri (string-append "http://etree.org/shnutils/shntool/dist/src/"
3136 "shntool-" version ".tar.gz"))
3137 (sha256
3138 (base32
3139 "00i1rbjaaws3drkhiczaign3lnbhr161b7rbnjr8z83w8yn2wc3l"))))
3140 (build-system gnu-build-system)
3141 (synopsis "WAVE audio data processing tool")
3142 (description "shntool is a multi-purpose WAVE data processing and reporting
3143 utility. File formats are abstracted from its core, so it can process any file
3144 that contains WAVE data, compressed or not---provided there exists a format
3145 module to handle that particular file type. It can also generate CUE files, and
3146 use them split WAVE data into multiple files.")
3147 (home-page "http://etree.org/shnutils/shntool/")
3148 ;; 'install-sh' bears the x11 license
3149 (license (list license:gpl2+ license:x11))))
3150
3151 (define-public dcadec
3152 (package
3153 (name "dcadec")
3154 (version "0.2.0")
3155 (source (origin
3156 (method git-fetch)
3157 (uri (git-reference
3158 (url "https://github.com/foo86/dcadec.git")
3159 (commit (string-append "v" version))))
3160 (file-name (git-file-name name version))
3161 (sha256
3162 (base32
3163 "07nd0ajizrp1w02bsyfcv18431r8m8rq8gjfmz9wmckpg7cxj2hs"))))
3164 (build-system gnu-build-system)
3165 (arguments
3166 ;; Test files are missing: https://github.com/foo86/dcadec/issues/53
3167 '(#:tests? #f
3168 #:make-flags
3169 (list "CC=gcc"
3170 ;; Build shared library.
3171 "CONFIG_SHARED=1"
3172 (string-append "PREFIX=" (assoc-ref %outputs "out"))
3173 ;; Set proper runpath.
3174 (string-append "LDFLAGS=-Wl,-rpath="
3175 (assoc-ref %outputs "out")
3176 "/lib"))
3177 #:phases
3178 (modify-phases %standard-phases
3179 ;; No configure script, just a hand-written Makefile.
3180 (delete 'configure))))
3181 (synopsis "DTS Coherent Acoustics decoder")
3182 (description "Dcadec is a DTS Coherent Acoustics surround sound decoder
3183 with support for HD extensions.")
3184 (home-page "https://github.com/foo86/dcadec")
3185 (license license:lgpl2.1+)))
3186
3187 (define-public bs1770gain
3188 (package
3189 (name "bs1770gain")
3190 (version "0.6.0")
3191 (source
3192 (origin
3193 (method url-fetch)
3194 (uri (string-append "mirror://sourceforge/bs1770gain/bs1770gain/"
3195 version "/bs1770gain-" version ".tar.gz"))
3196 (sha256
3197 (base32 "0nnqixvw3x7i22nsr54n4bgm35z9nh3d9qj5s75cfd3ajjsjndyh"))
3198 (modules '((guix build utils)))
3199 (snippet
3200 '(begin
3201 ;; XXX
3202 (substitute* "libbg/bgx.c"
3203 (("#define BS.* ") "#define BS ")
3204 (("BS.*NO?.*N.*S.*E.*N.*SE?") "NO")
3205 (("\"( #|N).*\"") "\"\""))
3206 (substitute* (list "config.h"
3207 "configure.ac"
3208 "configure")
3209 (("https?://bs1770gain[^/]*/")
3210 "https://manpages.debian.org/sid/bs1770gain/bs1770gain.1.en.html"))
3211 #t))))
3212 (build-system gnu-build-system)
3213 (inputs `(("ffmpeg" ,ffmpeg)
3214 ("sox" ,sox)))
3215 (home-page "https://manpages.debian.org/sid/bs1770gain/bs1770gain.1.en.html")
3216 (synopsis "Tool to adjust loudness of media files")
3217 (description
3218 "BS1770GAIN is a loudness scanner compliant with ITU-R BS.1770 and its
3219 flavors EBU R128, ATSC A/85, and ReplayGain 2.0. It helps normalizing the
3220 loudness of audio and video files to the same level.")
3221 (license license:gpl2+)))
3222
3223 (define-public filteraudio
3224 (let ((revision "1")
3225 (commit "2fc669581e2a0ff87fba8de85861b49133306094"))
3226 (package
3227 (name "filteraudio")
3228 (version (string-append "0.0.0-" revision "."
3229 (string-take commit 7)))
3230 (source
3231 (origin
3232 (method git-fetch)
3233 (uri (git-reference
3234 (url "https://github.com/irungentoo/filter_audio.git")
3235 (commit commit)))
3236 (file-name (string-append name "-" version "-checkout"))
3237 (sha256
3238 (base32
3239 "0hbb290n3wb23f2k692a6bhc23nnqmxqi9sc9j15pnya8wifw64g"))))
3240 (build-system gnu-build-system)
3241 (arguments
3242 '(#:make-flags (list (string-append "PREFIX=" %output)
3243 "CC=gcc")
3244 #:tests? #f ; No tests
3245 #:phases
3246 (modify-phases %standard-phases
3247 ;; No configure script
3248 (delete 'configure))))
3249 (synopsis "Lightweight audio filtering library")
3250 (description "An easy to use audio filtering library made from webrtc
3251 code, used in @code{libtoxcore}.")
3252 (home-page "https://github.com/irungentoo/filter_audio")
3253 (license license:bsd-3))))
3254
3255 (define-public gsm
3256 (package
3257 (name "gsm")
3258 (version "1.0.18")
3259 (source
3260 (origin
3261 (method url-fetch)
3262 (uri
3263 (string-append "http://www.quut.com/" name "/" name
3264 "-" version ".tar.gz"))
3265 (sha256
3266 (base32
3267 "041amvpz8cvxykl3pwqldrzxligmmzcg8ncdnxbg32rlqf3q1xh4"))))
3268 (build-system gnu-build-system)
3269 (arguments
3270 `(#:test-target "tst"
3271 #:phases
3272 (modify-phases %standard-phases
3273 (add-before 'install 'pre-install
3274 (lambda _
3275 (let ((out (assoc-ref %outputs "out")))
3276 (substitute* "Makefile"
3277 (("INSTALL_ROOT\t=")
3278 (string-append "INSTALL_ROOT\t=\t" out)))
3279 (mkdir-p (string-append out "/inc"))
3280 (mkdir-p (string-append out "/man"))
3281 (mkdir-p (string-append out "/man/man1"))
3282 (mkdir-p (string-append out "/man/man3"))
3283 (mkdir-p (string-append out "/bin"))
3284 (mkdir-p (string-append out "/lib")))
3285 #t))
3286 (add-after 'install 'post-install
3287 (lambda _
3288 (let ((out (assoc-ref %outputs "out")))
3289 (rename-file (string-append out "/inc")
3290 (string-append out "/include"))
3291 (mkdir-p (string-append out "/include/gsm"))
3292 (copy-recursively "inc"
3293 (string-append out "/include/gsm")))
3294 #t))
3295 (delete 'configure)))) ; no configure script
3296 (synopsis "GSM 06.10 lossy speech compression library")
3297 (description "This C library provides an encoder and a decoder for the GSM
3298 06.10 RPE-LTP lossy speech compression algorithm.")
3299 (home-page "http://quut.com/gsm/")
3300 (license (license:non-copyleft "file://COPYRIGHT"))))
3301
3302 (define-public python-pyalsaaudio
3303 (package
3304 (name "python-pyalsaaudio")
3305 (version "0.8.4")
3306 (source (origin
3307 (method url-fetch)
3308 (uri (pypi-uri "pyalsaaudio" version))
3309 (sha256
3310 (base32
3311 "1180ypn9596rq4b7y7dyv627j1q0fqilmkkrckclnzsdakdgis44"))))
3312 (build-system python-build-system)
3313 (arguments
3314 `(#:tests? #f)) ; tests require access to ALSA devices.
3315 (inputs
3316 `(("alsa-lib" ,alsa-lib)))
3317 (home-page "http://larsimmisch.github.io/pyalsaaudio/")
3318 (synopsis "ALSA wrappers for Python")
3319 (description
3320 "This package contains wrappers for accessing the ALSA API from Python.
3321 It is currently fairly complete for PCM devices, and has some support for
3322 mixers.")
3323 (license license:psfl)))
3324
3325 (define-public python2-pyalsaaudio
3326 (package-with-python2 python-pyalsaaudio))
3327
3328 (define-public bluez-alsa
3329 (package
3330 (name "bluez-alsa")
3331 (version "1.2.0")
3332 (source (origin
3333 ;; The tarballs are mere snapshots and don't contain a
3334 ;; bootstrapped build system.
3335 (method git-fetch)
3336 (uri (git-reference
3337 (url "https://github.com/Arkq/bluez-alsa.git")
3338 (commit (string-append "v" version))))
3339 (file-name (string-append name "-" version "-checkout"))
3340 (sha256
3341 (base32
3342 "1qinf41wl2ihx54zmmhanycihwjkn7dn1cicq6pp4rqbiv79b95x"))))
3343 (build-system gnu-build-system)
3344 (native-inputs
3345 `(("autoconf" ,autoconf)
3346 ("automake" ,automake)
3347 ("libtool" ,libtool)
3348 ("pkg-config" ,pkg-config)))
3349 (inputs
3350 `(("alsa-lib" ,alsa-lib)
3351 ("bluez" ,bluez)
3352 ("glib" ,glib)
3353 ("libbsd" ,libbsd)
3354 ("ncurses" ,ncurses)
3355 ("ortp" ,ortp)
3356 ("sbc" ,sbc)))
3357 (home-page "https://github.com/Arkq/bluez-alsa")
3358 (synopsis "Bluetooth ALSA backend")
3359 (description "This project is a rebirth of a direct integration between
3360 Bluez and ALSA. Since Bluez >= 5, the build-in integration has been removed
3361 in favor of 3rd party audio applications. From now on, Bluez acts as a
3362 middleware between an audio application, which implements Bluetooth audio
3363 profile, and a Bluetooth audio device. BlueALSA registers all known Bluetooth
3364 audio profiles in Bluez, so in theory every Bluetooth device (with audio
3365 capabilities) can be connected. In order to access the audio stream, one has
3366 to connect to the ALSA PCM device called @code{bluealsa}. The device is based
3367 on the ALSA software PCM plugin.")
3368 (license license:expat)))
3369
3370 (define-public snd
3371 (package
3372 (name "snd")
3373 (version "19.6")
3374 (source (origin
3375 (method url-fetch)
3376 (uri (string-append "ftp://ccrma-ftp.stanford.edu/pub/Lisp/"
3377 "snd-" version ".tar.gz"))
3378 (sha256
3379 (base32
3380 "0s2qv8sznvw6559bi39qj9p072azh9qcb2b86w6w8clz2azjaa76"))))
3381 (build-system glib-or-gtk-build-system)
3382 (arguments
3383 `(#:tests? #f ; no tests
3384 #:out-of-source? #f ; for the 'install-doc' phase
3385 #:configure-flags
3386 (let* ((out (assoc-ref %outputs "out"))
3387 (docdir (string-append out "/share/doc/"
3388 ,name "-" ,version)))
3389 (list "--with-alsa" "--with-jack" "--with-gmp"
3390 (string-append "--with-doc-dir=" docdir)))
3391 #:phases
3392 (modify-phases %standard-phases
3393 (add-after 'install 'install-doc
3394 (lambda* (#:key outputs #:allow-other-keys)
3395 (let* ((out (assoc-ref outputs "out"))
3396 (doc (string-append out "/share/doc/"
3397 ,name "-" ,version)))
3398 (for-each
3399 (lambda (f)
3400 (install-file f doc))
3401 (find-files "." "\\.html$"))
3402 (copy-recursively "pix" (string-append doc "/pix"))
3403 #t))))))
3404 (native-inputs
3405 `(("pkg-config" ,pkg-config)))
3406 (inputs
3407 `(("alsa-lib" ,alsa-lib)
3408 ("fftw" ,fftw)
3409 ("flac" ,flac)
3410 ("gmp" ,gmp)
3411 ("gsl" ,gsl)
3412 ("gtk+" ,gtk+)
3413 ("jack" ,jack-1)
3414 ("libsamplerate" ,libsamplerate)
3415 ("mpc" ,mpc)
3416 ("mpfr" ,mpfr)
3417 ("mpg123" ,mpg123)
3418 ("speex" ,speex)
3419 ("timidity++" ,timidity++)
3420 ("vorbis-tools" ,vorbis-tools)
3421 ("wavpack" ,wavpack)))
3422 (synopsis "Sound editor")
3423 (home-page "https://ccrma.stanford.edu/software/snd/")
3424 (description
3425 "Snd is a sound editor modelled loosely after Emacs. It can be
3426 customized and extended using either the s7 Scheme implementation (included in
3427 the Snd sources), Ruby, or Forth.")
3428 (license (license:non-copyleft "file://COPYING"))))
3429
3430 (define-public noise-repellent
3431 (package
3432 (name "noise-repellent")
3433 (version "0.1.4")
3434 (source (origin
3435 (method git-fetch)
3436 (uri (git-reference
3437 (url "https://github.com/lucianodato/noise-repellent.git")
3438 (commit version)))
3439 (file-name (string-append name "-" version "-checkout"))
3440 (sha256
3441 (base32
3442 "0rd3dlmk3vivjmcr6x2x860y0j1d49c2j95j6ny50v184mwvn11j"))))
3443 (build-system gnu-build-system)
3444 (arguments
3445 `(#:make-flags
3446 (list "CC=gcc"
3447 (string-append "PREFIX=" (assoc-ref %outputs "out")))
3448 #:tests? #f ; there are none
3449 #:phases
3450 (modify-phases %standard-phases
3451 (delete 'configure))))
3452 (inputs
3453 `(("lv2" ,lv2)
3454 ("fftwf" ,fftwf)))
3455 (native-inputs
3456 `(("pkg-config" ,pkg-config)))
3457 (home-page "https://github.com/lucianodato/noise-repellent")
3458 (synopsis "LV2 plugin for broadband noise reduction")
3459 (description "Noise Repellent is an LV2 plugin to reduce noise. It has
3460 the following features:
3461
3462 @enumerate
3463 @item Spectral gating and spectral subtraction suppression rule
3464 @item Adaptive and manual noise thresholds estimation
3465 @item Adjustable noise floor
3466 @item Adjustable offset of thresholds to perform over-subtraction
3467 @item Time smoothing and a masking estimation to reduce artifacts
3468 @item Basic onset detector to avoid transients suppression
3469 @item Whitening of the noise floor to mask artifacts and to recover higher
3470 frequencies
3471 @item Option to listen to the residual signal
3472 @item Soft bypass
3473 @item Noise profile saved with the session
3474 @end enumerate
3475 ")
3476 (license license:lgpl3+)))
3477
3478 (define-public cli-visualizer
3479 (package
3480 (name "cli-visualizer")
3481 (version "1.6")
3482 (source
3483 (origin
3484 (method git-fetch)
3485 (uri (git-reference
3486 (url "https://github.com/dpayne/cli-visualizer.git")
3487 (commit version)))
3488 (file-name (git-file-name name version))
3489 (sha256
3490 (base32
3491 "0mirp8bk398di5xyq95iprmdyvplfghxqmrfj7jdnpy554vx7ppc"))))
3492 (build-system gnu-build-system)
3493 (native-inputs
3494 `(("which" ,which)))
3495 (inputs
3496 `(("fftw" ,fftw)
3497 ("googletest" ,googletest)
3498 ("ncurses" ,ncurses)
3499 ("pulseaudio" ,pulseaudio)))
3500 (arguments
3501 '(#:test-target "test"
3502 #:make-flags
3503 (list (string-append "PREFIX=" %output "/bin/") "ENABLE_PULSE=1")
3504 #:phases
3505 (modify-phases %standard-phases
3506 (add-after 'unpack 'remove-sudo
3507 (lambda _
3508 (substitute* "install.sh" (("sudo") ""))
3509 #t))
3510 (add-before 'check 'set-check-environment
3511 (lambda _
3512 (setenv "CXX" "g++")
3513 (setenv "CC" "gcc")
3514 #t))
3515 (add-before 'install 'make-prefix
3516 (lambda _
3517 (mkdir-p (string-append (assoc-ref %outputs "out") "/bin"))
3518 #t))
3519 (add-after 'install 'data
3520 (lambda _
3521 (for-each (lambda (file)
3522 (install-file file
3523 (string-append (assoc-ref %outputs "out")
3524 "/share/doc")))
3525 (find-files "examples"))
3526 #t)))))
3527 (home-page "https://github.com/dpayne/cli-visualizer/")
3528 (synopsis "Command-line audio visualizer")
3529 (description "@code{cli-visualizer} displays fast-Fourier
3530 transforms (FFTs) of the sound being played, as well as other graphical
3531 representations.")
3532 (license license:expat)))
3533
3534 (define-public cava
3535 (package
3536 (name "cava")
3537 (version "0.6.1")
3538 (source (origin
3539 (method git-fetch)
3540 (uri (git-reference
3541 (url "https://github.com/karlstav/cava.git")
3542 (commit version)))
3543 (file-name (git-file-name name version))
3544 (sha256
3545 (base32
3546 "1kvhqgijs29909w3sq9m0bslx2zxxn4b3i07kdz4hb0dqkppxpjy"))))
3547 (build-system gnu-build-system)
3548 (native-inputs
3549 `(("autoconf" ,autoconf)
3550 ("automake" ,automake)
3551 ("libtool" ,libtool)))
3552 (inputs
3553 `(("fftw" ,fftw)
3554 ("ncurses" ,ncurses)
3555 ("pulseaudio" ,pulseaudio)))
3556 (arguments
3557 `(#:configure-flags
3558 (list (string-append "PREFIX=" %output)
3559 (string-append "FONT_DIR=" %output "/share/consolefonts"))
3560 #:make-flags
3561 (let ((lib (string-append %output "/lib")))
3562 (list (string-append "cava_LDFLAGS = -L" lib " -Wl,-rpath " lib)))
3563 #:phases
3564 (modify-phases %standard-phases
3565 (replace 'bootstrap
3566 (lambda* (#:key outputs #:allow-other-keys)
3567 (setenv "HOME" (getcwd))
3568 (invoke "sh" "autogen.sh")))
3569 (add-before 'build 'make-cava-ldflags
3570 (lambda* (#:key outputs #:allow-other-keys)
3571 (mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
3572 #t))
3573 (add-after 'install 'data
3574 (lambda* (#:key outputs #:allow-other-keys)
3575 (for-each (lambda (file)
3576 (install-file file
3577 (string-append (assoc-ref outputs "out")
3578 "/share/doc/examples")))
3579 (find-files "example_files"))
3580 #t)))))
3581 (home-page "https://karlstav.github.io/cava/")
3582 (synopsis "Console audio visualizer for ALSA, MPD, and PulseAudio")
3583 (description "C.A.V.A. is a bar audio spectrum visualizer for the terminal
3584 using ALSA, MPD, PulseAudio, or a FIFO buffer as its input.")
3585 (license license:expat)))
3586
3587 (define-public fluid-3
3588 (let ((commit "871c8ce2002e8b3c198f532fdb4fbcce7914f951"))
3589 (package
3590 (name "fluid-3")
3591 (version "2.1")
3592 (source
3593 (origin
3594 (method url-fetch)
3595 ;; Only one file is required, but the release bundles the whole
3596 ;; software which is 50MiB as tar and 200MiB unpacked. The website
3597 ;; directly links the soundfont release to the github file download.
3598 (uri (string-append "https://github.com/musescore/MuseScore/raw/"
3599 commit "/share/sound/FluidR3Mono_GM.sf3"))
3600 (file-name (string-append name "-" version ".sf3"))
3601 (sha256
3602 (base32
3603 "1hjfg5i15bw9279007xs92zsggjgn4s4k9pc00s851l3kvc6dkfg"))))
3604 (build-system trivial-build-system)
3605 (arguments
3606 `(#:modules ((guix build utils))
3607 #:builder
3608 (begin
3609 (use-modules (guix build utils))
3610 (let ((file (assoc-ref %build-inputs "source"))
3611 (out (string-append %output "/share/soundfonts")))
3612 (mkdir-p out)
3613 (copy-file file (string-append out "/FluidR3Mono_GM.sf3"))
3614 #t))))
3615 (home-page "https://github.com/musescore/MuseScore/tree/master/share/sound")
3616 (synopsis "Pro-quality GM soundfont")
3617 (description "Fluid-3 is Frank Wen's pro-quality GM soundfont.")
3618 (license license:expat))))
3619
3620 (define-public libfdk
3621 (let ((commit "2326faaf8f2cdf2c3a9108ccdaf1d7551aec543e")
3622 (revision "0"))
3623 (package
3624 (name "libfdk")
3625 ;; The latest upstream revision, with many bug fixes.
3626 (version (git-version "0.1.6" revision commit))
3627 (source
3628 (origin
3629 (method git-fetch)
3630 (uri (git-reference
3631 (url "https://github.com/mstorsjo/fdk-aac")
3632 (commit commit)))
3633 (file-name (git-file-name name version))
3634 (sha256
3635 (base32
3636 "0yy6ndd9d61bwl283vl1r5kva2a4acc0f4r9g0sza156f2abr9ws"))))
3637 (build-system gnu-build-system)
3638 (native-inputs
3639 `(("autoconf" ,autoconf)
3640 ("automake" ,automake)
3641 ("libtool" ,libtool)))
3642 (home-page "https://github.com/mstorsjo/fdk-aac")
3643 (synopsis "Fraunhofer FDK AAC library")
3644 (description "FDK is a library for encoding and decoding Advanced Audio
3645 Coding (AAC) format audio, developed by Fraunhofer IIS, and included as part of
3646 Android. It supports several Audio Object Types including MPEG-2 and MPEG-4 AAC
3647 LC, HE-AAC (AAC LC + SBR), HE-AACv2 (LC + SBR + PS) as well AAC-LD (low delay)
3648 and AAC-ELD (enhanced low delay) for real-time communication. The encoding
3649 library supports sample rates up to 96 kHz and up to eight channels (7.1
3650 surround).")
3651 (license (license:fsf-free "https://github.com/mstorsjo/fdk-aac/blob/master/NOTICE"
3652 "https://www.gnu.org/licenses/license-list.html#fdk")))))
3653
3654 (define-public libopenshot-audio
3655 (package
3656 (name "libopenshot-audio")
3657 (version "0.1.8")
3658 (source (origin
3659 (method git-fetch)
3660 (uri (git-reference
3661 (url "https://github.com/OpenShot/libopenshot-audio")
3662 (commit (string-append "v" version))))
3663 (file-name (git-file-name name version))
3664 (sha256
3665 (base32
3666 "1fvp6nmf30xzkmcznakh8dv5vn9d7nq051pqcqv638hsfppkmcrl"))))
3667 (build-system cmake-build-system)
3668 (inputs
3669 `(("alsa-lib" ,alsa-lib)
3670 ;; The following are for JUCE GUI components:
3671 ("libx11" ,libx11)
3672 ("freetype" ,freetype)
3673 ("libxrandr" ,libxrandr)
3674 ("libxinerama" ,libxinerama)
3675 ("libxcursor" ,libxcursor)))
3676 (arguments
3677 `(#:tests? #f ;there are no tests
3678 #:configure-flags
3679 (list (string-append "-DCMAKE_CXX_FLAGS=-I"
3680 (assoc-ref %build-inputs "freetype")
3681 "/include/freetype2"))))
3682 (home-page "https://openshot.org")
3683 (synopsis "Audio editing and playback for OpenShot")
3684 (description "OpenShot Audio Library (libopenshot-audio) allows
3685 high-quality editing and playback of audio, and is based on the JUCE
3686 library.")
3687 (license license:lgpl3+)))
3688
3689 (define-public faudio
3690 (package
3691 (name "faudio")
3692 (version "19.09")
3693 (source
3694 (origin
3695 (method git-fetch)
3696 (uri (git-reference
3697 (url "https://github.com/FNA-XNA/FAudio.git")
3698 (commit version)))
3699 (file-name (string-append name "-" version "-checkout"))
3700 (sha256
3701 (base32 "0fagik55jmy3qmb27nhg0zxash1ahfkxphx8m8gs0pimqqrdrd9d"))))
3702 (arguments
3703 '(#:tests? #f ; No tests.
3704 #:configure-flags '("-DFFMPEG=ON")))
3705 (build-system cmake-build-system)
3706 (native-inputs `(("pkg-config" ,pkg-config)))
3707 (inputs `(("ffmpeg" ,ffmpeg)
3708 ("sdl2" ,sdl2)))
3709 (home-page "https://github.com/FNA-XNA/FAudio")
3710 (synopsis "XAudio reimplementation")
3711 (description "FAudio is an XAudio reimplementation that focuses solely on
3712 developing fully accurate DirectX Audio runtime libraries.")
3713 (license license:zlib)))
3714
3715 (define-public gnaural
3716 (package
3717 (name "gnaural")
3718 (version "20110606")
3719 (source
3720 (origin
3721 (method url-fetch)
3722 (uri (string-append "mirror://sourceforge/gnaural/Gnaural/gnaural_"
3723 version ".tar.xz"))
3724 (sha256
3725 (base32
3726 "1gq519c0imsh57zklyi0f8h64l3ai48lh672c834470z8c6kvbfi"))))
3727 (build-system gnu-build-system)
3728 (inputs
3729 `(("alsa-lib" ,alsa-lib)
3730 ("gtk+" ,gtk+-2)
3731 ("libsndfile" ,libsndfile)
3732 ("portaudio" ,portaudio)))
3733 (native-inputs
3734 `(("pkg-config" ,pkg-config)))
3735 (home-page "http://gnaural.sourceforge.net/")
3736 (synopsis "Binaural beat synthesizer")
3737 (description "Gnaural is a programmable auditory binaural beat synthesizer
3738 intended to be used for brainwave entrainment. Gnaural supports creation of
3739 binaural beat tracks of different frequencies and exporting of tracks into
3740 different audio formats. Gnaural can also be linked over the internet with
3741 other Gnaural instances, allowing synchronous sessions between many users.")
3742 (license license:gpl2+)))
3743
3744 (define-public darkice
3745 (package
3746 (name "darkice")
3747 (version "1.3")
3748 (source (origin
3749 (method url-fetch)
3750 (uri (string-append "mirror://sourceforge/darkice/darkice/"
3751 version "/darkice-" version ".tar.gz"))
3752 (sha256
3753 (base32 "1rlxds7ssq7nk2in4s46xws7xy9ylxsqgcz85hxjgh17lsm0y39c"))
3754 (patches
3755 (search-patches "darkice-workaround-fpermissive-error.patch"))))
3756 (build-system gnu-build-system)
3757 (native-inputs `(("pkg-config" ,pkg-config)))
3758 (inputs `(("lame" ,lame)
3759 ("libvorbis" ,libvorbis)
3760 ("opus" ,opus)
3761 ("twolame" ,twolame)
3762 ("alsa-lib" ,alsa-lib)
3763 ("pulseaudio" ,pulseaudio)
3764 ("jack" ,jack-1)
3765 ("libsamplerate" ,libsamplerate)))
3766 (arguments
3767 `(#:configure-flags
3768 (list (string-append "--with-lame-prefix="
3769 (assoc-ref %build-inputs "lame")))))
3770 (home-page "http://www.darkice.org/")
3771 (synopsis "Live audio streamer")
3772 (description "DarkIce is a live audio streamer. It takes audio input from
3773 a sound card, encodes it into Ogg Vorbis and/or mp3, and sends the audio
3774 stream to one or more IceCast and/or ShoutCast servers.")
3775 (license license:gpl3+)))