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