gnu: jalv: Update to 1.6.4.
[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.8.6")
1171 (source (origin
1172 (method url-fetch)
1173 (uri (string-append "mirror://sourceforge/faac/faad2-src/faad2-"
1174 (version-major+minor version) ".0/"
1175 "faad2-" version ".tar.gz"))
1176 (sha256
1177 (base32
1178 "089zqykqgmmysznvk0bi2pfvdqwclnn540d0zks83sv2pynpfjb5"))))
1179 (build-system gnu-build-system)
1180 (home-page "https://www.audiocoding.com/faad2.html")
1181 (synopsis "MPEG-4 and MPEG-2 AAC decoder")
1182 (description
1183 "FAAD2 is an MPEG-4 and MPEG-2 AAC decoder supporting LC, Main, LTP, SBR,
1184 PS, and DAB+.")
1185 (license license:gpl2)))
1186
1187 (define-public faust
1188 (package
1189 (name "faust")
1190 (version "0.9.90")
1191 (source (origin
1192 (method git-fetch)
1193 (uri (git-reference
1194 (url "https://github.com/grame-cncm/faust.git")
1195 (commit (string-append "v"
1196 (string-map (lambda (c)
1197 (if (char=? c #\.) #\- c))
1198 version)))))
1199 (file-name (string-append "faust-" version "-checkout"))
1200 (sha256
1201 (base32
1202 "0qc6iwjd3i80jdyjc186c6ywipmjzl8wlsp4050pbr56q4rlkd4z"))))
1203 (build-system gnu-build-system)
1204 (arguments
1205 `(#:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
1206 #:tests? #f
1207 #:phases
1208 (modify-phases %standard-phases
1209 ;; no "configure" script
1210 (delete 'configure)
1211 ;; Files appear under $out/share/faust that are read-only. The
1212 ;; install phase tries to overwrite them and fails, so we change
1213 ;; the permissions first.
1214 (add-before 'install 'fix-permissions
1215 (lambda _
1216 (for-each (lambda (file)
1217 (chmod file #o644))
1218 (find-files "architecture/max-msp" ".*"))
1219 #t)))))
1220 (native-inputs
1221 `(("unzip" ,unzip)))
1222 (home-page "http://faust.grame.fr/")
1223 (synopsis "Signal processing language")
1224 (description
1225 "Faust is a programming language for realtime audio signal processing.")
1226 (license license:gpl2+)))
1227
1228 (define-public faust-2
1229 (package
1230 (inherit faust)
1231 (version "2.5.23")
1232 (source (origin
1233 (method url-fetch)
1234 (uri (string-append "https://github.com/grame-cncm/faust/"
1235 "releases/download/" version
1236 "/faust-" version ".tar.gz"))
1237 (sha256
1238 (base32
1239 "1yz5jnr76hh7rmxkpdi7gyrw1wp4gyqfpq8zyl97qdi5ga5gjznq"))))
1240 (build-system gnu-build-system)
1241 (arguments
1242 (substitute-keyword-arguments (package-arguments faust)
1243 ((#:make-flags flags)
1244 `(list (string-append "prefix=" (assoc-ref %outputs "out"))
1245 "world"))))
1246 (native-inputs
1247 `(("llvm" ,llvm-3.8)
1248 ("which" ,which)
1249 ("xxd" ,xxd)
1250 ("ctags" ,emacs-minimal) ; for ctags
1251 ("pkg-config" ,pkg-config)))
1252 (inputs
1253 `(("libsndfile" ,libsndfile)
1254 ("libmicrohttpd" ,libmicrohttpd)
1255 ("ncurses" ,ncurses)
1256 ("openssl" ,openssl)
1257 ("zlib" ,zlib)))))
1258
1259 (define-public freepats
1260 (package
1261 (name "freepats")
1262 (version "20060219")
1263 (source (origin
1264 (method url-fetch)
1265 (uri (string-append "http://freepats.zenvoid.org/freepats-"
1266 version ".tar.bz2"))
1267 (sha256
1268 (base32
1269 "12iw36rd94zirll96cd5k0va7p5hxmf2shvjlhzihcmjaw8flq82"))))
1270 (build-system trivial-build-system)
1271 (arguments
1272 `(#:modules ((guix build utils))
1273 #:builder (begin
1274 (use-modules (guix build utils))
1275 (let ((out (string-append %output "/share/freepats")))
1276 (setenv "PATH" (string-append
1277 (assoc-ref %build-inputs "bzip2") "/bin:"
1278 (assoc-ref %build-inputs "tar") "/bin"))
1279 (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
1280 (chdir "freepats")
1281 ;; Use absolute pattern references
1282 (substitute* "freepats.cfg"
1283 (("Tone_000") (string-append out "/Tone_000"))
1284 (("Drum_000") (string-append out "/Drum_000")))
1285 (mkdir-p out)
1286 (copy-recursively "." out)
1287 #t))))
1288 (native-inputs
1289 `(("tar" ,tar)
1290 ("bzip2" ,bzip2)))
1291 (home-page "http://freepats.zenvoid.org")
1292 (synopsis "GUS compatible patches for MIDI players")
1293 (description
1294 "FreePats is a project to create a free and open set of GUS compatible
1295 patches that can be used with softsynths such as Timidity and WildMidi.")
1296 ;; GPLv2+ with exception for compositions using these patches.
1297 (license license:gpl2+)))
1298
1299 (define-public guitarix
1300 (package
1301 (name "guitarix")
1302 (version "0.38.1")
1303 (source (origin
1304 (method url-fetch)
1305 (uri (string-append
1306 "mirror://sourceforge/guitarix/guitarix/guitarix2-"
1307 version ".tar.xz"))
1308 (sha256
1309 (base32
1310 "0bw7xnrx062nwb1bfj9x660h7069ncmz77szcs8icpqxrvhs7z80"))))
1311 (build-system waf-build-system)
1312 (arguments
1313 `(#:tests? #f ; no "check" target
1314 #:python ,python-2
1315 #:configure-flags
1316 (list
1317 ;; Add the output lib directory to the RUNPATH.
1318 (string-append "--ldflags=-Wl,-rpath=" %output "/lib"))
1319 #:phases
1320 (modify-phases %standard-phases
1321 (add-after 'unpack 'fix-boost-includes
1322 (lambda _
1323 (substitute* "src/headers/gx_internal_plugins.h"
1324 (("namespace gx_jack" m)
1325 (string-append "#include <boost/noncopyable.hpp>\n" m)))
1326 (substitute* '("src/headers/gx_system.h"
1327 "src/headers/gx_parameter.h"
1328 "src/headers/gx_json.h")
1329 (("namespace gx_system" m)
1330 (string-append "#include <boost/noncopyable.hpp>\n" m)))
1331 #t)))))
1332 (inputs
1333 `(("libsndfile" ,libsndfile)
1334 ("boost" ,boost)
1335 ("curl" ,curl)
1336 ("avahi" ,avahi)
1337 ("eigen" ,eigen)
1338 ("lv2" ,lv2)
1339 ("lilv" ,lilv)
1340 ("ladspa" ,ladspa)
1341 ("jack" ,jack-1)
1342 ("gtkmm" ,gtkmm-2)
1343 ("gtk+" ,gtk+-2)
1344 ("fftwf" ,fftwf)
1345 ("lrdf" ,lrdf)
1346 ("zita-resampler" ,zita-resampler)
1347 ("zita-convolver" ,zita-convolver)))
1348 (native-inputs
1349 `(("gperf" ,gperf)
1350 ("faust" ,faust)
1351 ("intltool" ,intltool)
1352 ("gettext" ,gettext-minimal)
1353 ("pkg-config" ,pkg-config)))
1354 (native-search-paths
1355 (list (search-path-specification
1356 (variable "LV2_PATH")
1357 (files '("lib/lv2")))))
1358 (home-page "http://guitarix.org/")
1359 (synopsis "Virtual guitar amplifier")
1360 (description "Guitarix is a virtual guitar amplifier running JACK.
1361 Guitarix takes the signal from your guitar as a mono-signal from your sound
1362 card. The input is processed by a main amp and a rack-section. Both can be
1363 routed separately and deliver a processed stereo-signal via JACK. You may
1364 fill the rack with effects from more than 25 built-in modules including stuff
1365 from a simple noise gate to modulation effects like flanger, phaser or
1366 auto-wah.")
1367 (license license:gpl2+)))
1368
1369 (define-public guitarix-lv2
1370 (package (inherit guitarix)
1371 (name "guitarix-lv2")
1372 (arguments
1373 (substitute-keyword-arguments (package-arguments guitarix)
1374 ((#:configure-flags flags)
1375 `(cons "--no-standalone" ,flags))))))
1376
1377 (define-public rakarrack
1378 (package
1379 (name "rakarrack")
1380 (version "0.6.1")
1381 (source (origin
1382 (method url-fetch)
1383 (uri (string-append "mirror://sourceforge/rakarrack/rakarrack/"
1384 "rakarrack-" version "/rakarrack-"
1385 version ".tar.bz2"))
1386 (sha256
1387 (base32
1388 "1rpf63pdn54c4yg13k7cb1w1c7zsvl97c4qxcpz41c8l91xd55kn"))
1389 (modules '((guix build utils)))
1390 (snippet
1391 '(begin
1392 (substitute* '("src/process.C"
1393 "src/global.h")
1394 (("#include <Fl/") "#include <FL/"))
1395 #t))))
1396 (build-system gnu-build-system)
1397 (inputs
1398 `(("alsa-utils" ,alsa-utils)
1399 ("fltk" ,fltk)
1400 ("libx11" ,libx11)
1401 ("libxext" ,libxext)
1402 ("libxfixes" ,libxfixes)
1403 ("libxft" ,libxft)
1404 ("libxrender" ,libxrender)
1405 ("libxpm" ,libxpm)
1406 ("fontconfig" ,fontconfig)
1407 ("freetype" ,freetype)
1408 ("jack" ,jack-1)
1409 ("alsa-lib" ,alsa-lib)
1410 ("libsndfile" ,libsndfile)
1411 ("libsamplerate" ,libsamplerate)
1412 ("zlib" ,zlib)))
1413 (home-page "http://rakarrack.sourceforge.net/")
1414 (synopsis "Audio effects processor")
1415 (description
1416 "Rakarrack is a richly featured multi-effects processor emulating a
1417 guitar effects pedalboard. Effects include compressor, expander, noise gate,
1418 equalizers, exciter, flangers, chorus, various delay and reverb effects,
1419 distortion modules and many more. Most of the effects engine is built from
1420 modules found in the excellent software synthesizer ZynAddSubFX. Presets and
1421 user interface are optimized for guitar, but Rakarrack processes signals in
1422 stereo while it does not apply internal band-limiting filtering, and thus is
1423 well suited to all musical instruments and vocals.")
1424 ;; The code is explicitly licensed under the GPL version 2 only.
1425 (license license:gpl2)))
1426
1427 (define-public ir
1428 (package
1429 (name "ir")
1430 (version "1.3.2")
1431 (source (origin
1432 (method url-fetch)
1433 ;; The original home-page is gone. Download the tarball from an
1434 ;; archive mirror instead.
1435 (uri (list (string-append
1436 "https://web.archive.org/web/20150803095032/"
1437 "http://factorial.hu/system/files/ir.lv2-"
1438 version ".tar.gz")
1439 (string-append
1440 "https://mirrors.kernel.org/gentoo/distfiles/ir.lv2-"
1441 version ".tar.gz")))
1442 (sha256
1443 (base32
1444 "1jh2z01l9m4ar7yz0n911df07dygc7n4cl59p7qdjbh0nvkm747g"))))
1445 (build-system gnu-build-system)
1446 (arguments
1447 `(#:tests? #f ; no tests
1448 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
1449 #:phases (modify-phases %standard-phases
1450 (delete 'configure)))) ; no configure script
1451 (inputs
1452 `(("libsndfile" ,libsndfile)
1453 ("libsamplerate" ,libsamplerate)
1454 ("lv2" ,lv2)
1455 ("glib" ,glib)
1456 ("gtk+" ,gtk+-2)
1457 ("zita-convolver" ,zita-convolver)))
1458 (native-inputs
1459 `(("pkg-config" ,pkg-config)))
1460 (native-search-paths
1461 (list (search-path-specification
1462 (variable "LV2_PATH")
1463 (files '("lib/lv2")))))
1464 ;; Link to an archived copy of the home-page since the original is gone.
1465 (home-page (string-append "https://web.archive.org/web/20150803095032/"
1466 "http://factorial.hu/plugins/lv2/ir"))
1467 (synopsis "LV2 convolution reverb")
1468 (description
1469 "IR is a low-latency, real-time, high performance signal convolver
1470 especially for creating reverb effects. It supports impulse responses with 1,
1471 2 or 4 channels, in any soundfile format supported by libsndfile.")
1472 (license license:gpl2+)))
1473
1474 (define-public jack-1
1475 (package
1476 (name "jack")
1477 (version "0.125.0")
1478 (source (origin
1479 (method url-fetch)
1480 (uri (string-append
1481 "http://jackaudio.org/downloads/jack-audio-connection-kit-"
1482 version
1483 ".tar.gz"))
1484 (sha256
1485 (base32
1486 "0i6l25dmfk2ji2lrakqq9icnwjxklgcjzzk65dmsff91z2zva5rm"))))
1487 (build-system gnu-build-system)
1488 (arguments
1489 `(#:phases (modify-phases %standard-phases
1490 (add-after 'unpack 'patch-configure
1491 (lambda _
1492 (substitute* "configure"
1493 ;; Install to <out/lib> regardless of platform.
1494 (("libnn=lib64") "libnn=lib"))
1495 #t)))))
1496 (inputs
1497 `(("alsa-lib" ,alsa-lib)
1498 ("readline" ,readline)))
1499 ;; uuid.h is included in the JACK type headers
1500 ;; db.h is included in the libjack metadata headers
1501 (propagated-inputs
1502 `(("libuuid" ,util-linux)
1503 ("bdb" ,bdb)))
1504 (native-inputs
1505 `(("pkg-config" ,pkg-config)))
1506 (home-page "http://jackaudio.org/")
1507 (synopsis "JACK audio connection kit")
1508 (description
1509 "JACK is a low-latency audio server. It can connect a number of
1510 different applications to an audio device, as well as allowing them to share
1511 audio between themselves. JACK is different from other audio server efforts
1512 in that it has been designed from the ground up to be suitable for
1513 professional audio work. This means that it focuses on two key areas:
1514 synchronous execution of all clients, and low latency operation.")
1515 ;; Most files are licensed under the GPL. However, the libjack/ tree is
1516 ;; licensed under the LGPL in order to allow for proprietary usage.
1517 (license (list license:gpl2+ license:lgpl2.1+))))
1518
1519 ;; Packages depending on JACK should always prefer jack-1. Both jack-1 and
1520 ;; jack-2 implement the same API. JACK2 is provided primarily as a client
1521 ;; program for users who might benefit from the D-BUS features.
1522 (define-public jack-2
1523 (package (inherit jack-1)
1524 (name "jack2")
1525 (version "1.9.13")
1526 (source (origin
1527 (method url-fetch)
1528 (uri (string-append "https://github.com/jackaudio/jack2/releases/"
1529 "download/v" version "/jack2-"
1530 version ".tar.gz"))
1531 (file-name (string-append name "-" version ".tar.gz"))
1532 (sha256
1533 (base32
1534 "1d1d403jn4366mqig6g8ghr8057b3rn7gs26b5p3rkal34j20qw2"))))
1535 (build-system waf-build-system)
1536 (arguments
1537 `(#:tests? #f ; no check target
1538 #:configure-flags '("--dbus"
1539 "--alsa")
1540 #:phases
1541 (modify-phases %standard-phases
1542 (add-before 'configure 'set-linkflags
1543 (lambda _
1544 ;; Add $libdir to the RUNPATH of all the binaries.
1545 (substitute* "wscript"
1546 ((".*CFLAGS.*-Wall.*" m)
1547 (string-append m
1548 " conf.env.append_unique('LINKFLAGS',"
1549 "'-Wl,-rpath=" %output "/lib')\n")))
1550 #t))
1551 (add-after 'install 'wrap-python-scripts
1552 (lambda* (#:key inputs outputs #:allow-other-keys)
1553 ;; Make sure 'jack_control' runs with the correct PYTHONPATH.
1554 (let* ((out (assoc-ref outputs "out"))
1555 (path (getenv "PYTHONPATH")))
1556 (wrap-program (string-append out "/bin/jack_control")
1557 `("PYTHONPATH" ":" prefix (,path))))
1558 #t)))))
1559 (inputs
1560 `(("alsa-lib" ,alsa-lib)
1561 ("dbus" ,dbus)
1562 ("expat" ,expat)
1563 ("libsamplerate" ,libsamplerate)
1564 ("opus" ,opus)
1565 ("python-dbus" ,python-dbus)
1566 ("readline" ,readline)))
1567 (native-inputs
1568 `(("pkg-config" ,pkg-config)))
1569 ;; Most files are under GPLv2+, but some headers are under LGPLv2.1+
1570 (license (list license:gpl2+ license:lgpl2.1+))))
1571
1572 (define-public jalv
1573 (package
1574 (name "jalv")
1575 (version "1.6.4")
1576 (source (origin
1577 (method url-fetch)
1578 (uri (string-append "https://download.drobilla.net/jalv-"
1579 version ".tar.bz2"))
1580 (sha256
1581 (base32
1582 "1wwfn7yzbs37s2rdlfjgks63svd5g14yyzd2gdl7h0z12qncwsy2"))))
1583 (build-system waf-build-system)
1584 (arguments
1585 `(#:tests? #f ; no check target
1586 #:python ,python-2))
1587 (inputs
1588 `(("lv2" ,lv2)
1589 ("lilv" ,lilv)
1590 ("suil" ,suil)
1591 ("gtk2" ,gtk+-2)
1592 ("gtk3" ,gtk+)
1593 ("gtkmm" ,gtkmm-2)
1594 ("qtbase" ,qtbase)
1595 ("jack" ,jack-1)))
1596 (native-inputs
1597 `(("pkg-config" ,pkg-config)))
1598 (home-page "https://drobilla.net/software/jalv/")
1599 (synopsis "Simple LV2 host for JACK")
1600 (description
1601 "Jalv is a simple but fully featured LV2 host for JACK. It runs LV2
1602 plugins and exposes their ports as JACK ports, essentially making any LV2
1603 plugin function as a JACK application.")
1604 (license license:isc)))
1605
1606 (define-public ladspa
1607 (package
1608 (name "ladspa")
1609 (version "1.13")
1610 (source
1611 (origin
1612 (method url-fetch)
1613 ;; Since the official link is dead,
1614 ;; we download the tarball from Debian or Internet Archive.
1615 (uri (list (string-append "http://http.debian.net"
1616 "/debian/pool/main/l/ladspa-sdk/ladspa-sdk_"
1617 version ".orig.tar.gz")
1618 (string-append "https://web.archive.org/web/20140717172251/"
1619 "http://www.ladspa.org/download/ladspa_sdk_"
1620 version ".tgz")))
1621 (sha256
1622 (base32
1623 "0srh5n2l63354bc0srcrv58rzjkn4gv8qjqzg8dnq3rs4m7kzvdm"))))
1624 (build-system gnu-build-system)
1625 (arguments
1626 `(#:tests? #f ; the "test" target is a listening test only
1627 #:phases
1628 (modify-phases %standard-phases
1629 (replace 'configure
1630 (lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
1631 (chdir "src")
1632 (let ((out (assoc-ref outputs "out")))
1633 (substitute* "makefile"
1634 (("/usr/lib/ladspa/") (string-append out "/lib/ladspa/"))
1635 (("/usr/include/") (string-append out "/include/"))
1636 (("/usr/bin/") (string-append out "/bin/"))
1637 (("-mkdirhier") "mkdir -p")
1638 (("^CC.*") "CC = gcc\n")
1639 (("^CPP.*") "CPP = g++\n")))
1640 #t))
1641 (delete 'build))))
1642 ;; Since the home page is gone, we provide a link to the archived version.
1643 (home-page
1644 "https://web.archive.org/web/20140729190945/http://www.ladspa.org/")
1645 (synopsis "Linux Audio Developer's Simple Plugin API (LADSPA)")
1646 (description
1647 "LADSPA is a standard that allows software audio processors and effects
1648 to be plugged into a wide range of audio synthesis and recording packages.")
1649 (license license:lgpl2.1+)))
1650
1651 (define-public lash
1652 (package
1653 (name "lash")
1654 (version "0.6.0-rc2")
1655 (source (origin
1656 (method url-fetch)
1657 ;; The tilde is not permitted in the builder name, but is used
1658 ;; in the tarball.
1659 (uri (string-append
1660 "mirror://savannah/lash/lash-"
1661 (string-join (string-split version #\-) "~")
1662 ".tar.bz2"))
1663 (file-name (string-append name "-" version ".tar.bz2"))
1664 (sha256
1665 (base32
1666 "12z1vx3krrzsfccpah9xjs68900xvr7bw92wx8np5871i2yv47iw"))))
1667 (build-system gnu-build-system)
1668 (arguments
1669 '(;; Glibc no longer includes Sun RPC support, so tell the build system
1670 ;; to use libtirpc instead.
1671 #:make-flags (list (string-append "CFLAGS=-I"
1672 (assoc-ref %build-inputs "libtirpc")
1673 "/include/tirpc -ltirpc"))
1674 #:phases
1675 (modify-phases %standard-phases
1676 ;; lashd embeds an ancient version of sigsegv so we just skip it
1677 (add-after 'unpack 'skip-lashd
1678 (lambda _
1679 (substitute* '("Makefile.am" "Makefile.in")
1680 (("lashd ") ""))
1681 #t)))
1682 #:configure-flags '("--disable-static")))
1683 (inputs
1684 `(("bdb" ,bdb)
1685 ("gtk" ,gtk+-2)
1686 ("jack" ,jack-1)
1687 ("libtirpc" ,libtirpc)
1688 ("readline" ,readline)
1689 ("python" ,python-2)))
1690 ;; According to pkg-config, packages depending on lash also need to have
1691 ;; at least the following packages declared as inputs.
1692 (propagated-inputs
1693 `(("alsa-lib" ,alsa-lib)
1694 ("dbus" ,dbus)
1695 ("libxml2" ,libxml2)))
1696 (native-inputs
1697 `(("pkg-config" ,pkg-config)))
1698 (home-page "https://www.nongnu.org/lash/")
1699 (synopsis "Audio application session manager")
1700 (description
1701 "LASH is a session management system for audio applications. It allows
1702 you to save and restore audio sessions consisting of multiple interconneced
1703 applications, restoring program state (i.e. loaded patches) and the
1704 connections between them.")
1705 (license license:gpl2+)))
1706
1707 (define-public libbs2b
1708 (package
1709 (name "libbs2b")
1710 (version "3.1.0")
1711 (source (origin
1712 (method url-fetch)
1713 (uri (string-append "mirror://sourceforge/bs2b/libbs2b/" version
1714 "/libbs2b-" version ".tar.lzma"))
1715 (sha256
1716 (base32
1717 "1mcc4gjkmphczjybnsrip3gq1f974knzys7x49bv197xk3fn8wdr"))))
1718 (build-system gnu-build-system)
1719 (native-inputs `(("pkg-config" ,pkg-config)))
1720 (inputs `(("libsndfile" ,libsndfile)))
1721 (home-page "https://sourceforge.net/projects/bs2b/")
1722 (synopsis "Bauer stereophonic-to-binaural DSP")
1723 (description
1724 "The Bauer stereophonic-to-binaural DSP (bs2b) library and plugins is
1725 designed to improve headphone listening of stereo audio records. Recommended
1726 for headphone prolonged listening to disable superstereo fatigue without
1727 essential distortions.")
1728 (license license:expat)))
1729
1730 (define-public liblo
1731 (package
1732 (name "liblo")
1733 (version "0.30")
1734 (source (origin
1735 (method url-fetch)
1736 (uri (string-append "mirror://sourceforge/liblo/liblo/" version
1737 "/liblo-" version ".tar.gz"))
1738 (sha256
1739 (base32
1740 "06wdjzxjdshr6hyl4c94yvg3jixiylap8yjs8brdfpm297gck9rh"))))
1741 (build-system gnu-build-system)
1742 (arguments
1743 `(;; liblo test FAILED
1744 ;; liblo server error 19 in setsockopt(IP_ADD_MEMBERSHIP): No such device
1745 #:tests? #f))
1746 (home-page "http://liblo.sourceforge.net")
1747 (synopsis "Implementation of the Open Sound Control protocol")
1748 (description
1749 "liblo is a lightweight library that provides an easy to use
1750 implementation of the Open Sound Control (@dfn{OSC}) protocol.")
1751 (license license:lgpl2.1+)))
1752
1753 (define-public python-pyaudio
1754 (package
1755 (name "python-pyaudio")
1756 (version "0.2.11")
1757 (source
1758 (origin
1759 (method url-fetch)
1760 (uri (pypi-uri "PyAudio" version))
1761 (sha256
1762 (base32
1763 "0x7vdsigm7xgvyg3shd3lj113m8zqj2pxmrgdyj66kmnw0qdxgwk"))))
1764 (build-system python-build-system)
1765 (inputs
1766 `(("portaudio" ,portaudio)))
1767 (home-page "https://people.csail.mit.edu/hubert/pyaudio/")
1768 (synopsis "Bindings for PortAudio v19")
1769 (description "This package provides bindings for PortAudio v19, the
1770 cross-platform audio input/output stream library.")
1771 (license license:expat)))
1772
1773 (define-public python2-pyaudio
1774 (package-with-python2 python-pyaudio))
1775
1776 (define-public python-pyliblo
1777 (package
1778 (name "python-pyliblo")
1779 (version "0.10.0")
1780 (source (origin
1781 (method url-fetch)
1782 (uri (string-append "http://das.nasophon.de/download/pyliblo-"
1783 version ".tar.gz"))
1784 (sha256
1785 (base32
1786 "13vry6xhxm7adnbyj28w1kpwrh0kf7nw83cz1yq74wl21faz2rzw"))))
1787 (build-system python-build-system)
1788 (arguments `(#:tests? #f)) ;no tests
1789 (native-inputs
1790 `(("python-cython" ,python-cython)))
1791 (inputs
1792 `(("liblo" ,liblo)))
1793 (home-page "http://das.nasophon.de/pyliblo/")
1794 (synopsis "Python bindings for liblo")
1795 (description
1796 "Pyliblo is a Python wrapper for the liblo Open Sound Control (OSC)
1797 library. It supports almost the complete functionality of liblo, allowing you
1798 to send and receive OSC messages using a nice and simple Python API. Also
1799 included are the command line utilities @code{send_osc} and @code{dump_osc}.")
1800 (license license:lgpl2.1+)))
1801
1802 (define-public python2-pyliblo
1803 (package-with-python2 python-pyliblo))
1804
1805 (define-public lilv
1806 (package
1807 (name "lilv")
1808 (version "0.24.6")
1809 (source (origin
1810 (method url-fetch)
1811 (uri (string-append "https://download.drobilla.net/lilv-"
1812 version ".tar.bz2"))
1813 (sha256
1814 (base32
1815 "1p3hafsxgs5d4za7n66lf5nz74qssfqpmk520cm7iq2njvvlqm2z"))))
1816 (build-system waf-build-system)
1817 (arguments
1818 `(#:tests? #f ; no check target
1819 #:phases
1820 (modify-phases %standard-phases
1821 (add-before 'configure 'set-ldflags
1822 (lambda* (#:key outputs #:allow-other-keys)
1823 (setenv "LDFLAGS"
1824 (string-append "-Wl,-rpath="
1825 (assoc-ref outputs "out") "/lib"))
1826 #t))
1827 (add-after 'unpack 'full-store-path-to-shared-library
1828 (lambda* (#:key outputs #:allow-other-keys)
1829 (with-directory-excursion "bindings/python"
1830 (substitute* "lilv.py"
1831 (("liblilv-0.so") (string-append (assoc-ref outputs "out")
1832 "/lib/liblilv-0.so"))))
1833 #t)))))
1834 ;; Required by lilv-0.pc.
1835 (propagated-inputs
1836 `(("lv2" ,lv2)
1837 ("serd" ,serd)
1838 ("sord" ,sord)
1839 ("sratom" ,sratom)))
1840 (native-inputs
1841 `(("python" ,python)
1842 ("pkg-config" ,pkg-config)))
1843 (home-page "https://drobilla.net/software/lilv")
1844 (synopsis "Library to simplify use of LV2 plugins in applications")
1845 (description
1846 "Lilv is a C library to make the use of LV2 plugins as simple as possible
1847 for applications. Lilv is the successor to SLV2, rewritten to be
1848 significantly faster and have minimal dependencies.")
1849 (license license:isc)))
1850
1851 (define-public lv2
1852 (package
1853 (name "lv2")
1854 (version "1.16.0")
1855 (source (origin
1856 (method url-fetch)
1857 (uri (string-append "http://lv2plug.in/spec/lv2-"
1858 version ".tar.bz2"))
1859 (sha256
1860 (base32
1861 "1ppippbpdpv13ibs06b0bixnazwfhiw0d0ja6hx42jnkgdyp5hyy"))))
1862 (build-system waf-build-system)
1863 (arguments
1864 `(#:tests? #f ; no check target
1865 #:configure-flags '("--no-plugins")))
1866 (inputs
1867 ;; Leaving off cairo and gtk+-2.0 which are needed for example plugins
1868 `(("libsndfile" ,libsndfile)))
1869 (native-inputs
1870 `(("pkg-config" ,pkg-config)))
1871 (home-page "http://lv2plug.in/")
1872 (synopsis "LV2 audio plugin specification")
1873 (description
1874 "LV2 is an open specification for audio plugins and host applications.
1875 At its core, LV2 is a simple stable interface, accompanied by extensions which
1876 add functionality to support the needs of increasingly powerful audio
1877 software.")
1878 (license license:isc)))
1879
1880 (define-public lv2-mda-piano
1881 (package
1882 (name "lv2-mda-piano")
1883 (version "0.0.2")
1884 (source (origin
1885 (method git-fetch)
1886 (uri (git-reference
1887 (url "http://git.elephly.net/software/lv2-mdametapiano.git")
1888 (commit version)))
1889 (file-name (git-file-name name version))
1890 (sha256
1891 (base32
1892 "07lywf6lpfpndg3i9w752mmlg2hgn1bwp23h8b0mdj6awh67abqd"))))
1893 (build-system gnu-build-system)
1894 (arguments
1895 `(#:make-flags (list
1896 "TYPE=mdaPiano"
1897 (string-append "PREFIX=" (assoc-ref %outputs "out")))
1898 #:tests? #f ; no check target
1899 #:phases (modify-phases %standard-phases (delete 'configure))))
1900 (inputs
1901 `(("lv2" ,lv2)
1902 ("lvtk" ,lvtk)))
1903 (native-inputs
1904 `(("pkg-config" ,pkg-config)))
1905 (native-search-paths
1906 (list (search-path-specification
1907 (variable "LV2_PATH")
1908 (files '("lib/lv2")))))
1909 (home-page "http://elephly.net/lv2/mdapiano.html")
1910 (synopsis "LV2 port of the mda Piano plugin")
1911 (description "An LV2 port of the mda Piano VSTi.")
1912 (license license:gpl3+)))
1913
1914 (define-public lv2-mda-epiano
1915 (package (inherit lv2-mda-piano)
1916 (name "lv2-mda-epiano")
1917 (arguments
1918 `(#:make-flags (list
1919 "TYPE=mdaEPiano"
1920 (string-append "PREFIX=" (assoc-ref %outputs "out")))
1921 #:tests? #f ; no check target
1922 #:phases (modify-phases %standard-phases (delete 'configure))))
1923 (home-page "http://elephly.net/lv2/mdaepiano.html")
1924 (synopsis "LV2 port of the mda EPiano plugin")
1925 (description "An LV2 port of the mda EPiano VSTi.")))
1926
1927 (define-public lvtk
1928 (package
1929 (name "lvtk")
1930 (version "1.2.0")
1931 (source (origin
1932 (method git-fetch)
1933 (uri (git-reference
1934 (url "https://github.com/lvtk/lvtk.git")
1935 (commit version)))
1936 (file-name (git-file-name name version))
1937 (sha256
1938 (base32
1939 "1b01zvzl70ana6l1kn8fgyr7msnn3c7x61cgw7fdpp50322352p8"))))
1940 (build-system waf-build-system)
1941 (arguments
1942 `(#:tests? #f ; no check target
1943 #:python ,python-2
1944 #:configure-flags
1945 (list (string-append "--boost-includes="
1946 (assoc-ref %build-inputs "boost")
1947 "/include"))))
1948 (inputs
1949 `(("boost" ,boost)
1950 ("gtkmm" ,gtkmm-2)
1951 ("lv2" ,lv2)))
1952 (native-inputs
1953 `(("pkg-config" ,pkg-config)))
1954 (home-page "https://github.com/lvtk/lvtk")
1955 (synopsis "C++ libraries for LV2 plugins")
1956 (description
1957 "The LV2 Toolkit (LVTK) contains libraries that wrap the LV2 C API and
1958 extensions into easy to use C++ classes. It is the successor of
1959 lv2-c++-tools.")
1960 (license license:gpl3+)))
1961
1962 (define-public openal
1963 (package
1964 (name "openal")
1965 (version "1.19.1")
1966 (source (origin
1967 (method url-fetch)
1968 (uri (string-append
1969 "http://openal-soft.org/openal-releases/openal-soft-"
1970 version ".tar.bz2"))
1971 (sha256
1972 (base32
1973 "1sdjhkz2gd6lbnwphi1b6aw3br4wv2lik5vnqh6mxfc8a7zqfbsw"))))
1974 (build-system cmake-build-system)
1975 (arguments
1976 `(#:tests? #f ; no check target
1977 #:phases
1978 (modify-phases %standard-phases
1979 (add-after
1980 'unpack 'use-full-library-paths
1981 (lambda* (#:key inputs #:allow-other-keys)
1982 (substitute* "Alc/backends/pulseaudio.c"
1983 (("#define PALIB \"libpulse\\.so\\.0\"")
1984 (string-append "#define PALIB \""
1985 (assoc-ref inputs "pulseaudio")
1986 "/lib/libpulse.so.0"
1987 "\"")))
1988 (substitute* "Alc/backends/alsa.c"
1989 (("LoadLib\\(\"libasound\\.so\\.2\"\\)")
1990 (string-append "LoadLib(\""
1991 (assoc-ref inputs "alsa-lib")
1992 "/lib/libasound.so.2"
1993 "\")")))
1994 #t)))))
1995 (native-inputs
1996 `(;; FIXME: On i686-linux, GCC 7 hits an internal compiler error
1997 ;; upon building utils/makehrtf.c:3281:
1998 ;; "internal compiler error: in gen_rtx_SUBREG, at emit-rtl.c:908"
1999 ;; https://ci.guix.gnu.org/log/r2fjx9m75m9rifg2yjbnn853wqy2547n-openal-1.19.1
2000 ;; Remove this when the default compiler is GCC 9 or later.
2001 ("gcc" ,gcc-9)))
2002 (inputs
2003 `(("alsa-lib" ,alsa-lib)
2004 ("pulseaudio" ,pulseaudio)))
2005 (synopsis "3D audio API")
2006 (description
2007 "OpenAL provides capabilities for playing audio in a virtual 3D
2008 environment. Distance attenuation, doppler shift, and directional sound
2009 emitters are among the features handled by the API. More advanced effects,
2010 including air absorption, occlusion, and environmental reverb, are available
2011 through the EFX extension. It also facilitates streaming audio, multi-channel
2012 buffers, and audio capture.")
2013 (home-page "http://openal-soft.org/")
2014 (license license:lgpl2.0+)))
2015
2016 (define-public freealut
2017 (package
2018 (name "freealut")
2019 (version "1.1.0")
2020 (source (origin
2021 (method url-fetch)
2022 ;; Upstream url is unclear, many systems use Fedora, there is also
2023 ;; https://github.com/vancegroup/freealut though the status of it
2024 ;; (official? unofficial?) is not clear.
2025 (uri (string-append
2026 "https://pkgs.fedoraproject.org/repo/pkgs/" name "/" name "-"
2027 version ".tar.gz" "/e089b28a0267faabdb6c079ee173664a/" name
2028 "-" version ".tar.gz"))
2029 (sha256
2030 (base32
2031 "0kzlil6112x2429nw6mycmif8y6bxr2cwjcvp18vh6s7g63ymlb0"))))
2032 (build-system cmake-build-system)
2033 (arguments
2034 `(#:tests? #f)) ; no check target
2035 (inputs
2036 `(("openal" ,openal)))
2037 (synopsis "Free implementation of OpenAL's ALUT standard")
2038 (description "freealut is the OpenAL Utility Toolkit.")
2039 (home-page "http://kcat.strangesoft.net/openal.html")
2040 (license license:lgpl2.0)))
2041
2042 (define-public patchage
2043 (package
2044 (name "patchage")
2045 (version "1.0.0")
2046 (source (origin
2047 (method url-fetch)
2048 (uri (string-append "https://download.drobilla.net/patchage-"
2049 version
2050 ".tar.bz2"))
2051 (sha256
2052 (base32
2053 "1agdpwwi42176l4mxj0c4fsvdiv1ig56bfnnx0msckxmy57df8bb"))))
2054 (build-system waf-build-system)
2055 (arguments
2056 `(#:tests? #f ; no check target
2057 #:python ,python-2))
2058 (inputs
2059 `(("alsa-lib" ,alsa-lib)
2060 ("boost" ,boost)
2061 ("jack" ,jack-1)
2062 ("ganv" ,ganv)
2063 ("glibmm" ,glibmm)
2064 ("gtkmm" ,gtkmm-2)
2065 ("dbus-glib" ,dbus-glib)))
2066 (native-inputs
2067 `(("pkg-config" ,pkg-config)))
2068 (home-page "https://drobilla.net/software/patchage/")
2069 (synopsis "Modular patch bay for audio and MIDI systems")
2070 (description
2071 "Patchage is a modular patch bay for audio and MIDI systems based on JACK
2072 and ALSA.")
2073 (license license:gpl3+)))
2074
2075 (define-public pcaudiolib
2076 (package
2077 (name "pcaudiolib")
2078 (version "1.1")
2079 (home-page "https://github.com/espeak-ng/pcaudiolib")
2080 (source (origin
2081 (method git-fetch)
2082 (uri (git-reference (url home-page) (commit version)))
2083 (file-name (git-file-name name version))
2084 (sha256
2085 (base32
2086 "0c55hlqqh0m7bcb3nlgv1s4a22s5bgczr1cakjh3767rjb10khi0"))))
2087 (build-system gnu-build-system)
2088 (arguments
2089 `(#:configure-flags '("--disable-static")))
2090 (native-inputs
2091 `(("autoconf" ,autoconf)
2092 ("automake" ,automake)
2093 ("libtool" ,libtool)
2094 ("pkg-config" ,pkg-config)
2095 ("which" ,which)))
2096 (inputs
2097 `(("alsa-lib" ,alsa-lib)
2098 ("pulseaudio" ,pulseaudio)))
2099 (synopsis "Portable C audio library")
2100 (description
2101 "The Portable C Audio Library (pcaudiolib) provides a C@tie{}API to
2102 different audio devices such as ALSA or PulseAudio.")
2103 (license (list license:gpl3+
2104 ;; The bundled TPCircularBuffer uses a custom license.
2105 (license:non-copyleft
2106 "file://src/TPCircularBuffer/README.markdown")))))
2107
2108 (define-public qjackctl
2109 (package
2110 (name "qjackctl")
2111 (version "0.5.9")
2112 (source (origin
2113 (method url-fetch)
2114 (uri (string-append "mirror://sourceforge/qjackctl/qjackctl/"
2115 version "/qjackctl-" version ".tar.gz"))
2116 (sha256
2117 (base32
2118 "1saywsda9m124rmjp7i3n0llryaliabjxhqhvqr6dm983qy7pypk"))))
2119 (build-system gnu-build-system)
2120 (arguments
2121 '(#:tests? #f)) ; no check target
2122 (inputs
2123 `(("jack" ,jack-1)
2124 ("alsa-lib" ,alsa-lib)
2125 ("qtbase" ,qtbase)
2126 ("qtx11extras" ,qtx11extras)))
2127 (native-inputs
2128 `(("pkg-config" ,pkg-config)
2129 ("qttools" ,qttools)))
2130 (home-page "https://qjackctl.sourceforge.io/")
2131 (synopsis "Jack server control application")
2132 (description "Control a Jack server. Allows you to plug various sources
2133 into various outputs and to start, stop and configure jackd")
2134 (license license:gpl2+)))
2135
2136 (define-public qjackrcd
2137 (package
2138 (name "qjackrcd")
2139 (version "1.2.2")
2140 (source (origin
2141 (method git-fetch)
2142 (uri (git-reference
2143 (url "https://github.com/orouits/qjackrcd.git")
2144 (commit (string-append "v" version))))
2145 (file-name (git-file-name name version))
2146 (sha256
2147 (base32
2148 "1l5iq2mkqd4gn9yr8xbh9qlpp1clcflazychl4vhdbz0bzq4c6al"))))
2149 (build-system gnu-build-system)
2150 (arguments
2151 `(#:phases
2152 (modify-phases %standard-phases
2153 (replace 'configure
2154 (lambda* (#:key outputs #:allow-other-keys)
2155 (invoke "qmake"
2156 (string-append "PREFIX="
2157 (assoc-ref outputs "out"))))))))
2158 (native-inputs
2159 `(("qtbase" ,qtbase))) ; for qmake
2160 (inputs
2161 `(("jack" ,jack-1)
2162 ("libsndfile" ,libsndfile)
2163 ("qtbase" ,qtbase)))
2164 (home-page "https://sourceforge.net/projects/qjackrcd/")
2165 (synopsis "Stereo audio recorder for JACK")
2166 (description "QJackRcd is a simple graphical stereo recorder for JACK
2167 supporting silence processing for automatic pause, file splitting, and
2168 background file post-processing.")
2169 (license license:gpl2+)))
2170
2171 (define-public supercollider
2172 (package
2173 (name "supercollider")
2174 (version "3.10.3")
2175 (source (origin
2176 (method url-fetch)
2177 (uri (string-append
2178 "https://github.com/supercollider/supercollider"
2179 "/releases/download/Version-" version
2180 "/SuperCollider-" version "-Source-linux.tar.bz2"))
2181 (patches
2182 (search-patches "supercollider-boost-1.70-build-fix.patch"))
2183 (sha256
2184 (base32
2185 "0srm6wbazidkrd4ckjy4ypyhkdwcnx2i7k9msjyngalh0mrc9zz1"))))
2186 (build-system cmake-build-system)
2187 (arguments
2188 `(#:configure-flags '("-DSYSTEM_BOOST=on" "-DSYSTEM_YAMLCPP=on"
2189 "-DSC_QT=off"
2190 "-DSC_EL=off") ;scel is packaged individually as
2191 ;emacs-scel.
2192 #:modules ((guix build utils)
2193 (guix build cmake-build-system)
2194 (ice-9 ftw))
2195 #:phases
2196 (modify-phases %standard-phases
2197 (add-after 'unpack 'rm-bundled-libs
2198 (lambda _
2199 ;; The build system doesn't allow us to unbundle the following
2200 ;; libraries. hidapi is also heavily patched and upstream not
2201 ;; actively maintained.
2202 (let ((keep-dirs '("nova-simd" "nova-tt" "hidapi" "TLSF-2.4.6"
2203 "oscpack_1_1_0" "." "..")))
2204 (with-directory-excursion "./external_libraries"
2205 (for-each
2206 delete-file-recursively
2207 (scandir "."
2208 (lambda (x)
2209 (and (eq? (stat:type (stat x)) 'directory)
2210 (not (member (basename x) keep-dirs))))))))
2211 #t))
2212 ;; Some tests are broken (see:
2213 ;; https://github.com/supercollider/supercollider/issues/3555 and
2214 ;; https://github.com/supercollider/supercollider/issues/1736
2215 (add-after 'rm-bundled-libs 'disable-broken-tests
2216 (lambda _
2217 (substitute* "testsuite/server/supernova/CMakeLists.txt"
2218 (("server_test.cpp")
2219 "")
2220 (("perf_counter_test.cpp")
2221 ""))
2222 (delete-file "testsuite/server/supernova/server_test.cpp")
2223 (delete-file "testsuite/server/supernova/perf_counter_test.cpp")
2224 (substitute* "testsuite/CMakeLists.txt"
2225 (("add_subdirectory\\(sclang\\)")
2226 ""))
2227 (delete-file "testsuite/sclang/CMakeLists.txt")
2228 #t)))))
2229 (native-inputs
2230 `(("pkg-config" ,pkg-config)))
2231 (inputs
2232 `(("jack" ,jack-1)
2233 ("libsndfile" ,libsndfile)
2234 ("fftw" ,fftw)
2235 ("libxt" ,libxt)
2236 ("readline" ,readline) ;readline support for sclang's CLI
2237 ("alsa" ,alsa-lib) ;for sclang's MIDI interface
2238 ("eudev" ,eudev) ;for user interactions with devices
2239 ("avahi" ,avahi) ;zeroconf service discovery support
2240 ("icu4c" ,icu4c)
2241 ("boost" ,boost)
2242 ("boost-sync" ,boost-sync)
2243 ("yaml-cpp" ,yaml-cpp)))
2244 (home-page "https://github.com/supercollider/supercollider")
2245 (synopsis "Synthesis engine and programming language")
2246 (description "SuperCollider is a synthesis engine (@code{scsynth} or
2247 @code{supernova}) and programming language (@code{sclang}). It can be used
2248 for experimenting with sound synthesis and algorithmic composition.
2249
2250 SuperCollider requires jackd to be installed in your user profile and your
2251 user must be allowed to access the realtime features of the kernel. Search
2252 for \"realtime\" in the index of the Guix manual to learn how to achieve this
2253 using Guix System.")
2254 (license license:gpl2+)))
2255
2256 (define-public raul
2257 (package
2258 (name "raul")
2259 (version "0.8.0")
2260 (source (origin
2261 (method url-fetch)
2262 (uri (string-append "https://download.drobilla.net/raul-"
2263 version ".tar.bz2"))
2264 (sha256
2265 (base32
2266 "09ms40xc1x6qli6lxkwn5ibqh62nl9w7dq0b6jh1q2zvnrxwsd8b"))))
2267 (build-system waf-build-system)
2268 (arguments
2269 `(#:python ,python-2
2270 #:tests? #f)) ; no check target
2271 (inputs
2272 `(("glib" ,glib)
2273 ("boost" ,boost)))
2274 (native-inputs
2275 `(("pkg-config" ,pkg-config)))
2276 (home-page "https://drobilla.net/software/raul/")
2277 (synopsis "Real-time audio utility library")
2278 (description
2279 "Raul (Real-time Audio Utility Library) is a C++ utility library primarily
2280 aimed at audio/musical applications.")
2281 (license license:gpl2+)))
2282
2283 (define-public raul-devel
2284 (let ((commit "4db870b2b20b0a608ec0283139056b836c5b1624")
2285 (revision "1"))
2286 (package (inherit raul)
2287 (name "raul")
2288 (version (string-append "0.8.9-" revision "."
2289 (string-take commit 9)))
2290 (source (origin
2291 (method git-fetch)
2292 (uri (git-reference
2293 (url "https://git.drobilla.net/raul.git")
2294 (commit commit)))
2295 (file-name (string-append name "-" version "-checkout"))
2296 (sha256
2297 (base32
2298 "04fajrass3ymr72flx5js5vxc601ccrmx8ny8scp0rw7j0igyjdr")))))))
2299
2300 (define-public rubberband
2301 (package
2302 (name "rubberband")
2303 (version "1.8.2")
2304 (source (origin
2305 (method url-fetch)
2306 (uri
2307 (string-append "https://bitbucket.org/breakfastquay/rubberband/get/v"
2308 version
2309 ".tar.bz2"))
2310 (file-name (string-append name "-" version ".tar.bz2"))
2311 (sha256
2312 (base32
2313 "0462fmjnfqpv2qi0s6ny42drqarkr0xy9lw8frjmfgzyzl5n9294"))))
2314 (build-system gnu-build-system)
2315 (arguments
2316 `(#:tests? #f ; no check target
2317 #:phases
2318 (modify-phases %standard-phases
2319 (add-after 'unpack 'skip-jni-installation
2320 ;; ‘make install’ unconditionally installs librubberband-jni.so,
2321 ;; which is never built by ‘make all’. Skip it.
2322 (lambda _
2323 (substitute* "Makefile.in"
2324 ((".*cp -f \\$\\(JNI_TARGET\\).*") ""))
2325 #t)))))
2326 (inputs
2327 `(("ladspa" ,ladspa)
2328 ("libsamplerate" ,libsamplerate)
2329 ("vamp" ,vamp)))
2330 (native-inputs
2331 `(("pkg-config" ,pkg-config)))
2332 (home-page "https://breakfastquay.com/rubberband/")
2333 (synopsis "Audio time-stretching and pitch-shifting library")
2334 (description
2335 "Rubber Band is a library and utility program that permits changing the
2336 tempo and pitch of an audio recording independently of one another.")
2337 (license license:gpl2+)))
2338
2339 (define-public rtmidi
2340 (package
2341 (name "rtmidi")
2342 (version "2.1.0")
2343 (source (origin
2344 (method git-fetch)
2345 (uri (git-reference
2346 (url "https://github.com/powertab/rtmidi.git")
2347 (commit version)))
2348 (file-name (git-file-name name version))
2349 (sha256
2350 (base32
2351 "106v177y3nrjv2l1yskch4phpqd8h97b67zj0jiq9pc3c69jr1ay"))))
2352 (build-system gnu-build-system)
2353 (arguments
2354 `(#:tests? #f ;no "check" target
2355 #:phases
2356 (modify-phases %standard-phases
2357 (add-before 'build 'fix-makefile
2358 (lambda _
2359 (substitute* "Makefile"
2360 (("/bin/ln") "ln")
2361 (("RtMidi.h RtError.h") "RtMidi.h"))
2362 #t))
2363 (add-before 'install 'make-target-dirs
2364 (lambda _
2365 (let ((out (assoc-ref %outputs "out")))
2366 (mkdir-p (string-append out "/bin"))
2367 (mkdir (string-append out "/lib"))
2368 (mkdir (string-append out "/include")))
2369 #t)))))
2370 (inputs
2371 `(("jack" ,jack-1)
2372 ("alsa-lib" ,alsa-lib)))
2373 (native-inputs
2374 `(("autoconf" ,autoconf)
2375 ("automake" ,automake)
2376 ("libtool" ,libtool)
2377 ("pkg-config" ,pkg-config)))
2378 (home-page "https://github.com/powertab/rtmidi")
2379 (synopsis "Cross-platform MIDI library for C++")
2380 (description
2381 "RtMidi is a set of C++ classes (RtMidiIn, RtMidiOut, and API specific
2382 classes) that provide a common cross-platform API for realtime MIDI
2383 input/output.")
2384 (license license:expat)))
2385
2386 (define-public sratom
2387 (package
2388 (name "sratom")
2389 (version "0.6.4")
2390 (source (origin
2391 (method url-fetch)
2392 (uri (string-append "https://download.drobilla.net/sratom-"
2393 version ".tar.bz2"))
2394 (sha256
2395 (base32
2396 "0vh0biy3ngpzzgdml309c2mqz8xq9q0hlblczb4c6alhp0a8yv0l"))))
2397 (build-system waf-build-system)
2398 (arguments `(#:tests? #f)) ; no check target
2399 (inputs
2400 `(("lv2" ,lv2)
2401 ("serd" ,serd)
2402 ("sord" ,sord)))
2403 (native-inputs
2404 `(("pkg-config" ,pkg-config)))
2405 (home-page "https://drobilla.net/software/sratom/")
2406 (synopsis "Library for serialising LV2 atoms to/from RDF")
2407 (description
2408 "Sratom is a library for serialising LV2 atoms to/from RDF, particularly
2409 the Turtle syntax.")
2410 (license license:isc)))
2411
2412 (define-public suil
2413 (package
2414 (name "suil")
2415 (version "0.10.4")
2416 (source (origin
2417 (method url-fetch)
2418 (uri (string-append "https://download.drobilla.net/suil-"
2419 version ".tar.bz2"))
2420 (sha256
2421 (base32
2422 "0ay7hl6nr6ip1nn9k2m8ri3b52b6sx9mhixmcy4fy3kr2a88ksd1"))))
2423 (build-system waf-build-system)
2424 (arguments
2425 `(#:tests? #f)) ;no check target
2426 (inputs
2427 `(("lv2" ,lv2)
2428 ("gtk+" ,gtk+-2)
2429 ("gtk+" ,gtk+)
2430 ("qt" ,qtbase)))
2431 (native-inputs
2432 `(("pkg-config" ,pkg-config)))
2433 (home-page "https://drobilla.net/software/suil/")
2434 (synopsis "Library for loading and wrapping LV2 plugin UIs")
2435 (description
2436 "Suil is a lightweight C library for loading and wrapping LV2 plugin UIs.
2437
2438 Suil makes it possible to load a UI of a toolkit in a host using another
2439 toolkit. The API is designed such that hosts do not need to explicitly
2440 support specific toolkits – if Suil supports a particular toolkit, then UIs in
2441 that toolkit will work in all hosts that use Suil automatically.
2442
2443 Suil currently supports every combination of Gtk, Qt, and X11.")
2444 (license license:isc)))
2445
2446 (define-public timidity++
2447 (package
2448 (name "timidity++")
2449 (version "2.14.0")
2450 (source (origin
2451 (method url-fetch)
2452 (uri (string-append "mirror://sourceforge/timidity/TiMidity++"
2453 "/TiMidity++-" version
2454 "/TiMidity++-" version ".tar.bz2"))
2455 (sha256
2456 (base32
2457 "0xk41w4qbk23z1fvqdyfblbz10mmxsllw0svxzjw5sa9y11vczzr"))))
2458 (build-system gnu-build-system)
2459 (arguments
2460 '(#:configure-flags
2461 (list "--enable-audio=alsa,flac,jack,ao,vorbis,speex"
2462 "--enable-ncurses"
2463 "--enable-server"
2464 "--enable-alsaseq"
2465 (string-append "--with-default-path="
2466 (assoc-ref %outputs "out") "/etc/timidity"))
2467 #:phases
2468 (modify-phases %standard-phases
2469 (add-after 'install 'install-config
2470 (lambda _
2471 (let ((out (string-append (assoc-ref %outputs "out")
2472 "/etc/timidity")))
2473 (mkdir-p out)
2474 (call-with-output-file
2475 (string-append out "/timidity.cfg")
2476 (lambda (port)
2477 (format port (string-append "source "
2478 (assoc-ref %build-inputs "freepats")
2479 "/share/freepats/freepats.cfg")))))
2480 #t)))))
2481 (inputs
2482 `(("alsa-lib" ,alsa-lib)
2483 ("ao" ,ao)
2484 ("flac" ,flac)
2485 ("jack" ,jack-1)
2486 ("libogg" ,libogg)
2487 ("speex" ,speex)
2488 ("ncurses" ,ncurses)
2489 ("freepats" ,freepats)))
2490 (native-inputs
2491 `(("pkg-config" ,pkg-config)))
2492 (home-page "http://timidity.sourceforge.net/")
2493 (synopsis "Software synthesizer for playing MIDI files")
2494 (description
2495 "TiMidity++ is a software synthesizer. It can play MIDI files by
2496 converting them into PCM waveform data; give it a MIDI data along with digital
2497 instrument data files, then it synthesizes them in real-time, and plays. It
2498 can not only play sounds, but also can save the generated waveforms into hard
2499 disks as various audio file formats.")
2500 (license license:gpl2+)))
2501
2502 (define-public vamp
2503 (package
2504 (name "vamp")
2505 (version "2.6")
2506 (source (origin
2507 (method url-fetch)
2508 (uri (string-append
2509 "https://code.soundsoftware.ac.uk"
2510 "/attachments/download/1520/vamp-plugin-sdk-"
2511 version ".tar.gz"))
2512 (sha256
2513 (base32
2514 "0pzq0yy2kdl3jgfc2aqmh5m55nk1ild0hq8mydiiw35c6y0mglyh"))))
2515 (build-system gnu-build-system)
2516 (arguments
2517 `(#:tests? #f ; no check target
2518 #:phases
2519 (modify-phases %standard-phases
2520 (add-after 'install 'remove-libvamp-hostsdk.la
2521 (lambda* (#:key outputs #:allow-other-keys)
2522 ;; https://bugs.launchpad.net/ubuntu/+source/vamp-plugin-sdk/+bug/1253656
2523 (for-each delete-file
2524 (let ((out (assoc-ref outputs "out")))
2525 (list (string-append out "/lib/libvamp-sdk.la")
2526 (string-append out "/lib/libvamp-hostsdk.la"))))
2527 #t)))))
2528 (inputs
2529 `(("libsndfile" ,libsndfile)))
2530 (native-inputs
2531 `(("pkg-config" ,pkg-config)))
2532 (home-page "http://vamp-plugins.org")
2533 (synopsis "Modular and extensible audio processing system")
2534 (description
2535 "Vamp is an audio processing plugin system for plugins that extract
2536 descriptive information from audio data — typically referred to as audio
2537 analysis plugins or audio feature extraction plugins.")
2538 (license
2539 (license:x11-style
2540 "https://code.soundsoftware.ac.uk/projects/vamp-plugin-sdk/repository/entry/COPYING"))))
2541
2542 (define-public libsbsms
2543 (package
2544 (name "libsbsms")
2545 (version "2.0.2")
2546 (source
2547 (origin
2548 (method url-fetch)
2549 (uri (string-append "mirror://sourceforge/sbsms/sbsms/" version
2550 "/libsbsms-" version ".tar.gz"))
2551 (sha256
2552 (base32 "1vmf84iy4dkwxv887grnlsfk43fmhd9gbg26gc2kgcv40sbkvayf"))))
2553 (build-system gnu-build-system)
2554 (native-inputs `(("automake" ,automake)))
2555 (arguments
2556 `(#:configure-flags
2557 ;; Disable the use of SSE unless on x86_64.
2558 ,(if (not (string-prefix? "x86_64" (or (%current-target-system)
2559 (%current-system))))
2560 ''("--disable-sse")
2561 ''())
2562 #:phases
2563 (modify-phases %standard-phases
2564 (add-after
2565 'unpack 'fix-ar-lib-path
2566 (lambda* (#:key inputs #:allow-other-keys)
2567 ;; Originally a symlink to '/usr/local/share/automake-1.12/ar-lib'.
2568 (delete-file "ar-lib")
2569 (symlink
2570 (string-append (assoc-ref inputs "automake") "/share/automake-"
2571 ,(package-version automake) "/ar-lib")
2572 "ar-lib")
2573 #t)))))
2574 (home-page "http://sbsms.sourceforge.net/")
2575 (synopsis "Library for time stretching and pitch scaling of audio")
2576 (description
2577 "SBSMS (Subband Sinusoidal Modeling Synthesis) is software for time
2578 stretching and pitch scaling of audio. This package contains the library.")
2579 ;; There is no explicit declaration of a license, but a COPYING file
2580 ;; containing gpl2.
2581 (license license:gpl2)))
2582
2583 (define-public wavpack
2584 (package
2585 (name "wavpack")
2586 (version "5.1.0")
2587 (source (origin
2588 (method url-fetch)
2589 (uri (string-append "http://www.wavpack.com/"
2590 name "-" version ".tar.bz2"))
2591 (patches (search-patches "wavpack-CVE-2018-6767.patch"
2592 "wavpack-CVE-2018-7253.patch"
2593 "wavpack-CVE-2018-7254.patch"))
2594 (sha256
2595 (base32
2596 "0i19c6krc0p9krwrqy9s5xahaafigqzxcn31piidmlaqadyn4f8r"))))
2597 (build-system gnu-build-system)
2598 (home-page "http://www.wavpack.com/")
2599 (synopsis "Hybrid lossless audio codec")
2600 (description
2601 "WavPack is an audio compression format with lossless, lossy and hybrid
2602 compression modes. This package contains command-line programs and library to
2603 encode and decode wavpack files.")
2604 (license license:bsd-3)))
2605
2606 (define-public libmodplug
2607 (package
2608 (name "libmodplug")
2609 (version "0.8.9.0")
2610 (source (origin
2611 (method url-fetch)
2612 (uri (string-append
2613 "mirror://sourceforge/modplug-xmms/"
2614 name "/" version "/" name "-" version ".tar.gz"))
2615 (sha256
2616 (base32
2617 "1pnri98a603xk47smnxr551svbmgbzcw018mq1k6srbrq6kaaz25"))))
2618 (build-system gnu-build-system)
2619 (home-page "http://modplug-xmms.sourceforge.net/")
2620 (synopsis "Mod file playing library")
2621 (description
2622 "Libmodplug renders mod music files as raw audio data, for playing or
2623 conversion. mod, .s3m, .it, .xm, and a number of lesser-known formats are
2624 supported. Optional features include high-quality resampling, bass expansion,
2625 surround and reverb.")
2626 (license license:public-domain)))
2627
2628 (define-public libxmp
2629 (package
2630 (name "libxmp")
2631 (version "4.4.1")
2632 (source (origin
2633 (method url-fetch)
2634 (uri (string-append "mirror://sourceforge/xmp/libxmp/" version "/"
2635 name "-" version ".tar.gz"))
2636 (sha256
2637 (base32
2638 "1kycz4jsyvmf7ny9227b497wc7y5ligydi6fvvldmkf8hk63ad9m"))))
2639 (build-system gnu-build-system)
2640 (home-page "http://xmp.sourceforge.net/")
2641 (synopsis "Module player library")
2642 (description
2643 "Libxmp is a library that renders module files to PCM data. It supports
2644 over 90 mainstream and obscure module formats including Protracker (MOD),
2645 Scream Tracker 3 (S3M), Fast Tracker II (XM), and Impulse Tracker (IT).")
2646 (license license:lgpl2.1+)))
2647
2648 (define-public xmp
2649 (package
2650 (name "xmp")
2651 (version "4.1.0")
2652 (source (origin
2653 (method url-fetch)
2654 (uri (string-append "mirror://sourceforge/xmp/xmp/" version "/"
2655 name "-" version ".tar.gz"))
2656 (sha256
2657 (base32
2658 "17i8fc7x7yn3z1x963xp9iv108gxfakxmdgmpv3mlm438w3n3g8x"))))
2659 (build-system gnu-build-system)
2660 (native-inputs
2661 `(("pkg-config" ,pkg-config)))
2662 (inputs
2663 `(("libxmp" ,libxmp)
2664 ("pulseaudio" ,pulseaudio)))
2665 (home-page "http://xmp.sourceforge.net/")
2666 (synopsis "Extended module player")
2667 (description
2668 "Xmp is a portable module player that plays over 90 mainstream and
2669 obscure module formats, including Protracker MOD, Fasttracker II XM, Scream
2670 Tracker 3 S3M and Impulse Tracker IT files.")
2671 (license license:gpl2+)))
2672
2673 (define-public soundtouch
2674 (package
2675 (name "soundtouch")
2676 (version "2.1.1")
2677 (source
2678 (origin
2679 (method git-fetch)
2680 (uri (git-reference
2681 (url "https://gitlab.com/soundtouch/soundtouch.git")
2682 (commit version)))
2683 (file-name (git-file-name name version))
2684 (sha256
2685 (base32 "0p6jzgfgqw061702dmd2b6r4arz48ac3mmx2qkvvzf8s5jjzykdh"))))
2686 (build-system gnu-build-system)
2687 (native-inputs
2688 `(("autoconf" ,autoconf)
2689 ("automake" ,automake)
2690 ("libtool" ,libtool)
2691 ("file" ,file)))
2692 (home-page "http://www.surina.net/soundtouch/")
2693 (synopsis
2694 "Audio processing library for changing tempo, pitch and playback rate")
2695 (description
2696 "SoundTouch is an audio processing library for changing the tempo, pitch
2697 and playback rates of audio streams or audio files. It is intended for
2698 application developers writing sound processing tools that require tempo/pitch
2699 control functionality, or just for playing around with the sound effects.")
2700 (license license:lgpl2.1+)))
2701
2702 (define-public sox
2703 (package
2704 (name "sox")
2705 (version "14.4.2")
2706 (source (origin
2707 (method url-fetch)
2708 (uri (string-append "mirror://sourceforge/sox/sox/" version "/"
2709 name "-" version ".tar.bz2"))
2710 (sha256
2711 (base32
2712 "170lx90r1nlnb2j6lg00524iwvqy72p48vii4xc5prrh8dnrb9l1"))))
2713 (build-system gnu-build-system)
2714 (arguments
2715 '(#:configure-flags
2716 ;; The upstream asks to identify the distribution to diagnose SoX
2717 ;; bug reports.
2718 '("--with-distro=Guix System Distribution")))
2719 (native-inputs
2720 `(("pkg-config" ,pkg-config)))
2721 (inputs
2722 `(("alsa-lib" ,alsa-lib)
2723 ("ao" ,ao)
2724 ("flac" ,flac)
2725 ("lame" ,lame)
2726 ("libid3tag" ,libid3tag)
2727 ("libltdl" ,libltdl)
2728 ("libmad" ,libmad)
2729 ("libpng" ,libpng)
2730 ("libvorbis" ,libvorbis)
2731 ("pulseaudio" ,pulseaudio)))
2732 (home-page "http://sox.sourceforge.net")
2733 (synopsis "Sound processing utility")
2734 (description
2735 "SoX (Sound eXchange) is a command line utility that can convert
2736 various formats of computer audio files to other formats. It can also
2737 apply various effects to these sound files, and, as an added bonus, SoX
2738 can play and record audio files.")
2739 ;; sox.c is distributed under GPL, while the files that make up
2740 ;; libsox are licensed under LGPL.
2741 (license (list license:gpl2+ license:lgpl2.1+))))
2742
2743 (define-public soxr
2744 (package
2745 (name "soxr")
2746 (version "0.1.3")
2747 (source
2748 (origin
2749 (method url-fetch)
2750 (uri
2751 (string-append "mirror://sourceforge/soxr/soxr-" version
2752 "-Source.tar.xz"))
2753 (sha256
2754 (base32 "12aql6svkplxq5fjycar18863hcq84c5kx8g6f4rj0lcvigw24di"))))
2755 (build-system cmake-build-system)
2756 (arguments '(#:tests? #f)) ;no 'check' target
2757 (home-page "https://sourceforge.net/p/soxr/wiki/Home/")
2758 (synopsis "One-dimensional sample-rate conversion library")
2759 (description
2760 "The SoX Resampler library (libsoxr) performs one-dimensional sample-rate
2761 conversion. It may be used, for example, to resample PCM-encoded audio.")
2762 (license license:lgpl2.1+)))
2763
2764 (define-public twolame
2765 (package
2766 (name "twolame")
2767 (version "0.4.0")
2768 (source
2769 (origin
2770 (method url-fetch)
2771 (uri (string-append "mirror://sourceforge/twolame/twolame/" version
2772 "/twolame-" version ".tar.gz"))
2773 (sha256
2774 (base32 "0zf8sxqb02w07ah55b1y7ab643zmpbhn62spa9pqra0rc17l4dfc"))))
2775 (build-system gnu-build-system)
2776 (inputs
2777 `(("libsndfile" ,libsndfile)))
2778 (native-inputs
2779 `(("perl" ,perl)
2780 ("which" ,which))) ;used in tests/test.pl
2781 (home-page "http://www.twolame.org/")
2782 (synopsis "MPEG Audio Layer 2 (MP2) encoder")
2783 (description
2784 "TwoLAME is an optimised MPEG Audio Layer 2 (MP2) encoder based on
2785 tooLAME by Mike Cheng, which in turn is based upon the ISO dist10 code and
2786 portions of LAME.")
2787 (license license:lgpl2.1+)))
2788
2789 (define-public portaudio
2790 (package
2791 (name "portaudio")
2792 (version "190600.20161030")
2793 (source
2794 (origin
2795 (method url-fetch)
2796 (uri (string-append
2797 "http://www.portaudio.com/archives/pa_stable_v"
2798 (string-map (lambda (c) (if (char=? c #\.) #\_ c)) version)
2799 ".tgz"))
2800 (sha256
2801 (base32 "04qmin6nj144b8qb9kkd9a52xfvm0qdgm8bg8jbl7s3frmyiv8pm"))
2802 (patches (search-patches "portaudio-audacity-compat.patch"))))
2803 (build-system gnu-build-system)
2804 (inputs
2805 ;; TODO: Add ASIHPI.
2806 `(("alsa-lib" ,alsa-lib)
2807 ("jack" ,jack-1)))
2808 ;; Autoreconf is necessary because the audacity-compat patch modifies .in
2809 ;; files.
2810 (native-inputs
2811 `(("autoconf" ,autoconf)
2812 ("automake" ,automake)
2813 ("libtool" ,libtool)
2814 ("pkg-config" ,pkg-config)))
2815 (arguments
2816 '(#:tests? #f ;no 'check' target
2817 #:configure-flags '("--with-pic")
2818 #:phases
2819 (modify-phases %standard-phases
2820 ;; This is needed for linking the static libraries
2821 (add-after 'unpack 'build-only-position-independent-code
2822 (lambda _
2823 (substitute* "configure.in"
2824 (("AC_PROG_LIBTOOL" m)
2825 (string-append m "\nAM_PROG_AR\nLT_INIT([pic-only])")))
2826 (delete-file "configure")
2827 #t))
2828 ;; Some headers are not installed by default, but are needed by
2829 ;; packages like Kaldi.
2830 (add-after 'install 'install-missing-headers
2831 (lambda* (#:key outputs #:allow-other-keys)
2832 (install-file "src/common/pa_ringbuffer.h"
2833 (string-append (assoc-ref outputs "out") "/include"))
2834 #t)))))
2835 (home-page "http://www.portaudio.com/")
2836 (synopsis "Audio I/O library")
2837 (description
2838 "PortAudio is a portable C/C++ audio I/O library providing a simple API
2839 to record and/or play sound using a callback function or a blocking read/write
2840 interface.")
2841 (license license:expat)))
2842
2843 (define-public qsynth
2844 (package
2845 (name "qsynth")
2846 (version "0.5.7")
2847 (source
2848 (origin
2849 (method url-fetch)
2850 (uri (string-append "mirror://sourceforge/qsynth/qsynth/" version
2851 "/qsynth-" version ".tar.gz"))
2852 (sha256
2853 (base32 "18im4w8agj60nkppwbkxqnhpp13z5li3w30kklv4lgs20rvgbvl6"))))
2854 (build-system gnu-build-system)
2855 (arguments
2856 `(#:tests? #f)) ; no "check" phase
2857 (native-inputs
2858 `(("qttools" ,qttools)
2859 ("pkg-config" ,pkg-config)))
2860 (inputs
2861 `(("fluidsynth" ,fluidsynth)
2862 ("qtbase" ,qtbase)
2863 ("qtx11extras" ,qtx11extras)))
2864 (home-page "https://qsynth.sourceforge.io")
2865 (synopsis "Graphical user interface for FluidSynth")
2866 (description
2867 "Qsynth is a GUI front-end application for the FluidSynth SoundFont
2868 synthesizer written in C++.")
2869 (license license:gpl2+)))
2870
2871 (define-public rsound
2872 (package
2873 (name "rsound")
2874 (version "1.1")
2875 (source
2876 (origin
2877 (method git-fetch)
2878 (uri (git-reference
2879 (url "https://github.com/Themaister/RSound.git")
2880 (commit (string-append "v" version))))
2881 (file-name (git-file-name name version))
2882 (sha256
2883 (base32 "0gspmr3klwnq98h17p5hc6ifygya4p80g4g8r7a1qavm3mv19waf"))))
2884 (build-system gnu-build-system)
2885 (inputs
2886 `(("alsa-lib" ,alsa-lib)
2887 ("jack" ,jack-1)
2888 ("ao" ,ao)
2889 ("libsamplerate" ,libsamplerate)
2890 ("openal" ,openal)
2891 ("portaudio" ,portaudio)
2892 ("pulseaudio" ,pulseaudio)))
2893 (arguments
2894 '(#:phases
2895 (modify-phases %standard-phases
2896 (replace 'configure
2897 (lambda* (#:key outputs #:allow-other-keys)
2898 (setenv "CC" "gcc")
2899 (invoke "./configure"
2900 (string-append "--prefix=" (assoc-ref outputs "out"))))))
2901 ;; No 'check' target.
2902 #:tests? #f))
2903 (home-page "http://themaister.net/rsound.html")
2904 (synopsis "Networked audio system")
2905 (description
2906 "RSound allows you to send audio from an application and transfer it
2907 directly to a different computer on your LAN network. It is an audio daemon
2908 with a much different focus than most other audio daemons.")
2909 (license license:gpl3+)))
2910
2911 (define-public xjackfreak
2912 (package
2913 (name "xjackfreak")
2914 (version "1.0")
2915 (source (origin
2916 (method git-fetch)
2917 (uri (git-reference
2918 (url "https://github.com/johnhldavis/xjackfreak.git")
2919 (commit (string-append "v" version))))
2920 (file-name (git-file-name name version))
2921 (sha256
2922 (base32
2923 "18c546qidbrj0f5wfiq5llii2192xpln0ab3r4vpr7i3wybxqjfz"))))
2924 (build-system gnu-build-system)
2925 (arguments
2926 `(#:make-flags
2927 (list (string-append "docdir=" (assoc-ref %outputs "out")
2928 "/share/doc/xjackfreak"))))
2929 (inputs
2930 `(("jack" ,jack-1)
2931 ("libx11" ,libx11)
2932 ("libxt" ,libxt)
2933 ("libxext" ,libxext)))
2934 (native-inputs
2935 `(("pkg-config" ,pkg-config)))
2936 (home-page "https://github.com/johnhldavis/xjackfreak")
2937 (synopsis "JACK audio frequency analyzer and display")
2938 (description
2939 "XJackFreak is an audio analysis and equalizing tool for the Jack Audio
2940 Connection Kit. It can display the FFT of any input, modify it and output the
2941 result.")
2942 (license license:gpl3+)))
2943
2944 (define-public zita-convolver
2945 (package
2946 (name "zita-convolver")
2947 (version "4.0.3")
2948 (source (origin
2949 (method url-fetch)
2950 (uri (string-append
2951 "http://kokkinizita.linuxaudio.org"
2952 "/linuxaudio/downloads/zita-convolver-"
2953 version ".tar.bz2"))
2954 (snippet
2955 ;; Don't optimize for a specific processor architecture.
2956 '(begin
2957 (substitute* "source/Makefile"
2958 (("^CXXFLAGS \\+= -march=native") ""))
2959 #t))
2960 (modules '((guix build utils)))
2961 (sha256
2962 (base32
2963 "0prji66p86z2bzminywkwchr5bfgxcg2i8y803pydd1hzf2198cs"))))
2964 (build-system gnu-build-system)
2965 (arguments
2966 `(#:tests? #f ; no "check" target
2967 #:make-flags
2968 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
2969 (string-append "SUFFIX="))
2970 #:phases
2971 (modify-phases %standard-phases
2972 (add-after 'unpack 'patch-makefile-and-enter-directory
2973 (lambda _
2974 (substitute* "source/Makefile"
2975 (("ldconfig") "true")
2976 (("^LIBDIR =.*") "LIBDIR = lib\n"))
2977 (chdir "source")
2978 #t))
2979 (add-after 'install 'install-symlink
2980 (lambda _
2981 (symlink "libzita-convolver.so"
2982 (string-append (assoc-ref %outputs "out")
2983 "/lib/libzita-convolver.so.4"))
2984 #t))
2985 ;; no configure script
2986 (delete 'configure))))
2987 (inputs `(("fftwf" ,fftwf)))
2988 (home-page "https://kokkinizita.linuxaudio.org")
2989 (synopsis "Fast, partitioned convolution engine library")
2990 (description
2991 "Zita convolver is a C++ library providing a real-time convolution
2992 engine.")
2993 (license license:gpl3+)))
2994
2995 (define-public zita-resampler
2996 (package
2997 (name "zita-resampler")
2998 (version "1.3.0")
2999 (source (origin
3000 (method url-fetch)
3001 (uri (string-append
3002 "http://kokkinizita.linuxaudio.org"
3003 "/linuxaudio/downloads/zita-resampler-"
3004 version ".tar.bz2"))
3005 (snippet
3006 ;; Don't optimize for a specific processor architecture.
3007 '(begin
3008 (substitute* '("apps/Makefile" "libs/Makefile")
3009 (("^CXXFLAGS \\+= -march=native") ""))
3010 #t))
3011 (modules '((guix build utils)))
3012 (sha256
3013 (base32
3014 "0r9ary5sc3y8vba5pad581ha7mgsrlyai83w7w4x2fmhfy64q0wq"))))
3015 (build-system gnu-build-system)
3016 (arguments
3017 `(#:tests? #f ; no "check" target
3018 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
3019 #:phases
3020 (modify-phases %standard-phases
3021 (add-after
3022 'unpack 'patch-makefile-and-enter-directory
3023 (lambda _
3024 (substitute* "libs/Makefile"
3025 (("ldconfig") "true")
3026 (("^LIBDIR =.*") "LIBDIR = lib\n"))
3027 (chdir "libs")
3028 #t))
3029 (add-after
3030 'install 'install-symlink
3031 (lambda _
3032 (symlink "libzita-resampler.so"
3033 (string-append (assoc-ref %outputs "out")
3034 "/lib/libzita-resampler.so.1"))
3035 #t))
3036 ;; no configure script
3037 (delete 'configure))))
3038 (home-page "https://kokkinizita.linuxaudio.org/linuxaudio/zita-resampler/resampler.html")
3039 (synopsis "C++ library for resampling audio signals")
3040 (description
3041 "Libzita-resampler is a C++ library for resampling audio signals. It is
3042 designed to be used within a real-time processing context, to be fast, and to
3043 provide high-quality sample rate conversion.")
3044 (license license:gpl3+)))
3045
3046 (define-public zita-alsa-pcmi
3047 (package
3048 (name "zita-alsa-pcmi")
3049 (version "0.2.0")
3050 (source (origin
3051 (method url-fetch)
3052 (uri (string-append
3053 "http://kokkinizita.linuxaudio.org"
3054 "/linuxaudio/downloads/zita-alsa-pcmi-"
3055 version ".tar.bz2"))
3056 (sha256
3057 (base32
3058 "1rgv332g82rrrlm4vdam6p2pyrisxbi7b3izfaa0pcjglafsy7j9"))))
3059 (build-system gnu-build-system)
3060 (arguments
3061 `(#:tests? #f ; no "check" target
3062 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
3063 #:phases
3064 (modify-phases %standard-phases
3065 (add-after 'unpack 'patch-makefile-and-enter-directory
3066 (lambda _
3067 (substitute* "libs/Makefile"
3068 (("ldconfig") "true")
3069 (("^LIBDIR =.*") "LIBDIR = lib\n"))
3070 (chdir "libs")
3071 #t))
3072 (add-after 'install 'install-symlink
3073 (lambda _
3074 (symlink "libzita-alsa-pcmi.so"
3075 (string-append (assoc-ref %outputs "out")
3076 "/lib/libzita-alsa-pcmi.so.0"))
3077 #t))
3078 ;; no configure script
3079 (delete 'configure))))
3080 (inputs
3081 `(("alsa-lib" ,alsa-lib)
3082 ("fftw" ,fftw)))
3083 (home-page "https://kokkinizita.linuxaudio.org")
3084 (synopsis "C++ wrapper around the ALSA API")
3085 (description
3086 "Zita-alsa-pcmi is a C++ wrapper around the ALSA API. It provides easy
3087 access to ALSA PCM devices, taking care of the many functions required to
3088 open, initialise and use a hw: device in mmap mode, and providing floating
3089 point audio data.")
3090 (license license:gpl3+)))
3091
3092 (define-public cuetools
3093 (package
3094 (name "cuetools")
3095 (version "1.4.1")
3096 (source (origin
3097 (method git-fetch)
3098 (uri (git-reference
3099 (url "https://github.com/svend/cuetools.git")
3100 (commit version)))
3101 (file-name (git-file-name name version))
3102 (sha256
3103 (base32
3104 "02ksv1ahf1v4cr2xbclsfv5x17m9ivzbssb5r8xjm97yh8a7spa3"))))
3105 (build-system gnu-build-system)
3106 ;; The source checkout is not bootstrapped.
3107 (native-inputs
3108 `(("autoconf" ,autoconf)
3109 ("automake" ,automake)
3110 ("flex" ,flex)
3111 ("bison" ,bison)))
3112 (synopsis "Cue and toc file parsers and utilities")
3113 (description "Cuetools is a set of programs that are useful for manipulating
3114 and using CUE sheet (cue) files and Table of Contents (toc) files. CUE and TOC
3115 files are a way to represent the layout of a data or audio CD in a
3116 machine-readable ASCII format.")
3117 (home-page "https://github.com/svend/cuetools")
3118 (license license:gpl2+)))
3119
3120 (define-public shntool
3121 (package
3122 (name "shntool")
3123 (version "3.0.10")
3124 (source (origin
3125 (method url-fetch)
3126 (uri (string-append "http://etree.org/shnutils/shntool/dist/src/"
3127 "shntool-" version ".tar.gz"))
3128 (sha256
3129 (base32
3130 "00i1rbjaaws3drkhiczaign3lnbhr161b7rbnjr8z83w8yn2wc3l"))))
3131 (build-system gnu-build-system)
3132 (synopsis "WAVE audio data processing tool")
3133 (description "shntool is a multi-purpose WAVE data processing and reporting
3134 utility. File formats are abstracted from its core, so it can process any file
3135 that contains WAVE data, compressed or not---provided there exists a format
3136 module to handle that particular file type. It can also generate CUE files, and
3137 use them split WAVE data into multiple files.")
3138 (home-page "http://etree.org/shnutils/shntool/")
3139 ;; 'install-sh' bears the x11 license
3140 (license (list license:gpl2+ license:x11))))
3141
3142 (define-public dcadec
3143 (package
3144 (name "dcadec")
3145 (version "0.2.0")
3146 (source (origin
3147 (method git-fetch)
3148 (uri (git-reference
3149 (url "https://github.com/foo86/dcadec.git")
3150 (commit (string-append "v" version))))
3151 (file-name (git-file-name name version))
3152 (sha256
3153 (base32
3154 "07nd0ajizrp1w02bsyfcv18431r8m8rq8gjfmz9wmckpg7cxj2hs"))))
3155 (build-system gnu-build-system)
3156 (arguments
3157 ;; Test files are missing: https://github.com/foo86/dcadec/issues/53
3158 '(#:tests? #f
3159 #:make-flags
3160 (list "CC=gcc"
3161 ;; Build shared library.
3162 "CONFIG_SHARED=1"
3163 (string-append "PREFIX=" (assoc-ref %outputs "out"))
3164 ;; Set proper runpath.
3165 (string-append "LDFLAGS=-Wl,-rpath="
3166 (assoc-ref %outputs "out")
3167 "/lib"))
3168 #:phases
3169 (modify-phases %standard-phases
3170 ;; No configure script, just a hand-written Makefile.
3171 (delete 'configure))))
3172 (synopsis "DTS Coherent Acoustics decoder")
3173 (description "Dcadec is a DTS Coherent Acoustics surround sound decoder
3174 with support for HD extensions.")
3175 (home-page "https://github.com/foo86/dcadec")
3176 (license license:lgpl2.1+)))
3177
3178 (define-public bs1770gain
3179 (package
3180 (name "bs1770gain")
3181 (version "0.6.0")
3182 (source
3183 (origin
3184 (method url-fetch)
3185 (uri (string-append "mirror://sourceforge/bs1770gain/bs1770gain/"
3186 version "/bs1770gain-" version ".tar.gz"))
3187 (sha256
3188 (base32 "0nnqixvw3x7i22nsr54n4bgm35z9nh3d9qj5s75cfd3ajjsjndyh"))
3189 (modules '((guix build utils)))
3190 (snippet
3191 '(begin
3192 ;; XXX
3193 (substitute* "libbg/bgx.c"
3194 (("#define BS.* ") "#define BS ")
3195 (("BS.*NO?.*N.*S.*E.*N.*SE?") "NO")
3196 (("\"( #|N).*\"") "\"\""))
3197 (substitute* (list "config.h"
3198 "configure.ac"
3199 "configure")
3200 (("https?://bs1770gain[^/]*/")
3201 "https://manpages.debian.org/sid/bs1770gain/bs1770gain.1.en.html"))
3202 #t))))
3203 (build-system gnu-build-system)
3204 (inputs `(("ffmpeg" ,ffmpeg)
3205 ("sox" ,sox)))
3206 (home-page "https://manpages.debian.org/sid/bs1770gain/bs1770gain.1.en.html")
3207 (synopsis "Tool to adjust loudness of media files")
3208 (description
3209 "BS1770GAIN is a loudness scanner compliant with ITU-R BS.1770 and its
3210 flavors EBU R128, ATSC A/85, and ReplayGain 2.0. It helps normalizing the
3211 loudness of audio and video files to the same level.")
3212 (license license:gpl2+)))
3213
3214 (define-public filteraudio
3215 (let ((revision "1")
3216 (commit "2fc669581e2a0ff87fba8de85861b49133306094"))
3217 (package
3218 (name "filteraudio")
3219 (version (string-append "0.0.0-" revision "."
3220 (string-take commit 7)))
3221 (source
3222 (origin
3223 (method git-fetch)
3224 (uri (git-reference
3225 (url "https://github.com/irungentoo/filter_audio.git")
3226 (commit commit)))
3227 (file-name (string-append name "-" version "-checkout"))
3228 (sha256
3229 (base32
3230 "0hbb290n3wb23f2k692a6bhc23nnqmxqi9sc9j15pnya8wifw64g"))))
3231 (build-system gnu-build-system)
3232 (arguments
3233 '(#:make-flags (list (string-append "PREFIX=" %output)
3234 "CC=gcc")
3235 #:tests? #f ; No tests
3236 #:phases
3237 (modify-phases %standard-phases
3238 ;; No configure script
3239 (delete 'configure))))
3240 (synopsis "Lightweight audio filtering library")
3241 (description "An easy to use audio filtering library made from webrtc
3242 code, used in @code{libtoxcore}.")
3243 (home-page "https://github.com/irungentoo/filter_audio")
3244 (license license:bsd-3))))
3245
3246 (define-public gsm
3247 (package
3248 (name "gsm")
3249 (version "1.0.18")
3250 (source
3251 (origin
3252 (method url-fetch)
3253 (uri
3254 (string-append "http://www.quut.com/" name "/" name
3255 "-" version ".tar.gz"))
3256 (sha256
3257 (base32
3258 "041amvpz8cvxykl3pwqldrzxligmmzcg8ncdnxbg32rlqf3q1xh4"))))
3259 (build-system gnu-build-system)
3260 (arguments
3261 `(#:test-target "tst"
3262 #:phases
3263 (modify-phases %standard-phases
3264 (add-before 'install 'pre-install
3265 (lambda _
3266 (let ((out (assoc-ref %outputs "out")))
3267 (substitute* "Makefile"
3268 (("INSTALL_ROOT\t=")
3269 (string-append "INSTALL_ROOT\t=\t" out)))
3270 (mkdir-p (string-append out "/inc"))
3271 (mkdir-p (string-append out "/man"))
3272 (mkdir-p (string-append out "/man/man1"))
3273 (mkdir-p (string-append out "/man/man3"))
3274 (mkdir-p (string-append out "/bin"))
3275 (mkdir-p (string-append out "/lib")))
3276 #t))
3277 (add-after 'install 'post-install
3278 (lambda _
3279 (let ((out (assoc-ref %outputs "out")))
3280 (rename-file (string-append out "/inc")
3281 (string-append out "/include"))
3282 (mkdir-p (string-append out "/include/gsm"))
3283 (copy-recursively "inc"
3284 (string-append out "/include/gsm")))
3285 #t))
3286 (delete 'configure)))) ; no configure script
3287 (synopsis "GSM 06.10 lossy speech compression library")
3288 (description "This C library provides an encoder and a decoder for the GSM
3289 06.10 RPE-LTP lossy speech compression algorithm.")
3290 (home-page "http://quut.com/gsm/")
3291 (license (license:non-copyleft "file://COPYRIGHT"))))
3292
3293 (define-public python-pyalsaaudio
3294 (package
3295 (name "python-pyalsaaudio")
3296 (version "0.8.4")
3297 (source (origin
3298 (method url-fetch)
3299 (uri (pypi-uri "pyalsaaudio" version))
3300 (sha256
3301 (base32
3302 "1180ypn9596rq4b7y7dyv627j1q0fqilmkkrckclnzsdakdgis44"))))
3303 (build-system python-build-system)
3304 (arguments
3305 `(#:tests? #f)) ; tests require access to ALSA devices.
3306 (inputs
3307 `(("alsa-lib" ,alsa-lib)))
3308 (home-page "http://larsimmisch.github.io/pyalsaaudio/")
3309 (synopsis "ALSA wrappers for Python")
3310 (description
3311 "This package contains wrappers for accessing the ALSA API from Python.
3312 It is currently fairly complete for PCM devices, and has some support for
3313 mixers.")
3314 (license license:psfl)))
3315
3316 (define-public python2-pyalsaaudio
3317 (package-with-python2 python-pyalsaaudio))
3318
3319 (define-public bluez-alsa
3320 (package
3321 (name "bluez-alsa")
3322 (version "1.2.0")
3323 (source (origin
3324 ;; The tarballs are mere snapshots and don't contain a
3325 ;; bootstrapped build system.
3326 (method git-fetch)
3327 (uri (git-reference
3328 (url "https://github.com/Arkq/bluez-alsa.git")
3329 (commit (string-append "v" version))))
3330 (file-name (string-append name "-" version "-checkout"))
3331 (sha256
3332 (base32
3333 "1qinf41wl2ihx54zmmhanycihwjkn7dn1cicq6pp4rqbiv79b95x"))))
3334 (build-system gnu-build-system)
3335 (native-inputs
3336 `(("autoconf" ,autoconf)
3337 ("automake" ,automake)
3338 ("libtool" ,libtool)
3339 ("pkg-config" ,pkg-config)))
3340 (inputs
3341 `(("alsa-lib" ,alsa-lib)
3342 ("bluez" ,bluez)
3343 ("glib" ,glib)
3344 ("libbsd" ,libbsd)
3345 ("ncurses" ,ncurses)
3346 ("ortp" ,ortp)
3347 ("sbc" ,sbc)))
3348 (home-page "https://github.com/Arkq/bluez-alsa")
3349 (synopsis "Bluetooth ALSA backend")
3350 (description "This project is a rebirth of a direct integration between
3351 Bluez and ALSA. Since Bluez >= 5, the build-in integration has been removed
3352 in favor of 3rd party audio applications. From now on, Bluez acts as a
3353 middleware between an audio application, which implements Bluetooth audio
3354 profile, and a Bluetooth audio device. BlueALSA registers all known Bluetooth
3355 audio profiles in Bluez, so in theory every Bluetooth device (with audio
3356 capabilities) can be connected. In order to access the audio stream, one has
3357 to connect to the ALSA PCM device called @code{bluealsa}. The device is based
3358 on the ALSA software PCM plugin.")
3359 (license license:expat)))
3360
3361 (define-public snd
3362 (package
3363 (name "snd")
3364 (version "19.6")
3365 (source (origin
3366 (method url-fetch)
3367 (uri (string-append "ftp://ccrma-ftp.stanford.edu/pub/Lisp/"
3368 "snd-" version ".tar.gz"))
3369 (sha256
3370 (base32
3371 "0s2qv8sznvw6559bi39qj9p072azh9qcb2b86w6w8clz2azjaa76"))))
3372 (build-system glib-or-gtk-build-system)
3373 (arguments
3374 `(#:tests? #f ; no tests
3375 #:out-of-source? #f ; for the 'install-doc' phase
3376 #:configure-flags
3377 (let* ((out (assoc-ref %outputs "out"))
3378 (docdir (string-append out "/share/doc/"
3379 ,name "-" ,version)))
3380 (list "--with-alsa" "--with-jack" "--with-gmp"
3381 (string-append "--with-doc-dir=" docdir)))
3382 #:phases
3383 (modify-phases %standard-phases
3384 (add-after 'install 'install-doc
3385 (lambda* (#:key outputs #:allow-other-keys)
3386 (let* ((out (assoc-ref outputs "out"))
3387 (doc (string-append out "/share/doc/"
3388 ,name "-" ,version)))
3389 (for-each
3390 (lambda (f)
3391 (install-file f doc))
3392 (find-files "." "\\.html$"))
3393 (copy-recursively "pix" (string-append doc "/pix"))
3394 #t))))))
3395 (native-inputs
3396 `(("pkg-config" ,pkg-config)))
3397 (inputs
3398 `(("alsa-lib" ,alsa-lib)
3399 ("fftw" ,fftw)
3400 ("flac" ,flac)
3401 ("gmp" ,gmp)
3402 ("gsl" ,gsl)
3403 ("gtk+" ,gtk+)
3404 ("jack" ,jack-1)
3405 ("libsamplerate" ,libsamplerate)
3406 ("mpc" ,mpc)
3407 ("mpfr" ,mpfr)
3408 ("mpg123" ,mpg123)
3409 ("speex" ,speex)
3410 ("timidity++" ,timidity++)
3411 ("vorbis-tools" ,vorbis-tools)
3412 ("wavpack" ,wavpack)))
3413 (synopsis "Sound editor")
3414 (home-page "https://ccrma.stanford.edu/software/snd/")
3415 (description
3416 "Snd is a sound editor modelled loosely after Emacs. It can be
3417 customized and extended using either the s7 Scheme implementation (included in
3418 the Snd sources), Ruby, or Forth.")
3419 (license (license:non-copyleft "file://COPYING"))))
3420
3421 (define-public noise-repellent
3422 (package
3423 (name "noise-repellent")
3424 (version "0.1.4")
3425 (source (origin
3426 (method git-fetch)
3427 (uri (git-reference
3428 (url "https://github.com/lucianodato/noise-repellent.git")
3429 (commit version)))
3430 (file-name (string-append name "-" version "-checkout"))
3431 (sha256
3432 (base32
3433 "0rd3dlmk3vivjmcr6x2x860y0j1d49c2j95j6ny50v184mwvn11j"))))
3434 (build-system gnu-build-system)
3435 (arguments
3436 `(#:make-flags
3437 (list "CC=gcc"
3438 (string-append "PREFIX=" (assoc-ref %outputs "out")))
3439 #:tests? #f ; there are none
3440 #:phases
3441 (modify-phases %standard-phases
3442 (delete 'configure))))
3443 (inputs
3444 `(("lv2" ,lv2)
3445 ("fftwf" ,fftwf)))
3446 (native-inputs
3447 `(("pkg-config" ,pkg-config)))
3448 (home-page "https://github.com/lucianodato/noise-repellent")
3449 (synopsis "LV2 plugin for broadband noise reduction")
3450 (description "Noise Repellent is an LV2 plugin to reduce noise. It has
3451 the following features:
3452
3453 @enumerate
3454 @item Spectral gating and spectral subtraction suppression rule
3455 @item Adaptive and manual noise thresholds estimation
3456 @item Adjustable noise floor
3457 @item Adjustable offset of thresholds to perform over-subtraction
3458 @item Time smoothing and a masking estimation to reduce artifacts
3459 @item Basic onset detector to avoid transients suppression
3460 @item Whitening of the noise floor to mask artifacts and to recover higher
3461 frequencies
3462 @item Option to listen to the residual signal
3463 @item Soft bypass
3464 @item Noise profile saved with the session
3465 @end enumerate
3466 ")
3467 (license license:lgpl3+)))
3468
3469 (define-public cli-visualizer
3470 (package
3471 (name "cli-visualizer")
3472 (version "1.6")
3473 (source
3474 (origin
3475 (method git-fetch)
3476 (uri (git-reference
3477 (url "https://github.com/dpayne/cli-visualizer.git")
3478 (commit version)))
3479 (file-name (git-file-name name version))
3480 (sha256
3481 (base32
3482 "0mirp8bk398di5xyq95iprmdyvplfghxqmrfj7jdnpy554vx7ppc"))))
3483 (build-system gnu-build-system)
3484 (native-inputs
3485 `(("which" ,which)))
3486 (inputs
3487 `(("fftw" ,fftw)
3488 ("googletest" ,googletest)
3489 ("ncurses" ,ncurses)
3490 ("pulseaudio" ,pulseaudio)))
3491 (arguments
3492 '(#:test-target "test"
3493 #:make-flags
3494 (list (string-append "PREFIX=" %output "/bin/") "ENABLE_PULSE=1")
3495 #:phases
3496 (modify-phases %standard-phases
3497 (add-after 'unpack 'remove-sudo
3498 (lambda _
3499 (substitute* "install.sh" (("sudo") ""))
3500 #t))
3501 (add-before 'check 'set-check-environment
3502 (lambda _
3503 (setenv "CXX" "g++")
3504 (setenv "CC" "gcc")
3505 #t))
3506 (add-before 'install 'make-prefix
3507 (lambda _
3508 (mkdir-p (string-append (assoc-ref %outputs "out") "/bin"))
3509 #t))
3510 (add-after 'install 'data
3511 (lambda _
3512 (for-each (lambda (file)
3513 (install-file file
3514 (string-append (assoc-ref %outputs "out")
3515 "/share/doc")))
3516 (find-files "examples"))
3517 #t)))))
3518 (home-page "https://github.com/dpayne/cli-visualizer/")
3519 (synopsis "Command-line audio visualizer")
3520 (description "@code{cli-visualizer} displays fast-Fourier
3521 transforms (FFTs) of the sound being played, as well as other graphical
3522 representations.")
3523 (license license:expat)))
3524
3525 (define-public cava
3526 (package
3527 (name "cava")
3528 (version "0.6.1")
3529 (source (origin
3530 (method git-fetch)
3531 (uri (git-reference
3532 (url "https://github.com/karlstav/cava.git")
3533 (commit version)))
3534 (file-name (git-file-name name version))
3535 (sha256
3536 (base32
3537 "1kvhqgijs29909w3sq9m0bslx2zxxn4b3i07kdz4hb0dqkppxpjy"))))
3538 (build-system gnu-build-system)
3539 (native-inputs
3540 `(("autoconf" ,autoconf)
3541 ("automake" ,automake)
3542 ("libtool" ,libtool)))
3543 (inputs
3544 `(("fftw" ,fftw)
3545 ("ncurses" ,ncurses)
3546 ("pulseaudio" ,pulseaudio)))
3547 (arguments
3548 `(#:configure-flags
3549 (list (string-append "PREFIX=" %output)
3550 (string-append "FONT_DIR=" %output "/share/consolefonts"))
3551 #:make-flags
3552 (let ((lib (string-append %output "/lib")))
3553 (list (string-append "cava_LDFLAGS = -L" lib " -Wl,-rpath " lib)))
3554 #:phases
3555 (modify-phases %standard-phases
3556 (replace 'bootstrap
3557 (lambda* (#:key outputs #:allow-other-keys)
3558 (setenv "HOME" (getcwd))
3559 (invoke "sh" "autogen.sh")))
3560 (add-before 'build 'make-cava-ldflags
3561 (lambda* (#:key outputs #:allow-other-keys)
3562 (mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
3563 #t))
3564 (add-after 'install 'data
3565 (lambda* (#:key outputs #:allow-other-keys)
3566 (for-each (lambda (file)
3567 (install-file file
3568 (string-append (assoc-ref outputs "out")
3569 "/share/doc/examples")))
3570 (find-files "example_files"))
3571 #t)))))
3572 (home-page "https://karlstav.github.io/cava/")
3573 (synopsis "Console audio visualizer for ALSA, MPD, and PulseAudio")
3574 (description "C.A.V.A. is a bar audio spectrum visualizer for the terminal
3575 using ALSA, MPD, PulseAudio, or a FIFO buffer as its input.")
3576 (license license:expat)))
3577
3578 (define-public fluid-3
3579 (let ((commit "871c8ce2002e8b3c198f532fdb4fbcce7914f951"))
3580 (package
3581 (name "fluid-3")
3582 (version "2.1")
3583 (source
3584 (origin
3585 (method url-fetch)
3586 ;; Only one file is required, but the release bundles the whole
3587 ;; software which is 50MiB as tar and 200MiB unpacked. The website
3588 ;; directly links the soundfont release to the github file download.
3589 (uri (string-append "https://github.com/musescore/MuseScore/raw/"
3590 commit "/share/sound/FluidR3Mono_GM.sf3"))
3591 (file-name (string-append name "-" version ".sf3"))
3592 (sha256
3593 (base32
3594 "1hjfg5i15bw9279007xs92zsggjgn4s4k9pc00s851l3kvc6dkfg"))))
3595 (build-system trivial-build-system)
3596 (arguments
3597 `(#:modules ((guix build utils))
3598 #:builder
3599 (begin
3600 (use-modules (guix build utils))
3601 (let ((file (assoc-ref %build-inputs "source"))
3602 (out (string-append %output "/share/soundfonts")))
3603 (mkdir-p out)
3604 (copy-file file (string-append out "/FluidR3Mono_GM.sf3"))
3605 #t))))
3606 (home-page "https://github.com/musescore/MuseScore/tree/master/share/sound")
3607 (synopsis "Pro-quality GM soundfont")
3608 (description "Fluid-3 is Frank Wen's pro-quality GM soundfont.")
3609 (license license:expat))))
3610
3611 (define-public libfdk
3612 (let ((commit "2326faaf8f2cdf2c3a9108ccdaf1d7551aec543e")
3613 (revision "0"))
3614 (package
3615 (name "libfdk")
3616 ;; The latest upstream revision, with many bug fixes.
3617 (version (git-version "0.1.6" revision commit))
3618 (source
3619 (origin
3620 (method git-fetch)
3621 (uri (git-reference
3622 (url "https://github.com/mstorsjo/fdk-aac")
3623 (commit commit)))
3624 (file-name (git-file-name name version))
3625 (sha256
3626 (base32
3627 "0yy6ndd9d61bwl283vl1r5kva2a4acc0f4r9g0sza156f2abr9ws"))))
3628 (build-system gnu-build-system)
3629 (native-inputs
3630 `(("autoconf" ,autoconf)
3631 ("automake" ,automake)
3632 ("libtool" ,libtool)))
3633 (home-page "https://github.com/mstorsjo/fdk-aac")
3634 (synopsis "Fraunhofer FDK AAC library")
3635 (description "FDK is a library for encoding and decoding Advanced Audio
3636 Coding (AAC) format audio, developed by Fraunhofer IIS, and included as part of
3637 Android. It supports several Audio Object Types including MPEG-2 and MPEG-4 AAC
3638 LC, HE-AAC (AAC LC + SBR), HE-AACv2 (LC + SBR + PS) as well AAC-LD (low delay)
3639 and AAC-ELD (enhanced low delay) for real-time communication. The encoding
3640 library supports sample rates up to 96 kHz and up to eight channels (7.1
3641 surround).")
3642 (license (license:fsf-free "https://github.com/mstorsjo/fdk-aac/blob/master/NOTICE"
3643 "https://www.gnu.org/licenses/license-list.html#fdk")))))
3644
3645 (define-public libopenshot-audio
3646 (package
3647 (name "libopenshot-audio")
3648 (version "0.1.8")
3649 (source (origin
3650 (method git-fetch)
3651 (uri (git-reference
3652 (url "https://github.com/OpenShot/libopenshot-audio")
3653 (commit (string-append "v" version))))
3654 (file-name (git-file-name name version))
3655 (sha256
3656 (base32
3657 "1fvp6nmf30xzkmcznakh8dv5vn9d7nq051pqcqv638hsfppkmcrl"))))
3658 (build-system cmake-build-system)
3659 (inputs
3660 `(("alsa-lib" ,alsa-lib)
3661 ;; The following are for JUCE GUI components:
3662 ("libx11" ,libx11)
3663 ("freetype" ,freetype)
3664 ("libxrandr" ,libxrandr)
3665 ("libxinerama" ,libxinerama)
3666 ("libxcursor" ,libxcursor)))
3667 (arguments
3668 `(#:tests? #f ;there are no tests
3669 #:configure-flags
3670 (list (string-append "-DCMAKE_CXX_FLAGS=-I"
3671 (assoc-ref %build-inputs "freetype")
3672 "/include/freetype2"))))
3673 (home-page "https://openshot.org")
3674 (synopsis "Audio editing and playback for OpenShot")
3675 (description "OpenShot Audio Library (libopenshot-audio) allows
3676 high-quality editing and playback of audio, and is based on the JUCE
3677 library.")
3678 (license license:lgpl3+)))
3679
3680 (define-public faudio
3681 (package
3682 (name "faudio")
3683 (version "19.09")
3684 (source
3685 (origin
3686 (method git-fetch)
3687 (uri (git-reference
3688 (url "https://github.com/FNA-XNA/FAudio.git")
3689 (commit version)))
3690 (file-name (string-append name "-" version "-checkout"))
3691 (sha256
3692 (base32 "0fagik55jmy3qmb27nhg0zxash1ahfkxphx8m8gs0pimqqrdrd9d"))))
3693 (arguments
3694 '(#:tests? #f ; No tests.
3695 #:configure-flags '("-DFFMPEG=ON")))
3696 (build-system cmake-build-system)
3697 (native-inputs `(("pkg-config" ,pkg-config)))
3698 (inputs `(("ffmpeg" ,ffmpeg)
3699 ("sdl2" ,sdl2)))
3700 (home-page "https://github.com/FNA-XNA/FAudio")
3701 (synopsis "XAudio reimplementation")
3702 (description "FAudio is an XAudio reimplementation that focuses solely on
3703 developing fully accurate DirectX Audio runtime libraries.")
3704 (license license:zlib)))
3705
3706 (define-public gnaural
3707 (package
3708 (name "gnaural")
3709 (version "20110606")
3710 (source
3711 (origin
3712 (method url-fetch)
3713 (uri (string-append "mirror://sourceforge/gnaural/Gnaural/gnaural_"
3714 version ".tar.xz"))
3715 (sha256
3716 (base32
3717 "1gq519c0imsh57zklyi0f8h64l3ai48lh672c834470z8c6kvbfi"))))
3718 (build-system gnu-build-system)
3719 (inputs
3720 `(("alsa-lib" ,alsa-lib)
3721 ("gtk+" ,gtk+-2)
3722 ("libsndfile" ,libsndfile)
3723 ("portaudio" ,portaudio)))
3724 (native-inputs
3725 `(("pkg-config" ,pkg-config)))
3726 (home-page "http://gnaural.sourceforge.net/")
3727 (synopsis "Binaural beat synthesizer")
3728 (description "Gnaural is a programmable auditory binaural beat synthesizer
3729 intended to be used for brainwave entrainment. Gnaural supports creation of
3730 binaural beat tracks of different frequencies and exporting of tracks into
3731 different audio formats. Gnaural can also be linked over the internet with
3732 other Gnaural instances, allowing synchronous sessions between many users.")
3733 (license license:gpl2+)))
3734
3735 (define-public darkice
3736 (package
3737 (name "darkice")
3738 (version "1.3")
3739 (source (origin
3740 (method url-fetch)
3741 (uri (string-append "mirror://sourceforge/darkice/darkice/"
3742 version "/darkice-" version ".tar.gz"))
3743 (sha256
3744 (base32 "1rlxds7ssq7nk2in4s46xws7xy9ylxsqgcz85hxjgh17lsm0y39c"))
3745 (patches
3746 (search-patches "darkice-workaround-fpermissive-error.patch"))))
3747 (build-system gnu-build-system)
3748 (native-inputs `(("pkg-config" ,pkg-config)))
3749 (inputs `(("lame" ,lame)
3750 ("libvorbis" ,libvorbis)
3751 ("opus" ,opus)
3752 ("twolame" ,twolame)
3753 ("alsa-lib" ,alsa-lib)
3754 ("pulseaudio" ,pulseaudio)
3755 ("jack" ,jack-1)
3756 ("libsamplerate" ,libsamplerate)))
3757 (arguments
3758 `(#:configure-flags
3759 (list (string-append "--with-lame-prefix="
3760 (assoc-ref %build-inputs "lame")))))
3761 (home-page "http://www.darkice.org/")
3762 (synopsis "Live audio streamer")
3763 (description "DarkIce is a live audio streamer. It takes audio input from
3764 a sound card, encodes it into Ogg Vorbis and/or mp3, and sends the audio
3765 stream to one or more IceCast and/or ShoutCast servers.")
3766 (license license:gpl3+)))