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