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