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