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