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