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