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