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