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