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