gnu: Add faac.
[jackhill/guix/guix.git] / gnu / packages / audio.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 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, 2019 Efraim Flashner <efraim@flashner.co.il>
8 ;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com>
9 ;;; Copyright © 2016 Nikita <nikita@n0.is>
10 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
11 ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
12 ;;; Copyright © 2018, 2020 Oleg Pykhalov <go.wigust@gmail.com>
13 ;;; Copyright © 2018 okapi <okapi@firemail.cc>
14 ;;; Copyright © 2018, 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
15 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
16 ;;; Copyright © 2018 Brett Gilio <brettg@gnu.org>
17 ;;; Copyright © 2018, 2019 Marius Bakke <mbakke@fastmail.com>
18 ;;; Copyright © 2018 Thorsten Wilms <t_w_@freenet.de>
19 ;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
20 ;;; Copyright © 2018 Brendan Tildesley <mail@brendan.scot>
21 ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
22 ;;; Copyright © 2019 Leo Famulari <leo@famulari.name>
23 ;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
24 ;;; Copyright © 2019 Arun Isaac <arunisaac@systemreboot.net>
25 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
26 ;;; Copyright © 2019, 2020 Alexandros Theodotou <alex@zrythm.org>
27 ;;; Copyright © 2019 Christopher Lemmer Webber <cwebber@dustycloud.org>
28 ;;; Copyright © 2019 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
29 ;;; Copyright © 2019 Hartmt Goebel <h.goebel@crazy-compilers.com>
30 ;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
31 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
32 ;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
33 ;;; Copyright © 2020 Jonathan Frederickson <jonathan@terracrypt.net>
34 ;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
35 ;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
36 ;;;
37 ;;; This file is part of GNU Guix.
38 ;;;
39 ;;; GNU Guix is free software; you can redistribute it and/or modify it
40 ;;; under the terms of the GNU General Public License as published by
41 ;;; the Free Software Foundation; either version 3 of the License, or (at
42 ;;; your option) any later version.
43 ;;;
44 ;;; GNU Guix is distributed in the hope that it will be useful, but
45 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
46 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
47 ;;; GNU General Public License for more details.
48 ;;;
49 ;;; You should have received a copy of the GNU General Public License
50 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
51
52 (define-module (gnu packages audio)
53 #:use-module (gnu packages)
54 #:use-module (gnu packages algebra)
55 #:use-module (gnu packages autotools)
56 #:use-module (gnu packages avahi)
57 #:use-module (gnu packages backup)
58 #:use-module (gnu packages base)
59 #:use-module (gnu packages bison)
60 #:use-module (gnu packages boost)
61 #:use-module (gnu packages check)
62 #:use-module (gnu packages compression)
63 #:use-module (gnu packages curl)
64 #:use-module (gnu packages dbm)
65 #:use-module (gnu packages documentation)
66 #:use-module (gnu packages elf)
67 #:use-module (gnu packages emacs)
68 #:use-module (gnu packages file)
69 #:use-module (gnu packages flex)
70 #:use-module (gnu packages fltk)
71 #:use-module (gnu packages fontutils)
72 #:use-module (gnu packages gcc)
73 #:use-module (gnu packages gettext)
74 #:use-module (gnu packages gl)
75 #:use-module (gnu packages glib)
76 #:use-module (gnu packages gnome)
77 #:use-module (gnu packages gnunet) ; libmicrohttpd
78 #:use-module (gnu packages gperf)
79 #:use-module (gnu packages gtk)
80 #:use-module (gnu packages guile)
81 #:use-module (gnu packages icu4c)
82 #:use-module (gnu packages image)
83 #:use-module (gnu packages libbsd)
84 #:use-module (gnu packages libusb)
85 #:use-module (gnu packages linux)
86 #:use-module (gnu packages llvm)
87 #:use-module (gnu packages man)
88 #:use-module (gnu packages maths)
89 #:use-module (gnu packages mp3) ;taglib
90 #:use-module (gnu packages multiprecision)
91 #:use-module (gnu packages music)
92 #:use-module (gnu packages ncurses)
93 #:use-module (gnu packages networking)
94 #:use-module (gnu packages onc-rpc)
95 #:use-module (gnu packages perl)
96 #:use-module (gnu packages pkg-config)
97 #:use-module (gnu packages pulseaudio) ;libsndfile, libsamplerate
98 #:use-module (gnu packages python)
99 #:use-module (gnu packages python-xyz)
100 #:use-module (gnu packages qt)
101 #:use-module (gnu packages rdf)
102 #:use-module (gnu packages readline)
103 #:use-module (gnu packages sdl)
104 #:use-module (gnu packages serialization)
105 #:use-module (gnu packages telephony)
106 #:use-module (gnu packages linphone)
107 #:use-module (gnu packages tls)
108 #:use-module (gnu packages valgrind)
109 #:use-module (gnu packages video)
110 #:use-module (gnu packages vim) ;xxd
111 #:use-module (gnu packages webkit)
112 #:use-module (gnu packages wxwidgets)
113 #:use-module (gnu packages xiph)
114 #:use-module (gnu packages xml)
115 #:use-module (gnu packages xorg)
116 #:use-module (guix build-system cmake)
117 #:use-module (guix build-system glib-or-gtk)
118 #:use-module (guix build-system gnu)
119 #:use-module (guix build-system meson)
120 #:use-module (guix build-system python)
121 #:use-module (guix build-system trivial)
122 #:use-module (guix build-system waf)
123 #:use-module (guix download)
124 #:use-module (guix git-download)
125 #:use-module ((guix licenses) #:prefix license:)
126 #:use-module (guix packages)
127 #:use-module (guix utils)
128 #:use-module (srfi srfi-1)
129 #:use-module (srfi srfi-26))
130
131 (define-public faac
132 (package
133 (name "faac")
134 (version "1.30")
135 (source
136 (origin
137 (method url-fetch)
138 (uri
139 (string-append "https://sourceforge.net/projects/faac/files/faac-src/"
140 "faac-1.30/faac-1_30.tar.gz/download"))
141 (sha256
142 (base32 "1lmj0dib3mjp84jhxc5ddvydkzzhb0gfrdh3ikcidjlcb378ghxd"))))
143 (build-system gnu-build-system)
144 (native-inputs
145 `(("autoconf" ,autoconf)
146 ("automake" ,automake)
147 ("libtool" ,libtool)
148 ("pkg-config" ,pkg-config)))
149 (synopsis "Freeware Advanced Audio Coder")
150 (description "FAAC is an MPEG-4 and MPEG-2 AAC encoder.")
151 (home-page "https://www.audiocoding.com/faac.html")
152 (license
153 (list
154 ;; ISO MPEG-4 reference code.
155 license:gpl2+
156 ;; Others.
157 license:lgpl2.0+))))
158
159 (define-public libtimidity
160 (package
161 (name "libtimidity")
162 (version "0.2.6")
163 (source
164 (origin
165 (method url-fetch)
166 (uri
167 (string-append "https://sourceforge.net/projects/" name "/files/"
168 name "/" version "/" name "-" version ".tar.gz"))
169 (sha256
170 (base32 "0p2px0m907gi1zpdr0l9adq25jl89j85c11ag9s2g4yc6n1nhgfm"))))
171 (build-system gnu-build-system)
172 (arguments
173 `(#:tests? #f)) ; XXX: LibTiMidity could not be initialised
174 (native-inputs
175 `(("pkg-config" ,pkg-config)))
176 (inputs
177 `(("ao" ,ao)))
178 (synopsis "MIDI to WAVE converter library")
179 (description "LibTiMidity is a MIDI to WAVE converter library that uses
180 Gravis Ultrasound-compatible patch files to generate digital audio data from
181 General MIDI files.")
182 (home-page "http://libtimidity.sourceforge.net/")
183 (license
184 ;; This project is dual-licensed.
185 ;; Either of the following licenses can be exercised.
186 (list
187 license:lgpl2.1+
188 license:artistic2.0))))
189
190 (define-public vo-amrwbenc
191 (package
192 (name "vo-amrwbenc")
193 (version "0.1.3")
194 (source
195 (origin
196 (method url-fetch)
197 (uri
198 (string-append "https://sourceforge.net/projects/opencore-amr/files/"
199 name "/" name "-" version ".tar.gz"))
200 (sha256
201 (base32 "0klx3nkidc6b8aawchpk19n3xlrzgnc046w4gd0rdqphw28v6ljn"))))
202 (build-system gnu-build-system)
203 (synopsis "Adaptive Multi Rate Codec")
204 (description "VO-AMR is a library of VisualOn implementation of
205 Adaptive Multi Rate Narrowband and Wideband (AMR-NB and AMR-WB) speech codec.")
206 (home-page "https://sourceforge.net/projects/opencore-amr/")
207 (license license:asl2.0)))
208
209 (define-public opencore-amr
210 (package
211 (name "opencore-amr")
212 (version "0.1.5")
213 (source
214 (origin
215 (method url-fetch)
216 (uri
217 (string-append "https://sourceforge.net/projects/opencore-amr/files/"
218 name "/" name "-" version ".tar.gz"))
219 (sha256
220 (base32 "0hfk9khz3by0119h3jdwgdfd7jgkdbzxnmh1wssvylgnsnwnq01c"))))
221 (build-system gnu-build-system)
222 (synopsis "Adaptive Multi Rate Codec")
223 (description "OpenCore-AMR is a library of OpenCORE Framework
224 implementation of Adaptive Multi Rate Narrowband and Wideband
225 (AMR-NB and AMR-WB) speech codec.")
226 (home-page "https://sourceforge.net/projects/opencore-amr/")
227 (license license:asl2.0)))
228
229 (define-public alsa-modular-synth
230 (package
231 (name "alsa-modular-synth")
232 (version "2.1.2")
233 (source (origin
234 (method url-fetch)
235 (uri (string-append "mirror://sourceforge/alsamodular/alsamodular"
236 "/" version "/ams-" version ".tar.bz2"))
237 (sha256
238 (base32
239 "1azbrhpfk4nnybr7kgmc7w6al6xnzppg853vas8gmkh185kk11l0"))
240 (patches
241 (search-patches "alsa-modular-synth-fix-vocoder.patch"))))
242 (build-system gnu-build-system)
243 (arguments
244 `(#:configure-flags
245 '("--enable-qt5"
246 "CXXFLAGS=-std=gnu++11")
247 #:phases
248 (modify-phases %standard-phases
249 (add-after 'set-paths 'hide-default-gcc
250 (lambda* (#:key inputs #:allow-other-keys)
251 (let ((gcc (assoc-ref inputs "gcc")))
252 ;; Remove the default GCC from CPLUS_INCLUDE_PATH to prevent
253 ;; conflicts with the GCC 5 input.
254 (setenv "CPLUS_INCLUDE_PATH"
255 (string-join
256 (delete (string-append gcc "/include/c++")
257 (string-split (getenv "CPLUS_INCLUDE_PATH") #\:))
258 ":"))
259 #t)))
260 ;; Insert an extra space between linker flags.
261 (add-before 'configure 'add-missing-space
262 (lambda _
263 (substitute* "configure"
264 (("LIBS\\+=\\$LIBSsave") "LIBS+=\" $LIBSsave\"")
265 (("CFLAGS\\+=\\$CFLAGSsave") "CFLAGS+=\" $CFLAGSsave\""))
266 #t)))))
267 (inputs
268 `(("alsa-lib" ,alsa-lib)
269 ;; We cannot use zita-alsa-pcmi (the successor of clalsadrv) due to
270 ;; license incompatibility.
271 ("clalsadrv" ,clalsadrv)
272 ("fftw" ,fftw)
273 ("jack" ,jack-1)
274 ("ladspa" ,ladspa)
275 ("liblo" ,liblo)
276 ("qtbase" ,qtbase)))
277 (native-inputs
278 `(("pkg-config" ,pkg-config)
279 ("qttools" ,qttools)
280 ("gcc@5" ,gcc-5)))
281 (home-page "http://alsamodular.sourceforge.net/")
282 (synopsis "Realtime modular synthesizer and effect processor")
283 (description
284 "AlsaModularSynth is a digital implementation of a classical analog
285 modular synthesizer system. It uses virtual control voltages to control the
286 parameters of the modules. The control voltages which control the frequency
287 e.g. of the VCO (Voltage Controlled Oscillator) and VCF (Voltage Controlled
288 Filter) modules follow the convention of 1V / Octave.")
289 (license license:gpl2)))
290
291 (define-public aubio
292 (package
293 (name "aubio")
294 (version "0.4.9")
295 (source (origin
296 (method url-fetch)
297 (uri (string-append
298 "https://aubio.org/pub/aubio-" version ".tar.bz2"))
299 (sha256
300 (base32
301 "1npks71ljc48w6858l9bq30kaf5nph8z0v61jkfb70xb9np850nl"))))
302 (build-system waf-build-system)
303 (arguments
304 `(#:tests? #f ; no check target
305 #:configure-flags
306 (list
307 (string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") "/lib")
308 "--enable-fftw3f"
309 "--enable-jack"
310 "--enable-sndfile"
311 "--enable-samplerate"
312 "--enable-avcodec")
313 #:python ,python-2))
314 (inputs
315 `(("jack" ,jack-1)
316 ("libsndfile" ,libsndfile)
317 ("libsamplerate" ,libsamplerate)
318 ("fftwf" ,fftwf)
319 ("ffmpeg" ,ffmpeg))) ; for libavcodec
320 (native-inputs
321 `(("pkg-config" ,pkg-config)))
322 (home-page "https://aubio.org/")
323 (synopsis "Library for audio labelling")
324 (description
325 "aubio is a tool designed for the extraction of annotations from audio
326 signals. Its features include segmenting a sound file before each of its
327 attacks, performing pitch detection, tapping the beat and producing MIDI
328 streams from live audio.")
329 (license license:gpl3+)))
330
331 (define (ardour-rpath-phase major-version)
332 `(lambda* (#:key outputs #:allow-other-keys)
333 (let ((libdir (string-append (assoc-ref outputs "out")
334 "/lib/ardour" ,major-version)))
335 (substitute* "wscript"
336 (("linker_flags = \\[\\]")
337 (string-append "linker_flags = [\""
338 "-Wl,-rpath="
339 libdir ":"
340 libdir "/backends" ":"
341 libdir "/engines" ":"
342 libdir "/panners" ":"
343 libdir "/surfaces" ":"
344 libdir "/vamp" "\"]"))))
345 #t))
346
347 (define-public ardour
348 (package
349 (name "ardour")
350 (version "5.12")
351 (source (origin
352 (method git-fetch)
353 (uri (git-reference
354 (url "https://git.ardour.org/ardour/ardour.git")
355 (commit version)))
356 (snippet
357 ;; Ardour expects this file to exist at build time. The revision
358 ;; is the output of
359 ;; git describe HEAD | sed 's/^[A-Za-z]*+//'
360 `(call-with-output-file
361 "libs/ardour/revision.cc"
362 (lambda (port)
363 (format port ,(string-append "#include \"ardour/revision.h\"
364 namespace ARDOUR { const char* revision = \"" version "\" ; }"))
365 #t)))
366 (sha256
367 (base32
368 "0mla5lm51ryikc2rrk53max2m7a5ds6i1ai921l2h95wrha45nkr"))
369 (file-name (string-append name "-" version))))
370 (build-system waf-build-system)
371 (arguments
372 `(#:configure-flags '("--cxx11" ; required by gtkmm
373 "--no-phone-home" ; don't contact ardour.org
374 "--freedesktop" ; build .desktop file
375 "--test") ; build unit tests
376 #:phases
377 (modify-phases %standard-phases
378 (add-after 'unpack 'set-rpath-in-LDFLAGS
379 ,(ardour-rpath-phase (version-major version)))
380 (add-after 'install 'install-freedesktop-files
381 (lambda* (#:key outputs #:allow-other-keys)
382 (let* ((out (assoc-ref outputs "out"))
383 (share (string-append out "/share"))
384 (ver ,(version-major version)))
385 (for-each
386 (lambda (size)
387 (let ((dir (string-append share "/icons/hicolor/"
388 size "x" size "/apps")))
389 (mkdir-p dir)
390 (copy-file
391 (string-append "gtk2_ardour/resources/Ardour-icon_"
392 size "px.png")
393 (string-append dir "/ardour" ver ".png"))))
394 '("16" "22" "32" "48" "256"))
395 (install-file (string-append "build/gtk2_ardour/ardour"
396 ver ".desktop")
397 (string-append share "/applications/"))
398 (install-file (string-append "build/gtk2_ardour/ardour"
399 ver ".appdata.xml")
400 (string-append share "/appdata/")))
401 #t)))
402 #:test-target "test"
403 #:python ,python-2))
404 (inputs
405 `(("alsa-lib" ,alsa-lib)
406 ("atkmm" ,atkmm)
407 ("aubio" ,aubio)
408 ("boost" ,boost)
409 ("cairomm" ,cairomm)
410 ("curl" ,curl)
411 ("eudev" ,eudev)
412 ("fftw" ,fftw)
413 ("fftwf" ,fftwf)
414 ("flac" ,flac)
415 ("glibmm" ,glibmm)
416 ("gtkmm" ,gtkmm-2)
417 ("jack" ,jack-1)
418 ("libarchive" ,libarchive)
419 ("libart-lgpl" ,libart-lgpl)
420 ("libgnomecanvasmm" ,libgnomecanvasmm)
421 ("liblo" ,liblo)
422 ("libogg" ,libogg)
423 ("libsamplerate" ,libsamplerate)
424 ("libsndfile" ,libsndfile)
425 ("libusb" ,libusb)
426 ("libvorbis" ,libvorbis)
427 ("libxml2" ,libxml2)
428 ("lilv" ,lilv)
429 ("lrdf" ,lrdf)
430 ("lv2" ,lv2)
431 ("pangomm" ,pangomm)
432 ("python-rdflib" ,python-rdflib)
433 ("readline" ,readline)
434 ("redland" ,redland)
435 ("rubberband" ,rubberband)
436 ("serd" ,serd)
437 ("sord" ,sord)
438 ("sratom" ,sratom)
439 ("suil" ,suil)
440 ("taglib" ,taglib)
441 ("vamp" ,vamp)))
442 (native-inputs
443 `(("cppunit" ,cppunit)
444 ("gettext" ,gettext-minimal)
445 ("itstool" ,itstool)
446 ("perl" ,perl)
447 ("pkg-config" ,pkg-config)))
448 (home-page "https://ardour.org")
449 (synopsis "Digital audio workstation")
450 (description
451 "Ardour is a multi-channel digital audio workstation, allowing users to
452 record, edit, mix and master audio and MIDI projects. It is targeted at audio
453 engineers, musicians, soundtrack editors and composers.")
454 (license license:gpl2+)))
455
456 (define-public audacity
457 (package
458 (name "audacity")
459 (version "2.4.1")
460 (source
461 (origin
462 (method git-fetch)
463 (uri (git-reference
464 (url "https://github.com/audacity/audacity")
465 (commit (string-append "Audacity-" version))))
466 (file-name (git-file-name name version))
467 (sha256
468 (base32
469 "1xk0piv72d2xd3p7igr916fhcbrm76fhjr418k1rlqdzzg1hfljn"))
470 (patches (search-patches "audacity-build-with-system-portaudio.patch"))
471 (modules '((guix build utils)))
472 (snippet
473 ;; Remove bundled libraries.
474 '(begin
475 (for-each
476 (lambda (dir)
477 (delete-file-recursively (string-append "lib-src/" dir)))
478 '("expat" "ffmpeg" "lame" "libflac" "libid3tag" "libmad" "libogg"
479 "libsndfile" "libsoxr" "libvamp" "libvorbis" "lv2"
480 "portaudio-v19" "portmidi" "soundtouch" "twolame"
481 ;; FIXME: these libraries have not been packaged yet:
482 ;; "libnyquist"
483 ;; "libscorealign"
484 ;; "libwidgetextra"
485 ;; "portburn"
486 ;; "portsmf"
487 ;; "portmixer"
488
489 ;; FIXME: we have this library, but it differs in that the Slide
490 ;; class does not have a member "getInverseStretchedTime".
491 ;; "sbsms"
492 ))
493 #t))))
494 (build-system glib-or-gtk-build-system)
495 (inputs
496 `(("wxwidgets" ,wxwidgets)
497 ("gtk+" ,gtk+)
498 ("alsa-lib" ,alsa-lib)
499 ("jack" ,jack-1)
500 ("expat" ,expat)
501 ("ffmpeg" ,ffmpeg)
502 ("lame" ,lame)
503 ("flac" ,flac)
504 ("libid3tag" ,libid3tag)
505 ("libmad" ,libmad)
506 ;;("libsbsms" ,libsbsms) ;bundled version is modified
507 ("libsndfile" ,libsndfile)
508 ("soundtouch" ,soundtouch)
509 ("soxr" ,soxr) ;replaces libsamplerate
510 ("twolame" ,twolame)
511 ("vamp" ,vamp)
512 ("libvorbis" ,libvorbis)
513 ("lv2" ,lv2)
514 ("lilv" ,lilv) ;for lv2
515 ("suil" ,suil) ;for lv2
516 ("portaudio" ,portaudio)
517 ("portmidi" ,portmidi)))
518 (native-inputs
519 `(("autoconf" ,autoconf)
520 ("automake" ,automake)
521 ("gettext" ,gettext-minimal) ;for msgfmt
522 ("libtool" ,libtool)
523 ("pkg-config" ,pkg-config)
524 ("python" ,python-2)
525 ("which" ,which)))
526 (arguments
527 `(#:configure-flags
528 (let ((libid3tag (assoc-ref %build-inputs "libid3tag"))
529 (libmad (assoc-ref %build-inputs "libmad"))
530 (portmidi (assoc-ref %build-inputs "portmidi")))
531 (list
532 ;; Loading FFmpeg dynamically is problematic.
533 "--disable-dynamic-loading"
534 ;; SSE instructions are available on Intel systems only.
535 ,@(if (any (cute string-prefix? <> (or (%current-target-system)
536 (%current-system)))
537 '("x64_64" "i686"))
538 '()
539 '("--enable-sse=no"))
540 ;; portmidi, libid3tag and libmad provide no .pc files, so
541 ;; pkg-config fails to find them. Force their inclusion.
542 (string-append "ID3TAG_CFLAGS=-I" libid3tag "/include")
543 (string-append "ID3TAG_LIBS=-L" libid3tag "/lib -lid3tag -lz")
544 (string-append "LIBMAD_CFLAGS=-I" libmad "/include")
545 (string-append "LIBMAD_LIBS=-L" libmad "/lib -lmad")
546 (string-append "PORTMIDI_CFLAGS=-I" portmidi "/include")
547 (string-append "PORTMIDI_LIBS=-L" portmidi "/lib -lportmidi")
548 "EXPAT_USE_SYSTEM=yes"
549 "FFMPEG_USE_SYSTEM=yes"
550 "LAME_USE_SYSTEM=yes"
551 "LIBFLAC_USE_SYSTEM=yes"
552 "LIBID3TAG_USE_SYSTEM=yes"
553 "LIBMAD_USE_SYSTEM=yes"
554 "USE_LOCAL_LIBNYQUIST=" ;not packaged yet
555 ;;"LIBSBSMS_USE_SYSTEM=yes" ;bundled version is patched
556 "LIBSNDFILE_USE_SYSTEM=yes"
557 "LIBSOUNDTOUCH_USE_SYSTEM=yes"
558 "LIBSOXR_USE_SYSTEM=yes"
559 "LIBTWOLAME_USE_SYSTEM=yes"
560 "LIBVAMP_USE_SYSTEM=yes"
561 "LIBVORBIS_USE_SYSTEM=yes"
562 "LV2_USE_SYSTEM=yes"
563 "PORTAUDIO_USE_SYSTEM=yes"))
564 #:phases
565 (modify-phases %standard-phases
566 (add-after 'unpack 'fix-sbsms-check
567 (lambda _
568 ;; This check is wrong: there is no 2.2.0 release; not even the
569 ;; bundled sources match this release string.
570 (substitute* '("m4/audacity_checklib_libsbsms.m4"
571 "configure")
572 (("sbsms >= 2.2.0") "sbsms >= 2.0.0"))
573 #t))
574 (add-after 'unpack 'use-upstream-headers
575 (lambda* (#:key inputs #:allow-other-keys)
576 (substitute* '("src/NoteTrack.cpp"
577 "src/AudioIO.cpp"
578 "src/AudioIO.h"
579 "src/AudioIOBase.cpp")
580 (("../lib-src/portmidi/pm_common/portmidi.h") "portmidi.h")
581 (("../lib-src/portmidi/porttime/porttime.h") "porttime.h"))
582 (substitute* "src/prefs/MidiIOPrefs.cpp"
583 (("../../lib-src/portmidi/pm_common/portmidi.h") "portmidi.h"))
584 #t)))
585 ;; The test suite is not "well exercised" according to the developers,
586 ;; and fails with various errors. See
587 ;; <http://sourceforge.net/p/audacity/mailman/message/33524292/>.
588 #:tests? #f))
589 (home-page "https://www.audacityteam.org/")
590 (synopsis "Software for recording and editing sounds")
591 (description
592 "Audacity is a multi-track audio editor designed for recording, playing
593 and editing digital audio. It features digital effects and spectrum analysis
594 tools.")
595 (license license:gpl2+)))
596
597 (define-public audiofile
598 (package
599 (name "audiofile")
600 (version "0.3.6")
601 (source
602 (origin
603 (method url-fetch)
604 (uri (string-append
605 "https://audiofile.68k.org/audiofile-" version ".tar.gz"))
606 (sha256
607 (base32 "0rb927zknk9kmhprd8rdr4azql4gn2dp75a36iazx2xhkbqhvind"))
608 (patches
609 ;; CVE references according to nixpgs
610 (search-patches
611 "audiofile-fix-datatypes-in-tests.patch"
612 "audiofile-fix-sign-conversion.patch"
613 "audiofile-hurd.patch"
614 "audiofile-CVE-2015-7747.patch"
615 ;; CVE-2017-6829:
616 "audiofile-Fix-index-overflow-in-IMA.cpp.patch"
617 ;; CVE-2017-6827, CVE-2017-6828, CVE-2017-6832, CVE-2017-6835,
618 ;; CVE-2017-6837:
619 "audiofile-Check-the-number-of-coefficients.patch"
620 ;; CVE-2017-6839:
621 "audiofile-Fix-overflow-in-MSADPCM-decodeSam.patch"
622 ;; CVE-2017-6830, CVE-2017-6834, CVE-2017-6836, CVE-2017-6838:
623 "audiofile-Fix-multiply-overflow-sfconvert.patch"
624 "audiofile-signature-of-multiplyCheckOverflow.patch"
625 ;; CVE-2017-6831:
626 "audiofile-Fail-on-error-in-parseFormat.patch"
627 ;; CVE-2017-6833:
628 "audiofile-division-by-zero-BlockCodec-runPull.patch"
629 "audiofile-CVE-2018-13440.patch"
630 "audiofile-CVE-2018-17095.patch"))))
631 (build-system gnu-build-system)
632 (inputs
633 `(("alsa-lib" ,alsa-lib)))
634 (home-page "https://audiofile.68k.org/")
635 (synopsis "Library to handle various audio file formats")
636 (description "This is an open-source version of SGI's audiofile library.
637 It provides a uniform programming interface for processing of audio data to
638 and from audio files of many common formats.
639
640 Currently supported file formats include AIFF/AIFF-C, WAVE, and NeXT/Sun
641 .snd/.au, BICS, and raw data. Supported compression formats are currently
642 G.711 mu-law and A-law.")
643 (license license:lgpl2.1+)))
644
645 (define-public autotalent
646 (package
647 (name "autotalent")
648 (version "0.2")
649 (source (origin
650 (method url-fetch)
651 (uri (string-append "http://tombaran.info/autotalent-"
652 version ".tar.gz"))
653 (sha256
654 (base32
655 "1n04qm66f14195ly6gsy3ra7v2j7zad5n19d8dwfmh0qs6h9hphh"))))
656 (build-system gnu-build-system)
657 (arguments
658 `(#:tests? #f ; no check target
659 #:phases
660 (modify-phases %standard-phases
661 ;; no configure script
662 (delete 'configure)
663 (add-before 'install 'prepare-target-directory
664 (lambda* (#:key outputs #:allow-other-keys)
665 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
666 #t))
667 (add-after 'unpack 'override-target-directory
668 (lambda* (#:key outputs #:allow-other-keys)
669 (substitute* "Makefile"
670 (("/usr/lib64/ladspa")
671 (string-append (assoc-ref outputs "out") "/lib/ladspa")))
672 #t)))))
673 (inputs
674 `(("ladspa" ,ladspa)))
675 (home-page "http://tombaran.info/autotalent.html")
676 (synopsis "Pitch-correction LADSPA audio plugin")
677 (description
678 "Autotalent is a LADSPA plugin for real-time pitch-correction. Among its
679 controls are allowable notes, strength of correction, LFO for vibrato and
680 formant warp.")
681 ;; All code except the FFT routine is licensed under GPLv2+.
682 ;; The FFT routine is under BSD-3.
683 (license license:gpl2+)))
684
685 (define-public azr3
686 (package
687 (name "azr3")
688 (version "1.2.3")
689 (source (origin
690 (method url-fetch)
691 (uri (string-append "mirror://savannah/ll-plugins/azr3-jack-"
692 version
693 ".tar.bz2"))
694 (sha256
695 (base32
696 "18mdw6nc0vgj6k9rsy0x8w64wvzld0frqshrxxbxfj9qi9843vlc"))
697 (patches (search-patches "azr3.patch"))))
698 (build-system gnu-build-system)
699 (arguments
700 `(#:tests? #f ; no check target
701 #:make-flags
702 (list "LV2PEG=ttl2c"
703 (string-append "prefix=" %output)
704 (string-append "pkgdatadir=" %output "/share/azr3-jack"))
705 #:phases
706 (modify-phases %standard-phases
707 (add-before 'install 'fix-timestamp
708 (lambda _
709 (let ((early-1980 315619200)) ; 1980-01-02 UTC
710 (utime "azr3.1" early-1980 early-1980))
711 #t)))))
712 (inputs
713 `(("gtkmm" ,gtkmm-2)
714 ("lvtk" ,lvtk)
715 ("jack" ,jack-1)
716 ("lash" ,lash)))
717 (native-inputs
718 `(("pkg-config" ,pkg-config)))
719 (home-page "http://ll-plugins.nongnu.org/azr3/")
720 (synopsis "Tonewheel organ synthesizer")
721 (description
722 "AZR-3 is a port of the free VST plugin AZR-3. It is a tonewheel organ
723 with drawbars, distortion and rotating speakers. The organ has three
724 sections, two polyphonic sections with nine drawbars each and one monophonic
725 bass section with five drawbars. A standalone JACK application and LV2
726 plugins are provided.")
727 (license license:gpl2)))
728
729 (define-public calf
730 (package
731 (name "calf")
732 (version "0.90.3")
733 (source (origin
734 (method url-fetch)
735 (uri (string-append "https://calf-studio-gear.org/files/calf-"
736 version ".tar.gz"))
737 (sha256
738 (base32
739 "17x4hylgq4dn9qycsdacfxy64f5cv57n2qgkvsdp524gnqzw4az3"))))
740 (build-system gnu-build-system)
741 (inputs
742 `(("fluidsynth" ,fluidsynth)
743 ("expat" ,expat)
744 ("glib" ,glib)
745 ("gtk" ,gtk+-2)
746 ("cairo" ,cairo)
747 ("lash" ,lash)
748 ("jack" ,jack-1)
749 ("lv2" ,lv2)
750 ("ladspa" ,ladspa)
751 ("fftw" ,fftw)))
752 (native-inputs
753 `(("pkg-config" ,pkg-config)))
754 (native-search-paths
755 (list (search-path-specification
756 (variable "LV2_PATH")
757 (files '("lib/lv2")))))
758 (home-page "http://calf.sourceforge.net/")
759 (synopsis "Audio plug-in pack for LV2 and JACK environments")
760 (description
761 "Calf Studio Gear is an audio plug-in pack for LV2 and JACK environments.
762 The suite contains lots of effects (delay, modulation, signal processing,
763 filters, equalizers, dynamics, distortion and mastering effects),
764 instruments (SF2 player, organ simulator and a monophonic synthesizer) and
765 tools (analyzer, mono/stereo tools, crossovers).")
766 ;; calfjackhost is released under GPLv2+
767 ;; The plugins are released under LGPLv2.1+
768 (license (list license:lgpl2.1+ license:gpl2+))))
769
770 (define-public caps-plugins-lv2
771 (package
772 (name "caps-plugins-lv2")
773 (version "0.9.24") ; version that has been ported.
774 (source
775 (origin
776 ;; The Github project hasn't tagged a release.
777 (method git-fetch)
778 (uri (git-reference
779 ;; Actually https://github.com/moddevices/caps-lv2.git, but it's
780 ;; missing fixes for newer glibc, so using the origin of a pull
781 ;; request regarding this issue:
782 (url "https://github.com/jujudusud/caps-lv2")
783 (commit "9c9478b7fbd8f9714f552ebe2a6866398b0babfb")))
784 (file-name (git-file-name name version))
785 (sha256
786 (base32
787 "1idfnazin3cca41zw1a8vwgnxjnkrap7bxxjamjqvgpmvydgcam1"))))
788 (build-system gnu-build-system)
789 (arguments
790 `(#:tests? #f ; no check target
791 #:phases
792 (modify-phases %standard-phases
793 ;; no configure script
794 (delete 'configure)
795 (add-after 'unpack 'override-target-directory
796 (lambda* (#:key outputs #:allow-other-keys)
797 (substitute* (find-files "plugins" "Makefile")
798 (("/usr/local")(assoc-ref outputs "out")))
799 #t)))))
800 (inputs
801 `(("lv2" ,lv2)))
802 ;; home-page of the original LADSPA version: http://quitte.de/dsp/caps.html
803 (home-page "https://github.com/moddevices/caps-lv2")
804 (synopsis "LV2 port of the CAPS audio plugin colection")
805 (description
806 "LV2 port of CAPS, a collection of audio plugins comprising basic virtual
807 guitar amplification and a small range of classic effects, signal processors and
808 generators of mostly elementary and occasionally exotic nature.")
809 (license license:gpl3+)))
810
811 (define-public infamous-plugins
812 (package
813 (name "infamous-plugins")
814 (version "0.2.04")
815 (source (origin
816 (method git-fetch)
817 (uri (git-reference
818 (url "https://github.com/ssj71/infamousPlugins")
819 (commit (string-append "v" version))))
820 (file-name (git-file-name name version))
821 (sha256
822 (base32
823 "0hmqk80w4qxq09iag7b7srf2g0wigkyhzq0ywxvhz2iz0hq9k0dh"))))
824 (build-system cmake-build-system)
825 (arguments
826 `(#:tests? #f ; there are no tests
827 #:phases
828 (modify-phases %standard-phases
829 (add-after 'unpack 'remove-compiler-flags
830 (lambda _
831 (substitute* (find-files "." "CMakeLists.txt")
832 (("-msse2 -mfpmath=sse") ""))
833 #t)))))
834 (inputs
835 `(("cairo" ,cairo)
836 ("fftwf" ,fftwf)
837 ("lv2" ,lv2)
838 ("ntk" ,ntk)
839 ("zita-resampler" ,zita-resampler)))
840 (native-inputs
841 `(("pkg-config" ,pkg-config)))
842 (home-page "https://ssj71.github.io/infamousPlugins")
843 (synopsis "LV2 plugins for live use")
844 (description
845 "The infamous plugins are a collection of LV2 audio plugins for live
846 performances. The plugins include a cellular automaton synthesizer, an
847 envelope follower, distortion effects, tape effects and more.")
848 (license license:gpl2+)))
849
850 (define-public swh-plugins
851 (package
852 (name "swh-plugins")
853 (version "0.4.17")
854 (source (origin
855 (method git-fetch)
856 (uri (git-reference
857 (url "https://github.com/swh/ladspa")
858 (commit (string-append "v" version))))
859 (file-name (git-file-name name version))
860 (sha256
861 (base32
862 "1c98z2xxz9pgcb4dg99gz8qrylh5cnag0j18a52d88ifsy24isvq"))))
863 (native-inputs
864 `(("autoconf" ,autoconf)
865 ("automake" ,automake)
866 ("gettext" ,gettext-minimal) ;for autopoint
867 ("libtool" ,libtool)
868 ("perl" ,perl)
869 ("pkg-config" ,pkg-config)
870 ("which" ,which)))
871 (inputs
872 `(("fftwf" ,fftwf)
873 ("perl-xml-parser" ,perl-xml-parser)))
874 (build-system gnu-build-system)
875 (home-page "http://plugin.org.uk")
876 (synopsis "The SWH Plugins package for the LADSPA plugin system")
877 (description "This package provides Steve Harris's LADSPA plugins.")
878 (license license:gpl2+)))
879
880 (define-public swh-plugins-lv2
881 (package
882 (name "swh-plugins-lv2")
883 (version "1.0.16")
884 (source (origin
885 (method git-fetch)
886 (uri (git-reference
887 (url "https://github.com/swh/lv2")
888 (commit (string-append "v" version))))
889 (file-name (git-file-name name version))
890 (sha256
891 (base32
892 "0y7nnww864mm4k6ayy2lhcws3wlbhb2gkyjbrwk921fvc18qk9mz"))))
893 (build-system gnu-build-system)
894 (arguments
895 `(#:tests? #f ; no check target
896 #:make-flags (list "CC=gcc"
897 (string-append "PREFIX="
898 (assoc-ref %outputs "out")))
899 #:phases
900 (modify-phases %standard-phases
901 ;; no configure script
902 (delete 'configure)
903 (add-after 'unpack 'patch-makefile-and-enter-directory
904 ;; The default install target doesn't install, but the
905 ;; "install-system" target does.
906 (lambda _
907 (substitute* "Makefile"
908 (("install:") "install: install-system"))
909 #t)))))
910 (inputs
911 `(("lv2" ,lv2)
912 ("fftwf" ,fftwf)))
913 (native-inputs
914 `(("libxslt" ,libxslt)
915 ("pkg-config" ,pkg-config)))
916 (home-page "http://plugin.org.uk")
917 (synopsis "SWH plugins in LV2 format")
918 (description
919 "Swh-plugins-lv2 is a collection of audio plugins in LV2 format. Plugin
920 classes include: dynamics (compressor, limiter), time (delay, chorus,
921 flanger), ringmodulator, distortion, filters, pitchshift, oscillators,
922 emulation (valve, tape), bit fiddling (decimator, pointer-cast), etc.")
923 (license license:gpl3+)))
924
925 (define-public tao
926 (package
927 (name "tao")
928 (version "1.0-beta-10May2006")
929 (source (origin
930 (method url-fetch)
931 (uri (string-append "mirror://sourceforge/taopm/Tao/"
932 "tao-" version "/"
933 "tao-" version ".tar.gz"))
934 (sha256
935 (base32
936 "156py3g6mmglldfd0j76bn7n242hdwf49diaprjpj7crp8vgf2pz"))
937 (patches
938 (search-patches "tao-add-missing-headers.patch"
939 "tao-fix-parser-types.patch"))
940 (modules '((guix build utils)))
941 (snippet
942 '(begin
943 (substitute* "configure"
944 (("SHELL=/bin/sh") ""))
945 #t))))
946 (build-system gnu-build-system)
947 (arguments
948 '(#:configure-flags '("TAO_RELEASE=-beta")
949 #:phases
950 (modify-phases %standard-phases
951 (add-after 'unpack 'fix-references
952 (lambda* (#:key outputs #:allow-other-keys)
953 (substitute* "user-scripts/tao.in"
954 (("taoparse")
955 (string-append (assoc-ref outputs "out") "/bin/taoparse"))
956 (("grep") (which "grep"))
957 (("sed -f \\$distdir/user-scripts/")
958 (string-append (which "sed") " -f $distdir/"))
959 (("distdir=.*")
960 (string-append "distdir="
961 (assoc-ref outputs "out") "/share/tao")))
962 #t))
963 (add-after 'install 'install-extra-files
964 (lambda* (#:key outputs #:allow-other-keys)
965 (let* ((out (assoc-ref outputs "out"))
966 (share (string-append out "/share/tao/"))
967 (inc (string-append out "/include/tao/")))
968 (mkdir-p share)
969 (mkdir-p inc)
970 (install-file "user-scripts/error.parse" share)
971 (copy-recursively "examples" (string-append share "examples"))
972 (for-each (lambda (file) (install-file file inc))
973 (find-files "include" "\\.h"))
974 #t))))))
975 (inputs
976 `(("audiofile" ,audiofile)
977 ("libxi" ,libxi)
978 ("libxmu" ,libxmu)
979 ("mesa" ,mesa)
980 ("glut" ,freeglut)
981 ("flex" ,flex)
982 ("bison" ,bison)
983 ("sed" ,sed)
984 ("grep" ,grep)))
985 (home-page "http://taopm.sourceforge.net/")
986 (synopsis "Sound Synthesis with Physical Models")
987 (description "Tao is a software package for sound synthesis using physical
988 models. It provides a virtual acoustic material constructed from masses and
989 springs which can be used as the basis for building quite complex virtual
990 musical instruments. Tao comes with a synthesis language for creating and
991 playing instruments and a C++ API for those who would like to use it as an
992 object library.")
993 (license license:gpl2+)))
994
995 (define-public csound
996 (package
997 (name "csound")
998 (version "6.14.0")
999 (source
1000 (origin
1001 (method git-fetch)
1002 (uri (git-reference
1003 (url "https://github.com/csound/csound")
1004 (commit version)))
1005 (file-name (git-file-name name version))
1006 (sha256
1007 (base32 "1sr9knfhbm2m0wpkjq2l5n471vnl51wy4p6j4m95zqybimzb4s2j"))))
1008 (build-system cmake-build-system)
1009 (native-inputs
1010 `(("bison" ,bison)
1011 ("flex" ,flex)
1012 ("gettext" ,gettext-minimal)
1013 ("zlib" ,zlib)))
1014 (inputs
1015 `(("alsa-lib" ,alsa-lib)
1016 ("boost" ,boost)
1017 ("jack" ,jack-1)
1018 ("ladspa" ,ladspa)
1019 ("liblo" ,liblo)
1020 ("libsndfile" ,libsndfile)
1021 ("pulseaudio" ,pulseaudio)))
1022 (home-page "https://csound.com/")
1023 (synopsis "Sound and music computing system")
1024 (description
1025 "Csound is a user-programmable and user-extensible sound processing
1026 language and software synthesizer.")
1027 (license license:lgpl2.1+)))
1028
1029 (define-public clalsadrv
1030 (package
1031 (name "clalsadrv")
1032 (version "2.0.0")
1033 (source (origin
1034 (method url-fetch)
1035 (uri (string-append
1036 "http://kokkinizita.linuxaudio.org"
1037 "/linuxaudio/downloads/clalsadrv-"
1038 version ".tar.bz2"))
1039 (sha256
1040 (base32
1041 "0bsacx3l9065gk8g4137qmz2ij7s9x06aldvacinzlcslw7bd1kq"))))
1042 (build-system gnu-build-system)
1043 (arguments
1044 `(#:tests? #f ; no "check" target
1045 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
1046 #:phases
1047 (modify-phases %standard-phases
1048 (add-after 'unpack 'patch-makefile-and-enter-directory
1049 (lambda _
1050 (substitute* "libs/Makefile"
1051 (("/sbin/ldconfig") "true")
1052 (("^LIBDIR =.*") "LIBDIR = lib\n"))
1053 (chdir "libs")
1054 #t))
1055 (add-after 'install 'install-symlink
1056 (lambda _
1057 (symlink "libclalsadrv.so"
1058 (string-append (assoc-ref %outputs "out")
1059 "/lib/libclalsadrv.so.2"))
1060 #t))
1061 ;; no configure script
1062 (delete 'configure))))
1063 (inputs
1064 `(("alsa-lib" ,alsa-lib)
1065 ("fftw" ,fftw)))
1066 (home-page "https://kokkinizita.linuxaudio.org")
1067 (synopsis "C++ wrapper around the ALSA API")
1068 (description
1069 "clalsadrv is a C++ wrapper around the ALSA API simplifying access to
1070 ALSA PCM devices.")
1071 (license license:gpl2+)))
1072
1073 (define-public amb-plugins
1074 (package
1075 (name "amb-plugins")
1076 (version "0.8.1")
1077 (source (origin
1078 (method url-fetch)
1079 (uri (string-append
1080 "http://kokkinizita.linuxaudio.org"
1081 "/linuxaudio/downloads/AMB-plugins-"
1082 version ".tar.bz2"))
1083 (sha256
1084 (base32
1085 "0x4blm4visjqj0ndqr0cg776v3b7lvplpc8cgi9n51llhavn0jpl"))))
1086 (build-system gnu-build-system)
1087 (arguments
1088 `(#:tests? #f ; no "check" target
1089 #:phases
1090 (modify-phases %standard-phases
1091 ;; no configure script
1092 (delete 'configure)
1093 (add-before 'install 'prepare-target-directory
1094 (lambda* (#:key outputs #:allow-other-keys)
1095 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1096 #t))
1097 (add-after 'unpack 'override-target-directory-and-tool-paths
1098 (lambda* (#:key outputs #:allow-other-keys)
1099 (substitute* "Makefile"
1100 (("/usr/lib/ladspa")
1101 (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1102 (("/usr/bin/install") (which "install"))
1103 (("/bin/rm") "#"))
1104 #t)))))
1105 (home-page "https://kokkinizita.linuxaudio.org")
1106 (synopsis "LADSPA ambisonics plugins")
1107 (description
1108 "The AMB plugins are a set of LADSPA ambisonics plugins, mainly to be
1109 used within Ardour. Features include: mono and stereo to B-format panning,
1110 horizontal rotator, square, hexagon and cube decoders.")
1111 (license license:gpl2+)))
1112
1113 (define-public mcp-plugins
1114 (package
1115 (name "mcp-plugins")
1116 (version "0.4.0")
1117 (source (origin
1118 (method url-fetch)
1119 (uri (string-append
1120 "http://kokkinizita.linuxaudio.org"
1121 "/linuxaudio/downloads/MCP-plugins-"
1122 version ".tar.bz2"))
1123 (sha256
1124 (base32
1125 "06a9r1l85jmg7l1cvc3788mk8ra0xagjfy1rmhw3b80y4n0vlnvc"))))
1126 (build-system gnu-build-system)
1127 (arguments
1128 `(#:tests? #f ; no "check" target
1129 #:phases
1130 (modify-phases %standard-phases
1131 ;; no configure script
1132 (delete 'configure)
1133 (add-before 'install 'prepare-target-directory
1134 (lambda* (#:key outputs #:allow-other-keys)
1135 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1136 #t))
1137 (add-after 'unpack 'override-target-directory
1138 (lambda* (#:key outputs #:allow-other-keys)
1139 (substitute* "Makefile"
1140 (("/usr") (assoc-ref outputs "out")))
1141 #t)))))
1142 (home-page "https://kokkinizita.linuxaudio.org")
1143 (synopsis "Chorus, phaser, and vintage high-pass and low-pass filters")
1144 (description
1145 "This package provides various LADSPA plugins. @code{cs_chorus} and
1146 @code{cs_phaser} provide chorus and phaser effects, respectively;
1147 @code{mvclpf24} provides four implementations of the low-pass filter used in
1148 vintage Moog synthesizers; @code{mvchpf24} is based on the voltage-controlled
1149 high-pass filter by Robert Moog. The filters attempt to accurately emulate
1150 the non-linear circuit elements of their original analog counterparts.")
1151 (license license:gpl2+)))
1152
1153 (define-public rev-plugins
1154 (package
1155 (name "rev-plugins")
1156 (version "0.7.1")
1157 (source (origin
1158 (method url-fetch)
1159 (uri (string-append
1160 "http://kokkinizita.linuxaudio.org"
1161 "/linuxaudio/downloads/REV-plugins-"
1162 version ".tar.bz2"))
1163 (sha256
1164 (base32
1165 "1ikpinxm00pkfi259bnkzhsy3miagrjgdihaaf5x4v7zac29j3g7"))))
1166 (build-system gnu-build-system)
1167 (arguments
1168 `(#:tests? #f ; no "check" target
1169 #:phases
1170 (modify-phases %standard-phases
1171 ;; no configure script
1172 (delete 'configure)
1173 (add-before 'install 'prepare-target-directory
1174 (lambda* (#:key outputs #:allow-other-keys)
1175 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1176 #t))
1177 (add-after 'unpack 'override-target-directory
1178 (lambda* (#:key outputs #:allow-other-keys)
1179 (substitute* "Makefile"
1180 (("/usr") (assoc-ref outputs "out")))
1181 #t)))))
1182 (home-page "https://kokkinizita.linuxaudio.org")
1183 (synopsis "LADSPA reverb plugin")
1184 (description
1185 "This package provides a stereo reverb LADSPA plugin based on the
1186 well-known greverb.")
1187 (license license:gpl2+)))
1188
1189 (define-public fil-plugins
1190 (package
1191 (name "fil-plugins")
1192 (version "0.3.0")
1193 (source (origin
1194 (method url-fetch)
1195 (uri (string-append
1196 "http://kokkinizita.linuxaudio.org"
1197 "/linuxaudio/downloads/FIL-plugins-"
1198 version ".tar.bz2"))
1199 (sha256
1200 (base32
1201 "1scfv9j7jrp50r565haa4rvxn1vk2ss86xssl5qgcr8r45qz42qw"))))
1202 (build-system gnu-build-system)
1203 (arguments
1204 `(#:tests? #f ; no "check" target
1205 #:phases
1206 (modify-phases %standard-phases
1207 ;; no configure script
1208 (delete 'configure)
1209 (add-before 'install 'prepare-target-directory
1210 (lambda* (#:key outputs #:allow-other-keys)
1211 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1212 #t))
1213 (add-after 'unpack 'override-target-directory
1214 (lambda* (#:key outputs #:allow-other-keys)
1215 (substitute* "Makefile"
1216 (("/usr") (assoc-ref outputs "out")))
1217 #t)))))
1218 (home-page "https://kokkinizita.linuxaudio.org")
1219 (synopsis "LADSPA four-band parametric equalizer plugin")
1220 (description
1221 "This package provides a LADSPA plugin for a four-band parametric
1222 equalizer. Each section has an active/bypass switch, frequency, bandwidth and
1223 gain controls. There is also a global bypass switch and gain control.
1224
1225 The 2nd order resonant filters are implemented using a Mitra-Regalia style
1226 lattice filter, which is stable even while parameters are being changed.
1227
1228 All switches and controls are internally smoothed, so they can be used @code{live}
1229 without any clicks or zipper noises. This makes this plugin suitable for use
1230 in systems that allow automation of plugin control ports, such as Ardour, or
1231 for stage use.")
1232 (license license:gpl2+)))
1233
1234 (define-public ste-plugins
1235 (package
1236 (name "ste-plugins")
1237 (version "0.0.2")
1238 (source (origin
1239 (method url-fetch)
1240 (uri (string-append
1241 "http://kokkinizita.linuxaudio.org"
1242 "/linuxaudio/downloads/STE-plugins-"
1243 version ".tar.bz2"))
1244 (sha256
1245 (base32
1246 "0s3c9w5xihs87cnd1lh9xgj3maabjdyh6bl766qp5lhkg3ax8zy6"))))
1247 (build-system gnu-build-system)
1248 (arguments
1249 `(#:tests? #f ; no "check" target
1250 #:phases
1251 (modify-phases %standard-phases
1252 ;; no configure script
1253 (delete 'configure)
1254 (add-before 'install 'prepare-target-directory
1255 (lambda* (#:key outputs #:allow-other-keys)
1256 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1257 #t))
1258 (add-after 'unpack 'override-target-directory
1259 (lambda* (#:key outputs #:allow-other-keys)
1260 (substitute* "Makefile"
1261 (("/usr") (assoc-ref outputs "out")))
1262 #t)))))
1263 (home-page "https://kokkinizita.linuxaudio.org")
1264 (synopsis "LADSPA stereo width plugin")
1265 (description
1266 "This package provides a LADSPA plugin to manipulate the stereo width of
1267 audio signals.")
1268 (license license:gpl2+)))
1269
1270 (define-public vco-plugins
1271 (package
1272 (name "vco-plugins")
1273 (version "0.3.0")
1274 (source (origin
1275 (method url-fetch)
1276 (uri (string-append
1277 "http://kokkinizita.linuxaudio.org"
1278 "/linuxaudio/downloads/VCO-plugins-"
1279 version ".tar.bz2"))
1280 (sha256
1281 (base32
1282 "1xzqdg3b07r7zww05y9bb737l9dxvfkv28m3fyak1aazaci3rsgl"))))
1283 (build-system gnu-build-system)
1284 (arguments
1285 `(#:tests? #f ; no "check" target
1286 #:phases
1287 (modify-phases %standard-phases
1288 ;; no configure script
1289 (delete 'configure)
1290 (add-before 'install 'prepare-target-directory
1291 (lambda* (#:key outputs #:allow-other-keys)
1292 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1293 #t))
1294 (add-after 'unpack 'override-target-directory
1295 (lambda* (#:key outputs #:allow-other-keys)
1296 (substitute* "Makefile"
1297 (("/usr") (assoc-ref outputs "out"))
1298 (("/bin/cp") (which "cp")))
1299 #t)))))
1300 (home-page "https://kokkinizita.linuxaudio.org")
1301 (synopsis "LADSPA plugin for synthesizer oscillators")
1302 (description
1303 "The @code{blvco} LADSPA plugin provides three anti-aliased oscillators:
1304
1305 @enumerate
1306 @item Pulse-VCO, a dirac pulse oscillator with flat amplitude spectrum
1307 @item Saw-VCO, a sawtooth oscillator with 1/F amplitude spectrum
1308 @item Rec-VCO, a square / rectangle oscillator
1309 @end enumerate\n
1310
1311 All oscillators are low-pass filtered to provide waveforms similar to the
1312 output of analog synthesizers such as the Moog Voyager.")
1313 (license license:gpl2+)))
1314
1315 (define-public wah-plugins
1316 (package
1317 (name "wah-plugins")
1318 (version "0.1.0")
1319 (source (origin
1320 (method url-fetch)
1321 (uri (string-append
1322 "http://kokkinizita.linuxaudio.org"
1323 "/linuxaudio/downloads/WAH-plugins-"
1324 version ".tar.bz2"))
1325 (sha256
1326 (base32
1327 "1wkbjarxdhjixkh7d5abralj11dj2xxg644fz3ycd7qyfgfvjfgd"))))
1328 (build-system gnu-build-system)
1329 (arguments
1330 `(#:tests? #f ; no "check" target
1331 #:phases
1332 (modify-phases %standard-phases
1333 ;; no configure script
1334 (delete 'configure)
1335 (add-before 'install 'prepare-target-directory
1336 (lambda* (#:key outputs #:allow-other-keys)
1337 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1338 #t))
1339 (add-after 'unpack 'override-target-directory
1340 (lambda* (#:key outputs #:allow-other-keys)
1341 (substitute* "Makefile"
1342 (("/usr") (assoc-ref outputs "out")))
1343 #t)))))
1344 (home-page "https://kokkinizita.linuxaudio.org")
1345 (synopsis "LADSPA Autowah effect plugin")
1346 (description
1347 "This package provides a LADSPA plugin for a Wah effect with envelope
1348 follower.")
1349 (license license:gpl2+)))
1350
1351 (define-public g2reverb
1352 (package
1353 (name "g2reverb")
1354 (version "0.7.1")
1355 (source (origin
1356 (method url-fetch)
1357 (uri (string-append
1358 "http://kokkinizita.linuxaudio.org"
1359 "/linuxaudio/downloads/g2reverb-"
1360 version ".tar.bz2"))
1361 (sha256
1362 (base32
1363 "18wb8vj1kky5glr76s34awbi8qzplsmf3wjbd7a12hfv4j0bkwrj"))))
1364 (build-system gnu-build-system)
1365 (arguments
1366 `(#:tests? #f ; no "check" target
1367 #:phases
1368 (modify-phases %standard-phases
1369 ;; no configure script
1370 (delete 'configure)
1371 (add-before 'install 'prepare-target-directory
1372 (lambda* (#:key outputs #:allow-other-keys)
1373 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1374 #t))
1375 (add-after 'unpack 'override-target-directory
1376 (lambda* (#:key outputs #:allow-other-keys)
1377 (substitute* "Makefile"
1378 (("/usr") (assoc-ref outputs "out")))
1379 #t)))))
1380 (home-page "https://kokkinizita.linuxaudio.org")
1381 (synopsis "LADSPA stereo reverb plugin")
1382 (description
1383 "This package provides a LADSPA plugin for a stereo reverb effect.")
1384 (license license:gpl2+)))
1385
1386 (define-public fluidsynth
1387 (package
1388 (name "fluidsynth")
1389 (version "2.1.4")
1390 (source (origin
1391 (method git-fetch)
1392 (uri (git-reference
1393 (url "https://github.com/FluidSynth/fluidsynth")
1394 (commit (string-append "v" version))))
1395 (file-name (git-file-name name version))
1396 (sha256
1397 (base32
1398 "1r3khwyw57ybg5m4x0rvdzq7hgw2484sd52k6bm19akbw8yicfna"))))
1399 (build-system cmake-build-system)
1400 (arguments
1401 '(#:tests? #f ; no check target
1402 #:phases
1403 (modify-phases %standard-phases
1404 (add-after 'unpack 'fix-libdir
1405 (lambda _
1406 ;; Install libraries to /lib, not /lib64.
1407 (substitute* "CMakeLists.txt"
1408 (("LIB_SUFFIX \\$\\{_init_lib_suffix\\}")
1409 "LIB_SUFFIX \"\""))
1410 #t)))))
1411 (inputs
1412 `(("libsndfile" ,libsndfile)
1413 ("alsa-lib" ,alsa-lib)
1414 ("jack" ,jack-1)
1415 ("ladspa" ,ladspa)
1416 ("lash" ,lash)
1417 ("readline" ,readline)
1418 ("glib" ,glib)))
1419 (native-inputs
1420 `(("pkg-config" ,pkg-config)))
1421 (home-page "http://www.fluidsynth.org/")
1422 (synopsis "SoundFont synthesizer")
1423 (description
1424 "FluidSynth is a real-time software synthesizer based on the SoundFont 2
1425 specifications. FluidSynth reads and handles MIDI events from the MIDI input
1426 device. It is the software analogue of a MIDI synthesizer. FluidSynth can
1427 also play midifiles using a Soundfont.")
1428 (license license:lgpl2.1+)))
1429
1430 ;; gzdoom@3.3.0 and lmms@1.1.3 requires this version. Remove once no longer
1431 ;; needed.
1432 (define-public fluidsynth-1
1433 (package
1434 (inherit fluidsynth)
1435 (version "1.1.11")
1436 (source (origin
1437 (inherit (package-source fluidsynth))
1438 (uri (git-reference
1439 (url "https://github.com/FluidSynth/fluidsynth")
1440 (commit (string-append "v" version))))
1441 (file-name (git-file-name "fluidsynth" version))
1442 (sha256
1443 (base32
1444 "0n75jq3xgq46hfmjkaaxz3gic77shs4fzajq40c8gk043i84xbdh"))))))
1445
1446 (define-public faad2
1447 (package
1448 (name "faad2")
1449 (version "2.8.6")
1450 (source (origin
1451 (method url-fetch)
1452 (uri (string-append "mirror://sourceforge/faac/faad2-src/faad2-"
1453 (version-major+minor version) ".0/"
1454 "faad2-" version ".tar.gz"))
1455 (sha256
1456 (base32
1457 "089zqykqgmmysznvk0bi2pfvdqwclnn540d0zks83sv2pynpfjb5"))))
1458 (build-system gnu-build-system)
1459 (home-page "https://www.audiocoding.com/faad2.html")
1460 (synopsis "MPEG-4 and MPEG-2 AAC decoder")
1461 (description
1462 "FAAD2 is an MPEG-4 and MPEG-2 AAC decoder supporting LC, Main, LTP, SBR,
1463 PS, and DAB+.")
1464 (license license:gpl2)))
1465
1466 (define-public faust
1467 (package
1468 (name "faust")
1469 (version "0.9.90")
1470 (source (origin
1471 (method git-fetch)
1472 (uri (git-reference
1473 (url "https://github.com/grame-cncm/faust")
1474 (commit (string-append "v"
1475 (string-map (lambda (c)
1476 (if (char=? c #\.) #\- c))
1477 version)))))
1478 (file-name (string-append "faust-" version "-checkout"))
1479 (sha256
1480 (base32
1481 "0qc6iwjd3i80jdyjc186c6ywipmjzl8wlsp4050pbr56q4rlkd4z"))))
1482 (build-system gnu-build-system)
1483 (arguments
1484 `(#:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
1485 #:tests? #f
1486 #:phases
1487 (modify-phases %standard-phases
1488 ;; no "configure" script
1489 (delete 'configure)
1490 ;; Files appear under $out/share/faust that are read-only. The
1491 ;; install phase tries to overwrite them and fails, so we change
1492 ;; the permissions first.
1493 (add-before 'install 'fix-permissions
1494 (lambda _
1495 (for-each (lambda (file)
1496 (chmod file #o644))
1497 (find-files "architecture/max-msp" ".*"))
1498 #t)))))
1499 (native-inputs
1500 `(("unzip" ,unzip)))
1501 (home-page "https://faust.grame.fr/")
1502 (synopsis "Signal processing language")
1503 (description
1504 "Faust is a programming language for realtime audio signal processing.")
1505 (license license:gpl2+)))
1506
1507 (define-public faust-2
1508 (package
1509 (inherit faust)
1510 (version "2.5.23")
1511 (source (origin
1512 (method url-fetch)
1513 (uri (string-append "https://github.com/grame-cncm/faust/"
1514 "releases/download/" version
1515 "/faust-" version ".tar.gz"))
1516 (sha256
1517 (base32
1518 "1yz5jnr76hh7rmxkpdi7gyrw1wp4gyqfpq8zyl97qdi5ga5gjznq"))))
1519 (build-system gnu-build-system)
1520 (arguments
1521 (substitute-keyword-arguments (package-arguments faust)
1522 ((#:make-flags flags)
1523 `(list (string-append "prefix=" (assoc-ref %outputs "out"))
1524 "world"))))
1525 (native-inputs
1526 `(("llvm" ,llvm-3.8)
1527 ("which" ,which)
1528 ("xxd" ,xxd)
1529 ("ctags" ,emacs-minimal) ; for ctags
1530 ("pkg-config" ,pkg-config)))
1531 (inputs
1532 `(("libsndfile" ,libsndfile)
1533 ("libmicrohttpd" ,libmicrohttpd)
1534 ("ncurses" ,ncurses)
1535 ("openssl" ,openssl)
1536 ("zlib" ,zlib)))))
1537
1538 (define-public freepats
1539 (package
1540 (name "freepats")
1541 (version "20060219")
1542 (source (origin
1543 (method url-fetch)
1544 (uri (string-append "http://freepats.zenvoid.org/freepats-"
1545 version ".tar.bz2"))
1546 (sha256
1547 (base32
1548 "12iw36rd94zirll96cd5k0va7p5hxmf2shvjlhzihcmjaw8flq82"))))
1549 (build-system trivial-build-system)
1550 (arguments
1551 `(#:modules ((guix build utils))
1552 #:builder (begin
1553 (use-modules (guix build utils))
1554 (let ((out (string-append %output "/share/freepats")))
1555 (setenv "PATH" (string-append
1556 (assoc-ref %build-inputs "bzip2") "/bin:"
1557 (assoc-ref %build-inputs "tar") "/bin"))
1558 (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
1559 (chdir "freepats")
1560 ;; Use absolute pattern references
1561 (substitute* "freepats.cfg"
1562 (("Tone_000") (string-append out "/Tone_000"))
1563 (("Drum_000") (string-append out "/Drum_000")))
1564 (mkdir-p out)
1565 (copy-recursively "." out)
1566 #t))))
1567 (native-inputs
1568 `(("tar" ,tar)
1569 ("bzip2" ,bzip2)))
1570 (home-page "http://freepats.zenvoid.org")
1571 (synopsis "GUS compatible patches for MIDI players")
1572 (description
1573 "FreePats is a project to create a free and open set of GUS compatible
1574 patches that can be used with softsynths such as Timidity and WildMidi.")
1575 ;; GPLv2+ with exception for compositions using these patches.
1576 (license license:gpl2+)))
1577
1578 (define-public guitarix
1579 (package
1580 (name "guitarix")
1581 (version "0.38.1")
1582 (source (origin
1583 (method url-fetch)
1584 (uri (string-append
1585 "mirror://sourceforge/guitarix/guitarix/guitarix2-"
1586 version ".tar.xz"))
1587 (sha256
1588 (base32
1589 "0bw7xnrx062nwb1bfj9x660h7069ncmz77szcs8icpqxrvhs7z80"))))
1590 (build-system waf-build-system)
1591 (arguments
1592 `(#:tests? #f ; no "check" target
1593 #:python ,python-2
1594 #:configure-flags
1595 (list
1596 ;; Add the output lib directory to the RUNPATH.
1597 (string-append "--ldflags=-Wl,-rpath=" %output "/lib"))
1598 #:phases
1599 (modify-phases %standard-phases
1600 (add-after 'unpack 'fix-boost-includes
1601 (lambda _
1602 (substitute* "src/headers/gx_internal_plugins.h"
1603 (("namespace gx_jack" m)
1604 (string-append "#include <boost/noncopyable.hpp>\n" m)))
1605 (substitute* '("src/headers/gx_system.h"
1606 "src/headers/gx_parameter.h"
1607 "src/headers/gx_json.h")
1608 (("namespace gx_system" m)
1609 (string-append "#include <boost/noncopyable.hpp>\n" m)))
1610 #t)))))
1611 (inputs
1612 `(("libsndfile" ,libsndfile)
1613 ("boost" ,boost)
1614 ("curl" ,curl)
1615 ("avahi" ,avahi)
1616 ("eigen" ,eigen)
1617 ("lv2" ,lv2)
1618 ("lilv" ,lilv)
1619 ("ladspa" ,ladspa)
1620 ("jack" ,jack-1)
1621 ("gtkmm" ,gtkmm-2)
1622 ("gtk+" ,gtk+-2)
1623 ("fftwf" ,fftwf)
1624 ("lrdf" ,lrdf)
1625 ("zita-resampler" ,zita-resampler)
1626 ("zita-convolver" ,zita-convolver)))
1627 (native-inputs
1628 `(("gperf" ,gperf)
1629 ("faust" ,faust)
1630 ("intltool" ,intltool)
1631 ("gettext" ,gettext-minimal)
1632 ("pkg-config" ,pkg-config)))
1633 (native-search-paths
1634 (list (search-path-specification
1635 (variable "LV2_PATH")
1636 (files '("lib/lv2")))))
1637 (home-page "https://guitarix.org/")
1638 (synopsis "Virtual guitar amplifier")
1639 (description "Guitarix is a virtual guitar amplifier running JACK.
1640 Guitarix takes the signal from your guitar as a mono-signal from your sound
1641 card. The input is processed by a main amp and a rack-section. Both can be
1642 routed separately and deliver a processed stereo-signal via JACK. You may
1643 fill the rack with effects from more than 25 built-in modules including stuff
1644 from a simple noise gate to modulation effects like flanger, phaser or
1645 auto-wah.")
1646 (license license:gpl2+)))
1647
1648 (define-public guitarix-lv2
1649 (package (inherit guitarix)
1650 (name "guitarix-lv2")
1651 (arguments
1652 (substitute-keyword-arguments (package-arguments guitarix)
1653 ((#:configure-flags flags)
1654 `(cons "--no-standalone" ,flags))))))
1655
1656 (define-public rakarrack
1657 (package
1658 (name "rakarrack")
1659 (version "0.6.1")
1660 (source (origin
1661 (method url-fetch)
1662 (uri (string-append "mirror://sourceforge/rakarrack/rakarrack/"
1663 "rakarrack-" version "/rakarrack-"
1664 version ".tar.bz2"))
1665 (sha256
1666 (base32
1667 "1rpf63pdn54c4yg13k7cb1w1c7zsvl97c4qxcpz41c8l91xd55kn"))
1668 (modules '((guix build utils)))
1669 (snippet
1670 '(begin
1671 (substitute* '("src/process.C"
1672 "src/global.h")
1673 (("#include <Fl/") "#include <FL/"))
1674 #t))))
1675 (build-system gnu-build-system)
1676 (inputs
1677 `(("alsa-utils" ,alsa-utils)
1678 ("fltk" ,fltk)
1679 ("libx11" ,libx11)
1680 ("libxext" ,libxext)
1681 ("libxfixes" ,libxfixes)
1682 ("libxft" ,libxft)
1683 ("libxrender" ,libxrender)
1684 ("libxpm" ,libxpm)
1685 ("fontconfig" ,fontconfig)
1686 ("freetype" ,freetype)
1687 ("jack" ,jack-1)
1688 ("alsa-lib" ,alsa-lib)
1689 ("libsndfile" ,libsndfile)
1690 ("libsamplerate" ,libsamplerate)
1691 ("zlib" ,zlib)))
1692 (home-page "http://rakarrack.sourceforge.net/")
1693 (synopsis "Audio effects processor")
1694 (description
1695 "Rakarrack is a richly featured multi-effects processor emulating a
1696 guitar effects pedalboard. Effects include compressor, expander, noise gate,
1697 equalizers, exciter, flangers, chorus, various delay and reverb effects,
1698 distortion modules and many more. Most of the effects engine is built from
1699 modules found in the excellent software synthesizer ZynAddSubFX. Presets and
1700 user interface are optimized for guitar, but Rakarrack processes signals in
1701 stereo while it does not apply internal band-limiting filtering, and thus is
1702 well suited to all musical instruments and vocals.")
1703 ;; The code is explicitly licensed under the GPL version 2 only.
1704 (license license:gpl2)))
1705
1706 (define-public ir
1707 (package
1708 (name "ir")
1709 (version "1.3.4")
1710 (source (origin
1711 (method git-fetch)
1712 (uri (git-reference
1713 (url "https://github.com/tomszilagyi/ir.lv2")
1714 (commit version)))
1715 (file-name (git-file-name name version))
1716 (sha256
1717 (base32
1718 "0svmjhg4r6wy5ci5rwz43ybll7yxjv7nnj7nyqscbzhr3gi5aib0"))))
1719 (build-system gnu-build-system)
1720 (arguments
1721 `(#:tests? #f ; no tests
1722 #:make-flags
1723 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
1724 (string-append "INSTDIR="
1725 (assoc-ref %outputs "out") "/lib/lv2"))
1726 #:phases (modify-phases %standard-phases
1727 (delete 'configure)))) ; no configure script
1728 (inputs
1729 `(("libsndfile" ,libsndfile)
1730 ("libsamplerate" ,libsamplerate)
1731 ("lv2" ,lv2)
1732 ("glib" ,glib)
1733 ("gtk+" ,gtk+-2)
1734 ("zita-convolver" ,zita-convolver)))
1735 (native-inputs
1736 `(("pkg-config" ,pkg-config)))
1737 (native-search-paths
1738 (list (search-path-specification
1739 (variable "LV2_PATH")
1740 (files '("lib/lv2")))))
1741 (home-page "https://tomszilagyi.github.io/plugins/ir.lv2")
1742 (synopsis "LV2 convolution reverb")
1743 (description
1744 "IR is a low-latency, real-time, high performance signal convolver
1745 especially for creating reverb effects. It supports impulse responses with 1,
1746 2 or 4 channels, in any soundfile format supported by libsndfile.")
1747 (license license:gpl2+)))
1748
1749 (define-public jack-1
1750 (package
1751 (name "jack")
1752 (version "0.125.0")
1753 (source
1754 (origin
1755 (method url-fetch)
1756 ;; jackaudio.org/downloads/jack-audio-connection-kit-0.125.0.tar.gz
1757 ;; no longer exists (404). Use an unofficial mirror.
1758 (uri (string-append "https://crux.ster.zone/downloads/"
1759 "jack-audio-connection-kit/"
1760 "jack-audio-connection-kit-" version ".tar.gz"))
1761 (sha256
1762 (base32 "0i6l25dmfk2ji2lrakqq9icnwjxklgcjzzk65dmsff91z2zva5rm"))))
1763 (build-system gnu-build-system)
1764 (arguments
1765 `(#:phases (modify-phases %standard-phases
1766 (add-after 'unpack 'patch-configure
1767 (lambda _
1768 (substitute* "configure"
1769 ;; Install to <out/lib> regardless of platform.
1770 (("libnn=lib64") "libnn=lib"))
1771 #t)))))
1772 (inputs
1773 `(("alsa-lib" ,alsa-lib)
1774 ("readline" ,readline)))
1775 ;; uuid.h is included in the JACK type headers
1776 ;; db.h is included in the libjack metadata headers
1777 (propagated-inputs
1778 `(("libuuid" ,util-linux "lib")
1779 ("bdb" ,bdb)))
1780 (native-inputs
1781 `(("pkg-config" ,pkg-config)))
1782 (home-page "https://jackaudio.org/")
1783 (synopsis "JACK audio connection kit")
1784 (description
1785 "JACK is a low-latency audio server. It can connect a number of
1786 different applications to an audio device, as well as allowing them to share
1787 audio between themselves. JACK is different from other audio server efforts
1788 in that it has been designed from the ground up to be suitable for
1789 professional audio work. This means that it focuses on two key areas:
1790 synchronous execution of all clients, and low latency operation.")
1791 ;; Most files are licensed under the GPL. However, the libjack/ tree is
1792 ;; licensed under the LGPL in order to allow for proprietary usage.
1793 (license (list license:gpl2+ license:lgpl2.1+))))
1794
1795 ;; Packages depending on JACK should always prefer jack-1. Both jack-1 and
1796 ;; jack-2 implement the same API. JACK2 is provided primarily as a client
1797 ;; program for users who might benefit from the D-BUS features.
1798 (define-public jack-2
1799 (package (inherit jack-1)
1800 (name "jack2")
1801 (version "1.9.13")
1802 (source (origin
1803 (method url-fetch)
1804 (uri (string-append "https://github.com/jackaudio/jack2/releases/"
1805 "download/v" version "/jack2-"
1806 version ".tar.gz"))
1807 (file-name (string-append name "-" version ".tar.gz"))
1808 (sha256
1809 (base32
1810 "1d1d403jn4366mqig6g8ghr8057b3rn7gs26b5p3rkal34j20qw2"))))
1811 (build-system waf-build-system)
1812 (arguments
1813 `(#:tests? #f ; no check target
1814 #:configure-flags '("--dbus"
1815 "--alsa")
1816 #:phases
1817 (modify-phases %standard-phases
1818 (add-before 'configure 'set-linkflags
1819 (lambda _
1820 ;; Add $libdir to the RUNPATH of all the binaries.
1821 (substitute* "wscript"
1822 ((".*CFLAGS.*-Wall.*" m)
1823 (string-append m
1824 " conf.env.append_unique('LINKFLAGS',"
1825 "'-Wl,-rpath=" %output "/lib')\n")))
1826 #t))
1827 (add-after 'install 'wrap-python-scripts
1828 (lambda* (#:key inputs outputs #:allow-other-keys)
1829 ;; Make sure 'jack_control' runs with the correct PYTHONPATH.
1830 (let* ((out (assoc-ref outputs "out"))
1831 (path (getenv "PYTHONPATH")))
1832 (wrap-program (string-append out "/bin/jack_control")
1833 `("PYTHONPATH" ":" prefix (,path))))
1834 #t)))))
1835 (inputs
1836 `(("alsa-lib" ,alsa-lib)
1837 ("dbus" ,dbus)
1838 ("expat" ,expat)
1839 ("libsamplerate" ,libsamplerate)
1840 ("opus" ,opus)
1841 ("python-dbus" ,python-dbus)
1842 ("readline" ,readline)))
1843 (native-inputs
1844 `(("pkg-config" ,pkg-config)))
1845 ;; Most files are under GPLv2+, but some headers are under LGPLv2.1+
1846 (license (list license:gpl2+ license:lgpl2.1+))))
1847
1848 (define-public jalv
1849 (package
1850 (name "jalv")
1851 (version "1.6.4")
1852 (source (origin
1853 (method url-fetch)
1854 (uri (string-append "https://download.drobilla.net/jalv-"
1855 version ".tar.bz2"))
1856 (sha256
1857 (base32
1858 "1wwfn7yzbs37s2rdlfjgks63svd5g14yyzd2gdl7h0z12qncwsy2"))))
1859 (build-system waf-build-system)
1860 (arguments
1861 `(#:tests? #f ; no check target
1862 #:python ,python-2))
1863 (inputs
1864 `(("lv2" ,lv2)
1865 ("lilv" ,lilv)
1866 ("suil" ,suil)
1867 ("gtk2" ,gtk+-2)
1868 ("gtk3" ,gtk+)
1869 ("gtkmm" ,gtkmm-2)
1870 ("qtbase" ,qtbase)
1871 ("jack" ,jack-1)))
1872 (native-inputs
1873 `(("pkg-config" ,pkg-config)))
1874 (home-page "https://drobilla.net/software/jalv/")
1875 (synopsis "Simple LV2 host for JACK")
1876 (description
1877 "Jalv is a simple but fully featured LV2 host for JACK. It runs LV2
1878 plugins and exposes their ports as JACK ports, essentially making any LV2
1879 plugin function as a JACK application.")
1880 (license license:isc)))
1881
1882 (define-public ladspa
1883 (package
1884 (name "ladspa")
1885 (version "1.13")
1886 (source
1887 (origin
1888 (method url-fetch)
1889 ;; Since the official link is dead,
1890 ;; we download the tarball from Debian or Internet Archive.
1891 (uri (list (string-append "http://http.debian.net"
1892 "/debian/pool/main/l/ladspa-sdk/ladspa-sdk_"
1893 version ".orig.tar.gz")
1894 (string-append "https://web.archive.org/web/20140717172251/"
1895 "http://www.ladspa.org/download/ladspa_sdk_"
1896 version ".tgz")))
1897 (sha256
1898 (base32
1899 "0srh5n2l63354bc0srcrv58rzjkn4gv8qjqzg8dnq3rs4m7kzvdm"))))
1900 (build-system gnu-build-system)
1901 (arguments
1902 `(#:tests? #f ; the "test" target is a listening test only
1903 #:phases
1904 (modify-phases %standard-phases
1905 (replace 'configure
1906 (lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
1907 (chdir "src")
1908 (let ((out (assoc-ref outputs "out")))
1909 (substitute* "makefile"
1910 (("/usr/lib/ladspa/") (string-append out "/lib/ladspa/"))
1911 (("/usr/include/") (string-append out "/include/"))
1912 (("/usr/bin/") (string-append out "/bin/"))
1913 (("-mkdirhier") "mkdir -p")
1914 (("^CC.*") "CC = gcc\n")
1915 (("^CPP.*") "CPP = g++\n")))
1916 #t))
1917 (delete 'build))))
1918 ;; Since the home page is gone, we provide a link to the archived version.
1919 (home-page
1920 "https://web.archive.org/web/20140729190945/http://www.ladspa.org/")
1921 (synopsis "Linux Audio Developer's Simple Plugin API (LADSPA)")
1922 (description
1923 "LADSPA is a standard that allows software audio processors and effects
1924 to be plugged into a wide range of audio synthesis and recording packages.")
1925 (license license:lgpl2.1+)))
1926
1927 (define-public lash
1928 (package
1929 (name "lash")
1930 (version "0.6.0-rc2")
1931 (source (origin
1932 (method url-fetch)
1933 ;; The tilde is not permitted in the builder name, but is used
1934 ;; in the tarball.
1935 (uri (string-append
1936 "mirror://savannah/lash/lash-"
1937 (string-join (string-split version #\-) "~")
1938 ".tar.bz2"))
1939 (file-name (string-append name "-" version ".tar.bz2"))
1940 (sha256
1941 (base32
1942 "12z1vx3krrzsfccpah9xjs68900xvr7bw92wx8np5871i2yv47iw"))))
1943 (build-system gnu-build-system)
1944 (arguments
1945 '(;; Glibc no longer includes Sun RPC support, so tell the build system
1946 ;; to use libtirpc instead.
1947 #:make-flags (list (string-append "CFLAGS=-I"
1948 (assoc-ref %build-inputs "libtirpc")
1949 "/include/tirpc -ltirpc"))
1950 #:phases
1951 (modify-phases %standard-phases
1952 ;; lashd embeds an ancient version of sigsegv so we just skip it
1953 (add-after 'unpack 'skip-lashd
1954 (lambda _
1955 (substitute* '("Makefile.am" "Makefile.in")
1956 (("lashd ") ""))
1957 #t)))
1958 #:configure-flags '("--disable-static")))
1959 (inputs
1960 `(("bdb" ,bdb)
1961 ("gtk" ,gtk+-2)
1962 ("jack" ,jack-1)
1963 ("libtirpc" ,libtirpc)
1964 ("readline" ,readline)
1965 ("python" ,python-2)))
1966 ;; According to pkg-config, packages depending on lash also need to have
1967 ;; at least the following packages declared as inputs.
1968 (propagated-inputs
1969 `(("alsa-lib" ,alsa-lib)
1970 ("dbus" ,dbus)
1971 ("libxml2" ,libxml2)))
1972 (native-inputs
1973 `(("pkg-config" ,pkg-config)))
1974 (home-page "https://www.nongnu.org/lash/")
1975 (synopsis "Audio application session manager")
1976 (description
1977 "LASH is a session management system for audio applications. It allows
1978 you to save and restore audio sessions consisting of multiple interconneced
1979 applications, restoring program state (i.e. loaded patches) and the
1980 connections between them.")
1981 (license license:gpl2+)))
1982
1983 (define-public libbs2b
1984 (package
1985 (name "libbs2b")
1986 (version "3.1.0")
1987 (source (origin
1988 (method url-fetch)
1989 (uri (string-append "mirror://sourceforge/bs2b/libbs2b/" version
1990 "/libbs2b-" version ".tar.lzma"))
1991 (sha256
1992 (base32
1993 "1mcc4gjkmphczjybnsrip3gq1f974knzys7x49bv197xk3fn8wdr"))))
1994 (build-system gnu-build-system)
1995 (native-inputs `(("pkg-config" ,pkg-config)))
1996 (inputs `(("libsndfile" ,libsndfile)))
1997 (home-page "https://sourceforge.net/projects/bs2b/")
1998 (synopsis "Bauer stereophonic-to-binaural DSP")
1999 (description
2000 "The Bauer stereophonic-to-binaural DSP (bs2b) library and plugins is
2001 designed to improve headphone listening of stereo audio records. Recommended
2002 for headphone prolonged listening to disable superstereo fatigue without
2003 essential distortions.")
2004 (license license:expat)))
2005
2006 (define-public ladspa-bs2b
2007 (package
2008 (name "ladspa-bs2b")
2009 (version "0.9.1")
2010 (source (origin
2011 (method url-fetch)
2012 (uri (string-append
2013 "mirror://sourceforge/bs2b/plugins/LADSPA%20plugin/"
2014 version "/" name "-" version ".tar.gz"))
2015 (sha256
2016 (base32
2017 "1b4aipbj1ba5k99gbc7gmgy14sywyrjd8rpyqj5l905j0mjv8jg2"))))
2018 (build-system gnu-build-system)
2019 (native-inputs `(("pkg-config" ,pkg-config)))
2020 (inputs `(("ladspa" ,ladspa)
2021 ("libbs2b" ,libbs2b)))
2022 (home-page "https://sourceforge.net/projects/bs2b/")
2023 (synopsis "Bauer stereophonic-to-binaural DSP - LADSPA plugin")
2024 (description "The Bauer stereophonic-to-binaural DSP (bs2b) library and
2025 plugins is designed to improve headphone listening of stereo audio records.
2026 Recommended for headphone prolonged listening to disable superstereo fatigue
2027 without essential distortions. This package contains a LADSPA plugin for use
2028 with applications that support them (e.g. PulseAudio).")
2029 (license license:gpl2+)))
2030
2031 (define-public liblo
2032 (package
2033 (name "liblo")
2034 (version "0.31")
2035 (source (origin
2036 (method url-fetch)
2037 (uri (string-append "mirror://sourceforge/liblo/liblo/" version
2038 "/liblo-" version ".tar.gz"))
2039 (sha256
2040 (base32
2041 "0l67rkdhfa8cffa0nynql3lh2xlbn1454h6qxhjddp1029p48krb"))))
2042 (build-system gnu-build-system)
2043 (arguments
2044 `(;; liblo test FAILED
2045 ;; liblo server error 19 in setsockopt(IP_ADD_MEMBERSHIP): No such device
2046 #:tests? #f))
2047 (home-page "http://liblo.sourceforge.net")
2048 (synopsis "Implementation of the Open Sound Control protocol")
2049 (description
2050 "liblo is a lightweight library that provides an easy to use
2051 implementation of the Open Sound Control (@dfn{OSC}) protocol.")
2052 (license license:lgpl2.1+)))
2053
2054 (define-public python-pyaudio
2055 (package
2056 (name "python-pyaudio")
2057 (version "0.2.11")
2058 (source
2059 (origin
2060 (method url-fetch)
2061 (uri (pypi-uri "PyAudio" version))
2062 (sha256
2063 (base32
2064 "0x7vdsigm7xgvyg3shd3lj113m8zqj2pxmrgdyj66kmnw0qdxgwk"))))
2065 (build-system python-build-system)
2066 (inputs
2067 `(("portaudio" ,portaudio)))
2068 (home-page "https://people.csail.mit.edu/hubert/pyaudio/")
2069 (synopsis "Bindings for PortAudio v19")
2070 (description "This package provides bindings for PortAudio v19, the
2071 cross-platform audio input/output stream library.")
2072 (license license:expat)))
2073
2074 (define-public python2-pyaudio
2075 (package-with-python2 python-pyaudio))
2076
2077 (define-public python-pyliblo
2078 (package
2079 (name "python-pyliblo")
2080 (version "0.10.0")
2081 (source (origin
2082 (method url-fetch)
2083 (uri (string-append "http://das.nasophon.de/download/pyliblo-"
2084 version ".tar.gz"))
2085 (sha256
2086 (base32
2087 "13vry6xhxm7adnbyj28w1kpwrh0kf7nw83cz1yq74wl21faz2rzw"))))
2088 (build-system python-build-system)
2089 (arguments `(#:tests? #f)) ;no tests
2090 (native-inputs
2091 `(("python-cython" ,python-cython)))
2092 (inputs
2093 `(("liblo" ,liblo)))
2094 (home-page "http://das.nasophon.de/pyliblo/")
2095 (synopsis "Python bindings for liblo")
2096 (description
2097 "Pyliblo is a Python wrapper for the liblo Open Sound Control (OSC)
2098 library. It supports almost the complete functionality of liblo, allowing you
2099 to send and receive OSC messages using a nice and simple Python API. Also
2100 included are the command line utilities @code{send_osc} and @code{dump_osc}.")
2101 (license license:lgpl2.1+)))
2102
2103 (define-public python2-pyliblo
2104 (package-with-python2 python-pyliblo))
2105
2106 (define-public lilv
2107 (package
2108 (name "lilv")
2109 (version "0.24.8")
2110 (source (origin
2111 (method url-fetch)
2112 (uri (string-append "https://download.drobilla.net/lilv-"
2113 version ".tar.bz2"))
2114 (sha256
2115 (base32
2116 "0063i5zgf3d3accwmyx651hw0wh5ik7kji2hvfkcdbl1qia3dp6a"))))
2117 (build-system waf-build-system)
2118 (arguments
2119 `(#:tests? #f ; no check target
2120 #:phases
2121 (modify-phases %standard-phases
2122 (add-before 'configure 'set-ldflags
2123 (lambda* (#:key outputs #:allow-other-keys)
2124 (setenv "LDFLAGS"
2125 (string-append "-Wl,-rpath="
2126 (assoc-ref outputs "out") "/lib"))
2127 #t))
2128 (add-after 'unpack 'full-store-path-to-shared-library
2129 (lambda* (#:key outputs #:allow-other-keys)
2130 (with-directory-excursion "bindings/python"
2131 (substitute* "lilv.py"
2132 (("liblilv-0.so") (string-append (assoc-ref outputs "out")
2133 "/lib/liblilv-0.so"))))
2134 #t)))))
2135 ;; Required by lilv-0.pc.
2136 (propagated-inputs
2137 `(("lv2" ,lv2)
2138 ("serd" ,serd)
2139 ("sord" ,sord)
2140 ("sratom" ,sratom)))
2141 (native-inputs
2142 `(("python" ,python)
2143 ("pkg-config" ,pkg-config)))
2144 (home-page "https://drobilla.net/software/lilv")
2145 (synopsis "Library to simplify use of LV2 plugins in applications")
2146 (description
2147 "Lilv is a C library to make the use of LV2 plugins as simple as possible
2148 for applications. Lilv is the successor to SLV2, rewritten to be
2149 significantly faster and have minimal dependencies.")
2150 (license license:isc)))
2151
2152 (define-public lv2
2153 (package
2154 (name "lv2")
2155 (version "1.18.0")
2156 (source (origin
2157 (method url-fetch)
2158 (uri (string-append "https://lv2plug.in/spec/lv2-"
2159 version ".tar.bz2"))
2160 (sha256
2161 (base32
2162 "0gs7401xz23q9vajqr31aa2db8dvssgyh5zrvr4ipa6wig7yb8wh"))))
2163 (build-system waf-build-system)
2164 (arguments
2165 `(#:tests? #f ; no check target
2166 #:configure-flags '("--no-plugins")))
2167 (inputs
2168 ;; Leaving off cairo and gtk+-2.0 which are needed for example plugins
2169 `(("libsndfile" ,libsndfile)))
2170 (native-inputs
2171 `(("pkg-config" ,pkg-config)))
2172 (home-page "https://lv2plug.in/")
2173 (synopsis "LV2 audio plugin specification")
2174 (description
2175 "LV2 is an open specification for audio plugins and host applications.
2176 At its core, LV2 is a simple stable interface, accompanied by extensions which
2177 add functionality to support the needs of increasingly powerful audio
2178 software.")
2179 (license license:isc)))
2180
2181 (define-public lv2-mda-piano
2182 (package
2183 (name "lv2-mda-piano")
2184 (version "0.0.2")
2185 (source (origin
2186 (method git-fetch)
2187 (uri (git-reference
2188 (url "http://git.elephly.net/software/lv2-mdametapiano.git")
2189 (commit version)))
2190 (file-name (git-file-name name version))
2191 (sha256
2192 (base32
2193 "07lywf6lpfpndg3i9w752mmlg2hgn1bwp23h8b0mdj6awh67abqd"))))
2194 (build-system gnu-build-system)
2195 (arguments
2196 `(#:make-flags (list
2197 "TYPE=mdaPiano"
2198 (string-append "PREFIX=" (assoc-ref %outputs "out")))
2199 #:tests? #f ; no check target
2200 #:phases (modify-phases %standard-phases (delete 'configure))))
2201 (inputs
2202 `(("lv2" ,lv2)
2203 ("lvtk" ,lvtk)))
2204 (native-inputs
2205 `(("pkg-config" ,pkg-config)))
2206 (native-search-paths
2207 (list (search-path-specification
2208 (variable "LV2_PATH")
2209 (files '("lib/lv2")))))
2210 (home-page "https://elephly.net/lv2/mdapiano.html")
2211 (synopsis "LV2 port of the mda Piano plugin")
2212 (description "An LV2 port of the mda Piano VSTi.")
2213 (license license:gpl3+)))
2214
2215 (define-public lv2-mda-epiano
2216 (package (inherit lv2-mda-piano)
2217 (name "lv2-mda-epiano")
2218 (arguments
2219 `(#:make-flags (list
2220 "TYPE=mdaEPiano"
2221 (string-append "PREFIX=" (assoc-ref %outputs "out")))
2222 #:tests? #f ; no check target
2223 #:phases (modify-phases %standard-phases (delete 'configure))))
2224 (home-page "https://elephly.net/lv2/mdaepiano.html")
2225 (synopsis "LV2 port of the mda EPiano plugin")
2226 (description "An LV2 port of the mda EPiano VSTi.")))
2227
2228 (define-public lvtk
2229 (package
2230 (name "lvtk")
2231 (version "1.2.0")
2232 (source (origin
2233 (method git-fetch)
2234 (uri (git-reference
2235 (url "https://github.com/lvtk/lvtk")
2236 (commit version)))
2237 (file-name (git-file-name name version))
2238 (sha256
2239 (base32
2240 "1b01zvzl70ana6l1kn8fgyr7msnn3c7x61cgw7fdpp50322352p8"))))
2241 (build-system waf-build-system)
2242 (arguments
2243 `(#:tests? #f ; no check target
2244 #:python ,python-2
2245 #:configure-flags
2246 (list (string-append "--boost-includes="
2247 (assoc-ref %build-inputs "boost")
2248 "/include"))))
2249 (inputs
2250 `(("boost" ,boost)
2251 ("gtkmm" ,gtkmm-2)
2252 ("lv2" ,lv2)))
2253 (native-inputs
2254 `(("pkg-config" ,pkg-config)))
2255 (home-page "https://github.com/lvtk/lvtk")
2256 (synopsis "C++ libraries for LV2 plugins")
2257 (description
2258 "The LV2 Toolkit (LVTK) contains libraries that wrap the LV2 C API and
2259 extensions into easy to use C++ classes. It is the successor of
2260 lv2-c++-tools.")
2261 (license license:gpl3+)))
2262
2263 (define-public openal
2264 (package
2265 (name "openal")
2266 (version "1.20.1")
2267 (source (origin
2268 (method url-fetch)
2269 (uri (string-append
2270 "https://openal-soft.org/openal-releases/openal-soft-"
2271 version ".tar.bz2"))
2272 (sha256
2273 (base32
2274 "0vax0b1lgd4212bpxa1rciz52d4mv3dkfvcbbhzw4cjp698v1kmn"))))
2275 (build-system cmake-build-system)
2276 (arguments
2277 `(#:tests? #f ; no check target
2278 #:phases
2279 (modify-phases %standard-phases
2280 (add-after
2281 'unpack 'use-full-library-paths
2282 (lambda* (#:key inputs #:allow-other-keys)
2283 (substitute* "alc/backends/pulseaudio.cpp"
2284 (("#define PALIB \"libpulse\\.so\\.0\"")
2285 (string-append "#define PALIB \""
2286 (assoc-ref inputs "pulseaudio")
2287 "/lib/libpulse.so.0"
2288 "\"")))
2289 (substitute* "alc/backends/alsa.cpp"
2290 (("LoadLib\\(\"libasound\\.so\\.2\"\\)")
2291 (string-append "LoadLib(\""
2292 (assoc-ref inputs "alsa-lib")
2293 "/lib/libasound.so.2"
2294 "\")")))
2295 #t)))))
2296 (inputs
2297 `(("alsa-lib" ,alsa-lib)
2298 ("pulseaudio" ,pulseaudio)))
2299 (synopsis "3D audio API")
2300 (description
2301 "OpenAL provides capabilities for playing audio in a virtual 3D
2302 environment. Distance attenuation, doppler shift, and directional sound
2303 emitters are among the features handled by the API. More advanced effects,
2304 including air absorption, occlusion, and environmental reverb, are available
2305 through the EFX extension. It also facilitates streaming audio, multi-channel
2306 buffers, and audio capture.")
2307 (home-page "https://openal-soft.org/")
2308 (license license:lgpl2.0+)))
2309
2310 (define-public freealut
2311 (package
2312 (name "freealut")
2313 (version "1.1.0")
2314 (source (origin
2315 (method url-fetch)
2316 ;; Upstream url is unclear, many systems use Fedora, there is also
2317 ;; https://github.com/vancegroup/freealut though the status of it
2318 ;; (official? unofficial?) is not clear.
2319 (uri (string-append
2320 "https://pkgs.fedoraproject.org/repo/pkgs/" name "/" name "-"
2321 version ".tar.gz" "/e089b28a0267faabdb6c079ee173664a/" name
2322 "-" version ".tar.gz"))
2323 (sha256
2324 (base32
2325 "0kzlil6112x2429nw6mycmif8y6bxr2cwjcvp18vh6s7g63ymlb0"))))
2326 (build-system cmake-build-system)
2327 (arguments
2328 `(#:tests? #f)) ; no check target
2329 (inputs
2330 `(("openal" ,openal)))
2331 (synopsis "Free implementation of OpenAL's ALUT standard")
2332 (description "freealut is the OpenAL Utility Toolkit.")
2333 (home-page "https://kcat.strangesoft.net/openal.html")
2334 (license license:lgpl2.0)))
2335
2336 (define-public patchage
2337 (package
2338 (name "patchage")
2339 (version "1.0.2")
2340 (source (origin
2341 (method url-fetch)
2342 (uri (string-append "https://download.drobilla.net/patchage-"
2343 version
2344 ".tar.bz2"))
2345 (sha256
2346 (base32
2347 "0dk3fiac10m83mwss3026yz7ygc47c2iw924cwwnh2fyydc9bsy6"))))
2348 (build-system waf-build-system)
2349 (arguments
2350 `(#:tests? #f ; no check target
2351 #:python ,python-2))
2352 (inputs
2353 `(("alsa-lib" ,alsa-lib)
2354 ("boost" ,boost)
2355 ("jack" ,jack-1)
2356 ("ganv" ,ganv)
2357 ("glibmm" ,glibmm)
2358 ("gtkmm" ,gtkmm-2)
2359 ("dbus-glib" ,dbus-glib)))
2360 (native-inputs
2361 `(("pkg-config" ,pkg-config)))
2362 (home-page "https://drobilla.net/software/patchage/")
2363 (synopsis "Modular patch bay for audio and MIDI systems")
2364 (description
2365 "Patchage is a modular patch bay for audio and MIDI systems based on JACK
2366 and ALSA.")
2367 (license license:gpl3+)))
2368
2369 (define-public pcaudiolib
2370 (package
2371 (name "pcaudiolib")
2372 (version "1.1")
2373 (home-page "https://github.com/espeak-ng/pcaudiolib")
2374 (source (origin
2375 (method git-fetch)
2376 (uri (git-reference (url home-page) (commit version)))
2377 (file-name (git-file-name name version))
2378 (sha256
2379 (base32
2380 "0c55hlqqh0m7bcb3nlgv1s4a22s5bgczr1cakjh3767rjb10khi0"))))
2381 (build-system gnu-build-system)
2382 (arguments
2383 `(#:configure-flags '("--disable-static")))
2384 (native-inputs
2385 `(("autoconf" ,autoconf)
2386 ("automake" ,automake)
2387 ("libtool" ,libtool)
2388 ("pkg-config" ,pkg-config)
2389 ("which" ,which)))
2390 (inputs
2391 `(("alsa-lib" ,alsa-lib)
2392 ("pulseaudio" ,pulseaudio)))
2393 (synopsis "Portable C audio library")
2394 (description
2395 "The Portable C Audio Library (pcaudiolib) provides a C@tie{}API to
2396 different audio devices such as ALSA or PulseAudio.")
2397 (license (list license:gpl3+
2398 ;; The bundled TPCircularBuffer uses a custom license.
2399 (license:non-copyleft
2400 "file://src/TPCircularBuffer/README.markdown")))))
2401
2402 (define-public qjackctl
2403 (package
2404 (name "qjackctl")
2405 (version "0.5.9")
2406 (source (origin
2407 (method url-fetch)
2408 (uri (string-append "mirror://sourceforge/qjackctl/qjackctl/"
2409 version "/qjackctl-" version ".tar.gz"))
2410 (sha256
2411 (base32
2412 "1saywsda9m124rmjp7i3n0llryaliabjxhqhvqr6dm983qy7pypk"))))
2413 (build-system gnu-build-system)
2414 (arguments
2415 '(#:tests? #f)) ; no check target
2416 (inputs
2417 `(("jack" ,jack-1)
2418 ("alsa-lib" ,alsa-lib)
2419 ("qtbase" ,qtbase)
2420 ("qtx11extras" ,qtx11extras)))
2421 (native-inputs
2422 `(("pkg-config" ,pkg-config)
2423 ("qttools" ,qttools)))
2424 (home-page "https://qjackctl.sourceforge.io/")
2425 (synopsis "Jack server control application")
2426 (description "Control a Jack server. Allows you to plug various sources
2427 into various outputs and to start, stop and configure jackd")
2428 (license license:gpl2+)))
2429
2430 (define-public qjackrcd
2431 (package
2432 (name "qjackrcd")
2433 (version "1.2.2")
2434 (source (origin
2435 (method git-fetch)
2436 (uri (git-reference
2437 (url "https://github.com/orouits/qjackrcd")
2438 (commit (string-append "v" version))))
2439 (file-name (git-file-name name version))
2440 (sha256
2441 (base32
2442 "1l5iq2mkqd4gn9yr8xbh9qlpp1clcflazychl4vhdbz0bzq4c6al"))))
2443 (build-system gnu-build-system)
2444 (arguments
2445 `(#:phases
2446 (modify-phases %standard-phases
2447 (replace 'configure
2448 (lambda* (#:key outputs #:allow-other-keys)
2449 (invoke "qmake"
2450 (string-append "PREFIX="
2451 (assoc-ref outputs "out"))))))))
2452 (native-inputs
2453 `(("qtbase" ,qtbase))) ; for qmake
2454 (inputs
2455 `(("jack" ,jack-1)
2456 ("libsndfile" ,libsndfile)
2457 ("qtbase" ,qtbase)))
2458 (home-page "https://sourceforge.net/projects/qjackrcd/")
2459 (synopsis "Stereo audio recorder for JACK")
2460 (description "QJackRcd is a simple graphical stereo recorder for JACK
2461 supporting silence processing for automatic pause, file splitting, and
2462 background file post-processing.")
2463 (license license:gpl2+)))
2464
2465 (define-public supercollider
2466 (package
2467 (name "supercollider")
2468 (version "3.11.0")
2469 (source (origin
2470 (method git-fetch)
2471 (uri (git-reference
2472 (url "https://github.com/supercollider/supercollider")
2473 (commit (string-append "Version-" version))
2474 ;; for nova-simd, nova-tt, hidapi, TLSF, oscpack
2475 (recursive? #t)))
2476 (file-name (git-file-name name version))
2477 (sha256
2478 (base32
2479 "02v911w2kdbg3kfl593lb2ig4sjbfxzv20a0vbcymhfzpvp1x6xp"))
2480 (modules '((guix build utils)
2481 (ice-9 ftw)))
2482 (snippet
2483 ;; The build system doesn't allow us to unbundle the following
2484 ;; libraries. hidapi is also heavily patched and upstream not
2485 ;; actively maintained.
2486 '(let ((keep-dirs '("nova-simd" "nova-tt" "hidapi"
2487 "TLSF-2.4.6" "oscpack_1_1_0" "." "..")))
2488 (with-directory-excursion "./external_libraries"
2489 (for-each
2490 delete-file-recursively
2491 (scandir "."
2492 (lambda (x)
2493 (and (eq? (stat:type (stat x)) 'directory)
2494 (not (member (basename x) keep-dirs)))))))
2495 ;; To find the Guix provided ableton-link library.
2496 (substitute* "lang/CMakeLists.txt"
2497 (("include\\(\\.\\./external_libraries/link/\
2498 AbletonLinkConfig\\.cmake\\)")
2499 "find_package(AbletonLink NAMES AbletonLink ableton-link \
2500 link REQUIRED)"))
2501 #t))))
2502 (build-system cmake-build-system)
2503 (outputs
2504 '("out" ;core language
2505 "ide")) ;qt ide
2506 (arguments
2507 `(#:configure-flags '("-DSYSTEM_BOOST=on" "-DSYSTEM_YAMLCPP=on"
2508 "-DSC_QT=ON" "-DCMAKE_BUILD_TYPE=Release"
2509 "-DFORTIFY=ON" "-DLIBSCSYNTH=ON"
2510 "-DSC_EL=off") ;scel is packaged individually as
2511 ;emacs-scel
2512 #:phases
2513 (modify-phases %standard-phases
2514 ;; HOME must be defined otherwise supercollider throws a "ERROR:
2515 ;; Primitive '_FileMkDir' failed." error when generating the doc.
2516 ;; The graphical tests also hang without it.
2517 (add-after 'unpack 'set-home-directory
2518 (lambda _
2519 (setenv "HOME" (getcwd))
2520 #t))
2521 (add-after 'unpack 'patch-scclass-dir
2522 (lambda* (#:key outputs #:allow-other-keys)
2523 (let* ((out (assoc-ref outputs "out"))
2524 (scclass-dir
2525 (string-append out
2526 "/share/SuperCollider/SCClassLibrary")))
2527 (substitute* "lang/LangSource/SC_LanguageConfig.cpp"
2528 (((string-append
2529 "SC_Filesystem::instance\\(\\)\\.getDirectory"
2530 "\\(DirName::Resource\\) / CLASS_LIB_DIR_NAME"))
2531 (string-append "Path(\"" scclass-dir "\")")))
2532 #t)))
2533 (add-before 'build 'prepare-x
2534 (lambda _
2535 (system "Xvfb &")
2536 (setenv "DISPLAY" ":0")
2537 #t))
2538 (add-before 'install 'install-ide
2539 (lambda* (#:key outputs #:allow-other-keys)
2540 (let* ((out (assoc-ref outputs "out"))
2541 (ide (assoc-ref outputs "ide"))
2542 (scide "editors/sc-ide/scide"))
2543 (install-file scide
2544 (string-append ide "/bin"))
2545 (delete-file scide)
2546 #t))))))
2547 (native-inputs
2548 `(("ableton-link" ,ableton-link)
2549 ("pkg-config" ,pkg-config)
2550 ("qttools" ,qttools)
2551 ("xorg-server" ,xorg-server-for-tests)))
2552 (inputs
2553 `(("jack" ,jack-1)
2554 ("libsndfile" ,libsndfile)
2555 ("fftw" ,fftw)
2556 ("libxt" ,libxt)
2557 ("readline" ,readline) ;readline support for sclang's CLI
2558 ("alsa" ,alsa-lib) ;for sclang's MIDI interface
2559 ("eudev" ,eudev) ;for user interactions with devices
2560 ("avahi" ,avahi) ;zeroconf service discovery support
2561 ("icu4c" ,icu4c)
2562 ("boost" ,boost)
2563 ("boost-sync" ,boost-sync)
2564 ("yaml-cpp" ,yaml-cpp)
2565 ("qtbase" ,qtbase)
2566 ("qtdeclarative" ,qtdeclarative)
2567 ("qtsvg" ,qtsvg)
2568 ("qtwebchannel" ,qtwebchannel)
2569 ("qtwebsockets" ,qtwebsockets)))
2570 (propagated-inputs ;to get native-search-path
2571 `(("qtwebengine" ,qtwebengine)))
2572 (home-page "https://github.com/supercollider/supercollider")
2573 (synopsis "Synthesis engine and programming language")
2574 (description "SuperCollider is a synthesis engine (@code{scsynth} or
2575 @code{supernova}) and programming language (@code{sclang}). It can be used
2576 for experimenting with sound synthesis and algorithmic composition.
2577
2578 SuperCollider requires jackd to be installed in your user profile and your
2579 user must be allowed to access the realtime features of the kernel. Search
2580 for \"realtime\" in the index of the Guix manual to learn how to achieve this
2581 using Guix System.")
2582 (license license:gpl2+)))
2583
2584 (define-public raul
2585 (package
2586 (name "raul")
2587 (version "0.8.0")
2588 (source (origin
2589 (method url-fetch)
2590 (uri (string-append "https://download.drobilla.net/raul-"
2591 version ".tar.bz2"))
2592 (sha256
2593 (base32
2594 "09ms40xc1x6qli6lxkwn5ibqh62nl9w7dq0b6jh1q2zvnrxwsd8b"))))
2595 (build-system waf-build-system)
2596 (arguments
2597 `(#:python ,python-2
2598 #:tests? #f)) ; no check target
2599 (inputs
2600 `(("glib" ,glib)
2601 ("boost" ,boost)))
2602 (native-inputs
2603 `(("pkg-config" ,pkg-config)))
2604 (home-page "https://drobilla.net/software/raul/")
2605 (synopsis "Real-time audio utility library")
2606 (description
2607 "Raul (Real-time Audio Utility Library) is a C++ utility library primarily
2608 aimed at audio/musical applications.")
2609 (license license:gpl2+)))
2610
2611 (define-public raul-devel
2612 (let ((commit "4db870b2b20b0a608ec0283139056b836c5b1624")
2613 (revision "1"))
2614 (package (inherit raul)
2615 (name "raul")
2616 (version (string-append "0.8.9-" revision "."
2617 (string-take commit 9)))
2618 (source (origin
2619 (method git-fetch)
2620 (uri (git-reference
2621 (url "https://git.drobilla.net/raul.git")
2622 (commit commit)))
2623 (file-name (string-append name "-" version "-checkout"))
2624 (sha256
2625 (base32
2626 "04fajrass3ymr72flx5js5vxc601ccrmx8ny8scp0rw7j0igyjdr")))))))
2627
2628 (define-public resample
2629 (package
2630 (name "resample")
2631 (version "1.8.1")
2632 (source (origin
2633 (method url-fetch)
2634 (uri (string-append "https://ccrma.stanford.edu/~jos/gz/resample-"
2635 version
2636 ".tar.gz"))
2637 (sha256 (base32
2638 "074zj8ydp05yy1hjcglfv3hkvj4cm50f9nralka1992pm6yf8yvy"))))
2639 (build-system gnu-build-system)
2640 (native-inputs
2641 `(("autoconf" ,autoconf)
2642 ("automake" ,automake)
2643 ("pkg-config" ,pkg-config)
2644 ("libtool" ,libtool)))
2645 (synopsis "Sampling rate conversion and filter design utilities")
2646 (description "This package contains the @command{resample} and
2647 @command{windowfilter} command line utilities. The @command{resample} command
2648 allows changing the sampling rate of a sound file, while the
2649 @command{windowfilter} command allows to design Finite Impulse Response (FIR)
2650 filters using the so-called @emph{window method}.")
2651 (home-page "https://ccrma.stanford.edu/~jos/resample/Free_Resampling_Software.html")
2652 (license license:lgpl2.1+)))
2653
2654 (define-public rubberband
2655 (package
2656 (name "rubberband")
2657 (version "1.8.2")
2658 (source (origin
2659 (method url-fetch)
2660 (uri
2661 (string-append "https://bitbucket.org/breakfastquay/rubberband/get/v"
2662 version
2663 ".tar.bz2"))
2664 (file-name (string-append name "-" version ".tar.bz2"))
2665 (sha256
2666 (base32
2667 "0462fmjnfqpv2qi0s6ny42drqarkr0xy9lw8frjmfgzyzl5n9294"))))
2668 (build-system gnu-build-system)
2669 (arguments
2670 `(#:tests? #f ; no check target
2671 #:phases
2672 (modify-phases %standard-phases
2673 (add-after 'unpack 'skip-jni-installation
2674 ;; ‘make install’ unconditionally installs librubberband-jni.so,
2675 ;; which is never built by ‘make all’. Skip it.
2676 (lambda _
2677 (substitute* "Makefile.in"
2678 ((".*cp -f \\$\\(JNI_TARGET\\).*") ""))
2679 #t)))))
2680 (inputs
2681 `(("ladspa" ,ladspa)
2682 ("libsamplerate" ,libsamplerate)
2683 ("vamp" ,vamp)))
2684 (native-inputs
2685 `(("pkg-config" ,pkg-config)))
2686 (home-page "https://breakfastquay.com/rubberband/")
2687 (synopsis "Audio time-stretching and pitch-shifting library")
2688 (description
2689 "Rubber Band is a library and utility program that permits changing the
2690 tempo and pitch of an audio recording independently of one another.")
2691 (license license:gpl2+)))
2692
2693 (define-public rtmidi
2694 (package
2695 (name "rtmidi")
2696 (version "4.0.0")
2697 (source (origin
2698 (method url-fetch)
2699 (uri (string-append "https://www.music.mcgill.ca/~gary/rtmidi"
2700 "/release/rtmidi-" version ".tar.gz"))
2701 (file-name (string-append "rtmidi-" version ".tar.gz"))
2702 (sha256
2703 (base32
2704 "1k962ljpnwyjw9jjiky2372khhri1wqvrj5qsalfpys31xqzw31p"))))
2705 (build-system gnu-build-system)
2706 (inputs
2707 `(("jack" ,jack-1)
2708 ("alsa-lib" ,alsa-lib)))
2709 (native-inputs
2710 `(("autoconf" ,autoconf)
2711 ("automake" ,automake)
2712 ("libtool" ,libtool)
2713 ("pkg-config" ,pkg-config)))
2714 (home-page "https://www.music.mcgill.ca/~gary/rtmidi")
2715 (synopsis "Cross-platform MIDI library for C++")
2716 (description
2717 "RtMidi is a set of C++ classes (RtMidiIn, RtMidiOut, and API specific
2718 classes) that provide a common cross-platform API for realtime MIDI
2719 input/output.")
2720 (license license:expat)))
2721
2722 (define-public sratom
2723 (package
2724 (name "sratom")
2725 (version "0.6.4")
2726 (source (origin
2727 (method url-fetch)
2728 (uri (string-append "https://download.drobilla.net/sratom-"
2729 version ".tar.bz2"))
2730 (sha256
2731 (base32
2732 "0vh0biy3ngpzzgdml309c2mqz8xq9q0hlblczb4c6alhp0a8yv0l"))))
2733 (build-system waf-build-system)
2734 (arguments `(#:tests? #f)) ;no check target
2735 (propagated-inputs
2736 ;; In Requires of sratom-0.pc.
2737 `(("lv2" ,lv2)
2738 ("serd" ,serd)
2739 ("sord" ,sord)))
2740 (native-inputs
2741 `(("pkg-config" ,pkg-config)))
2742 (home-page "https://drobilla.net/software/sratom/")
2743 (synopsis "Library for serialising LV2 atoms to/from RDF")
2744 (description
2745 "Sratom is a library for serialising LV2 atoms to/from RDF, particularly
2746 the Turtle syntax.")
2747 (license license:isc)))
2748
2749 (define-public suil
2750 (package
2751 (name "suil")
2752 (version "0.10.6")
2753 (source (origin
2754 (method url-fetch)
2755 (uri (string-append "https://download.drobilla.net/suil-"
2756 version ".tar.bz2"))
2757 (sha256
2758 (base32
2759 "0z4v01pjw4wh65x38w6icn28wdwxz13ayl8hvn4p1g9kmamp1z06"))))
2760 (build-system waf-build-system)
2761 (arguments
2762 `(#:tests? #f)) ;no check target
2763 (inputs
2764 `(("lv2" ,lv2)
2765 ("gtk+" ,gtk+-2)
2766 ("gtk+" ,gtk+)
2767 ("qt" ,qtbase)))
2768 (native-inputs
2769 `(("pkg-config" ,pkg-config)))
2770 (home-page "https://drobilla.net/software/suil/")
2771 (synopsis "Library for loading and wrapping LV2 plugin UIs")
2772 (description
2773 "Suil is a lightweight C library for loading and wrapping LV2 plugin UIs.
2774
2775 Suil makes it possible to load a UI of a toolkit in a host using another
2776 toolkit. The API is designed such that hosts do not need to explicitly
2777 support specific toolkits – if Suil supports a particular toolkit, then UIs in
2778 that toolkit will work in all hosts that use Suil automatically.
2779
2780 Suil currently supports every combination of Gtk, Qt, and X11.")
2781 (license license:isc)))
2782
2783 (define-public timidity++
2784 (package
2785 (name "timidity++")
2786 (version "2.14.0")
2787 (source (origin
2788 (method url-fetch)
2789 (uri (string-append "mirror://sourceforge/timidity/TiMidity++"
2790 "/TiMidity++-" version
2791 "/TiMidity++-" version ".tar.bz2"))
2792 (sha256
2793 (base32
2794 "0xk41w4qbk23z1fvqdyfblbz10mmxsllw0svxzjw5sa9y11vczzr"))))
2795 (build-system gnu-build-system)
2796 (arguments
2797 '(#:configure-flags
2798 (list "--enable-audio=alsa,flac,jack,ao,vorbis,speex"
2799 "--enable-ncurses"
2800 "--enable-server"
2801 "--enable-alsaseq"
2802 (string-append "--with-default-path="
2803 (assoc-ref %outputs "out") "/etc/timidity"))
2804 #:phases
2805 (modify-phases %standard-phases
2806 (add-after 'install 'install-config
2807 (lambda _
2808 (let ((out (string-append (assoc-ref %outputs "out")
2809 "/etc/timidity")))
2810 (mkdir-p out)
2811 (call-with-output-file
2812 (string-append out "/timidity.cfg")
2813 (lambda (port)
2814 (format port (string-append "source "
2815 (assoc-ref %build-inputs "freepats")
2816 "/share/freepats/freepats.cfg")))))
2817 #t)))))
2818 (inputs
2819 `(("alsa-lib" ,alsa-lib)
2820 ("ao" ,ao)
2821 ("flac" ,flac)
2822 ("jack" ,jack-1)
2823 ("libogg" ,libogg)
2824 ("libvorbis" ,libvorbis)
2825 ("speex" ,speex)
2826 ("ncurses" ,ncurses)
2827 ("freepats" ,freepats)))
2828 (native-inputs
2829 `(("pkg-config" ,pkg-config)))
2830 (home-page "http://timidity.sourceforge.net/")
2831 (synopsis "Software synthesizer for playing MIDI files")
2832 (description
2833 "TiMidity++ is a software synthesizer. It can play MIDI files by
2834 converting them into PCM waveform data; give it a MIDI data along with digital
2835 instrument data files, then it synthesizes them in real-time, and plays. It
2836 can not only play sounds, but also can save the generated waveforms into hard
2837 disks as various audio file formats.")
2838 (license license:gpl2+)))
2839
2840 (define-public vamp
2841 (package
2842 (name "vamp")
2843 (version "2.6")
2844 (source (origin
2845 (method url-fetch)
2846 (uri (string-append
2847 "https://code.soundsoftware.ac.uk"
2848 "/attachments/download/1520/vamp-plugin-sdk-"
2849 version ".tar.gz"))
2850 (sha256
2851 (base32
2852 "0pzq0yy2kdl3jgfc2aqmh5m55nk1ild0hq8mydiiw35c6y0mglyh"))))
2853 (build-system gnu-build-system)
2854 (arguments
2855 `(#:tests? #f ; no check target
2856 #:phases
2857 (modify-phases %standard-phases
2858 (add-after 'install 'remove-libvamp-hostsdk.la
2859 (lambda* (#:key outputs #:allow-other-keys)
2860 ;; https://bugs.launchpad.net/ubuntu/+source/vamp-plugin-sdk/+bug/1253656
2861 (for-each delete-file
2862 (let ((out (assoc-ref outputs "out")))
2863 (list (string-append out "/lib/libvamp-sdk.la")
2864 (string-append out "/lib/libvamp-hostsdk.la"))))
2865 #t)))))
2866 (inputs
2867 `(("libsndfile" ,libsndfile)))
2868 (native-inputs
2869 `(("pkg-config" ,pkg-config)))
2870 (home-page "https://vamp-plugins.org")
2871 (synopsis "Modular and extensible audio processing system")
2872 (description
2873 "Vamp is an audio processing plugin system for plugins that extract
2874 descriptive information from audio data — typically referred to as audio
2875 analysis plugins or audio feature extraction plugins.")
2876 (license
2877 (license:x11-style
2878 "https://code.soundsoftware.ac.uk/projects/vamp-plugin-sdk/repository/entry/COPYING"))))
2879
2880 (define-public libsbsms
2881 (package
2882 (name "libsbsms")
2883 (version "2.0.2")
2884 (source
2885 (origin
2886 (method url-fetch)
2887 (uri (string-append "mirror://sourceforge/sbsms/sbsms/" version
2888 "/libsbsms-" version ".tar.gz"))
2889 (sha256
2890 (base32 "1vmf84iy4dkwxv887grnlsfk43fmhd9gbg26gc2kgcv40sbkvayf"))))
2891 (build-system gnu-build-system)
2892 (native-inputs `(("automake" ,automake)))
2893 (arguments
2894 `(#:configure-flags
2895 ;; Disable the use of SSE unless on x86_64.
2896 ,(if (not (string-prefix? "x86_64" (or (%current-target-system)
2897 (%current-system))))
2898 ''("--disable-sse")
2899 ''())
2900 #:phases
2901 (modify-phases %standard-phases
2902 (add-after
2903 'unpack 'fix-ar-lib-path
2904 (lambda* (#:key inputs #:allow-other-keys)
2905 ;; Originally a symlink to '/usr/local/share/automake-1.12/ar-lib'.
2906 (delete-file "ar-lib")
2907 (symlink
2908 (string-append (assoc-ref inputs "automake") "/share/automake-"
2909 ,(package-version automake) "/ar-lib")
2910 "ar-lib")
2911 #t)))))
2912 (home-page "http://sbsms.sourceforge.net/")
2913 (synopsis "Library for time stretching and pitch scaling of audio")
2914 (description
2915 "SBSMS (Subband Sinusoidal Modeling Synthesis) is software for time
2916 stretching and pitch scaling of audio. This package contains the library.")
2917 ;; There is no explicit declaration of a license, but a COPYING file
2918 ;; containing gpl2.
2919 (license license:gpl2)))
2920
2921 (define-public wavpack
2922 (package
2923 (name "wavpack")
2924 (version "5.3.2")
2925 (source
2926 (origin
2927 (method git-fetch)
2928 (uri (git-reference
2929 (url "https://github.com/dbry/WavPack")
2930 (commit "e4e8d191e8dd74cbdbeaef3232c16a7ef517e68d")))
2931 (sha256
2932 (base32 "1zj8svk6giy1abq3940sz32ygz7zldppxl47852zgn5wfm3l2spx"))
2933 (file-name (git-file-name name version))))
2934 (build-system gnu-build-system)
2935 (arguments
2936 '(#:configure-flags
2937 (list "--disable-static")
2938 #:phases
2939 (modify-phases %standard-phases
2940 (replace 'bootstrap
2941 ;; Running ./autogen.sh would cause premature configuration.
2942 (lambda _
2943 (invoke "autoreconf" "-vif")
2944 #t)))))
2945 (native-inputs
2946 `(("autoconf" ,autoconf)
2947 ("automake" ,automake)
2948 ("libtool" ,libtool)))
2949 (home-page "http://www.wavpack.com/")
2950 (synopsis "Hybrid lossless audio codec")
2951 (description
2952 "WavPack is an audio compression format with lossless, lossy and hybrid
2953 compression modes. This package contains command-line programs and library to
2954 encode and decode wavpack files.")
2955 (license license:bsd-3)))
2956
2957 (define-public libmodplug
2958 (package
2959 (name "libmodplug")
2960 (version "0.8.9.0")
2961 (source (origin
2962 (method url-fetch)
2963 (uri (string-append
2964 "mirror://sourceforge/modplug-xmms/"
2965 name "/" version "/" name "-" version ".tar.gz"))
2966 (sha256
2967 (base32
2968 "1pnri98a603xk47smnxr551svbmgbzcw018mq1k6srbrq6kaaz25"))))
2969 (build-system gnu-build-system)
2970 (home-page "http://modplug-xmms.sourceforge.net/")
2971 (synopsis "Mod file playing library")
2972 (description
2973 "Libmodplug renders mod music files as raw audio data, for playing or
2974 conversion. mod, .s3m, .it, .xm, and a number of lesser-known formats are
2975 supported. Optional features include high-quality resampling, bass expansion,
2976 surround and reverb.")
2977 (license license:public-domain)))
2978
2979 (define-public libxmp
2980 (package
2981 (name "libxmp")
2982 (version "4.4.1")
2983 (source (origin
2984 (method url-fetch)
2985 (uri (string-append "mirror://sourceforge/xmp/libxmp/" version "/"
2986 name "-" version ".tar.gz"))
2987 (sha256
2988 (base32
2989 "1kycz4jsyvmf7ny9227b497wc7y5ligydi6fvvldmkf8hk63ad9m"))))
2990 (build-system gnu-build-system)
2991 (home-page "http://xmp.sourceforge.net/")
2992 (synopsis "Module player library")
2993 (description
2994 "Libxmp is a library that renders module files to PCM data. It supports
2995 over 90 mainstream and obscure module formats including Protracker (MOD),
2996 Scream Tracker 3 (S3M), Fast Tracker II (XM), and Impulse Tracker (IT).")
2997 (license license:lgpl2.1+)))
2998
2999 (define-public xmp
3000 (package
3001 (name "xmp")
3002 (version "4.1.0")
3003 (source (origin
3004 (method url-fetch)
3005 (uri (string-append "mirror://sourceforge/xmp/xmp/" version "/"
3006 name "-" version ".tar.gz"))
3007 (sha256
3008 (base32
3009 "17i8fc7x7yn3z1x963xp9iv108gxfakxmdgmpv3mlm438w3n3g8x"))))
3010 (build-system gnu-build-system)
3011 (native-inputs
3012 `(("pkg-config" ,pkg-config)))
3013 (inputs
3014 `(("libxmp" ,libxmp)
3015 ("pulseaudio" ,pulseaudio)))
3016 (home-page "http://xmp.sourceforge.net/")
3017 (synopsis "Extended module player")
3018 (description
3019 "Xmp is a portable module player that plays over 90 mainstream and
3020 obscure module formats, including Protracker MOD, Fasttracker II XM, Scream
3021 Tracker 3 S3M and Impulse Tracker IT files.")
3022 (license license:gpl2+)))
3023
3024 (define-public soundtouch
3025 (package
3026 (name "soundtouch")
3027 (version "2.1.2")
3028 (source
3029 (origin
3030 (method git-fetch)
3031 (uri (git-reference
3032 (url "https://gitlab.com/soundtouch/soundtouch.git")
3033 (commit version)))
3034 (file-name (git-file-name name version))
3035 (sha256
3036 (base32 "174wgm3s0inmbnkrlnspxjwm2014qhjhkbdqa5r8rbfi0nzqxzsz"))))
3037 (build-system gnu-build-system)
3038 (native-inputs
3039 `(("autoconf" ,autoconf)
3040 ("automake" ,automake)
3041 ("libtool" ,libtool)
3042 ("file" ,file)))
3043 (home-page "https://www.surina.net/soundtouch/")
3044 (synopsis
3045 "Audio processing library for changing tempo, pitch and playback rate")
3046 (description
3047 "SoundTouch is an audio processing library for changing the tempo, pitch
3048 and playback rates of audio streams or audio files. It is intended for
3049 application developers writing sound processing tools that require tempo/pitch
3050 control functionality, or just for playing around with the sound effects.")
3051 (license license:lgpl2.1+)))
3052
3053 (define-public sox
3054 (package
3055 (name "sox")
3056 (version "14.4.2")
3057 (source (origin
3058 (method url-fetch)
3059 (uri (string-append "mirror://sourceforge/sox/sox/" version "/"
3060 name "-" version ".tar.bz2"))
3061 (sha256
3062 (base32
3063 "170lx90r1nlnb2j6lg00524iwvqy72p48vii4xc5prrh8dnrb9l1"))))
3064 (build-system gnu-build-system)
3065 (arguments
3066 '(#:configure-flags
3067 ;; The upstream asks to identify the distribution to diagnose SoX
3068 ;; bug reports.
3069 '("--with-distro=Guix System Distribution")))
3070 (native-inputs
3071 `(("pkg-config" ,pkg-config)))
3072 (inputs
3073 `(("alsa-lib" ,alsa-lib)
3074 ("ao" ,ao)
3075 ("flac" ,flac)
3076 ("lame" ,lame)
3077 ("libid3tag" ,libid3tag)
3078 ("libltdl" ,libltdl)
3079 ("libmad" ,libmad)
3080 ("libpng" ,libpng)
3081 ("libvorbis" ,libvorbis)
3082 ("pulseaudio" ,pulseaudio)))
3083 (home-page "http://sox.sourceforge.net")
3084 (synopsis "Sound processing utility")
3085 (description
3086 "SoX (Sound eXchange) is a command line utility that can convert
3087 various formats of computer audio files to other formats. It can also
3088 apply various effects to these sound files, and, as an added bonus, SoX
3089 can play and record audio files.")
3090 ;; sox.c is distributed under GPL, while the files that make up
3091 ;; libsox are licensed under LGPL.
3092 (license (list license:gpl2+ license:lgpl2.1+))))
3093
3094 (define-public soxr
3095 (package
3096 (name "soxr")
3097 (version "0.1.3")
3098 (source
3099 (origin
3100 (method url-fetch)
3101 (uri
3102 (string-append "mirror://sourceforge/soxr/soxr-" version
3103 "-Source.tar.xz"))
3104 (sha256
3105 (base32 "12aql6svkplxq5fjycar18863hcq84c5kx8g6f4rj0lcvigw24di"))))
3106 (build-system cmake-build-system)
3107 (arguments '(#:tests? #f)) ;no 'check' target
3108 (home-page "https://sourceforge.net/p/soxr/wiki/Home/")
3109 (synopsis "One-dimensional sample-rate conversion library")
3110 (description
3111 "The SoX Resampler library (libsoxr) performs one-dimensional sample-rate
3112 conversion. It may be used, for example, to resample PCM-encoded audio.")
3113 (license license:lgpl2.1+)))
3114
3115 (define-public twolame
3116 (package
3117 (name "twolame")
3118 (version "0.4.0")
3119 (source
3120 (origin
3121 (method url-fetch)
3122 (uri (string-append "mirror://sourceforge/twolame/twolame/" version
3123 "/twolame-" version ".tar.gz"))
3124 (sha256
3125 (base32 "0zf8sxqb02w07ah55b1y7ab643zmpbhn62spa9pqra0rc17l4dfc"))))
3126 (build-system gnu-build-system)
3127 (inputs
3128 `(("libsndfile" ,libsndfile)))
3129 (native-inputs
3130 `(("perl" ,perl)
3131 ("which" ,which))) ;used in tests/test.pl
3132 (home-page "http://www.twolame.org/")
3133 (synopsis "MPEG Audio Layer 2 (MP2) encoder")
3134 (description
3135 "TwoLAME is an optimised MPEG Audio Layer 2 (MP2) encoder based on
3136 tooLAME by Mike Cheng, which in turn is based upon the ISO dist10 code and
3137 portions of LAME.")
3138 (license license:lgpl2.1+)))
3139
3140 (define-public portaudio
3141 (package
3142 (name "portaudio")
3143 (version "190600.20161030")
3144 (source
3145 (origin
3146 (method url-fetch)
3147 (uri (string-append
3148 "http://www.portaudio.com/archives/pa_stable_v"
3149 (string-map (lambda (c) (if (char=? c #\.) #\_ c)) version)
3150 ".tgz"))
3151 (sha256
3152 (base32 "04qmin6nj144b8qb9kkd9a52xfvm0qdgm8bg8jbl7s3frmyiv8pm"))
3153 (patches (search-patches "portaudio-audacity-compat.patch"))))
3154 (build-system gnu-build-system)
3155 (inputs
3156 ;; TODO: Add ASIHPI.
3157 `(("alsa-lib" ,alsa-lib)
3158 ("jack" ,jack-1)))
3159 ;; Autoreconf is necessary because the audacity-compat patch modifies .in
3160 ;; files.
3161 (native-inputs
3162 `(("autoconf" ,autoconf)
3163 ("automake" ,automake)
3164 ("libtool" ,libtool)
3165 ("pkg-config" ,pkg-config)))
3166 (arguments
3167 '(#:tests? #f ;no 'check' target
3168 #:parallel-build? #f ;fails on some systems
3169 #:configure-flags '("--with-pic"
3170 "--enable-cxx"
3171 ;; XXX: The following prevents a build error
3172 ;; because of missing depcomp when C++ bindings are
3173 ;; requested.
3174 "--disable-dependency-tracking")
3175 #:phases
3176 (modify-phases %standard-phases
3177 ;; This is needed for linking the static libraries
3178 (add-after 'unpack 'build-only-position-independent-code
3179 (lambda _
3180 (substitute* "configure.in"
3181 (("AC_PROG_LIBTOOL" m)
3182 (string-append m "\nAM_PROG_AR\nLT_INIT([pic-only])")))
3183 (delete-file "configure")
3184 #t))
3185 ;; Some headers are not installed by default, but are needed by
3186 ;; packages like Kaldi.
3187 (add-after 'install 'install-missing-headers
3188 (lambda* (#:key outputs #:allow-other-keys)
3189 (install-file "src/common/pa_ringbuffer.h"
3190 (string-append (assoc-ref outputs "out") "/include"))
3191 #t)))))
3192 (home-page "http://www.portaudio.com/")
3193 (synopsis "Audio I/O library")
3194 (description
3195 "PortAudio is a portable C/C++ audio I/O library providing a simple API
3196 to record and/or play sound using a callback function or a blocking read/write
3197 interface.")
3198 (license license:expat)))
3199
3200 (define-public qsynth
3201 (package
3202 (name "qsynth")
3203 (version "0.5.7")
3204 (source
3205 (origin
3206 (method url-fetch)
3207 (uri (string-append "mirror://sourceforge/qsynth/qsynth/" version
3208 "/qsynth-" version ".tar.gz"))
3209 (sha256
3210 (base32 "18im4w8agj60nkppwbkxqnhpp13z5li3w30kklv4lgs20rvgbvl6"))))
3211 (build-system gnu-build-system)
3212 (arguments
3213 `(#:tests? #f)) ; no "check" phase
3214 (native-inputs
3215 `(("qttools" ,qttools)
3216 ("pkg-config" ,pkg-config)))
3217 (inputs
3218 `(("fluidsynth" ,fluidsynth)
3219 ("qtbase" ,qtbase)
3220 ("qtx11extras" ,qtx11extras)))
3221 (home-page "https://qsynth.sourceforge.io")
3222 (synopsis "Graphical user interface for FluidSynth")
3223 (description
3224 "Qsynth is a GUI front-end application for the FluidSynth SoundFont
3225 synthesizer written in C++.")
3226 (license license:gpl2+)))
3227
3228 (define-public rsound
3229 (package
3230 (name "rsound")
3231 (version "1.1")
3232 (source
3233 (origin
3234 (method git-fetch)
3235 (uri (git-reference
3236 (url "https://github.com/Themaister/RSound")
3237 (commit (string-append "v" version))))
3238 (file-name (git-file-name name version))
3239 (sha256
3240 (base32 "0gspmr3klwnq98h17p5hc6ifygya4p80g4g8r7a1qavm3mv19waf"))))
3241 (build-system gnu-build-system)
3242 (inputs
3243 `(("alsa-lib" ,alsa-lib)
3244 ("jack" ,jack-1)
3245 ("ao" ,ao)
3246 ("libsamplerate" ,libsamplerate)
3247 ("openal" ,openal)
3248 ("portaudio" ,portaudio)
3249 ("pulseaudio" ,pulseaudio)))
3250 (arguments
3251 '(#:phases
3252 (modify-phases %standard-phases
3253 (replace 'configure
3254 (lambda* (#:key outputs #:allow-other-keys)
3255 (setenv "CC" "gcc")
3256 (invoke "./configure"
3257 (string-append "--prefix=" (assoc-ref outputs "out"))))))
3258 ;; No 'check' target.
3259 #:tests? #f))
3260 (home-page "https://themaister.net/rsound.html")
3261 (synopsis "Networked audio system")
3262 (description
3263 "RSound allows you to send audio from an application and transfer it
3264 directly to a different computer on your LAN network. It is an audio daemon
3265 with a much different focus than most other audio daemons.")
3266 (license license:gpl3+)))
3267
3268 (define-public xjackfreak
3269 (package
3270 (name "xjackfreak")
3271 (version "1.0")
3272 (source (origin
3273 (method git-fetch)
3274 (uri (git-reference
3275 (url "https://github.com/johnhldavis/xjackfreak")
3276 (commit (string-append "v" version))))
3277 (file-name (git-file-name name version))
3278 (sha256
3279 (base32
3280 "18c546qidbrj0f5wfiq5llii2192xpln0ab3r4vpr7i3wybxqjfz"))))
3281 (build-system gnu-build-system)
3282 (arguments
3283 `(#:make-flags
3284 (list (string-append "docdir=" (assoc-ref %outputs "out")
3285 "/share/doc/xjackfreak"))))
3286 (inputs
3287 `(("jack" ,jack-1)
3288 ("libx11" ,libx11)
3289 ("libxt" ,libxt)
3290 ("libxext" ,libxext)))
3291 (native-inputs
3292 `(("pkg-config" ,pkg-config)))
3293 (home-page "https://github.com/johnhldavis/xjackfreak")
3294 (synopsis "JACK audio frequency analyzer and display")
3295 (description
3296 "XJackFreak is an audio analysis and equalizing tool for the Jack Audio
3297 Connection Kit. It can display the FFT of any input, modify it and output the
3298 result.")
3299 (license license:gpl3+)))
3300
3301 (define-public zita-convolver
3302 (package
3303 (name "zita-convolver")
3304 (version "4.0.3")
3305 (source (origin
3306 (method url-fetch)
3307 (uri (string-append
3308 "http://kokkinizita.linuxaudio.org"
3309 "/linuxaudio/downloads/zita-convolver-"
3310 version ".tar.bz2"))
3311 (snippet
3312 ;; Don't optimize for a specific processor architecture.
3313 '(begin
3314 (substitute* "source/Makefile"
3315 (("^CXXFLAGS \\+= -march=native") ""))
3316 #t))
3317 (modules '((guix build utils)))
3318 (sha256
3319 (base32
3320 "0prji66p86z2bzminywkwchr5bfgxcg2i8y803pydd1hzf2198cs"))))
3321 (build-system gnu-build-system)
3322 (arguments
3323 `(#:tests? #f ; no "check" target
3324 #:make-flags
3325 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
3326 (string-append "SUFFIX="))
3327 #:phases
3328 (modify-phases %standard-phases
3329 (add-after 'unpack 'patch-makefile-and-enter-directory
3330 (lambda _
3331 (substitute* "source/Makefile"
3332 (("ldconfig") "true")
3333 (("^LIBDIR =.*") "LIBDIR = lib\n"))
3334 (chdir "source")
3335 #t))
3336 (add-after 'install 'install-symlink
3337 (lambda _
3338 (symlink "libzita-convolver.so"
3339 (string-append (assoc-ref %outputs "out")
3340 "/lib/libzita-convolver.so.4"))
3341 #t))
3342 ;; no configure script
3343 (delete 'configure))))
3344 (inputs `(("fftwf" ,fftwf)))
3345 (home-page "https://kokkinizita.linuxaudio.org")
3346 (synopsis "Fast, partitioned convolution engine library")
3347 (description
3348 "Zita convolver is a C++ library providing a real-time convolution
3349 engine.")
3350 (license license:gpl3+)))
3351
3352 (define-public zita-resampler
3353 (package
3354 (name "zita-resampler")
3355 (version "1.6.2")
3356 (source (origin
3357 (method url-fetch)
3358 (uri (string-append
3359 "http://kokkinizita.linuxaudio.org"
3360 "/linuxaudio/downloads/zita-resampler-"
3361 version ".tar.bz2"))
3362 (snippet
3363 ;; Don't optimize for a specific processor architecture.
3364 '(begin
3365 (substitute* '("apps/Makefile" "source/Makefile")
3366 (("^CXXFLAGS \\+= -march=native") ""))
3367 #t))
3368 (modules '((guix build utils)))
3369 (sha256
3370 (base32
3371 "1my5k2dh2dkvjp6xjnf9qy6i7s28z13kw1n9pwa4a2cpwbzawfr3"))))
3372 (build-system gnu-build-system)
3373 (arguments
3374 `(#:tests? #f ; no "check" target
3375 #:make-flags
3376 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
3377 (string-append "SUFFIX="))
3378 #:phases
3379 (modify-phases %standard-phases
3380 (add-after
3381 'unpack 'patch-makefile-and-enter-directory
3382 (lambda _
3383 (substitute* "source/Makefile"
3384 (("ldconfig") "true")
3385 (("^LIBDIR =.*") "LIBDIR = lib\n"))
3386 (chdir "source")
3387 #t))
3388 (add-after
3389 'install 'install-symlink
3390 (lambda _
3391 (symlink "libzita-resampler.so"
3392 (string-append (assoc-ref %outputs "out")
3393 "/lib/libzita-resampler.so.1"))
3394 #t))
3395 ;; no configure script
3396 (delete 'configure))))
3397 (home-page "https://kokkinizita.linuxaudio.org/linuxaudio/zita-resampler/resampler.html")
3398 (synopsis "C++ library for resampling audio signals")
3399 (description
3400 "Libzita-resampler is a C++ library for resampling audio signals. It is
3401 designed to be used within a real-time processing context, to be fast, and to
3402 provide high-quality sample rate conversion.")
3403 (license license:gpl3+)))
3404
3405 (define-public zita-alsa-pcmi
3406 (package
3407 (name "zita-alsa-pcmi")
3408 (version "0.3.2")
3409 (source (origin
3410 (method url-fetch)
3411 (uri (string-append
3412 "http://kokkinizita.linuxaudio.org"
3413 "/linuxaudio/downloads/zita-alsa-pcmi-"
3414 version ".tar.bz2"))
3415 (sha256
3416 (base32
3417 "12d7vdg74yh21w69qi0wg57iz4876j94qbiq09bvscih6xz9y78s"))))
3418 (build-system gnu-build-system)
3419 (arguments
3420 `(#:tests? #f ; no "check" target
3421 #:make-flags
3422 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
3423 (string-append "SUFFIX="))
3424 #:phases
3425 (modify-phases %standard-phases
3426 (add-after 'unpack 'patch-makefile-and-enter-directory
3427 (lambda _
3428 (substitute* "source/Makefile"
3429 (("ldconfig") "true")
3430 (("^LIBDIR =.*") "LIBDIR = lib\n"))
3431 (chdir "source")
3432 #t))
3433 (add-after 'install 'install-symlink
3434 (lambda _
3435 (symlink "libzita-alsa-pcmi.so"
3436 (string-append (assoc-ref %outputs "out")
3437 "/lib/libzita-alsa-pcmi.so.0"))
3438 #t))
3439 ;; no configure script
3440 (delete 'configure))))
3441 (inputs
3442 `(("alsa-lib" ,alsa-lib)
3443 ("fftw" ,fftw)))
3444 (home-page "https://kokkinizita.linuxaudio.org")
3445 (synopsis "C++ wrapper around the ALSA API")
3446 (description
3447 "Zita-alsa-pcmi is a C++ wrapper around the ALSA API. It provides easy
3448 access to ALSA PCM devices, taking care of the many functions required to
3449 open, initialise and use a hw: device in mmap mode, and providing floating
3450 point audio data.")
3451 (license license:gpl3+)))
3452
3453 (define-public cuetools
3454 (package
3455 (name "cuetools")
3456 (version "1.4.1")
3457 (source (origin
3458 (method git-fetch)
3459 (uri (git-reference
3460 (url "https://github.com/svend/cuetools")
3461 (commit version)))
3462 (file-name (git-file-name name version))
3463 (sha256
3464 (base32
3465 "02ksv1ahf1v4cr2xbclsfv5x17m9ivzbssb5r8xjm97yh8a7spa3"))))
3466 (build-system gnu-build-system)
3467 ;; The source checkout is not bootstrapped.
3468 (native-inputs
3469 `(("autoconf" ,autoconf)
3470 ("automake" ,automake)
3471 ("flex" ,flex)
3472 ("bison" ,bison)))
3473 (synopsis "Cue and toc file parsers and utilities")
3474 (description "Cuetools is a set of programs that are useful for manipulating
3475 and using CUE sheet (cue) files and Table of Contents (toc) files. CUE and TOC
3476 files are a way to represent the layout of a data or audio CD in a
3477 machine-readable ASCII format.")
3478 (home-page "https://github.com/svend/cuetools")
3479 (license license:gpl2+)))
3480
3481 (define-public shntool
3482 (package
3483 (name "shntool")
3484 (version "3.0.10")
3485 (source (origin
3486 (method url-fetch)
3487 (uri (string-append "http://etree.org/shnutils/shntool/dist/src/"
3488 "shntool-" version ".tar.gz"))
3489 (sha256
3490 (base32
3491 "00i1rbjaaws3drkhiczaign3lnbhr161b7rbnjr8z83w8yn2wc3l"))))
3492 (build-system gnu-build-system)
3493 (synopsis "WAVE audio data processing tool")
3494 (description "shntool is a multi-purpose WAVE data processing and reporting
3495 utility. File formats are abstracted from its core, so it can process any file
3496 that contains WAVE data, compressed or not---provided there exists a format
3497 module to handle that particular file type. It can also generate CUE files, and
3498 use them split WAVE data into multiple files.")
3499 (home-page "http://etree.org/shnutils/shntool/")
3500 ;; 'install-sh' bears the x11 license
3501 (license (list license:gpl2+ license:x11))))
3502
3503 (define-public dcadec
3504 (package
3505 (name "dcadec")
3506 (version "0.2.0")
3507 (source (origin
3508 (method git-fetch)
3509 (uri (git-reference
3510 (url "https://github.com/foo86/dcadec")
3511 (commit (string-append "v" version))))
3512 (file-name (git-file-name name version))
3513 (sha256
3514 (base32
3515 "07nd0ajizrp1w02bsyfcv18431r8m8rq8gjfmz9wmckpg7cxj2hs"))))
3516 (build-system gnu-build-system)
3517 (arguments
3518 ;; Test files are missing: https://github.com/foo86/dcadec/issues/53
3519 '(#:tests? #f
3520 #:make-flags
3521 (list "CC=gcc"
3522 ;; Build shared library.
3523 "CONFIG_SHARED=1"
3524 (string-append "PREFIX=" (assoc-ref %outputs "out"))
3525 ;; Set proper runpath.
3526 (string-append "LDFLAGS=-Wl,-rpath="
3527 (assoc-ref %outputs "out")
3528 "/lib"))
3529 #:phases
3530 (modify-phases %standard-phases
3531 ;; No configure script, just a hand-written Makefile.
3532 (delete 'configure))))
3533 (synopsis "DTS Coherent Acoustics decoder")
3534 (description "Dcadec is a DTS Coherent Acoustics surround sound decoder
3535 with support for HD extensions.")
3536 (home-page "https://github.com/foo86/dcadec")
3537 (license license:lgpl2.1+)))
3538
3539 (define-public bs1770gain
3540 (package
3541 (name "bs1770gain")
3542 (version "0.7.0")
3543 (home-page "https://manpages.debian.org/sid/bs1770gain/bs1770gain.1.en.html")
3544 (source
3545 (origin
3546 (method url-fetch)
3547 (uri (string-append "mirror://sourceforge/bs1770gain/bs1770gain/"
3548 version "/bs1770gain-" version ".tar.gz"))
3549 (sha256
3550 (base32 "0a2dcaxvxy5m3a5sb1lhplsymvz3ypaiidc5xn9qy01h53zvyvkp"))
3551 (modules '((guix build utils)))
3552 (snippet
3553 `(begin
3554 ;; XXX
3555 (substitute* (find-files "." "\\.[ch]$")
3556 (("^ \\* N..o.*") ""))
3557 (substitute* "libbg/bgx.c"
3558 (("#define BG.* ") "#define BS ")
3559 (("BG.*NO?.*N.*S.*E.*N.*SE?") "NO")
3560 (("\"( #|N).*\"") "\"\""))
3561 (substitute* (list "config.h"
3562 "configure.ac"
3563 "configure")
3564 (("https?://bs1770gain[^/]*/")
3565 ,home-page))
3566 #t))))
3567 (build-system gnu-build-system)
3568 (inputs `(("ffmpeg" ,ffmpeg)
3569 ("sox" ,sox)))
3570 (synopsis "Tool to adjust loudness of media files")
3571 (description
3572 "BS1770GAIN is a loudness scanner compliant with ITU-R BS.1770 and its
3573 flavors EBU R128, ATSC A/85, and ReplayGain 2.0. It helps normalizing the
3574 loudness of audio and video files to the same level.")
3575 (license license:gpl2+)))
3576
3577 (define-public filteraudio
3578 (let ((revision "1")
3579 (commit "2fc669581e2a0ff87fba8de85861b49133306094"))
3580 (package
3581 (name "filteraudio")
3582 (version (string-append "0.0.0-" revision "."
3583 (string-take commit 7)))
3584 (source
3585 (origin
3586 (method git-fetch)
3587 (uri (git-reference
3588 (url "https://github.com/irungentoo/filter_audio")
3589 (commit commit)))
3590 (file-name (string-append name "-" version "-checkout"))
3591 (sha256
3592 (base32
3593 "0hbb290n3wb23f2k692a6bhc23nnqmxqi9sc9j15pnya8wifw64g"))))
3594 (build-system gnu-build-system)
3595 (arguments
3596 '(#:make-flags (list (string-append "PREFIX=" %output)
3597 "CC=gcc")
3598 #:tests? #f ; No tests
3599 #:phases
3600 (modify-phases %standard-phases
3601 ;; No configure script
3602 (delete 'configure))))
3603 (synopsis "Lightweight audio filtering library")
3604 (description "An easy to use audio filtering library made from webrtc
3605 code, used in @code{libtoxcore}.")
3606 (home-page "https://github.com/irungentoo/filter_audio")
3607 (license license:bsd-3))))
3608
3609 (define-public gsm
3610 (package
3611 (name "gsm")
3612 (version "1.0.19")
3613 (source
3614 (origin
3615 (method url-fetch)
3616 (uri
3617 (string-append "http://www.quut.com/" name "/" name
3618 "-" version ".tar.gz"))
3619 (sha256
3620 (base32
3621 "1xkha9ss5g5qnfaybi8il0mcvp8knwg9plgh8404vh58d0pna0s9"))))
3622 (build-system gnu-build-system)
3623 (arguments
3624 `(#:test-target "tst"
3625 #:make-flags (list (string-append "INSTALL_ROOT=" %output))
3626 #:phases
3627 (modify-phases %standard-phases
3628 (add-after 'unpack 'add-fpic-ccflag
3629 (lambda _
3630 ;; The -fPIC compiler option is needed when building
3631 ;; mediastreamer.
3632 (substitute* "Makefile"
3633 (("^CCFLAGS.*" all)
3634 (string-append all "CCFLAGS += -fPIC\n")))
3635 #t))
3636 (add-before 'install 'pre-install
3637 (lambda _
3638 (let ((out (assoc-ref %outputs "out")))
3639 (mkdir-p (string-append out "/inc"))
3640 (mkdir-p (string-append out "/man"))
3641 (mkdir-p (string-append out "/man/man1"))
3642 (mkdir-p (string-append out "/man/man3"))
3643 (mkdir-p (string-append out "/bin"))
3644 (mkdir-p (string-append out "/lib")))
3645 #t))
3646 (add-after 'install 'post-install
3647 (lambda _
3648 (let ((out (assoc-ref %outputs "out")))
3649 (rename-file (string-append out "/inc")
3650 (string-append out "/include"))
3651 (mkdir-p (string-append out "/include/gsm"))
3652 (copy-recursively "inc"
3653 (string-append out "/include/gsm")))
3654 #t))
3655 (delete 'configure)))) ; no configure script
3656 (synopsis "GSM 06.10 lossy speech compression library")
3657 (description "This C library provides an encoder and a decoder for the GSM
3658 06.10 RPE-LTP lossy speech compression algorithm.")
3659 (home-page "http://quut.com/gsm/")
3660 (license (license:non-copyleft "file://COPYRIGHT"))))
3661
3662 (define-public python-pyalsaaudio
3663 (package
3664 (name "python-pyalsaaudio")
3665 (version "0.8.4")
3666 (source (origin
3667 (method url-fetch)
3668 (uri (pypi-uri "pyalsaaudio" version))
3669 (sha256
3670 (base32
3671 "1180ypn9596rq4b7y7dyv627j1q0fqilmkkrckclnzsdakdgis44"))))
3672 (build-system python-build-system)
3673 (arguments
3674 `(#:tests? #f)) ; tests require access to ALSA devices.
3675 (inputs
3676 `(("alsa-lib" ,alsa-lib)))
3677 (home-page "https://larsimmisch.github.io/pyalsaaudio/")
3678 (synopsis "ALSA wrappers for Python")
3679 (description
3680 "This package contains wrappers for accessing the ALSA API from Python.
3681 It is currently fairly complete for PCM devices, and has some support for
3682 mixers.")
3683 (license license:psfl)))
3684
3685 (define-public python2-pyalsaaudio
3686 (package-with-python2 python-pyalsaaudio))
3687
3688 (define-public bluez-alsa
3689 (package
3690 (name "bluez-alsa")
3691 (version "2.0.0")
3692 (source (origin
3693 ;; The tarballs are mere snapshots and don't contain a
3694 ;; bootstrapped build system.
3695 (method git-fetch)
3696 (uri (git-reference
3697 (url "https://github.com/Arkq/bluez-alsa")
3698 (commit (string-append "v" version))))
3699 (file-name (git-file-name name version))
3700 (sha256
3701 (base32
3702 "08mppgnjf1j2733bk9yf0cny6rfxxwiys0s62lz2zd2lpdl6d9lz"))))
3703 (build-system gnu-build-system)
3704 (arguments
3705 `(#:configure-flags
3706 (list (string-append "--with-alsaplugindir="
3707 (assoc-ref %outputs "out")
3708 "/lib/alsa-lib")
3709 (string-append "--with-dbusconfdir="
3710 (assoc-ref %outputs "out")
3711 "/etc/dbus-1/system.d"))))
3712 (native-inputs
3713 `(("autoconf" ,autoconf)
3714 ("automake" ,automake)
3715 ("libtool" ,libtool)
3716 ("pkg-config" ,pkg-config)))
3717 (inputs
3718 `(("alsa-lib" ,alsa-lib)
3719 ("bluez" ,bluez)
3720 ("dbus" ,dbus)
3721 ("glib" ,glib)
3722 ("libbsd" ,libbsd)
3723 ("ncurses" ,ncurses)
3724 ("ortp" ,ortp)
3725 ("sbc" ,sbc)))
3726 (home-page "https://github.com/Arkq/bluez-alsa")
3727 (synopsis "Bluetooth ALSA backend")
3728 (description "This project is a rebirth of a direct integration between
3729 Bluez and ALSA. Since Bluez >= 5, the build-in integration has been removed
3730 in favor of 3rd party audio applications. From now on, Bluez acts as a
3731 middleware between an audio application, which implements Bluetooth audio
3732 profile, and a Bluetooth audio device. BlueALSA registers all known Bluetooth
3733 audio profiles in Bluez, so in theory every Bluetooth device (with audio
3734 capabilities) can be connected. In order to access the audio stream, one has
3735 to connect to the ALSA PCM device called @code{bluealsa}. The device is based
3736 on the ALSA software PCM plugin.")
3737 (license license:expat)))
3738
3739 (define-public snd
3740 (package
3741 (name "snd")
3742 (version "20.6")
3743 (source (origin
3744 (method url-fetch)
3745 (uri (string-append "ftp://ccrma-ftp.stanford.edu/pub/Lisp/"
3746 "snd-" version ".tar.gz"))
3747 (sha256
3748 (base32
3749 "1h4dsq5xcvwjbnayhn719cln0lg199w3xm59sl9d2jz8bq78gqgj"))))
3750 (build-system glib-or-gtk-build-system)
3751 (arguments
3752 `(#:tests? #f ; no tests
3753 #:out-of-source? #f ; for the 'install-doc' phase
3754 #:configure-flags
3755 (let* ((out (assoc-ref %outputs "out"))
3756 (docdir (string-append out "/share/doc/"
3757 ,name "-" ,version)))
3758 (list "--with-alsa" "--with-jack" "--with-gmp"
3759 (string-append "--with-doc-dir=" docdir)))
3760 #:phases
3761 (modify-phases %standard-phases
3762 (add-after 'install 'install-doc
3763 (lambda* (#:key outputs #:allow-other-keys)
3764 (let* ((out (assoc-ref outputs "out"))
3765 (doc (string-append out "/share/doc/"
3766 ,name "-" ,version)))
3767 (for-each
3768 (lambda (f)
3769 (install-file f doc))
3770 (find-files "." "\\.html$"))
3771 (copy-recursively "pix" (string-append doc "/pix"))
3772 #t))))))
3773 (native-inputs
3774 `(("pkg-config" ,pkg-config)))
3775 (inputs
3776 `(("alsa-lib" ,alsa-lib)
3777 ("fftw" ,fftw)
3778 ("flac" ,flac)
3779 ("gmp" ,gmp)
3780 ("gsl" ,gsl)
3781 ("gtk+" ,gtk+)
3782 ("jack" ,jack-1)
3783 ("libsamplerate" ,libsamplerate)
3784 ("mpc" ,mpc)
3785 ("mpfr" ,mpfr)
3786 ("mpg123" ,mpg123)
3787 ("speex" ,speex)
3788 ("timidity++" ,timidity++)
3789 ("vorbis-tools" ,vorbis-tools)
3790 ("wavpack" ,wavpack)))
3791 (synopsis "Sound editor")
3792 (home-page "https://ccrma.stanford.edu/software/snd/")
3793 (description
3794 "Snd is a sound editor modelled loosely after Emacs. It can be
3795 customized and extended using either the s7 Scheme implementation (included in
3796 the Snd sources), Ruby, or Forth.")
3797 (license (license:non-copyleft "file://COPYING"))))
3798
3799 (define-public noise-repellent
3800 (package
3801 (name "noise-repellent")
3802 (version "0.1.5")
3803 (source (origin
3804 (method git-fetch)
3805 (uri (git-reference
3806 (url "https://github.com/lucianodato/noise-repellent")
3807 (commit version)))
3808 (file-name (string-append name "-" version "-checkout"))
3809 (sha256
3810 (base32
3811 "0hb89x9i2knzan46q4nwscf5zmnb2nwf4w13xl2c0y1mx1ls1mwl"))))
3812 (build-system meson-build-system)
3813 (arguments
3814 `(#:configure-flags
3815 (list (string-append "--prefix=" (assoc-ref %outputs "out")
3816 "/lib/lv2"))))
3817 (inputs
3818 `(("lv2" ,lv2)
3819 ("fftwf" ,fftwf)))
3820 (native-inputs
3821 `(("pkg-config" ,pkg-config)))
3822 (home-page "https://github.com/lucianodato/noise-repellent")
3823 (synopsis "LV2 plugin for broadband noise reduction")
3824 (description "Noise Repellent is an LV2 plugin to reduce noise. It has
3825 the following features:
3826
3827 @enumerate
3828 @item Spectral gating and spectral subtraction suppression rule
3829 @item Adaptive and manual noise thresholds estimation
3830 @item Adjustable noise floor
3831 @item Adjustable offset of thresholds to perform over-subtraction
3832 @item Time smoothing and a masking estimation to reduce artifacts
3833 @item Basic onset detector to avoid transients suppression
3834 @item Whitening of the noise floor to mask artifacts and to recover higher
3835 frequencies
3836 @item Option to listen to the residual signal
3837 @item Soft bypass
3838 @item Noise profile saved with the session
3839 @end enumerate
3840 ")
3841 (license license:lgpl3+)))
3842
3843 (define-public cli-visualizer
3844 (package
3845 (name "cli-visualizer")
3846 (version "1.8")
3847 (source
3848 (origin
3849 (method git-fetch)
3850 (uri (git-reference
3851 (url "https://github.com/dpayne/cli-visualizer")
3852 (commit (string-append "v" version))))
3853 (file-name (git-file-name name version))
3854 (sha256
3855 (base32 "003mbbwsz43mg3d7llphpypqa9g7rs1p1cdbqi1mbc2bfrc1gcq2"))))
3856 (build-system cmake-build-system)
3857 (native-inputs
3858 ;; TODO: Try using the latest googletest for versions > 1.8.
3859 `( ;; ("googletest" ,googletest-1.8)
3860 ("which" ,which)))
3861 (inputs
3862 `(("fftw" ,fftw)
3863 ("ncurses" ,ncurses)
3864 ("pulseaudio" ,pulseaudio)))
3865 (arguments
3866 '(#:tests? #f
3867 ;; XXX Enable tests after patching them to use the system googletest.
3868 ;; #:configure-flags (list "-DVIS_WITH_TESTS=true")
3869 #:phases
3870 (modify-phases %standard-phases
3871 (add-after 'install 'install-examples
3872 (lambda* (#:key outputs #:allow-other-keys)
3873 (with-directory-excursion "../source/examples"
3874 (delete-file "mac_osx_config")
3875 (for-each (lambda (file)
3876 (install-file file
3877 (string-append
3878 (assoc-ref outputs "out")
3879 "/share/doc")))
3880 (find-files ".")))
3881 #t)))))
3882 (home-page "https://github.com/dpayne/cli-visualizer/")
3883 (synopsis "Command-line audio visualizer")
3884 (description "@code{cli-visualizer} displays fast-Fourier
3885 transforms (FFTs) of the sound being played, as well as other graphical
3886 representations.")
3887 (license license:expat)))
3888
3889 (define-public cava
3890 (package
3891 (name "cava")
3892 (version "0.6.1")
3893 (source (origin
3894 (method git-fetch)
3895 (uri (git-reference
3896 (url "https://github.com/karlstav/cava")
3897 (commit version)))
3898 (file-name (git-file-name name version))
3899 (sha256
3900 (base32
3901 "1kvhqgijs29909w3sq9m0bslx2zxxn4b3i07kdz4hb0dqkppxpjy"))))
3902 (build-system gnu-build-system)
3903 (native-inputs
3904 `(("autoconf" ,autoconf)
3905 ("automake" ,automake)
3906 ("libtool" ,libtool)))
3907 (inputs
3908 `(("fftw" ,fftw)
3909 ("ncurses" ,ncurses)
3910 ("pulseaudio" ,pulseaudio)))
3911 (arguments
3912 `(#:configure-flags
3913 (list (string-append "PREFIX=" %output)
3914 (string-append "FONT_DIR=" %output "/share/consolefonts"))
3915 #:make-flags
3916 (let ((lib (string-append %output "/lib")))
3917 (list (string-append "cava_LDFLAGS = -L" lib " -Wl,-rpath " lib)))
3918 #:phases
3919 (modify-phases %standard-phases
3920 (replace 'bootstrap
3921 (lambda* (#:key outputs #:allow-other-keys)
3922 (setenv "HOME" (getcwd))
3923 (invoke "sh" "autogen.sh")))
3924 (add-before 'build 'make-cava-ldflags
3925 (lambda* (#:key outputs #:allow-other-keys)
3926 (mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
3927 #t))
3928 (add-after 'install 'data
3929 (lambda* (#:key outputs #:allow-other-keys)
3930 (for-each (lambda (file)
3931 (install-file file
3932 (string-append (assoc-ref outputs "out")
3933 "/share/doc/examples")))
3934 (find-files "example_files"))
3935 #t)))))
3936 (home-page "https://karlstav.github.io/cava/")
3937 (synopsis "Console audio visualizer for ALSA, MPD, and PulseAudio")
3938 (description "C.A.V.A. is a bar audio spectrum visualizer for the terminal
3939 using ALSA, MPD, PulseAudio, or a FIFO buffer as its input.")
3940 (license license:expat)))
3941
3942 (define-public fluid-3
3943 (let ((commit "871c8ce2002e8b3c198f532fdb4fbcce7914f951"))
3944 (package
3945 (name "fluid-3")
3946 (version "2.1")
3947 (source
3948 (origin
3949 (method url-fetch)
3950 ;; Only one file is required, but the release bundles the whole
3951 ;; software which is 50MiB as tar and 200MiB unpacked. The website
3952 ;; directly links the soundfont release to the github file download.
3953 (uri (string-append "https://github.com/musescore/MuseScore/raw/"
3954 commit "/share/sound/FluidR3Mono_GM.sf3"))
3955 (file-name (string-append name "-" version ".sf3"))
3956 (sha256
3957 (base32
3958 "1hjfg5i15bw9279007xs92zsggjgn4s4k9pc00s851l3kvc6dkfg"))))
3959 (build-system trivial-build-system)
3960 (arguments
3961 `(#:modules ((guix build utils))
3962 #:builder
3963 (begin
3964 (use-modules (guix build utils))
3965 (let ((file (assoc-ref %build-inputs "source"))
3966 (out (string-append %output "/share/soundfonts")))
3967 (mkdir-p out)
3968 (copy-file file (string-append out "/FluidR3Mono_GM.sf3"))
3969 #t))))
3970 (home-page "https://github.com/musescore/MuseScore/tree/master/share/sound")
3971 (synopsis "Pro-quality GM soundfont")
3972 (description "Fluid-3 is Frank Wen's pro-quality GM soundfont.")
3973 (license license:expat))))
3974
3975 (define-public libfdk
3976 (package
3977 (name "libfdk")
3978 (version "2.0.1")
3979 (source
3980 (origin
3981 (method git-fetch)
3982 (uri (git-reference
3983 (url "https://github.com/mstorsjo/fdk-aac")
3984 (commit (string-append "v" version))))
3985 (file-name (git-file-name name version))
3986 (sha256
3987 (base32
3988 "1fkrnzs78fmj11n9z3l0w53i2fl16jcfiyavwidck9bzmkmsf486"))))
3989 (build-system gnu-build-system)
3990 (native-inputs
3991 `(("autoconf" ,autoconf)
3992 ("automake" ,automake)
3993 ("libtool" ,libtool)))
3994 (home-page "https://github.com/mstorsjo/fdk-aac")
3995 (synopsis "Fraunhofer FDK AAC library")
3996 (description "FDK is a library for encoding and decoding Advanced Audio
3997 Coding (AAC) format audio, developed by Fraunhofer IIS, and included as part of
3998 Android. It supports several Audio Object Types including MPEG-2 and MPEG-4 AAC
3999 LC, HE-AAC (AAC LC + SBR), HE-AACv2 (LC + SBR + PS) as well AAC-LD (low delay)
4000 and AAC-ELD (enhanced low delay) for real-time communication. The encoding
4001 library supports sample rates up to 96 kHz and up to eight channels (7.1
4002 surround).")
4003 (license (license:fsf-free "https://github.com/mstorsjo/fdk-aac/blob/master/NOTICE"
4004 "https://www.gnu.org/licenses/license-list.html#fdk"))))
4005
4006 (define-public libopenshot-audio
4007 (package
4008 (name "libopenshot-audio")
4009 (version "0.2.0")
4010 (source (origin
4011 (method git-fetch)
4012 (uri (git-reference
4013 (url "https://github.com/OpenShot/libopenshot-audio")
4014 (commit (string-append "v" version))))
4015 (file-name (git-file-name name version))
4016 (sha256
4017 (base32
4018 "13if0m5mvlqly8gmbhschzb9papkgp3yqivklhb949dhy16m8zgf"))))
4019 (build-system cmake-build-system)
4020 (inputs
4021 `(("alsa-lib" ,alsa-lib)
4022 ;; The following are for JUCE GUI components:
4023 ("libx11" ,libx11)
4024 ("freetype" ,freetype)
4025 ("libxrandr" ,libxrandr)
4026 ("libxinerama" ,libxinerama)
4027 ("libxcursor" ,libxcursor)))
4028 (arguments
4029 `(#:tests? #f ;there are no tests
4030 #:configure-flags
4031 (list (string-append "-DCMAKE_CXX_FLAGS=-I"
4032 (assoc-ref %build-inputs "freetype")
4033 "/include/freetype2"))))
4034 (home-page "https://openshot.org")
4035 (synopsis "Audio editing and playback for OpenShot")
4036 (description "OpenShot Audio Library (libopenshot-audio) allows
4037 high-quality editing and playback of audio, and is based on the JUCE
4038 library.")
4039 (license license:lgpl3+)))
4040
4041 (define-public faudio
4042 (package
4043 (name "faudio")
4044 (version "19.11")
4045 (source
4046 (origin
4047 (method git-fetch)
4048 (uri (git-reference
4049 (url "https://github.com/FNA-XNA/FAudio")
4050 (commit version)))
4051 (file-name (git-file-name name version))
4052 (sha256
4053 (base32 "0ckpr6ffz8ssfh1y850dhip5s5jv0j6n90qz5yx1v9d6gpwf08rp"))))
4054 (arguments
4055 '(#:tests? #f ; No tests.
4056 #:configure-flags '("-DFFMPEG=ON")))
4057 (build-system cmake-build-system)
4058 (native-inputs `(("pkg-config" ,pkg-config)))
4059 (inputs `(("ffmpeg" ,ffmpeg)
4060 ("sdl2" ,sdl2)))
4061 (home-page "https://github.com/FNA-XNA/FAudio")
4062 (synopsis "XAudio reimplementation")
4063 (description "FAudio is an XAudio reimplementation that focuses solely on
4064 developing fully accurate DirectX Audio runtime libraries.")
4065 (license license:zlib)))
4066
4067 (define-public gnaural
4068 (package
4069 (name "gnaural")
4070 (version "20110606")
4071 (source
4072 (origin
4073 (method url-fetch)
4074 (uri (string-append "mirror://sourceforge/gnaural/Gnaural/gnaural_"
4075 version ".tar.xz"))
4076 (sha256
4077 (base32
4078 "1gq519c0imsh57zklyi0f8h64l3ai48lh672c834470z8c6kvbfi"))))
4079 (build-system gnu-build-system)
4080 (inputs
4081 `(("alsa-lib" ,alsa-lib)
4082 ("gtk+" ,gtk+-2)
4083 ("libsndfile" ,libsndfile)
4084 ("portaudio" ,portaudio)))
4085 (native-inputs
4086 `(("pkg-config" ,pkg-config)))
4087 (home-page "http://gnaural.sourceforge.net/")
4088 (synopsis "Binaural beat synthesizer")
4089 (description "Gnaural is a programmable auditory binaural beat synthesizer
4090 intended to be used for brainwave entrainment. Gnaural supports creation of
4091 binaural beat tracks of different frequencies and exporting of tracks into
4092 different audio formats. Gnaural can also be linked over the internet with
4093 other Gnaural instances, allowing synchronous sessions between many users.")
4094 (license license:gpl2+)))
4095
4096 (define-public darkice
4097 (package
4098 (name "darkice")
4099 (version "1.4")
4100 (source (origin
4101 (method url-fetch)
4102 (uri (string-append "https://github.com/rafael2k/darkice/releases/"
4103 "download/v" version "/darkice-"
4104 version ".tar.gz"))
4105 (sha256
4106 (base32
4107 "05yq7lggxygrkd76yiqby3msrgdn082p0qlvmzzv9xbw8hmyra76"))))
4108 (build-system gnu-build-system)
4109 (native-inputs `(("pkg-config" ,pkg-config)))
4110 (inputs `(("lame" ,lame)
4111 ("libvorbis" ,libvorbis)
4112 ("opus" ,opus)
4113 ("twolame" ,twolame)
4114 ("alsa-lib" ,alsa-lib)
4115 ("pulseaudio" ,pulseaudio)
4116 ("jack" ,jack-1)
4117 ("libsamplerate" ,libsamplerate)))
4118 (arguments
4119 `(#:configure-flags
4120 (list (string-append "--with-lame-prefix="
4121 (assoc-ref %build-inputs "lame")))))
4122 (home-page "http://www.darkice.org/")
4123 (synopsis "Live audio streamer")
4124 (description "DarkIce is a live audio streamer. It takes audio input from
4125 a sound card, encodes it into Ogg Vorbis and/or mp3, and sends the audio
4126 stream to one or more IceCast and/or ShoutCast servers.")
4127 (license license:gpl3+)))
4128
4129 (define-public libltc
4130 (package
4131 (name "libltc")
4132 (version "1.3.1")
4133 (source
4134 (origin
4135 (method url-fetch)
4136 (uri
4137 (string-append "https://github.com/x42/libltc/releases/download/v"
4138 version "/libltc-" version ".tar.gz"))
4139 (sha256
4140 (base32
4141 "173h9dgmain3nyrwk6q2d7yl4fnh4vacag4s2p01n5b7nyrkxrjh"))))
4142 (build-system gnu-build-system)
4143 (arguments
4144 `(#:parallel-tests? #f)) ;tests fail otherwise
4145 (native-inputs
4146 `(("doxygen" ,doxygen)
4147 ("pkg-config" ,pkg-config)))
4148 (synopsis "Encode or decode Linear/Longitudinal Time Code (LTC) audio")
4149 (description "Libltc is a POSIX-C Library for handling
4150 @dfn{Linear/Longitudinal Time Code} (LTC) data.")
4151 (home-page "https://x42.github.io/libltc/")
4152 (license license:lgpl3+)))
4153
4154 (define-public ttaenc
4155 (package
4156 (name "ttaenc")
4157 (version "3.4.1")
4158 (source
4159 (origin
4160 (method url-fetch)
4161 (uri (string-append "mirror://sourceforge/tta/"
4162 "tta/ttaenc-src"
4163 "/ttaenc-" version "-src.tgz"))
4164 (sha256
4165 (base32
4166 "1iixpr4b89g9g1hwn8ak8k8iflcww3r5f09a117qdidc2nqcijdj"))))
4167 (build-system gnu-build-system)
4168 (arguments
4169 `(#:tests? #f ;no tests
4170 #:make-flags
4171 (list (string-append "CC=" ,(cc-for-target))
4172 (string-append "INSDIR=" (assoc-ref %outputs "out") "/bin"))
4173 #:phases
4174 (modify-phases %standard-phases
4175 (delete 'configure) ; no configure
4176 (add-before 'install 'make-bindir
4177 (lambda* (#:key outputs #:allow-other-keys)
4178 (let* ((out (assoc-ref outputs "out")))
4179 (mkdir-p (string-append out "/bin"))
4180 #t))))))
4181 (synopsis "TTA lossless audio encoder")
4182 (description
4183 "TTA performs lossless compression on multichannel 8,16 and 24 bits
4184 data of the Wav audio files. Being lossless means that no data-
4185 quality is lost in the compression - when uncompressed, the data will
4186 be identical to the original. The compression ratios of TTA depend on
4187 the type of music file being compressed, but the compression size
4188 will generally range between 30% - 70% of the original. TTA format
4189 supports both of ID3v1/v2 and APEv2 tags.")
4190 (home-page "http://tausoft.org/")
4191 (license license:gpl2+)))
4192
4193 (define-public redkite
4194 (package
4195 (name "redkite")
4196 (version "0.8.1")
4197 (source
4198 (origin
4199 (method git-fetch)
4200 (uri (git-reference
4201 (url "https://gitlab.com/geontime/redkite.git")
4202 (commit (string-append "v" version))))
4203 (file-name (git-file-name name version))
4204 (sha256
4205 (base32 "17kv2jc4jvn3sdicz3sf8dnf25wbvv7ijzkr0mm0sbrrjz6vrwz0"))))
4206 (build-system cmake-build-system)
4207 (arguments
4208 `(#:tests? #f)) ;no tests included
4209 (inputs
4210 `(("cairo" ,cairo)))
4211 (native-inputs
4212 `(("pkg-config", pkg-config)))
4213 (synopsis "Small GUI toolkit")
4214 (description "Redkite is a small GUI toolkit developed in C++17 and
4215 inspired from other well known GUI toolkits such as Qt and GTK. It is
4216 minimal on purpose and is intended to be statically linked to applications,
4217 therefore satisfying any requirements they may have to be self contained,
4218 as is the case with audio plugins.")
4219 (home-page "https://gitlab.com/geontime/redkite")
4220 (license license:gpl3+)))
4221
4222 (define-public carla
4223 (package
4224 (name "carla")
4225 (version "2.1.1")
4226 (source
4227 (origin
4228 (method git-fetch)
4229 (uri
4230 (git-reference
4231 (url "https://github.com/falkTX/Carla")
4232 (commit (string-append "v" version))))
4233 (file-name (git-file-name name version))
4234 (sha256
4235 (base32
4236 "0c3y4a6cgi4bv1mg57i3qn5ia6pqjqlaylvkapj6bmpsw71ig22g"))))
4237 (build-system gnu-build-system)
4238 (arguments
4239 `(#:tests? #f ; no "check" target
4240 #:make-flags
4241 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
4242 #:phases
4243 (modify-phases %standard-phases
4244 (delete 'configure) ; no configure script
4245 (add-before 'build 'set-CC-variable-and-show-features
4246 (lambda _
4247 (setenv "CC" "gcc")
4248 (invoke "make" "features")))
4249 (add-after 'install 'make-carla-executable
4250 (lambda* (#:key outputs #:allow-other-keys)
4251 (let ((out (assoc-ref outputs "out")))
4252 (chmod (string-append out "/share/carla/carla") #o555)
4253 #t)))
4254 (add-after 'install 'wrap-executables
4255 (lambda* (#:key outputs #:allow-other-keys)
4256 (let ((out (assoc-ref outputs "out")))
4257 (wrap-script (string-append out "/bin/carla")
4258 `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH"))))
4259 #t))))))
4260 (inputs
4261 `(("alsa-lib" ,alsa-lib)
4262 ("ffmpeg" ,ffmpeg)
4263 ("fluidsynth" ,fluidsynth)
4264 ("file" ,file)
4265 ("liblo" ,liblo)
4266 ("libsndfile" ,libsndfile)
4267 ("gtk2" ,gtk+-2) ;needed for bridging GTK2 plugins in GTK3 hosts
4268 ("gtk+" ,gtk+)
4269 ("python-pyliblo" ,python-pyliblo)
4270 ("python-pyqt" ,python-pyqt)
4271 ("python-rdflib" ,python-rdflib)
4272 ;; python-pyqt shows the following error without python-wrapper:
4273 ;; Error while finding module specification for 'PyQt5.uic.pyuic'
4274 ;; (ModuleNotFoundError: No module named 'PyQt5')
4275 ("python-wrapper" ,python-wrapper)
4276 ("libx11" ,libx11)
4277 ("qtbase" ,qtbase)
4278 ("zlib" ,zlib)
4279
4280 ;; For WRAP-SCRIPT above.
4281 ("guile" ,guile-2.2)))
4282 (native-inputs
4283 `(("pkg-config" ,pkg-config)))
4284 (home-page "https://kx.studio/Applications:Carla")
4285 (synopsis "Audio plugin host")
4286 (description "Carla is a modular audio plugin host, with features like
4287 transport control, automation of parameters via MIDI CC and remote control
4288 over OSC. Carla currently supports LADSPA (including LRDF), DSSI, LV2, VST2,
4289 and VST3 plugin formats, plus SF2 and SFZ file support. It uses JACK as the
4290 default and preferred audio driver but also supports native drivers like ALSA.")
4291 (license license:gpl2+)))
4292
4293 (define-public ecasound
4294 (package
4295 (name "ecasound")
4296 (version "2.9.3")
4297 (source (origin
4298 (method url-fetch)
4299 (uri (string-append "https://nosignal.fi/download/ecasound-"
4300 version ".tar.gz"))
4301 (sha256
4302 (base32 "1m7njfjdb7sqf0lhgc4swihgdr4snkg8v02wcly08wb5ar2fr2s6"))))
4303 (build-system gnu-build-system)
4304 (native-inputs `(("pkg-config" ,pkg-config)))
4305 ;; It would be nice to add mikmod to inputs if that gets packaged
4306 ;; eventually.
4307 (inputs `(("alsa-lib" ,alsa-lib)
4308 ("jack" ,jack-1)
4309 ("mpg123" ,mpg123)
4310 ("lame" ,lame)
4311 ("vorbis-tools" ,vorbis-tools)
4312 ("faad2" ,faad2)
4313 ("flac" ,flac)
4314 ("timidity++" ,timidity++)
4315 ("libsndfile" ,libsndfile)
4316 ("libsamplerate" ,libsamplerate)
4317 ("ncurses" ,ncurses)
4318 ("ladspa" ,ladspa)
4319 ("lilv" ,lilv)))
4320 (home-page "https://nosignal.fi/ecasound/index.php")
4321 (synopsis "Multitrack audio processing")
4322 (description "Ecasound is a software package designed for multitrack audio
4323 processing. It can be used for simple tasks like audio playback, recording and
4324 format conversions, as well as for multitrack effect processing, mixing,
4325 recording and signal recycling. Ecasound supports a wide range of audio inputs,
4326 outputs and effect algorithms. Effects and audio objects can be combined in
4327 various ways, and their parameters can be controlled by operator objects like
4328 oscillators and MIDI-CCs. A versatile console mode user-interface is included
4329 in the package.")
4330 ;; As an exception to the above, the C, C++ and python implementations
4331 ;; of the Ecasound Control Interface (ECI) are licensed under the LGPL
4332 ;; (see the file 'COPYING.LGPL'). This allows writing ECI applications
4333 ;; that are not licensed under GPL.
4334 (license (list license:gpl2 license:lgpl2.1))))
4335
4336 (define-public libaudec
4337 (package
4338 (name "libaudec")
4339 (version "0.2.2")
4340 (source
4341 (origin
4342 (method git-fetch)
4343 (uri (git-reference
4344 (url "https://git.zrythm.org/git/libaudec")
4345 (commit (string-append "v" version))))
4346 (file-name (git-file-name name version))
4347 (sha256
4348 (base32
4349 "04mpmfmqc43asw0m3zxhb6jj4qms7x4jw7mx4xb1d3lh16xllniz"))))
4350 (build-system meson-build-system)
4351 (arguments
4352 `(#:configure-flags `("-Denable_tests=true -Denable_ffmpeg=true")))
4353 (inputs
4354 `(("libsamplerate" ,libsamplerate)
4355 ("libsndfile" ,libsndfile)
4356 ("ffmpeg" ,ffmpeg)))
4357 (native-inputs
4358 `(("pkg-config", pkg-config)))
4359 (synopsis "Library for reading and resampling audio files")
4360 (description "libaudec is a wrapper library over ffmpeg, sndfile and
4361 libsamplerate for reading and resampling audio files, based on Robin Gareus'
4362 @code{audio_decoder} code.")
4363 (home-page "https://git.zrythm.org/cgit/libaudec")
4364 (license license:agpl3+)))
4365
4366 (define-public lv2lint
4367 (package
4368 (name "lv2lint")
4369 (version "0.4.0")
4370 (source
4371 (origin
4372 (method git-fetch)
4373 (uri (git-reference
4374 (url "https://git.open-music-kontrollers.ch/lv2/lv2lint")
4375 (commit version)))
4376 (file-name (git-file-name name version))
4377 (sha256
4378 (base32
4379 "1pspwqpzl2dw1hd9ra9yr53arqbbqjn7d7j0f7p9g3iqa76vblpi"))))
4380 (build-system meson-build-system)
4381 (arguments
4382 `(#:configure-flags
4383 `("-Delf-tests=true" ; for checking symbol visibility
4384 "-Donline-tests=true"))) ; for checking URI existence
4385 (inputs
4386 `(("curl", curl)
4387 ("libelf", libelf)
4388 ("lilv", lilv)))
4389 (native-inputs
4390 `(("pkg-config", pkg-config)))
4391 (synopsis "LV2 plugin lint tool")
4392 (description "lv2lint is an LV2 lint-like tool that checks whether a
4393 given plugin and its UI(s) match up with the provided metadata and adhere
4394 to well-known best practices.")
4395 (home-page "https://open-music-kontrollers.ch/lv2/lv2lint/")
4396 (license license:artistic2.0)))
4397
4398 (define-public lv2toweb
4399 (package
4400 (name "lv2toweb")
4401 (version "0.4")
4402 (source
4403 (origin
4404 (method git-fetch)
4405 (uri (git-reference
4406 (url "https://github.com/x42/lv2toweb")
4407 (commit (string-append "v" version))))
4408 (file-name (git-file-name name version))
4409 (sha256
4410 (base32
4411 "007aysqvgkf25za8nkmyd5g9kp1zla460dcpidlj5xg1zc3fcdfi"))))
4412 (build-system gnu-build-system)
4413 (arguments
4414 `(#:tests? #f ; no "check" target
4415 #:make-flags (list "CC=gcc"
4416 (string-append "PREFIX=" (assoc-ref %outputs "out")))
4417 #:phases
4418 (modify-phases %standard-phases
4419 (delete 'configure))))
4420 (inputs
4421 `(("jalv", jalv)
4422 ("lilv", lilv)))
4423 (native-inputs
4424 `(("help2man", help2man)
4425 ("pkg-config", pkg-config)))
4426 (synopsis "Documentation generator for LV2 plugins")
4427 (description
4428 "lv2toweb allows the user to create an xhtml page with information
4429 about the given LV2 plugin, provided that the plugin and its UI(s) match up
4430 with the provided metadata and adhere to well-known best practices.")
4431 (home-page "https://github.com/x42/lv2toweb")
4432 (license (list license:isc license:gpl2))))
4433
4434 (define-public ztoolkit
4435 (package
4436 (name "ztoolkit")
4437 (version "0.1.1")
4438 (source
4439 (origin
4440 (method git-fetch)
4441 (uri (git-reference
4442 (url "https://git.zrythm.org/git/ztoolkit")
4443 (commit (string-append "v" version))))
4444 (file-name (git-file-name name version))
4445 (sha256
4446 (base32
4447 "07xl3cmdaf7k9mm58m93cn8i1jvgimmiifdw1w7v2jl88nx60pm1"))))
4448 (build-system meson-build-system)
4449 (inputs
4450 `(("cairo" ,cairo)
4451 ("libx11" ,libx11)))
4452 (native-inputs
4453 `(("pkg-config" ,pkg-config)))
4454 (synopsis "GUI toolkit for LV2 plugins")
4455 (description "ZToolkit (Ztk) is a cross-platform GUI toolkit heavily
4456 inspired by GTK. It handles events and low level drawing on behalf of
4457 the user and provides a high-level API for managing the UI and custom
4458 widgets. ZToolkit is written in C and was created to be used for building
4459 audio plugin UIs, where the dependencies often need to be kept to a
4460 minimum.")
4461 (home-page "https://git.zrythm.org/cgit/ztoolkit/")
4462 (license license:agpl3+)))
4463
4464 (define-public libinstpatch
4465 (package
4466 (name "libinstpatch")
4467 (version "1.1.5")
4468 (source
4469 (origin
4470 (method git-fetch)
4471 (uri (git-reference
4472 (url "https://github.com/swami/libinstpatch")
4473 (commit (string-append "v" version))))
4474 (file-name (git-file-name name version))
4475 (sha256
4476 (base32 "0psx4hc5yksfd3k2xqsc7c8lbz2d4yybikyddyd9hlkhq979cmjb"))))
4477 (build-system cmake-build-system)
4478 (arguments
4479 `(#:tests? #f)) ;there are no tests
4480 (native-inputs
4481 `(("glib:bin" ,glib "bin")
4482 ("pkg-config" ,pkg-config)))
4483 (inputs
4484 `(("glib" ,glib)
4485 ("libsndfile" ,libsndfile)))
4486 (home-page "http://www.swamiproject.org/")
4487 (synopsis "Instrument file software library")
4488 (description
4489 "libInstPatch is a library for processing digital sample based MIDI
4490 instrument \"patch\" files. The types of files libInstPatch supports are used
4491 for creating instrument sounds for wavetable synthesis. libInstPatch provides
4492 an object framework (based on GObject) to load patch files, which can then be
4493 edited, converted, compressed and saved.")
4494 (license license:lgpl2.1)))
4495
4496 (define-public ztoolkit-rsvg
4497 (package
4498 (inherit ztoolkit)
4499 (name "ztoolkit-rsvg")
4500 (arguments
4501 `(#:configure-flags `("-Denable_rsvg=true")))
4502 (inputs
4503 `(("librsvg" ,librsvg)
4504 ,@(package-inputs ztoolkit)))
4505 (synopsis "ZToolkit with SVG support")))
4506
4507 (define-public codec2
4508 (package
4509 (name "codec2")
4510 (version "0.9.2")
4511 (source
4512 (origin
4513 (method git-fetch)
4514 (uri (git-reference
4515 (url "https://github.com/drowe67/codec2")
4516 (commit (string-append "v" version))))
4517 (file-name (git-file-name name version))
4518 (sha256
4519 (base32 "1jpvr7bra8srz8jvnlbmhf8andbaavq5v01qjnp2f61za93rzwba"))))
4520 (build-system cmake-build-system)
4521 (native-inputs
4522 `(("bc" ,bc)
4523 ("octave" ,octave)
4524 ("valgrind" ,valgrind)))
4525 (arguments
4526 `(#:tests? #f ; TODO: Fix tests (paths, graphic toolkit, octave modules).
4527 #:phases
4528 (modify-phases %standard-phases
4529 (add-before 'check 'set-test-environment
4530 (lambda _
4531 (setenv "HOME" "/tmp")
4532 #t)))))
4533 (synopsis "Speech codec")
4534 (description
4535 "Codec 2 is a speech codec designed for communications quality speech
4536 between 700 and 3200 bit/s. The main application is low bandwidth HF/VHF
4537 digital radio.")
4538 (home-page "https://www.rowetel.com/?page_id=452")
4539 (license license:lgpl2.1)))
4540
4541 (define-public ableton-link
4542 (package
4543 (name "ableton-link")
4544 (version "3.0.2")
4545 (source (origin
4546 (method git-fetch)
4547 (uri (git-reference
4548 (url "https://github.com/Ableton/link")
4549 (commit (string-append "Link-" version))))
4550 (file-name (git-file-name name version))
4551 (sha256
4552 (base32
4553 "0262vm0v7hmqjhqx5xikh529p3c065p1yld6ymaiz74yq1dnnjir"))
4554 (modules '((guix build utils)))
4555 (patches
4556 (search-patches "ableton-link-system-libraries-debian.patch"))
4557 (snippet
4558 '(begin
4559 ;; Tests assume that CMake's "build" directory is a
4560 ;; sub-directory of the source tree, so we fix it.
4561 (substitute* "ci/run-tests.py"
4562 (("root_dir,") "root_dir, os.pardir,"))
4563 ;; Unbundle dependencies.
4564 (delete-file-recursively "third_party")
4565 (delete-file-recursively "modules")
4566 #t))))
4567 (build-system cmake-build-system)
4568 (native-inputs
4569 `(("catch" ,catch-framework)
4570 ("python" ,python) ;for running tests
4571 ("portaudio" ,portaudio) ;for portaudio examples
4572 ("qtbase" ,qtbase) ;for Qt examples
4573 ("qtdeclarative" ,qtdeclarative)
4574 ("qttools" ,qttools)))
4575 (inputs
4576 `(("jack" ,jack-1) ;for JACK examples
4577 ("qtquickcontrols" ,qtquickcontrols))) ;for Qt examples
4578 (propagated-inputs
4579 ;; This is because include/ableton/platforms/asio/AsioWrapper.hpp
4580 ;; contains '#include <asio.hpp>'.
4581 `(("asio" ,asio)))
4582 (arguments
4583 `(#:configure-flags
4584 '("-DLINK_BUILD_QT_EXAMPLES=ON"
4585 "-DLINK_BUILD_JACK=ON")
4586 #:phases
4587 (modify-phases %standard-phases
4588 (replace 'check
4589 (lambda* (#:key inputs #:allow-other-keys)
4590 (let* ((python (string-append (assoc-ref inputs "python")
4591 "/bin/python3"))
4592 (run-tests (string-append "../ableton-link-"
4593 ,version
4594 "-checkout/ci/run-tests.py")))
4595 (invoke python run-tests "--target" "LinkCoreTest")
4596 (invoke python run-tests "--target" "LinkDiscoveryTest"))))
4597 (add-before 'install 'patch-cmake
4598 (lambda* (#:key inputs #:allow-other-keys)
4599 (let* ((source (string-append "../ableton-link-"
4600 ,version
4601 "-checkout/")))
4602 (substitute* (string-append source
4603 "cmake_include/AsioStandaloneConfig.cmake")
4604 (((string-append "\\$\\{CMAKE_CURRENT_LIST_DIR\\}/\\.\\./"
4605 "modules/asio-standalone/asio/include"))
4606 (string-append (assoc-ref inputs "asio")
4607 "/include")))
4608 (substitute* (string-append source "AbletonLinkConfig.cmake")
4609 (("\\$\\{CMAKE_CURRENT_LIST_DIR\\}/include")
4610 "${CMAKE_CURRENT_LIST_DIR}/../../../include")
4611 (("\\$\\{CMAKE_CURRENT_LIST_DIR\\}/include/ableton/Link\\.hpp")
4612 "${CMAKE_CURRENT_LIST_DIR}/../../../include/ableton/Link.hpp"))
4613 #t)))
4614 (replace 'install
4615 (lambda* (#:key outputs #:allow-other-keys)
4616 (let* ((out (assoc-ref outputs "out"))
4617 (bin (string-append out "/bin"))
4618 (lib-cmake (string-append out "/lib/cmake/ableton-link"))
4619 (source (string-append "../ableton-link-" ,version "-checkout")))
4620 (for-each (lambda (test-file)
4621 (delete-file test-file))
4622 '("bin/LinkDiscoveryTest" "bin/LinkCoreTest"))
4623 (copy-recursively "bin" bin)
4624 (copy-recursively (string-append source "/include/ableton")
4625 (string-append out "/include/ableton"))
4626 (install-file (string-append source "/AbletonLinkConfig.cmake")
4627 lib-cmake)
4628 (install-file (string-append source
4629 "/cmake_include/AsioStandaloneConfig.cmake")
4630 (string-append lib-cmake "/cmake_include"))
4631 #t))))))
4632 (home-page "https://github.com/Ableton/link")
4633 (synopsis "Synchronize musical beat, tempo, and phase across multiple applications")
4634 (description
4635 "Ableton Link is a C++ library that synchronizes musical beat, tempo, and phase
4636 across multiple applications running on one or more devices. Applications on devices
4637 connected to a local network discover each other automatically and form a musical
4638 session in which each participant can perform independently: anyone can start or stop
4639 while still staying in time.")
4640 (license license:gpl2+)))