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