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