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