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