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