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