gnu: Add lv2lint.
[jackhill/guix/guix.git] / gnu / packages / audio.scm
CommitLineData
fb68469f 1;;; GNU Guix --- Functional package management for GNU
6f85a9c4 2;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
9f1cdd9d 3;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
0390a520 4;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
d739f481 5;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
1207a0c3 6;;; Copyright © 2015, 2016 Mark H Weaver <mhw@netris.org>
799298eb 7;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
eb5378f9 8;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com>
47956fa0 9;;; Copyright © 2016 ng0 <ng0@n0.is>
9a4c032c 10;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
d87d2567 11;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
7366d831 12;;; Copyright © 2018, 2020 Oleg Pykhalov <go.wigust@gmail.com>
9073c875 13;;; Copyright © 2018 okapi <okapi@firemail.cc>
247384d0 14;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
77cc8778 15;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
4b3ff362 16;;; Copyright © 2018 Brett Gilio <brettg@gnu.org>
a4b71b32 17;;; Copyright © 2018, 2019 Marius Bakke <mbakke@fastmail.com>
7a44e875 18;;; Copyright © 2018 Thorsten Wilms <t_w_@freenet.de>
ef8517f2 19;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
dcfa0acd 20;;; Copyright © 2018 Brendan Tildesley <mail@brendan.scot>
b06966b4 21;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
17098a49 22;;; Copyright © 2019 Leo Famulari <leo@famulari.name>
ea3510f8 23;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
e13714b6 24;;; Copyright © 2019 Arun Isaac <arunisaac@systemreboot.net>
772ca8e4 25;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
5d703da3 26;;; Copyright © 2019, 2020 Alexandros Theodotou <alex@zrythm.org>
615a4fbf 27;;; Copyright © 2019 Christopher Lemmer Webber <cwebber@dustycloud.org>
d83bb797 28;;; Copyright © 2019 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
a8e14943 29;;; Copyright © 2019 Hartmt Goebel <h.goebel@crazy-compilers.com>
1ce6bfc2 30;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
fb68469f
RW
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)
fb68469f 48 #:use-module (gnu packages)
d55f912a 49 #:use-module (gnu packages algebra)
9f1cdd9d 50 #:use-module (gnu packages autotools)
fcbeb00b 51 #:use-module (gnu packages avahi)
a76abae1 52 #:use-module (gnu packages backup)
7c92efff 53 #:use-module (gnu packages base)
fda85ca6 54 #:use-module (gnu packages bison)
522ec708 55 #:use-module (gnu packages boost)
971ebdc8 56 #:use-module (gnu packages check)
7c92efff 57 #:use-module (gnu packages compression)
88efb2c3 58 #:use-module (gnu packages curl)
255d1bbe 59 #:use-module (gnu packages dbm)
0f2ce448 60 #:use-module (gnu packages documentation)
70d9ef51 61 #:use-module (gnu packages elf)
8ae60404 62 #:use-module (gnu packages emacs)
754a98ae 63 #:use-module (gnu packages file)
fda85ca6 64 #:use-module (gnu packages flex)
11d4800a
RW
65 #:use-module (gnu packages fltk)
66 #:use-module (gnu packages fontutils)
25e49169 67 #:use-module (gnu packages gcc)
fda85ca6 68 #:use-module (gnu packages gettext)
88efb2c3 69 #:use-module (gnu packages glib)
88efb2c3 70 #:use-module (gnu packages gnome)
8ae60404 71 #:use-module (gnu packages gnunet) ; libmicrohttpd
fcbeb00b 72 #:use-module (gnu packages gperf)
522ec708 73 #:use-module (gnu packages gtk)
1ab58a3d 74 #:use-module (gnu packages guile)
247384d0 75 #:use-module (gnu packages icu4c)
d739f481 76 #:use-module (gnu packages image)
dba33ca3 77 #:use-module (gnu packages libbsd)
72d9ef1b 78 #:use-module (gnu packages libusb)
522ec708 79 #:use-module (gnu packages linux)
8ae60404 80 #:use-module (gnu packages llvm)
522ec708 81 #:use-module (gnu packages maths)
88efb2c3 82 #:use-module (gnu packages mp3) ;taglib
522ec708
TGR
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)
88efb2c3 87 #:use-module (gnu packages perl)
c54a8981
RW
88 #:use-module (gnu packages pkg-config)
89 #:use-module (gnu packages pulseaudio) ;libsndfile, libsamplerate
d55f912a 90 #:use-module (gnu packages python)
44d10b1f 91 #:use-module (gnu packages python-xyz)
522ec708 92 #:use-module (gnu packages qt)
5279eb6f 93 #:use-module (gnu packages rdf)
c54a8981 94 #:use-module (gnu packages readline)
ea3510f8 95 #:use-module (gnu packages sdl)
247384d0 96 #:use-module (gnu packages serialization)
dba33ca3 97 #:use-module (gnu packages telephony)
8ae60404 98 #:use-module (gnu packages tls)
e87c7ec2 99 #:use-module (gnu packages video)
8ae60404 100 #:use-module (gnu packages vim) ;xxd
02979664 101 #:use-module (gnu packages webkit)
cd381c31 102 #:use-module (gnu packages wxwidgets)
c54a8981 103 #:use-module (gnu packages xiph)
da49086a 104 #:use-module (gnu packages xml)
caf9055c 105 #:use-module (gnu packages xorg)
522ec708
TGR
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)
118a8ecc
EF
118 #:use-module (srfi srfi-1)
119 #:use-module (srfi srfi-26))
fb68469f 120
eb0fb087
RW
121(define-public alsa-modular-synth
122 (package
123 (name "alsa-modular-synth")
61eecd71 124 (version "2.1.2")
eb0fb087
RW
125 (source (origin
126 (method url-fetch)
de67e922
LF
127 (uri (string-append "mirror://sourceforge/alsamodular/alsamodular"
128 "/" version "/ams-" version ".tar.bz2"))
eb0fb087
RW
129 (sha256
130 (base32
61eecd71 131 "1azbrhpfk4nnybr7kgmc7w6al6xnzppg853vas8gmkh185kk11l0"))))
eb0fb087 132 (build-system gnu-build-system)
ee6a88b1 133 (arguments
6670c99c
DC
134 `(#:configure-flags
135 '("--enable-qt5"
136 "CXXFLAGS=-std=gnu++11")
afadb05e
RW
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)))))
eb0fb087
RW
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)
df9031e1
EF
155 ("qtbase" ,qtbase)
156 ("qttools" ,qttools)))
eb0fb087 157 (native-inputs
bed0c4c8
RW
158 `(("pkg-config" ,pkg-config)
159 ("gcc" ,gcc-5)))
eb0fb087
RW
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
164modular synthesizer system. It uses virtual control voltages to control the
165parameters of the modules. The control voltages which control the frequency
166e.g. of the VCO (Voltage Controlled Oscillator) and VCF (Voltage Controlled
167Filter) modules follow the convention of 1V / Octave.")
168 (license license:gpl2)))
169
d55f912a
RW
170(define-public aubio
171 (package
172 (name "aubio")
4a17211a 173 (version "0.4.9")
d55f912a
RW
174 (source (origin
175 (method url-fetch)
176 (uri (string-append
c2f6c9ba 177 "https://aubio.org/pub/aubio-" version ".tar.bz2"))
d55f912a
RW
178 (sha256
179 (base32
4a17211a 180 "1npks71ljc48w6858l9bq30kaf5nph8z0v61jkfb70xb9np850nl"))))
d55f912a
RW
181 (build-system waf-build-system)
182 (arguments
4a17211a 183 `(#:tests? #f ; no check target
d55f912a 184 #:configure-flags
409dec3f
TGR
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"
4ab9ad1e 191 "--enable-avcodec")
d55f912a
RW
192 #:python ,python-2))
193 (inputs
194 `(("jack" ,jack-1)
d55f912a
RW
195 ("libsndfile" ,libsndfile)
196 ("libsamplerate" ,libsamplerate)
4ab9ad1e
KK
197 ("fftwf" ,fftwf)
198 ("ffmpeg" ,ffmpeg))) ; for libavcodec
d55f912a
RW
199 (native-inputs
200 `(("pkg-config" ,pkg-config)))
c2f6c9ba 201 (home-page "https://aubio.org/")
a124bbd2 202 (synopsis "Library for audio labelling")
d55f912a
RW
203 (description
204 "aubio is a tool designed for the extraction of annotations from audio
205signals. Its features include segmenting a sound file before each of its
206attacks, performing pitch detection, tapping the beat and producing MIDI
207streams from live audio.")
208 (license license:gpl3+)))
209
d49976ed
RW
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
60725232 226(define-public ardour
88efb2c3
RW
227 (package
228 (name "ardour")
d30f920c 229 (version "5.12")
88efb2c3 230 (source (origin
88efb2c3
RW
231 (method git-fetch)
232 (uri (git-reference
5f13bf09 233 (url "https://git.ardour.org/ardour/ardour.git")
88efb2c3
RW
234 (commit version)))
235 (snippet
b16043a3
RW
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]*+//'
02ecdeaa 239 `(call-with-output-file
88efb2c3
RW
240 "libs/ardour/revision.cc"
241 (lambda (port)
02ecdeaa 242 (format port ,(string-append "#include \"ardour/revision.h\"
6cbee49d
MW
243namespace ARDOUR { const char* revision = \"" version "\" ; }"))
244 #t)))
88efb2c3
RW
245 (sha256
246 (base32
d30f920c 247 "0mla5lm51ryikc2rrk53max2m7a5ds6i1ai921l2h95wrha45nkr"))
88efb2c3
RW
248 (file-name (string-append name "-" version))))
249 (build-system waf-build-system)
250 (arguments
b5fc72ff 251 `(#:configure-flags '("--cxx11" ; required by gtkmm
ba5c8567 252 "--no-phone-home" ; don't contact ardour.org
ff46016e 253 "--freedesktop" ; build .desktop file
5f0c6496 254 "--test") ; build unit tests
92e4fbe2 255 #:phases
21481a28 256 (modify-phases %standard-phases
ff46016e
BT
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)))
5f0c6496 281 #:test-target "test"
88efb2c3
RW
282 #:python ,python-2))
283 (inputs
284 `(("alsa-lib" ,alsa-lib)
19dd523c 285 ("atkmm" ,atkmm)
88efb2c3 286 ("aubio" ,aubio)
88efb2c3 287 ("boost" ,boost)
88efb2c3 288 ("cairomm" ,cairomm)
19dd523c 289 ("curl" ,curl)
c5edbb97 290 ("eudev" ,eudev)
19dd523c
BT
291 ("fftw" ,fftw)
292 ("fftwf" ,fftwf)
293 ("flac" ,flac)
88efb2c3 294 ("glibmm" ,glibmm)
19dd523c
BT
295 ("gtkmm" ,gtkmm-2)
296 ("jack" ,jack-1)
297 ("libarchive" ,libarchive)
88efb2c3
RW
298 ("libart-lgpl" ,libart-lgpl)
299 ("libgnomecanvasmm" ,libgnomecanvasmm)
88efb2c3 300 ("liblo" ,liblo)
88efb2c3 301 ("libogg" ,libogg)
19dd523c
BT
302 ("libsamplerate" ,libsamplerate)
303 ("libsndfile" ,libsndfile)
72d9ef1b 304 ("libusb" ,libusb)
88efb2c3 305 ("libvorbis" ,libvorbis)
19dd523c
BT
306 ("libxml2" ,libxml2)
307 ("lilv" ,lilv)
308 ("lrdf" ,lrdf)
88efb2c3 309 ("lv2" ,lv2)
19dd523c
BT
310 ("pangomm" ,pangomm)
311 ("python-rdflib" ,python-rdflib)
312 ("readline" ,readline)
313 ("redland" ,redland)
314 ("rubberband" ,rubberband)
88efb2c3
RW
315 ("serd" ,serd)
316 ("sord" ,sord)
317 ("sratom" ,sratom)
318 ("suil" ,suil)
88efb2c3 319 ("taglib" ,taglib)
19dd523c 320 ("vamp" ,vamp)))
88efb2c3 321 (native-inputs
19dd523c 322 `(("cppunit" ,cppunit)
ba5c8567 323 ("gettext" ,gettext-minimal)
19dd523c
BT
324 ("itstool" ,itstool)
325 ("perl" ,perl)
88efb2c3 326 ("pkg-config" ,pkg-config)))
5ba94aa7 327 (home-page "https://ardour.org")
88efb2c3
RW
328 (synopsis "Digital audio workstation")
329 (description
330 "Ardour is a multi-channel digital audio workstation, allowing users to
331record, edit, mix and master audio and MIDI projects. It is targeted at audio
332engineers, musicians, soundtrack editors and composers.")
333 (license license:gpl2+)))
334
cd381c31
KK
335(define-public audacity
336 (package
337 (name "audacity")
d75a0cd9 338 (version "2.3.3")
cd381c31
KK
339 (source
340 (origin
8713c03e
TGR
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))
cd381c31 346 (sha256
3ae45eb4 347 (base32
d75a0cd9 348 "0707fsnrl4vjalsi21w4blwgz024qhd0w8rdd5j5vpxf5lyk2rbk"))
3182a1d2
RW
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)))
d75a0cd9 357 '("expat" "ffmpeg" "lame" "libflac" "libid3tag" "libmad" "libogg"
3182a1d2
RW
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))))
b0f43001 373 (build-system glib-or-gtk-build-system)
cd381c31 374 (inputs
3182a1d2 375 `(("wxwidgets" ,wxwidgets)
99e0fb24 376 ("gtk+" ,gtk+)
cd381c31
KK
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)
3182a1d2 385 ;;("libsbsms" ,libsbsms) ;bundled version is modified
cd381c31
KK
386 ("libsndfile" ,libsndfile)
387 ("soundtouch" ,soundtouch)
388 ("soxr" ,soxr) ;replaces libsamplerate
389 ("twolame" ,twolame)
390 ("vamp" ,vamp)
391 ("libvorbis" ,libvorbis)
392 ("lv2" ,lv2)
3182a1d2
RW
393 ("lilv" ,lilv) ;for lv2
394 ("suil" ,suil) ;for lv2
395 ("portaudio" ,portaudio)
396 ("portmidi" ,portmidi)))
cd381c31
KK
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
118a8ecc 406 `(#:configure-flags
cd381c31 407 (let ((libid3tag (assoc-ref %build-inputs "libid3tag"))
3182a1d2
RW
408 (libmad (assoc-ref %build-inputs "libmad"))
409 (portmidi (assoc-ref %build-inputs "portmidi")))
cd381c31
KK
410 (list
411 ;; Loading FFmpeg dynamically is problematic.
412 "--disable-dynamic-loading"
118a8ecc
EF
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"))
3182a1d2
RW
419 ;; portmidi, libid3tag and libmad provide no .pc files, so
420 ;; pkg-config fails to find them. Force their inclusion.
cd381c31
KK
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")
3182a1d2
RW
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"))
cd381c31
KK
443 #:phases
444 (modify-phases %standard-phases
3182a1d2 445 (add-after 'unpack 'fix-sbsms-check
cd381c31 446 (lambda _
3182a1d2
RW
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"
d75a0cd9
KK
457 "src/AudioIO.h"
458 "src/AudioIOBase.cpp")
3182a1d2
RW
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)))
cd381c31
KK
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))
2d5fa80e 468 (home-page "https://www.audacityteam.org/")
cd381c31
KK
469 (synopsis "Software for recording and editing sounds")
470 (description
471 "Audacity is a multi-track audio editor designed for recording, playing
472and editing digital audio. It features digital effects and spectrum analysis
473tools.")
474 (license license:gpl2+)))
475
a8e14943
HG
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.
516It provides a uniform programming interface for processing of audio data to
517and from audio files of many common formats.
518
519Currently supported file formats include AIFF/AIFF-C, WAVE, and NeXT/Sun
520.snd/.au, BICS, and raw data. Supported compression formats are currently
521G.711 mu-law and A-law.")
522 (license license:lgpl2.1+)))
523
c3276dbe
TW
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
558controls are allowable notes, strength of correction, LFO for vibrato and
559formant warp.")
560 ;; All code except the FFT routine is licensed under GPLv2+.
561 ;; The FFT routine is under BSD-3.
242b29ba 562 (license license:gpl2+)))
c3276dbe 563
497e9a82
RW
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
204adc30
RW
575 "18mdw6nc0vgj6k9rsy0x8w64wvzld0frqshrxxbxfj9qi9843vlc"))
576 (patches (search-patches "azr3.patch"))))
497e9a82
RW
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)
ef1f9acf
RW
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)))))
497e9a82
RW
591 (inputs
592 `(("gtkmm" ,gtkmm-2)
593 ("lvtk" ,lvtk)
594 ("jack" ,jack-1)
f753846b 595 ("lash" ,lash)))
497e9a82
RW
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
602with drawbars, distortion and rotating speakers. The organ has three
603sections, two polyphonic sections with nine drawbars each and one monophonic
604bass section with five drawbars. A standalone JACK application and LV2
605plugins are provided.")
606 (license license:gpl2)))
607
f62a8417
RW
608(define-public calf
609 (package
610 (name "calf")
c8de7979 611 (version "0.90.3")
f62a8417
RW
612 (source (origin
613 (method url-fetch)
8f946a18 614 (uri (string-append "https://calf-studio-gear.org/files/calf-"
73cea74d 615 version ".tar.gz"))
f62a8417
RW
616 (sha256
617 (base32
c8de7979 618 "17x4hylgq4dn9qycsdacfxy64f5cv57n2qgkvsdp524gnqzw4az3"))))
f62a8417
RW
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.
641The suite contains lots of effects (delay, modulation, signal processing,
642filters, equalizers, dynamics, distortion and mastering effects),
643instruments (SF2 player, organ simulator and a monophonic synthesizer) and
644tools (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
7a44e875
TW
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
686guitar amplification and a small range of classic effects, signal processors and
687generators of mostly elementary and occasionally exotic nature.")
688 (license license:gpl3+)))
689
8f941dd2
RW
690(define-public infamous-plugins
691 (package
692 (name "infamous-plugins")
d11edbdf 693 (version "0.2.04")
8f941dd2 694 (source (origin
0b8db035
RW
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))
8f941dd2
RW
700 (sha256
701 (base32
0b8db035 702 "0hmqk80w4qxq09iag7b7srf2g0wigkyhzq0ywxvhz2iz0hq9k0dh"))))
8f941dd2 703 (build-system cmake-build-system)
d6618941 704 (arguments
d11edbdf 705 `(#:tests? #f ; there are no tests
d6618941
EF
706 #:phases
707 (modify-phases %standard-phases
708 (add-after 'unpack 'remove-compiler-flags
709 (lambda _
3e0e9e16 710 (substitute* (find-files "." "CMakeLists.txt")
d11edbdf 711 (("-msse2 -mfpmath=sse") ""))
d6618941 712 #t)))))
8f941dd2
RW
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)))
a9071e5c 721 (home-page "https://ssj71.github.io/infamousPlugins")
8f941dd2
RW
722 (synopsis "LV2 plugins for live use")
723 (description
724 "The infamous plugins are a collection of LV2 audio plugins for live
725performances. The plugins include a cellular automaton synthesizer, an
726envelope follower, distortion effects, tape effects and more.")
727 (license license:gpl2+)))
728
7366d831
OP
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)
0daf7e26 754 (home-page "http://plugin.org.uk")
7366d831
OP
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
18f3d92b
FPS
759(define-public swh-plugins-lv2
760 (package
761 (name "swh-plugins-lv2")
762 (version "1.0.16")
763 (source (origin
2ae23954
RW
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))
18f3d92b
FPS
769 (sha256
770 (base32
2ae23954 771 "0y7nnww864mm4k6ayy2lhcws3wlbhb2gkyjbrwk921fvc18qk9mz"))))
18f3d92b
FPS
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
799classes include: dynamics (compressor, limiter), time (delay, chorus,
800flanger), ringmodulator, distortion, filters, pitchshift, oscillators,
801emulation (valve, tape), bit fiddling (decimator, pointer-cast), etc.")
802 (license license:gpl3+)))
803
fda85ca6
RW
804(define-public csound
805 (package
806 (name "csound")
d6ce8eca 807 (version "6.13.0")
fda85ca6 808 (source (origin
917dc896
RW
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))
fda85ca6
RW
814 (sha256
815 (base32
d6ce8eca 816 "14822ybqyp31z18gky2y9zadr9dkbhabg97y139py73w7v3af1bh"))))
fda85ca6
RW
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)
b94a6ca0 826 ("gettext" ,gettext-minimal)))
fda85ca6
RW
827 (native-inputs
828 `(("bison" ,bison)
829 ("flex" ,flex)
830 ("zlib" ,zlib)))
40f856fa 831 (home-page "https://csound.com/")
fda85ca6
RW
832 (synopsis "Sound and music computing system")
833 (description
834 "Csound is a user-programmable and user-extensible sound processing
835language and software synthesizer.")
836 (license license:lgpl2.1+)))
837
631ac903
RW
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
9de2e43c 850 "0bsacx3l9065gk8g4137qmz2ij7s9x06aldvacinzlcslw7bd1kq"))))
631ac903
RW
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
dc1d3cde
KK
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")
ee527187
MW
868 "/lib/libclalsadrv.so.2"))
869 #t))
631ac903 870 ;; no configure script
4f27a333 871 (delete 'configure))))
631ac903
RW
872 (inputs
873 `(("alsa-lib" ,alsa-lib)
874 ("fftw" ,fftw)))
4817bb92 875 (home-page "https://kokkinizita.linuxaudio.org")
631ac903
RW
876 (synopsis "C++ wrapper around the ALSA API")
877 (description
878 "clalsadrv is a C++ wrapper around the ALSA API simplifying access to
879ALSA PCM devices.")
880 (license license:gpl2+)))
881
8ba62f92
RW
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)))))
4817bb92 914 (home-page "https://kokkinizita.linuxaudio.org")
8ba62f92
RW
915 (synopsis "LADSPA ambisonics plugins")
916 (description
917 "The AMB plugins are a set of LADSPA ambisonics plugins, mainly to be
918used within Ardour. Features include: mono and stereo to B-format panning,
919horizontal rotator, square, hexagon and cube decoders.")
920 (license license:gpl2+)))
921
fb2e072c
RW
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)))))
4817bb92 951 (home-page "https://kokkinizita.linuxaudio.org")
fb2e072c
RW
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
957vintage Moog synthesizers; @code{mvchpf24} is based on the voltage-controlled
958high-pass filter by Robert Moog. The filters attempt to accurately emulate
959the non-linear circuit elements of their original analog counterparts.")
960 (license license:gpl2+)))
961
dffb6c3b
RW
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)))))
4817bb92 991 (home-page "https://kokkinizita.linuxaudio.org")
dffb6c3b
RW
992 (synopsis "LADSPA reverb plugin")
993 (description
994 "This package provides a stereo reverb LADSPA plugin based on the
995well-known greverb.")
996 (license license:gpl2+)))
997
75f45d16
RW
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)))))
4817bb92 1027 (home-page "https://kokkinizita.linuxaudio.org")
75f45d16
RW
1028 (synopsis "LADSPA four-band parametric equalizer plugin")
1029 (description
1030 "This package provides a LADSPA plugin for a four-band parametric
1031equalizer. Each section has an active/bypass switch, frequency, bandwidth and
1032gain controls. There is also a global bypass switch and gain control.
1033
1034The 2nd order resonant filters are implemented using a Mitra-Regalia style
1035lattice filter, which is stable even while parameters are being changed.
1036
36a4366d 1037All switches and controls are internally smoothed, so they can be used @code{live}
75f45d16
RW
1038without any clicks or zipper noises. This makes this plugin suitable for use
1039in systems that allow automation of plugin control ports, such as Ardour, or
1040for stage use.")
1041 (license license:gpl2+)))
1042
c04b4e7a
RW
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)))))
4817bb92 1072 (home-page "https://kokkinizita.linuxaudio.org")
c04b4e7a
RW
1073 (synopsis "LADSPA stereo width plugin")
1074 (description
1075 "This package provides a LADSPA plugin to manipulate the stereo width of
1076audio signals.")
1077 (license license:gpl2+)))
1078
eb4fca7e
RW
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)))))
4817bb92 1109 (home-page "https://kokkinizita.linuxaudio.org")
eb4fca7e
RW
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
947b3ac6 1117@item Rec-VCO, a square / rectangle oscillator
eb4fca7e
RW
1118@end enumerate\n
1119
1120All oscillators are low-pass filtered to provide waveforms similar to the
1121output of analog synthesizers such as the Moog Voyager.")
1122 (license license:gpl2+)))
1123
5e3161d3
RW
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)))))
4817bb92 1153 (home-page "https://kokkinizita.linuxaudio.org")
5e3161d3
RW
1154 (synopsis "LADSPA Autowah effect plugin")
1155 (description
1156 "This package provides a LADSPA plugin for a Wah effect with envelope
1157follower.")
1158 (license license:gpl2+)))
1159
ed17465d
RW
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)))))
4817bb92 1189 (home-page "https://kokkinizita.linuxaudio.org")
ed17465d
RW
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
e4f43b56
RW
1195(define-public fluidsynth
1196 (package
1197 (name "fluidsynth")
eab27d22 1198 (version "2.1.1")
e4f43b56 1199 (source (origin
dd46c16b
RW
1200 (method git-fetch)
1201 (uri (git-reference
1202 (url "https://github.com/FluidSynth/fluidsynth.git")
1203 (commit (string-append "v" version))))
94781b79 1204 (file-name (git-file-name name version))
e4f43b56
RW
1205 (sha256
1206 (base32
eab27d22 1207 "09jq04hrasidf6b5gkk4aba13fq55z3bmn7bq35rdaikz26xiij4"))))
dd46c16b 1208 (build-system cmake-build-system)
e4f43b56 1209 (arguments
713b519e 1210 '(#:tests? #f ; no check target
dd46c16b 1211 #:phases
dc1d3cde 1212 (modify-phases %standard-phases
dd46c16b
RW
1213 (add-after 'unpack 'fix-libdir
1214 (lambda _
713b519e 1215 ;; Install libraries to /lib, not /lib64.
dd46c16b
RW
1216 (substitute* "CMakeLists.txt"
1217 (("LIB_SUFFIX \\$\\{_init_lib_suffix\\}")
1218 "LIB_SUFFIX \"\""))
1219 #t)))))
e4f43b56
RW
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
1234specifications. FluidSynth reads and handles MIDI events from the MIDI input
e881752c 1235device. It is the software analogue of a MIDI synthesizer. FluidSynth can
e4f43b56 1236also play midifiles using a Soundfont.")
dd46c16b 1237 (license license:lgpl2.1+)))
e4f43b56 1238
9b6dc31b
MB
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
70fc29d9
TUBK
1255(define-public faad2
1256 (package
1257 (name "faad2")
747dc4b9 1258 (version "2.8.6")
70fc29d9
TUBK
1259 (source (origin
1260 (method url-fetch)
de67e922 1261 (uri (string-append "mirror://sourceforge/faac/faad2-src/faad2-"
747dc4b9
TGR
1262 (version-major+minor version) ".0/"
1263 "faad2-" version ".tar.gz"))
70fc29d9
TUBK
1264 (sha256
1265 (base32
747dc4b9 1266 "089zqykqgmmysznvk0bi2pfvdqwclnn540d0zks83sv2pynpfjb5"))))
70fc29d9 1267 (build-system gnu-build-system)
43999c61 1268 (home-page "https://www.audiocoding.com/faad2.html")
70fc29d9
TUBK
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,
1272PS, and DAB+.")
1273 (license license:gpl2)))
1274
777291f0
RW
1275(define-public faust
1276 (package
1277 (name "faust")
a3604742 1278 (version "0.9.90")
777291f0 1279 (source (origin
a3604742
RW
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"))
777291f0
RW
1288 (sha256
1289 (base32
a3604742 1290 "0qc6iwjd3i80jdyjc186c6ywipmjzl8wlsp4050pbr56q4rlkd4z"))))
777291f0
RW
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
0543c326 1297 ;; no "configure" script
a3604742
RW
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)))))
777291f0
RW
1308 (native-inputs
1309 `(("unzip" ,unzip)))
62f6f9d9 1310 (home-page "https://faust.grame.fr/")
777291f0
RW
1311 (synopsis "Signal processing language")
1312 (description
1313 "Faust is a programming language for realtime audio signal processing.")
1314 (license license:gpl2+)))
1315
8ae60404
RW
1316(define-public faust-2
1317 (package
1318 (inherit faust)
89c78948 1319 (version "2.5.23")
8ae60404 1320 (source (origin
89c78948
RW
1321 (method url-fetch)
1322 (uri (string-append "https://github.com/grame-cncm/faust/"
1323 "releases/download/" version
1324 "/faust-" version ".tar.gz"))
8ae60404
RW
1325 (sha256
1326 (base32
89c78948 1327 "1yz5jnr76hh7rmxkpdi7gyrw1wp4gyqfpq8zyl97qdi5ga5gjznq"))))
8ae60404
RW
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"))
75bbc3c2 1333 "world"))))
8ae60404 1334 (native-inputs
fc9dbf41 1335 `(("llvm" ,llvm-3.8)
8ae60404 1336 ("which" ,which)
9fc513ad 1337 ("xxd" ,xxd)
8ae60404
RW
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
7c92efff
RW
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"))
e3cfef22 1367 (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
7c92efff
RW
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)
e3cfef22
MW
1374 (copy-recursively "." out)
1375 #t))))
7c92efff
RW
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
1383patches 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
fcbeb00b
RW
1387(define-public guitarix
1388 (package
1389 (name "guitarix")
12327d74 1390 (version "0.38.1")
fcbeb00b
RW
1391 (source (origin
1392 (method url-fetch)
1393 (uri (string-append
de67e922 1394 "mirror://sourceforge/guitarix/guitarix/guitarix2-"
d706d943 1395 version ".tar.xz"))
fcbeb00b
RW
1396 (sha256
1397 (base32
12327d74 1398 "0bw7xnrx062nwb1bfj9x660h7069ncmz77szcs8icpqxrvhs7z80"))))
fcbeb00b
RW
1399 (build-system waf-build-system)
1400 (arguments
1401 `(#:tests? #f ; no "check" target
1402 #:python ,python-2
1403 #:configure-flags
1404 (list
fcbeb00b 1405 ;; Add the output lib directory to the RUNPATH.
0fe041bd 1406 (string-append "--ldflags=-Wl,-rpath=" %output "/lib"))
4e51d735
RW
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)))))
fcbeb00b
RW
1420 (inputs
1421 `(("libsndfile" ,libsndfile)
1422 ("boost" ,boost)
d54145c3 1423 ("curl" ,curl)
fcbeb00b
RW
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)
49767428 1438 ("faust" ,faust)
fcbeb00b 1439 ("intltool" ,intltool)
b94a6ca0 1440 ("gettext" ,gettext-minimal)
fcbeb00b
RW
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 "http://guitarix.org/")
1447 (synopsis "Virtual guitar amplifier")
1448 (description "Guitarix is a virtual guitar amplifier running JACK.
1449Guitarix takes the signal from your guitar as a mono-signal from your sound
1450card. The input is processed by a main amp and a rack-section. Both can be
1451routed separately and deliver a processed stereo-signal via JACK. You may
1452fill the rack with effects from more than 25 built-in modules including stuff
1453from a simple noise gate to modulation effects like flanger, phaser or
1454auto-wah.")
1455 (license license:gpl2+)))
1456
5f5b5768
RW
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)
029de52f 1463 `(cons "--no-standalone" ,flags))))))
5f5b5768 1464
11d4800a
RW
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
1505guitar effects pedalboard. Effects include compressor, expander, noise gate,
1506equalizers, exciter, flangers, chorus, various delay and reverb effects,
1507distortion modules and many more. Most of the effects engine is built from
1508modules found in the excellent software synthesizer ZynAddSubFX. Presets and
1509user interface are optimized for guitar, but Rakarrack processes signals in
1510stereo while it does not apply internal band-limiting filtering, and thus is
1511well suited to all musical instruments and vocals.")
1512 ;; The code is explicitly licensed under the GPL version 2 only.
1513 (license license:gpl2)))
1514
32cf42c1
RW
1515(define-public ir
1516 (package
1517 (name "ir")
6f85a9c4 1518 (version "1.3.4")
32cf42c1 1519 (source (origin
6f85a9c4
RW
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))
32cf42c1
RW
1525 (sha256
1526 (base32
6f85a9c4 1527 "0svmjhg4r6wy5ci5rwz43ybll7yxjv7nnj7nyqscbzhr3gi5aib0"))))
32cf42c1
RW
1528 (build-system gnu-build-system)
1529 (arguments
2df984f2 1530 `(#:tests? #f ; no tests
6f85a9c4
RW
1531 #:make-flags
1532 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
1533 (string-append "INSTDIR="
1534 (assoc-ref %outputs "out") "/lib/lv2"))
2df984f2
TGR
1535 #:phases (modify-phases %standard-phases
1536 (delete 'configure)))) ; no configure script
32cf42c1
RW
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")))))
6f85a9c4 1550 (home-page "https://tomszilagyi.github.io/plugins/ir.lv2")
32cf42c1
RW
1551 (synopsis "LV2 convolution reverb")
1552 (description
1553 "IR is a low-latency, real-time, high performance signal convolver
1554especially for creating reverb effects. It supports impulse responses with 1,
15552 or 4 channels, in any soundfile format supported by libsndfile.")
1556 (license license:gpl2+)))
1557
fb68469f
RW
1558(define-public jack-1
1559 (package
1560 (name "jack")
31b7af76 1561 (version "0.125.0")
fb68469f
RW
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
31b7af76 1570 "0i6l25dmfk2ji2lrakqq9icnwjxklgcjzzk65dmsff91z2zva5rm"))))
fb68469f 1571 (build-system gnu-build-system)
8e2c0ce4
MB
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)))))
fb68469f 1580 (inputs
2f9ae82f 1581 `(("alsa-lib" ,alsa-lib)
5d95e30b
RW
1582 ("readline" ,readline)))
1583 ;; uuid.h is included in the JACK type headers
ca01b3ad 1584 ;; db.h is included in the libjack metadata headers
5d95e30b 1585 (propagated-inputs
ca01b3ad
RW
1586 `(("libuuid" ,util-linux)
1587 ("bdb" ,bdb)))
2f9ae82f
RW
1588 (native-inputs
1589 `(("pkg-config" ,pkg-config)))
fb68469f
RW
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
1594different applications to an audio device, as well as allowing them to share
1595audio between themselves. JACK is different from other audio server efforts
1596in that it has been designed from the ground up to be suitable for
1597professional audio work. This means that it focuses on two key areas:
1598synchronous 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.
e89fa047 1601 (license (list license:gpl2+ license:lgpl2.1+))))
c54a8981 1602
bcbc02fd
RW
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.
c54a8981
RW
1606(define-public jack-2
1607 (package (inherit jack-1)
314275c7 1608 (name "jack2")
fa984fa6 1609 (version "1.9.13")
c54a8981
RW
1610 (source (origin
1611 (method url-fetch)
a4527622
RW
1612 (uri (string-append "https://github.com/jackaudio/jack2/releases/"
1613 "download/v" version "/jack2-"
1614 version ".tar.gz"))
f586c877 1615 (file-name (string-append name "-" version ".tar.gz"))
c54a8981
RW
1616 (sha256
1617 (base32
fa984fa6 1618 "1d1d403jn4366mqig6g8ghr8057b3rn7gs26b5p3rkal34j20qw2"))))
c54a8981
RW
1619 (build-system waf-build-system)
1620 (arguments
fa984fa6 1621 `(#:tests? #f ; no check target
c54a8981 1622 #:configure-flags '("--dbus"
b416c647
SB
1623 "--alsa")
1624 #:phases
1625 (modify-phases %standard-phases
fa984fa6
RW
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))
bc8bf605 1635 (add-after 'install 'wrap-python-scripts
fa984fa6
RW
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)))))
c54a8981
RW
1643 (inputs
1644 `(("alsa-lib" ,alsa-lib)
1645 ("dbus" ,dbus)
1646 ("expat" ,expat)
1647 ("libsamplerate" ,libsamplerate)
1648 ("opus" ,opus)
fa984fa6 1649 ("python-dbus" ,python-dbus)
c54a8981
RW
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+))))
f47cba0e 1655
2f4646b6
RW
1656(define-public jalv
1657 (package
1658 (name "jalv")
4e385d2a 1659 (version "1.6.4")
2f4646b6
RW
1660 (source (origin
1661 (method url-fetch)
0d0252e4 1662 (uri (string-append "https://download.drobilla.net/jalv-"
2f4646b6
RW
1663 version ".tar.bz2"))
1664 (sha256
1665 (base32
4e385d2a 1666 "1wwfn7yzbs37s2rdlfjgks63svd5g14yyzd2gdl7h0z12qncwsy2"))))
2f4646b6 1667 (build-system waf-build-system)
d8c317df 1668 (arguments
4e385d2a 1669 `(#:tests? #f ; no check target
0403b04d 1670 #:python ,python-2))
2f4646b6
RW
1671 (inputs
1672 `(("lv2" ,lv2)
1673 ("lilv" ,lilv)
1674 ("suil" ,suil)
9e4e66c4
AT
1675 ("gtk2" ,gtk+-2)
1676 ("gtk3" ,gtk+)
1677 ("gtkmm" ,gtkmm-2)
1678 ("qtbase" ,qtbase)
2f4646b6
RW
1679 ("jack" ,jack-1)))
1680 (native-inputs
1681 `(("pkg-config" ,pkg-config)))
0d0252e4 1682 (home-page "https://drobilla.net/software/jalv/")
2f4646b6
RW
1683 (synopsis "Simple LV2 host for JACK")
1684 (description
1685 "Jalv is a simple but fully featured LV2 host for JACK. It runs LV2
1686plugins and exposes their ports as JACK ports, essentially making any LV2
1687plugin function as a JACK application.")
1688 (license license:isc)))
1689
2cc7ce31
RW
1690(define-public ladspa
1691 (package
1692 (name "ladspa")
1693 (version "1.13")
0c1910ed
AV
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"))))
2cc7ce31
RW
1708 (build-system gnu-build-system)
1709 (arguments
1710 `(#:tests? #f ; the "test" target is a listening test only
1711 #:phases
ee527187
MW
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))))
0c1910ed
AV
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/")
2cc7ce31
RW
1729 (synopsis "Linux Audio Developer's Simple Plugin API (LADSPA)")
1730 (description
1731 "LADSPA is a standard that allows software audio processors and effects
1732to be plugged into a wide range of audio synthesis and recording packages.")
1733 (license license:lgpl2.1+)))
1734
da49086a
RW
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)
44df7807 1752 (arguments
f03cda4d
MB
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
44df7807
EF
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 ") ""))
b07bfd06
EF
1765 #t)))
1766 #:configure-flags '("--disable-static")))
da49086a
RW
1767 (inputs
1768 `(("bdb" ,bdb)
1769 ("gtk" ,gtk+-2)
1770 ("jack" ,jack-1)
f03cda4d 1771 ("libtirpc" ,libtirpc)
da49086a
RW
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)))
340978d7 1782 (home-page "https://www.nongnu.org/lash/")
da49086a
RW
1783 (synopsis "Audio application session manager")
1784 (description
1785 "LASH is a session management system for audio applications. It allows
1786you to save and restore audio sessions consisting of multiple interconneced
1787applications, restoring program state (i.e. loaded patches) and the
1788connections between them.")
1789 (license license:gpl2+)))
1790
8c0b5a75
TUBK
1791(define-public libbs2b
1792 (package
1793 (name "libbs2b")
1794 (version "3.1.0")
1795 (source (origin
1796 (method url-fetch)
de67e922
LF
1797 (uri (string-append "mirror://sourceforge/bs2b/libbs2b/" version
1798 "/libbs2b-" version ".tar.lzma"))
8c0b5a75
TUBK
1799 (sha256
1800 (base32
1801 "1mcc4gjkmphczjybnsrip3gq1f974knzys7x49bv197xk3fn8wdr"))))
1802 (build-system gnu-build-system)
1803 (native-inputs `(("pkg-config" ,pkg-config)))
1804 (inputs `(("libsndfile" ,libsndfile)))
3b3b60d0 1805 (home-page "https://sourceforge.net/projects/bs2b/")
8c0b5a75
TUBK
1806 (synopsis "Bauer stereophonic-to-binaural DSP")
1807 (description
1808 "The Bauer stereophonic-to-binaural DSP (bs2b) library and plugins is
1809designed to improve headphone listening of stereo audio records. Recommended
1810for headphone prolonged listening to disable superstereo fatigue without
1811essential distortions.")
1812 (license license:expat)))
1813
f47cba0e
RW
1814(define-public liblo
1815 (package
1816 (name "liblo")
363fe78a 1817 (version "0.31")
f47cba0e
RW
1818 (source (origin
1819 (method url-fetch)
de67e922
LF
1820 (uri (string-append "mirror://sourceforge/liblo/liblo/" version
1821 "/liblo-" version ".tar.gz"))
f47cba0e
RW
1822 (sha256
1823 (base32
363fe78a 1824 "0l67rkdhfa8cffa0nynql3lh2xlbn1454h6qxhjddp1029p48krb"))))
f47cba0e
RW
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
03b71957 1834implementation of the Open Sound Control (@dfn{OSC}) protocol.")
f47cba0e 1835 (license license:lgpl2.1+)))
e2420191 1836
fbcad884
OP
1837(define-public python-pyaudio
1838 (package
1839 (name "python-pyaudio")
1840 (version "0.2.11")
1841 (source
1842 (origin
1843 (method url-fetch)
7d4dae6a 1844 (uri (pypi-uri "PyAudio" version))
fbcad884
OP
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
1854cross-platform audio input/output stream library.")
1855 (license license:expat)))
1856
1857(define-public python2-pyaudio
1858 (package-with-python2 python-pyaudio))
1859
a91d72e2
RW
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
f2516de2
HG
1873 (native-inputs
1874 `(("python-cython" ,python-cython)))
a91d72e2 1875 (inputs
f2516de2 1876 `(("liblo" ,liblo)))
a91d72e2
RW
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)
1881library. It supports almost the complete functionality of liblo, allowing you
1882to send and receive OSC messages using a nice and simple Python API. Also
1883included 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
332aad1b
RW
1889(define-public lilv
1890 (package
1891 (name "lilv")
2d91e596 1892 (version "0.24.6")
332aad1b
RW
1893 (source (origin
1894 (method url-fetch)
0d0252e4 1895 (uri (string-append "https://download.drobilla.net/lilv-"
d4d3df82 1896 version ".tar.bz2"))
332aad1b
RW
1897 (sha256
1898 (base32
2d91e596 1899 "1p3hafsxgs5d4za7n66lf5nz74qssfqpmk520cm7iq2njvvlqm2z"))))
332aad1b 1900 (build-system waf-build-system)
d80ee442 1901 (arguments
d0b025ea 1902 `(#:tests? #f ; no check target
d80ee442
TUBK
1903 #:phases
1904 (modify-phases %standard-phases
2d91e596 1905 (add-before 'configure 'set-ldflags
d80ee442
TUBK
1906 (lambda* (#:key outputs #:allow-other-keys)
1907 (setenv "LDFLAGS"
1908 (string-append "-Wl,-rpath="
d582d925 1909 (assoc-ref outputs "out") "/lib"))
6833c7a1
F
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)))))
d0b025ea 1918 ;; Required by lilv-0.pc.
ff7df27d 1919 (propagated-inputs
471884ed
MB
1920 `(("lv2" ,lv2)
1921 ("serd" ,serd)
332aad1b
RW
1922 ("sord" ,sord)
1923 ("sratom" ,sratom)))
1924 (native-inputs
6833c7a1
F
1925 `(("python" ,python)
1926 ("pkg-config" ,pkg-config)))
1927 (home-page "https://drobilla.net/software/lilv")
332aad1b
RW
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
1931for applications. Lilv is the successor to SLV2, rewritten to be
1932significantly faster and have minimal dependencies.")
1933 (license license:isc)))
1934
e2420191
RW
1935(define-public lv2
1936 (package
1937 (name "lv2")
a2467954 1938 (version "1.16.0")
e2420191
RW
1939 (source (origin
1940 (method url-fetch)
1941 (uri (string-append "http://lv2plug.in/spec/lv2-"
eb21d248 1942 version ".tar.bz2"))
e2420191
RW
1943 (sha256
1944 (base32
a2467954 1945 "1ppippbpdpv13ibs06b0bixnazwfhiw0d0ja6hx42jnkgdyp5hyy"))))
e2420191
RW
1946 (build-system waf-build-system)
1947 (arguments
1948 `(#:tests? #f ; no check target
2e189eb8 1949 #:configure-flags '("--no-plugins")))
e2420191
RW
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.
1959At its core, LV2 is a simple stable interface, accompanied by extensions which
1960add functionality to support the needs of increasingly powerful audio
1961software.")
1962 (license license:isc)))
5279eb6f 1963
98247127
RW
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
f6f499b3 1971 (url "http://git.elephly.net/software/lv2-mdametapiano.git")
98247127 1972 (commit version)))
35a01e67 1973 (file-name (git-file-name name version))
98247127
RW
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
dc1d3cde 1983 #:phases (modify-phases %standard-phases (delete 'configure))))
98247127
RW
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")))))
a4e8a9e0 1993 (home-page "https://elephly.net/lv2/mdapiano.html")
98247127
RW
1994 (synopsis "LV2 port of the mda Piano plugin")
1995 (description "An LV2 port of the mda Piano VSTi.")
1996 (license license:gpl3+)))
1997
8fb79e3d
RW
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
dc1d3cde 2006 #:phases (modify-phases %standard-phases (delete 'configure))))
a4e8a9e0 2007 (home-page "https://elephly.net/lv2/mdaepiano.html")
8fb79e3d
RW
2008 (synopsis "LV2 port of the mda EPiano plugin")
2009 (description "An LV2 port of the mda EPiano VSTi.")))
2010
c1718190
RW
2011(define-public lvtk
2012 (package
2013 (name "lvtk")
2014 (version "1.2.0")
2015 (source (origin
b255365c
RW
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))
c1718190
RW
2021 (sha256
2022 (base32
b255365c 2023 "1b01zvzl70ana6l1kn8fgyr7msnn3c7x61cgw7fdpp50322352p8"))))
c1718190
RW
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")
ed59057b 2031 "/include"))))
c1718190
RW
2032 (inputs
2033 `(("boost" ,boost)
85f4863f 2034 ("gtkmm" ,gtkmm-2)
c1718190
RW
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
2042extensions into easy to use C++ classes. It is the successor of
2043lv2-c++-tools.")
2044 (license license:gpl3+)))
2045
f2fac359
TUBK
2046(define-public openal
2047 (package
2048 (name "openal")
d5037890 2049 (version "1.20.1")
f2fac359
TUBK
2050 (source (origin
2051 (method url-fetch)
2052 (uri (string-append
b7ea10d0 2053 "https://openal-soft.org/openal-releases/openal-soft-"
f2fac359
TUBK
2054 version ".tar.bz2"))
2055 (sha256
2056 (base32
d5037890 2057 "0vax0b1lgd4212bpxa1rciz52d4mv3dkfvcbbhzw4cjp698v1kmn"))))
f2fac359
TUBK
2058 (build-system cmake-build-system)
2059 (arguments
7ee5db15
RW
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)
69290fd0 2066 (substitute* "alc/backends/pulseaudio.cpp"
7ee5db15
RW
2067 (("#define PALIB \"libpulse\\.so\\.0\"")
2068 (string-append "#define PALIB \""
2069 (assoc-ref inputs "pulseaudio")
2070 "/lib/libpulse.so.0"
2071 "\"")))
69290fd0 2072 (substitute* "alc/backends/alsa.cpp"
7ee5db15
RW
2073 (("LoadLib\\(\"libasound\\.so\\.2\"\\)")
2074 (string-append "LoadLib(\""
2075 (assoc-ref inputs "alsa-lib")
2076 "/lib/libasound.so.2"
2077 "\")")))
2078 #t)))))
f2fac359
TUBK
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
2085environment. Distance attenuation, doppler shift, and directional sound
2086emitters are among the features handled by the API. More advanced effects,
2087including air absorption, occlusion, and environmental reverb, are available
2088through the EFX extension. It also facilitates streaming audio, multi-channel
2089buffers, and audio capture.")
b7ea10d0 2090 (home-page "https://openal-soft.org/")
f2fac359
TUBK
2091 (license license:lgpl2.0+)))
2092
c2b411c2 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.")
aeca6070 2116 (home-page "https://kcat.strangesoft.net/openal.html")
c2b411c2 2117 (license license:lgpl2.0)))
2118
4443bb8d
RW
2119(define-public patchage
2120 (package
2121 (name "patchage")
2122 (version "1.0.0")
2123 (source (origin
2124 (method url-fetch)
0d0252e4 2125 (uri (string-append "https://download.drobilla.net/patchage-"
4443bb8d
RW
2126 version
2127 ".tar.bz2"))
2128 (sha256
2129 (base32
2130 "1agdpwwi42176l4mxj0c4fsvdiv1ig56bfnnx0msckxmy57df8bb"))))
2131 (build-system waf-build-system)
0fd9671b
RW
2132 (arguments
2133 `(#:tests? #f ; no check target
2134 #:python ,python-2))
4443bb8d
RW
2135 (inputs
2136 `(("alsa-lib" ,alsa-lib)
2137 ("boost" ,boost)
2138 ("jack" ,jack-1)
4443bb8d 2139 ("ganv" ,ganv)
4443bb8d
RW
2140 ("glibmm" ,glibmm)
2141 ("gtkmm" ,gtkmm-2)
4443bb8d
RW
2142 ("dbus-glib" ,dbus-glib)))
2143 (native-inputs
2144 `(("pkg-config" ,pkg-config)))
0d0252e4 2145 (home-page "https://drobilla.net/software/patchage/")
4443bb8d
RW
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
2149and ALSA.")
2150 (license license:gpl3+)))
2151
a4b71b32
MB
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
2179different 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
0d78e377
MM
2185(define-public qjackctl
2186 (package
2187 (name "qjackctl")
e7597aad 2188 (version "0.5.9")
0d78e377
MM
2189 (source (origin
2190 (method url-fetch)
1538bc33
RW
2191 (uri (string-append "mirror://sourceforge/qjackctl/qjackctl/"
2192 version "/qjackctl-" version ".tar.gz"))
0d78e377
MM
2193 (sha256
2194 (base32
e7597aad 2195 "1saywsda9m124rmjp7i3n0llryaliabjxhqhvqr6dm983qy7pypk"))))
0d78e377
MM
2196 (build-system gnu-build-system)
2197 (arguments
4dcf221c 2198 '(#:tests? #f)) ; no check target
0d78e377 2199 (inputs
5ffa7cb1 2200 `(("jack" ,jack-1)
c0c5feda 2201 ("alsa-lib" ,alsa-lib)
a3c57693
EF
2202 ("qtbase" ,qtbase)
2203 ("qtx11extras" ,qtx11extras)))
0d78e377
MM
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
2210into various outputs and to start, stop and configure jackd")
2211 (license license:gpl2+)))
2212
40713793
RW
2213(define-public qjackrcd
2214 (package
2215 (name "qjackrcd")
78357403 2216 (version "1.2.2")
40713793 2217 (source (origin
78357403
RW
2218 (method git-fetch)
2219 (uri (git-reference
2220 (url "https://github.com/orouits/qjackrcd.git")
2221 (commit (string-append "v" version))))
70aa07d2 2222 (file-name (git-file-name name version))
40713793
RW
2223 (sha256
2224 (base32
78357403 2225 "1l5iq2mkqd4gn9yr8xbh9qlpp1clcflazychl4vhdbz0bzq4c6al"))))
40713793
RW
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)
14a852bd
TGR
2232 (invoke "qmake"
2233 (string-append "PREFIX="
2234 (assoc-ref outputs "out"))))))))
40713793
RW
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
2244supporting silence processing for automatic pause, file splitting, and
2245background file post-processing.")
2246 (license license:gpl2+)))
0d78e377 2247
247384d0
MC
2248(define-public supercollider
2249 (package
2250 (name "supercollider")
21e733ce 2251 (version "3.10.4")
247384d0
MC
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
21e733ce 2260 "0x11g3pfw11m6v18qfpfl5w99dbmf73g4z7wvwhrj1a4qv2dn084"))))
247384d0
MC
2261 (build-system cmake-build-system)
2262 (arguments
2263 `(#:configure-flags '("-DSYSTEM_BOOST=on" "-DSYSTEM_YAMLCPP=on"
77cc8778 2264 "-DSC_QT=off"
247384d0 2265 "-DSC_EL=off") ;scel is packaged individually as
21e733ce 2266 ;emacs-scel
247384d0
MC
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
21e733ce 2275 ;; libraries. hidapi is also heavily patched.
247384d0
MC
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 _
b05399df 2291 (substitute* "testsuite/server/supernova/CMakeLists.txt"
247384d0
MC
2292 (("server_test.cpp")
2293 "")
2294 (("perf_counter_test.cpp")
2295 ""))
b05399df
DM
2296 (delete-file "testsuite/server/supernova/server_test.cpp")
2297 (delete-file "testsuite/server/supernova/perf_counter_test.cpp")
247384d0
MC
2298 (substitute* "testsuite/CMakeLists.txt"
2299 (("add_subdirectory\\(sclang\\)")
2300 ""))
2301 (delete-file "testsuite/sclang/CMakeLists.txt")
247384d0
MC
2302 #t)))))
2303 (native-inputs
77cc8778 2304 `(("pkg-config" ,pkg-config)))
247384d0
MC
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)
4cb9b726 2315 ("boost" ,boost)
247384d0 2316 ("boost-sync" ,boost-sync)
77cc8778 2317 ("yaml-cpp" ,yaml-cpp)))
247384d0
MC
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
2322for experimenting with sound synthesis and algorithmic composition.
2323
2324SuperCollider requires jackd to be installed in your user profile and your
2325user must be allowed to access the realtime features of the kernel. Search
2326for \"realtime\" in the index of the Guix manual to learn how to achieve this
59e80445 2327using Guix System.")
247384d0
MC
2328 (license license:gpl2+)))
2329
b22755be
RW
2330(define-public raul
2331 (package
2332 (name "raul")
2333 (version "0.8.0")
2334 (source (origin
2335 (method url-fetch)
0d0252e4 2336 (uri (string-append "https://download.drobilla.net/raul-"
b22755be
RW
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)))
0d0252e4 2350 (home-page "https://drobilla.net/software/raul/")
b22755be
RW
2351 (synopsis "Real-time audio utility library")
2352 (description
2353 "Raul (Real-time Audio Utility Library) is a C++ utility library primarily
2354aimed at audio/musical applications.")
2355 (license license:gpl2+)))
2356
f91d0d08 2357(define-public raul-devel
a8bf6b9b 2358 (let ((commit "4db870b2b20b0a608ec0283139056b836c5b1624")
f91d0d08
RW
2359 (revision "1"))
2360 (package (inherit raul)
2361 (name "raul")
a8bf6b9b 2362 (version (string-append "0.8.9-" revision "."
f91d0d08
RW
2363 (string-take commit 9)))
2364 (source (origin
2365 (method git-fetch)
2366 (uri (git-reference
0d0252e4 2367 (url "https://git.drobilla.net/raul.git")
f91d0d08
RW
2368 (commit commit)))
2369 (file-name (string-append name "-" version "-checkout"))
2370 (sha256
2371 (base32
a8bf6b9b 2372 "04fajrass3ymr72flx5js5vxc601ccrmx8ny8scp0rw7j0igyjdr")))))))
f91d0d08 2373
d83bb797
JW
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
2393sampling-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
57238ff2
RW
2397(define-public rubberband
2398 (package
2399 (name "rubberband")
4bee557d 2400 (version "1.8.2")
57238ff2
RW
2401 (source (origin
2402 (method url-fetch)
2403 (uri
2404 (string-append "https://bitbucket.org/breakfastquay/rubberband/get/v"
2405 version
2406 ".tar.bz2"))
fdf359f8 2407 (file-name (string-append name "-" version ".tar.bz2"))
57238ff2
RW
2408 (sha256
2409 (base32
4bee557d 2410 "0462fmjnfqpv2qi0s6ny42drqarkr0xy9lw8frjmfgzyzl5n9294"))))
57238ff2 2411 (build-system gnu-build-system)
4bee557d
TGR
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)))))
57238ff2
RW
2423 (inputs
2424 `(("ladspa" ,ladspa)
2425 ("libsamplerate" ,libsamplerate)
2426 ("vamp" ,vamp)))
2427 (native-inputs
2428 `(("pkg-config" ,pkg-config)))
20377e4a 2429 (home-page "https://breakfastquay.com/rubberband/")
57238ff2
RW
2430 (synopsis "Audio time-stretching and pitch-shifting library")
2431 (description
2432 "Rubber Band is a library and utility program that permits changing the
2433tempo and pitch of an audio recording independently of one another.")
2434 (license license:gpl2+)))
2435
cc45cff8
RW
2436(define-public rtmidi
2437 (package
2438 (name "rtmidi")
bcdf11d6 2439 (version "4.0.0")
cc45cff8 2440 (source (origin
bcdf11d6
PL
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"))
cc45cff8
RW
2445 (sha256
2446 (base32
bcdf11d6 2447 "1k962ljpnwyjw9jjiky2372khhri1wqvrj5qsalfpys31xqzw31p"))))
cc45cff8
RW
2448 (build-system gnu-build-system)
2449 (arguments
bcdf11d6 2450 `(#:phases
7db147ec 2451 (modify-phases %standard-phases
bcdf11d6 2452 (add-before 'bootstrap 'noconfigure
7db147ec 2453 (lambda _
bcdf11d6 2454 (setenv "NOCONFIGURE" "yes")
7db147ec 2455 #t)))))
cc45cff8
RW
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)))
bcdf11d6 2464 (home-page "https://www.music.mcgill.ca/~gary/rtmidi")
cc45cff8
RW
2465 (synopsis "Cross-platform MIDI library for C++")
2466 (description
2467 "RtMidi is a set of C++ classes (RtMidiIn, RtMidiOut, and API specific
2468classes) that provide a common cross-platform API for realtime MIDI
2469input/output.")
2470 (license license:expat)))
2471
5279eb6f
RW
2472(define-public sratom
2473 (package
2474 (name "sratom")
9dd6b8d1 2475 (version "0.6.4")
5279eb6f 2476 (source (origin
95f6e6da
MB
2477 (method url-fetch)
2478 (uri (string-append "https://download.drobilla.net/sratom-"
2479 version ".tar.bz2"))
2480 (sha256
2481 (base32
2482 "0vh0biy3ngpzzgdml309c2mqz8xq9q0hlblczb4c6alhp0a8yv0l"))))
5279eb6f 2483 (build-system waf-build-system)
95f6e6da 2484 (arguments `(#:tests? #f)) ;no check target
6e0b18bf
MB
2485 (propagated-inputs
2486 ;; In Requires of sratom-0.pc.
5279eb6f
RW
2487 `(("lv2" ,lv2)
2488 ("serd" ,serd)
2489 ("sord" ,sord)))
2490 (native-inputs
2491 `(("pkg-config" ,pkg-config)))
0d0252e4 2492 (home-page "https://drobilla.net/software/sratom/")
5279eb6f
RW
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
2496the Turtle syntax.")
2497 (license license:isc)))
f3ab6ad3
RW
2498
2499(define-public suil
2500 (package
2501 (name "suil")
9bc06860 2502 (version "0.10.6")
f3ab6ad3 2503 (source (origin
8fadac95
TGR
2504 (method url-fetch)
2505 (uri (string-append "https://download.drobilla.net/suil-"
2506 version ".tar.bz2"))
2507 (sha256
2508 (base32
9bc06860 2509 "0z4v01pjw4wh65x38w6icn28wdwxz13ayl8hvn4p1g9kmamp1z06"))))
f3ab6ad3 2510 (build-system waf-build-system)
9f64f7e6 2511 (arguments
0fe041bd 2512 `(#:tests? #f)) ;no check target
f3ab6ad3
RW
2513 (inputs
2514 `(("lv2" ,lv2)
a00403c6
RW
2515 ("gtk+" ,gtk+-2)
2516 ("gtk+" ,gtk+)
9f64f7e6 2517 ("qt" ,qtbase)))
f3ab6ad3
RW
2518 (native-inputs
2519 `(("pkg-config" ,pkg-config)))
0d0252e4 2520 (home-page "https://drobilla.net/software/suil/")
f3ab6ad3
RW
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
2525Suil makes it possible to load a UI of a toolkit in a host using another
2526toolkit. The API is designed such that hosts do not need to explicitly
2527support specific toolkits – if Suil supports a particular toolkit, then UIs in
2528that toolkit will work in all hosts that use Suil automatically.
2529
a00403c6 2530Suil currently supports every combination of Gtk, Qt, and X11.")
f3ab6ad3 2531 (license license:isc)))
db46f2fc 2532
9ffee457
RW
2533(define-public timidity++
2534 (package
2535 (name "timidity++")
2536 (version "2.14.0")
2537 (source (origin
2538 (method url-fetch)
de67e922
LF
2539 (uri (string-append "mirror://sourceforge/timidity/TiMidity++"
2540 "/TiMidity++-" version
2541 "/TiMidity++-" version ".tar.bz2"))
9ffee457
RW
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
dc1d3cde
KK
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)))))
9ffee457
RW
2568 (inputs
2569 `(("alsa-lib" ,alsa-lib)
2570 ("ao" ,ao)
2571 ("flac" ,flac)
2572 ("jack" ,jack-1)
2573 ("libogg" ,libogg)
3065bf8a 2574 ("libvorbis" ,libvorbis)
9ffee457
RW
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
2584converting them into PCM waveform data; give it a MIDI data along with digital
2585instrument data files, then it synthesizes them in real-time, and plays. It
2586can not only play sounds, but also can save the generated waveforms into hard
2587disks as various audio file formats.")
2588 (license license:gpl2+)))
2589
db46f2fc
RW
2590(define-public vamp
2591 (package
2592 (name "vamp")
b1fb59d3 2593 (version "2.6")
db46f2fc
RW
2594 (source (origin
2595 (method url-fetch)
2596 (uri (string-append
2597 "https://code.soundsoftware.ac.uk"
494e9b91 2598 "/attachments/download/1520/vamp-plugin-sdk-"
b1fb59d3 2599 version ".tar.gz"))
9002e17c
TUBK
2600 (sha256
2601 (base32
494e9b91 2602 "0pzq0yy2kdl3jgfc2aqmh5m55nk1ild0hq8mydiiw35c6y0mglyh"))))
db46f2fc 2603 (build-system gnu-build-system)
9002e17c
TUBK
2604 (arguments
2605 `(#:tests? #f ; no check target
2606 #:phases
dc1d3cde
KK
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"))))
4f27a333 2615 #t)))))
db46f2fc
RW
2616 (inputs
2617 `(("libsndfile" ,libsndfile)))
2618 (native-inputs
2619 `(("pkg-config" ,pkg-config)))
50a67a46 2620 (home-page "https://vamp-plugins.org")
db46f2fc
RW
2621 (synopsis "Modular and extensible audio processing system")
2622 (description
2623 "Vamp is an audio processing plugin system for plugins that extract
2624descriptive information from audio data — typically referred to as audio
2625analysis 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"))))
9f1cdd9d
TUBK
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
476b2877
MW
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
09c414d8
MW
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")
ee527187
MW
2660 "ar-lib")
2661 #t)))))
9f1cdd9d
TUBK
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
2666stretching 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)))
754a98ae 2670
01b90919
SB
2671(define-public wavpack
2672 (package
2673 (name "wavpack")
638c45ed 2674 (version "5.2.0")
01b90919
SB
2675 (source (origin
2676 (method url-fetch)
2677 (uri (string-append "http://www.wavpack.com/"
638c45ed 2678 "wavpack-" version ".tar.xz"))
01b90919
SB
2679 (sha256
2680 (base32
638c45ed 2681 "1qvpvfx30kvrkw7y1g6r8xj109wszg1z0qmkfm17wf3flb7v3rbp"))))
01b90919 2682 (build-system gnu-build-system)
08b7a278
MB
2683 (arguments
2684 '(#:configure-flags '("--disable-static")))
01b90919
SB
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
2689compression modes. This package contains command-line programs and library to
2690encode and decode wavpack files.")
2691 (license license:bsd-3)))
2692
a176dd7e
SB
2693(define-public libmodplug
2694 (package
2695 (name "libmodplug")
06446a7d 2696 (version "0.8.9.0")
a176dd7e
SB
2697 (source (origin
2698 (method url-fetch)
2699 (uri (string-append
0f971a04 2700 "mirror://sourceforge/modplug-xmms/"
a176dd7e
SB
2701 name "/" version "/" name "-" version ".tar.gz"))
2702 (sha256
2703 (base32
06446a7d 2704 "1pnri98a603xk47smnxr551svbmgbzcw018mq1k6srbrq6kaaz25"))))
a176dd7e
SB
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
2710conversion. mod, .s3m, .it, .xm, and a number of lesser-known formats are
2711supported. Optional features include high-quality resampling, bass expansion,
2712surround and reverb.")
2713 (license license:public-domain)))
2714
b97b5cda
SB
2715(define-public libxmp
2716 (package
2717 (name "libxmp")
2784fca0 2718 (version "4.4.1")
b97b5cda
SB
2719 (source (origin
2720 (method url-fetch)
de67e922 2721 (uri (string-append "mirror://sourceforge/xmp/libxmp/" version "/"
b97b5cda
SB
2722 name "-" version ".tar.gz"))
2723 (sha256
2724 (base32
2784fca0 2725 "1kycz4jsyvmf7ny9227b497wc7y5ligydi6fvvldmkf8hk63ad9m"))))
b97b5cda
SB
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
2731over 90 mainstream and obscure module formats including Protracker (MOD),
2732Scream Tracker 3 (S3M), Fast Tracker II (XM), and Impulse Tracker (IT).")
2733 (license license:lgpl2.1+)))
2734
3ec4bba4
SB
2735(define-public xmp
2736 (package
2737 (name "xmp")
1a79d476 2738 (version "4.1.0")
3ec4bba4
SB
2739 (source (origin
2740 (method url-fetch)
de67e922 2741 (uri (string-append "mirror://sourceforge/xmp/xmp/" version "/"
3ec4bba4
SB
2742 name "-" version ".tar.gz"))
2743 (sha256
2744 (base32
1a79d476 2745 "17i8fc7x7yn3z1x963xp9iv108gxfakxmdgmpv3mlm438w3n3g8x"))))
3ec4bba4
SB
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
2756obscure module formats, including Protracker MOD, Fasttracker II XM, Scream
2757Tracker 3 S3M and Impulse Tracker IT files.")
2758 (license license:gpl2+)))
2759
754a98ae
TUBK
2760(define-public soundtouch
2761 (package
2762 (name "soundtouch")
d87d2567 2763 (version "2.1.2")
754a98ae
TUBK
2764 (source
2765 (origin
55036ddc
TGR
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))
754a98ae 2771 (sha256
d87d2567 2772 (base32 "174wgm3s0inmbnkrlnspxjwm2014qhjhkbdqa5r8rbfi0nzqxzsz"))))
754a98ae
TUBK
2773 (build-system gnu-build-system)
2774 (native-inputs
2775 `(("autoconf" ,autoconf)
2776 ("automake" ,automake)
2777 ("libtool" ,libtool)
2778 ("file" ,file)))
c93bd94c 2779 (home-page "https://www.surina.net/soundtouch/")
754a98ae
TUBK
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
2784and playback rates of audio streams or audio files. It is intended for
2785application developers writing sound processing tools that require tempo/pitch
2786control functionality, or just for playing around with the sound effects.")
2787 (license license:lgpl2.1+)))
4bddd14c 2788
d739f481
AK
2789(define-public sox
2790 (package
2791 (name "sox")
2792 (version "14.4.2")
2793 (source (origin
2794 (method url-fetch)
de67e922
LF
2795 (uri (string-append "mirror://sourceforge/sox/sox/" version "/"
2796 name "-" version ".tar.bz2"))
d739f481
AK
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
2823various formats of computer audio files to other formats. It can also
2824apply various effects to these sound files, and, as an added bonus, SoX
2825can 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
4bddd14c
TUBK
2830(define-public soxr
2831 (package
2832 (name "soxr")
9e9a211f 2833 (version "0.1.3")
4bddd14c
TUBK
2834 (source
2835 (origin
2836 (method url-fetch)
2837 (uri
2838 (string-append "mirror://sourceforge/soxr/soxr-" version
2839 "-Source.tar.xz"))
2840 (sha256
9e9a211f 2841 (base32 "12aql6svkplxq5fjycar18863hcq84c5kx8g6f4rj0lcvigw24di"))))
4bddd14c
TUBK
2842 (build-system cmake-build-system)
2843 (arguments '(#:tests? #f)) ;no 'check' target
3b3b60d0 2844 (home-page "https://sourceforge.net/p/soxr/wiki/Home/")
4bddd14c
TUBK
2845 (synopsis "One-dimensional sample-rate conversion library")
2846 (description
2847 "The SoX Resampler library (libsoxr) performs one-dimensional sample-rate
2848conversion. It may be used, for example, to resample PCM-encoded audio.")
2849 (license license:lgpl2.1+)))
49f36708
TUBK
2850
2851(define-public twolame
2852 (package
2853 (name "twolame")
196e3579 2854 (version "0.4.0")
49f36708
TUBK
2855 (source
2856 (origin
2857 (method url-fetch)
de67e922
LF
2858 (uri (string-append "mirror://sourceforge/twolame/twolame/" version
2859 "/twolame-" version ".tar.gz"))
49f36708 2860 (sha256
196e3579 2861 (base32 "0zf8sxqb02w07ah55b1y7ab643zmpbhn62spa9pqra0rc17l4dfc"))))
49f36708
TUBK
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
2872tooLAME by Mike Cheng, which in turn is based upon the ISO dist10 code and
2873portions of LAME.")
2874 (license license:lgpl2.1+)))
bd4464f2
TUBK
2875
2876(define-public portaudio
2877 (package
2878 (name "portaudio")
80420acb 2879 (version "190600.20161030")
bd4464f2
TUBK
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
80420acb 2888 (base32 "04qmin6nj144b8qb9kkd9a52xfvm0qdgm8bg8jbl7s3frmyiv8pm"))
fc1adab1 2889 (patches (search-patches "portaudio-audacity-compat.patch"))))
bd4464f2
TUBK
2890 (build-system gnu-build-system)
2891 (inputs
2892 ;; TODO: Add ASIHPI.
2893 `(("alsa-lib" ,alsa-lib)
bcbc02fd 2894 ("jack" ,jack-1)))
cdb4048d
RW
2895 ;; Autoreconf is necessary because the audacity-compat patch modifies .in
2896 ;; files.
bd4464f2 2897 (native-inputs
b47be021
TUBK
2898 `(("autoconf" ,autoconf)
2899 ("automake" ,automake)
2900 ("libtool" ,libtool)
2901 ("pkg-config" ,pkg-config)))
86fded86 2902 (arguments
1ce6bfc2 2903 '(#:tests? #f ;no 'check' target
c9cd4a84 2904 #:parallel-build? #f ;fails on some systems
1ce6bfc2
NG
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")
86fded86
RW
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)))))
bd4464f2
TUBK
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
2932to record and/or play sound using a callback function or a blocking read/write
2933interface.")
2934 (license license:expat)))
74bbf894 2935
fe73aef4
RW
2936(define-public qsynth
2937 (package
2938 (name "qsynth")
5e4cb92e 2939 (version "0.5.7")
fe73aef4
RW
2940 (source
2941 (origin
2942 (method url-fetch)
de67e922
LF
2943 (uri (string-append "mirror://sourceforge/qsynth/qsynth/" version
2944 "/qsynth-" version ".tar.gz"))
fe73aef4 2945 (sha256
5e4cb92e 2946 (base32 "18im4w8agj60nkppwbkxqnhpp13z5li3w30kklv4lgs20rvgbvl6"))))
fe73aef4
RW
2947 (build-system gnu-build-system)
2948 (arguments
5e4cb92e 2949 `(#:tests? #f)) ; no "check" phase
598f6394 2950 (native-inputs
4ed4bb11
RW
2951 `(("qttools" ,qttools)
2952 ("pkg-config" ,pkg-config)))
fe73aef4 2953 (inputs
598f6394
DC
2954 `(("fluidsynth" ,fluidsynth)
2955 ("qtbase" ,qtbase)
2956 ("qtx11extras" ,qtx11extras)))
12c8c997 2957 (home-page "https://qsynth.sourceforge.io")
fe73aef4
RW
2958 (synopsis "Graphical user interface for FluidSynth")
2959 (description
2960 "Qsynth is a GUI front-end application for the FluidSynth SoundFont
2961synthesizer written in C++.")
2962 (license license:gpl2+)))
2963
55b596c3
TUBK
2964(define-public rsound
2965 (package
2966 (name "rsound")
2967 (version "1.1")
2968 (source
2969 (origin
458baefb
RW
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))
55b596c3 2975 (sha256
458baefb 2976 (base32 "0gspmr3klwnq98h17p5hc6ifygya4p80g4g8r7a1qavm3mv19waf"))))
55b596c3
TUBK
2977 (build-system gnu-build-system)
2978 (inputs
2979 `(("alsa-lib" ,alsa-lib)
276f49df 2980 ("jack" ,jack-1)
55b596c3
TUBK
2981 ("ao" ,ao)
2982 ("libsamplerate" ,libsamplerate)
2983 ("openal" ,openal)
2984 ("portaudio" ,portaudio)
2985 ("pulseaudio" ,pulseaudio)))
2986 (arguments
2987 '(#:phases
dc1d3cde
KK
2988 (modify-phases %standard-phases
2989 (replace 'configure
2990 (lambda* (#:key outputs #:allow-other-keys)
2991 (setenv "CC" "gcc")
c3d14484
TGR
2992 (invoke "./configure"
2993 (string-append "--prefix=" (assoc-ref outputs "out"))))))
55b596c3
TUBK
2994 ;; No 'check' target.
2995 #:tests? #f))
286ab9d3 2996 (home-page "https://themaister.net/rsound.html")
55b596c3
TUBK
2997 (synopsis "Networked audio system")
2998 (description
2999 "RSound allows you to send audio from an application and transfer it
3000directly to a different computer on your LAN network. It is an audio daemon
3001with a much different focus than most other audio daemons.")
3002 (license license:gpl3+)))
3003
caf9055c
RW
3004(define-public xjackfreak
3005 (package
3006 (name "xjackfreak")
3007 (version "1.0")
3008 (source (origin
8e5995e3
RW
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))
caf9055c
RW
3014 (sha256
3015 (base32
8e5995e3 3016 "18c546qidbrj0f5wfiq5llii2192xpln0ab3r4vpr7i3wybxqjfz"))))
caf9055c
RW
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
3033Connection Kit. It can display the FFT of any input, modify it and output the
3034result.")
3035 (license license:gpl3+)))
3036
d73f7909
RW
3037(define-public zita-convolver
3038 (package
3039 (name "zita-convolver")
1c1ce52a 3040 (version "4.0.3")
d73f7909
RW
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"))
29e255ca
SB
3047 (snippet
3048 ;; Don't optimize for a specific processor architecture.
6cbee49d 3049 '(begin
1c1ce52a 3050 (substitute* "source/Makefile"
6cbee49d
MW
3051 (("^CXXFLAGS \\+= -march=native") ""))
3052 #t))
29e255ca 3053 (modules '((guix build utils)))
d73f7909
RW
3054 (sha256
3055 (base32
1c1ce52a 3056 "0prji66p86z2bzminywkwchr5bfgxcg2i8y803pydd1hzf2198cs"))))
d73f7909
RW
3057 (build-system gnu-build-system)
3058 (arguments
3059 `(#:tests? #f ; no "check" target
1c1ce52a
AT
3060 #:make-flags
3061 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
3062 (string-append "SUFFIX="))
d73f7909 3063 #:phases
dc1d3cde
KK
3064 (modify-phases %standard-phases
3065 (add-after 'unpack 'patch-makefile-and-enter-directory
3066 (lambda _
1c1ce52a 3067 (substitute* "source/Makefile"
dc1d3cde
KK
3068 (("ldconfig") "true")
3069 (("^LIBDIR =.*") "LIBDIR = lib\n"))
1c1ce52a 3070 (chdir "source")
ee527187 3071 #t))
4f27a333
MB
3072 (add-after 'install 'install-symlink
3073 (lambda _
3074 (symlink "libzita-convolver.so"
3075 (string-append (assoc-ref %outputs "out")
1c1ce52a 3076 "/lib/libzita-convolver.so.4"))
ee527187 3077 #t))
d73f7909 3078 ;; no configure script
4f27a333 3079 (delete 'configure))))
d73f7909 3080 (inputs `(("fftwf" ,fftwf)))
4817bb92 3081 (home-page "https://kokkinizita.linuxaudio.org")
d73f7909
RW
3082 (synopsis "Fast, partitioned convolution engine library")
3083 (description
3084 "Zita convolver is a C++ library providing a real-time convolution
3085engine.")
3086 (license license:gpl3+)))
3087
b7ed6784
RW
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"))
6dff4955
SB
3098 (snippet
3099 ;; Don't optimize for a specific processor architecture.
6cbee49d
MW
3100 '(begin
3101 (substitute* '("apps/Makefile" "libs/Makefile")
3102 (("^CXXFLAGS \\+= -march=native") ""))
3103 #t))
6dff4955 3104 (modules '((guix build utils)))
b7ed6784
RW
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")
ee527187
MW
3127 "/lib/libzita-resampler.so.1"))
3128 #t))
b7ed6784
RW
3129 ;; no configure script
3130 (delete 'configure))))
4817bb92 3131 (home-page "https://kokkinizita.linuxaudio.org/linuxaudio/zita-resampler/resampler.html")
b7ed6784
RW
3132 (synopsis "C++ library for resampling audio signals")
3133 (description
3134 "Libzita-resampler is a C++ library for resampling audio signals. It is
3135designed to be used within a real-time processing context, to be fast, and to
3136provide high-quality sample rate conversion.")
3137 (license license:gpl3+)))
3138
74bbf894
RW
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
9569dfc8 3151 "1rgv332g82rrrlm4vdam6p2pyrisxbi7b3izfaa0pcjglafsy7j9"))))
74bbf894
RW
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
dc1d3cde
KK
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")
ee527187
MW
3169 "/lib/libzita-alsa-pcmi.so.0"))
3170 #t))
dc1d3cde
KK
3171 ;; no configure script
3172 (delete 'configure))))
74bbf894
RW
3173 (inputs
3174 `(("alsa-lib" ,alsa-lib)
3175 ("fftw" ,fftw)))
4817bb92 3176 (home-page "https://kokkinizita.linuxaudio.org")
74bbf894
RW
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
3180access to ALSA PCM devices, taking care of the many functions required to
3181open, initialise and use a hw: device in mmap mode, and providing floating
3182point audio data.")
3183 (license license:gpl3+)))
6da16993
LF
3184
3185(define-public cuetools
3186 (package
3187 (name "cuetools")
3188 (version "1.4.1")
3189 (source (origin
4289a306
RW
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))
6da16993
LF
3195 (sha256
3196 (base32
4289a306 3197 "02ksv1ahf1v4cr2xbclsfv5x17m9ivzbssb5r8xjm97yh8a7spa3"))))
6da16993 3198 (build-system gnu-build-system)
4289a306 3199 ;; The source checkout is not bootstrapped.
6da16993
LF
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
3207and using CUE sheet (cue) files and Table of Contents (toc) files. CUE and TOC
3208files are a way to represent the layout of a data or audio CD in a
3209machine-readable ASCII format.")
3210 (home-page "https://github.com/svend/cuetools")
3211 (license license:gpl2+)))
6819a8dd
LF
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
3227utility. File formats are abstracted from its core, so it can process any file
3228that contains WAVE data, compressed or not---provided there exists a format
d5b357ec
LF
3229module to handle that particular file type. It can also generate CUE files, and
3230use them split WAVE data into multiple files.")
6819a8dd 3231 (home-page "http://etree.org/shnutils/shntool/")
6ac2af78
LF
3232 ;; 'install-sh' bears the x11 license
3233 (license (list license:gpl2+ license:x11))))
680b54c5
DT
3234
3235(define-public dcadec
3236 (package
3237 (name "dcadec")
3238 (version "0.2.0")
3239 (source (origin
b249ff5d
RW
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))
680b54c5
DT
3245 (sha256
3246 (base32
b249ff5d 3247 "07nd0ajizrp1w02bsyfcv18431r8m8rq8gjfmz9wmckpg7cxj2hs"))))
680b54c5
DT
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
3267with support for HD extensions.")
3268 (home-page "https://github.com/foo86/dcadec")
3269 (license license:lgpl2.1+)))
e87c7ec2
AG
3270
3271(define-public bs1770gain
3272 (package
3273 (name "bs1770gain")
39c746f0 3274 (version "0.6.5")
e87c7ec2
AG
3275 (source
3276 (origin
3277 (method url-fetch)
3278 (uri (string-append "mirror://sourceforge/bs1770gain/bs1770gain/"
3279 version "/bs1770gain-" version ".tar.gz"))
3280 (sha256
39c746f0 3281 (base32 "15nvlh9bg0a52cpg2mii17mlzmxszwivjjalbb4np1v5nj8l5fk6"))
17098a49
LF
3282 (modules '((guix build utils)))
3283 (snippet
3284 '(begin
3285 ;; XXX
39c746f0
TGR
3286 (substitute* (find-files "." "\\.[ch]$")
3287 (("^ \\* N..o.*") ""))
a2931b14 3288 (substitute* "libbg/bgx.c"
39c746f0
TGR
3289 (("#define BG.* ") "#define BS ")
3290 (("BG.*NO?.*N.*S.*E.*N.*SE?") "NO")
a2931b14
TGR
3291 (("\"( #|N).*\"") "\"\""))
3292 (substitute* (list "config.h"
3293 "configure.ac"
3294 "configure")
3295 (("https?://bs1770gain[^/]*/")
2777dc75
TGR
3296 "https://manpages.debian.org/sid/bs1770gain/bs1770gain.1.en.html"))
3297 #t))))
e87c7ec2
AG
3298 (build-system gnu-build-system)
3299 (inputs `(("ffmpeg" ,ffmpeg)
3300 ("sox" ,sox)))
17098a49 3301 (home-page "https://manpages.debian.org/sid/bs1770gain/bs1770gain.1.en.html")
e87c7ec2
AG
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
3305flavors EBU R128, ATSC A/85, and ReplayGain 2.0. It helps normalizing the
3306loudness of audio and video files to the same level.")
3307 (license license:gpl2+)))
eb64bde1
EE
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
3337code, used in @code{libtoxcore}.")
3338 (home-page "https://github.com/irungentoo/filter_audio")
3339 (license license:bsd-3))))
9a4c032c
LG
3340
3341(define-public gsm
3342 (package
3343 (name "gsm")
aabe29af 3344 (version "1.0.18")
9a4c032c
LG
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
aabe29af 3353 "041amvpz8cvxykl3pwqldrzxligmmzcg8ncdnxbg32rlqf3q1xh4"))))
9a4c032c
LG
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"))
ee527187
MW
3370 (mkdir-p (string-append out "/lib")))
3371 #t))
9a4c032c
LG
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"
ee527187
MW
3379 (string-append out "/include/gsm")))
3380 #t))
aabe29af 3381 (delete 'configure)))) ; no configure script
9a4c032c
LG
3382 (synopsis "GSM 06.10 lossy speech compression library")
3383 (description "This C library provides an encoder and a decoder for the GSM
338406.10 RPE-LTP lossy speech compression algorithm.")
3385 (home-page "http://quut.com/gsm/")
3386 (license (license:non-copyleft "file://COPYRIGHT"))))
84d9abe4
DM
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)))
5adaeb36 3403 (home-page "https://larsimmisch.github.io/pyalsaaudio/")
84d9abe4
DM
3404 (synopsis "ALSA wrappers for Python")
3405 (description
3406 "This package contains wrappers for accessing the ALSA API from Python.
3407It is currently fairly complete for PCM devices, and has some support for
3408mixers.")
3409 (license license:psfl)))
3410
3411(define-public python2-pyalsaaudio
3412 (package-with-python2 python-pyalsaaudio))
d0c8e524 3413
dba33ca3
RW
3414(define-public bluez-alsa
3415 (package
3416 (name "bluez-alsa")
9f9520a1 3417 (version "2.0.0")
dba33ca3
RW
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))))
9f9520a1 3425 (file-name (git-file-name name version))
dba33ca3
RW
3426 (sha256
3427 (base32
9f9520a1 3428 "08mppgnjf1j2733bk9yf0cny6rfxxwiys0s62lz2zd2lpdl6d9lz"))))
dba33ca3 3429 (build-system gnu-build-system)
9f9520a1
RW
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")
8f2e2120 3437 "/etc/dbus-1/system.d"))))
dba33ca3
RW
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)
9f9520a1 3446 ("dbus" ,dbus)
dba33ca3
RW
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
3455Bluez and ALSA. Since Bluez >= 5, the build-in integration has been removed
3456in favor of 3rd party audio applications. From now on, Bluez acts as a
3457middleware between an audio application, which implements Bluetooth audio
3458profile, and a Bluetooth audio device. BlueALSA registers all known Bluetooth
3459audio profiles in Bluez, so in theory every Bluetooth device (with audio
3460capabilities) can be connected. In order to access the audio stream, one has
3461to connect to the ALSA PCM device called @code{bluealsa}. The device is based
3462on the ALSA software PCM plugin.")
3463 (license license:expat)))
3464
d0c8e524
SB
3465(define-public snd
3466 (package
3467 (name "snd")
b1d13e40 3468 (version "19.9")
d0c8e524
SB
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
b1d13e40 3475 "13s8fahpsjygjdrcwmprcrz23ny3klaj2rh2xzdv3bfs69gxvhys"))))
d0c8e524
SB
3476 (build-system glib-or-gtk-build-system)
3477 (arguments
4ae9274a 3478 `(#:tests? #f ; no tests
d0c8e524
SB
3479 #:out-of-source? #f ; for the 'install-doc' phase
3480 #:configure-flags
3481 (let* ((out (assoc-ref %outputs "out"))
94774876
TGR
3482 (docdir (string-append out "/share/doc/"
3483 ,name "-" ,version)))
d0c8e524
SB
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"))
4ae9274a
TGR
3491 (doc (string-append out "/share/doc/"
3492 ,name "-" ,version)))
d0c8e524
SB
3493 (for-each
3494 (lambda (f)
4ae9274a 3495 (install-file f doc))
3ef664d0 3496 (find-files "." "\\.html$"))
4ae9274a 3497 (copy-recursively "pix" (string-append doc "/pix"))
d0c8e524
SB
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
3521customized and extended using either the s7 Scheme implementation (included in
3522the Snd sources), Ruby, or Forth.")
3523 (license (license:non-copyleft "file://COPYING"))))
adedbe95 3524
cf31d5e1
RW
3525(define-public noise-repellent
3526 (package
3527 (name "noise-repellent")
f6c8ba31 3528 (version "0.1.5")
cf31d5e1
RW
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
f6c8ba31
TGR
3537 "0hb89x9i2knzan46q4nwscf5zmnb2nwf4w13xl2c0y1mx1ls1mwl"))))
3538 (build-system meson-build-system)
cf31d5e1 3539 (arguments
f6c8ba31
TGR
3540 `(#:configure-flags
3541 (list (string-append "--prefix=" (assoc-ref %outputs "out")
3542 "/lib/lv2"))))
cf31d5e1
RW
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
3551the 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
adedbe95
OP
3569(define-public cli-visualizer
3570 (package
3571 (name "cli-visualizer")
e121cb87 3572 (version "1.8")
adedbe95
OP
3573 (source
3574 (origin
c2a2d364
RW
3575 (method git-fetch)
3576 (uri (git-reference
3577 (url "https://github.com/dpayne/cli-visualizer.git")
e121cb87 3578 (commit (string-append "v" version))))
c2a2d364 3579 (file-name (git-file-name name version))
adedbe95 3580 (sha256
e121cb87
TGR
3581 (base32 "003mbbwsz43mg3d7llphpypqa9g7rs1p1cdbqi1mbc2bfrc1gcq2"))))
3582 (build-system cmake-build-system)
adedbe95 3583 (native-inputs
e121cb87
TGR
3584 ;; TODO: Try using the latest googletest for versions > 1.8.
3585 `( ;; ("googletest" ,googletest-1.8)
3586 ("which" ,which)))
adedbe95
OP
3587 (inputs
3588 `(("fftw" ,fftw)
adedbe95
OP
3589 ("ncurses" ,ncurses)
3590 ("pulseaudio" ,pulseaudio)))
3591 (arguments
e121cb87
TGR
3592 '(#:tests? #f
3593 ;; XXX Enable tests after patching them to use the system googletest.
3594 ;; #:configure-flags (list "-DVIS_WITH_TESTS=true")
adedbe95
OP
3595 #:phases
3596 (modify-phases %standard-phases
e121cb87
TGR
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 ".")))
adedbe95
OP
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
3611transforms (FFTs) of the sound being played, as well as other graphical
3612representations.")
3613 (license license:expat)))
c2c0d661
OP
3614
3615(define-public cava
3616 (package
3617 (name "cava")
042fa638 3618 (version "0.6.1")
c2c0d661 3619 (source (origin
a7fde1a8
RW
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))
c2c0d661
OP
3625 (sha256
3626 (base32
a7fde1a8 3627 "1kvhqgijs29909w3sq9m0bslx2zxxn4b3i07kdz4hb0dqkppxpjy"))))
c2c0d661
OP
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)
9e3e80ba 3640 (string-append "FONT_DIR=" %output "/share/consolefonts"))
c2c0d661
OP
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
189be331 3646 (replace 'bootstrap
c2c0d661
OP
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)
ee527187
MW
3652 (mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
3653 #t))
c2c0d661
OP
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")))
ee527187
MW
3660 (find-files "example_files"))
3661 #t)))))
c2c0d661
OP
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
3665using ALSA, MPD, PulseAudio, or a FIFO buffer as its input.")
3666 (license license:expat)))
9073c875 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)
e3cfef22
MW
3694 (copy-file file (string-append out "/FluidR3Mono_GM.sf3"))
3695 #t))))
9073c875 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))))
5c40a69f
LF
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
3726Coding (AAC) format audio, developed by Fraunhofer IIS, and included as part of
3727Android. It supports several Audio Object Types including MPEG-2 and MPEG-4 AAC
3728LC, HE-AAC (AAC LC + SBR), HE-AACv2 (LC + SBR + PS) as well AAC-LD (low delay)
3729and AAC-ELD (enhanced low delay) for real-time communication. The encoding
3730library supports sample rates up to 96 kHz and up to eight channels (7.1
3731surround).")
3732 (license (license:fsf-free "https://github.com/mstorsjo/fdk-aac/blob/master/NOTICE"
3733 "https://www.gnu.org/licenses/license-list.html#fdk")))))
ef8517f2
EB
3734
3735(define-public libopenshot-audio
3736 (package
3737 (name "libopenshot-audio")
f5756687 3738 (version "0.2.0")
ef8517f2
EB
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
f5756687 3747 "13if0m5mvlqly8gmbhschzb9papkgp3yqivklhb949dhy16m8zgf"))))
ef8517f2
EB
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
3766high-quality editing and playback of audio, and is based on the JUCE
3767library.")
3768 (license license:lgpl3+)))
ea3510f8
RH
3769
3770(define-public faudio
3771 (package
3772 (name "faudio")
c44db46f 3773 (version "19.11")
ea3510f8
RH
3774 (source
3775 (origin
3776 (method git-fetch)
3777 (uri (git-reference
3778 (url "https://github.com/FNA-XNA/FAudio.git")
3779 (commit version)))
543f7ad1 3780 (file-name (git-file-name name version))
ea3510f8 3781 (sha256
c44db46f 3782 (base32 "0ckpr6ffz8ssfh1y850dhip5s5jv0j6n90qz5yx1v9d6gpwf08rp"))))
ea3510f8
RH
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
3793developing fully accurate DirectX Audio runtime libraries.")
3794 (license license:zlib)))
e13714b6
AI
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
3819intended to be used for brainwave entrainment. Gnaural supports creation of
3820binaural beat tracks of different frequencies and exporting of tracks into
3821different audio formats. Gnaural can also be linked over the internet with
3822other Gnaural instances, allowing synchronous sessions between many users.")
3823 (license license:gpl2+)))
2f4698d7
MW
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
3854a sound card, encodes it into Ogg Vorbis and/or mp3, and sends the audio
3855stream to one or more IceCast and/or ShoutCast servers.")
3856 (license license:gpl3+)))
0f2ce448
AT
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+)))
74f9a8fb
AT
3882
3883(define-public redkite
3884 (package
3885 (name "redkite")
3886 (version "0.6.2")
3887 (source
3888 (origin
83ba0e42
MB
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))
74f9a8fb
AT
3894 (sha256
3895 (base32
83ba0e42 3896 "1i874izajbdhlfacwwj84qrsxf7g4y6nblzxalrkzaap9sa7d1r6"))))
74f9a8fb
AT
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
3906inspired from other well known GUI toolkits such as Qt and GTK. It is
3907minimal on purpose and is intended to be statically linked to applications,
3908therefore satisfying any requirements they may have to be self contained,
3909as is the case with audio plugins.")
3910 (home-page "https://gitlab.com/geontime/redkite")
3911 (license license:gpl3+)))
caa1f6a8
AT
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
5424e680 3935 (delete 'configure) ; no configure script
caa1f6a8
AT
3936 (add-before 'build 'set-CC-variable-and-show-features
3937 (lambda _
3938 (setenv "CC" "gcc")
3939 (invoke "make" "features")))
5424e680
TGR
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)))
1ab58a3d
TGR
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))))))
caa1f6a8
AT
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)
1ab58a3d
TGR
3968 ("zlib" ,zlib)
3969
3970 ;; For WRAP-SCRIPT above.
3971 ("guile" ,guile-2.2)))
caa1f6a8
AT
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
3977transport control, automation of parameters via MIDI CC and remote control
3978over OSC. Carla currently supports LADSPA (including LRDF), DSSI, LV2, VST2,
3979and VST3 plugin formats, plus SF2 and SFZ file support. It uses JACK as the
3980default and preferred audio driver but also supports native drivers like ALSA.")
3981 (license license:gpl2+)))
615a4fbf
CLW
3982
3983(define-public ecasound
3984 (package
3985 (name "ecasound")
ec67d069 3986 (version "2.9.3")
615a4fbf
CLW
3987 (source (origin
3988 (method url-fetch)
694c2976 3989 (uri (string-append "https://nosignal.fi/download/ecasound-"
615a4fbf
CLW
3990 version ".tar.gz"))
3991 (sha256
ec67d069 3992 (base32 "1m7njfjdb7sqf0lhgc4swihgdr4snkg8v02wcly08wb5ar2fr2s6"))))
615a4fbf
CLW
3993 (build-system gnu-build-system)
3994 (native-inputs `(("pkg-config" ,pkg-config)))
ec67d069
TGR
3995 ;; It would be nice to add mikmod to inputs if that gets packaged
3996 ;; eventually.
615a4fbf
CLW
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)))
694c2976 4010 (home-page "https://nosignal.fi/ecasound/index.php")
615a4fbf
CLW
4011 (synopsis "Multitrack audio processing")
4012 (description "Ecasound is a software package designed for multitrack audio
4013processing. It can be used for simple tasks like audio playback, recording and
4014format conversions, as well as for multitrack effect processing, mixing,
4015recording and signal recycling. Ecasound supports a wide range of audio inputs,
4016outputs and effect algorithms. Effects and audio objects can be combined in
4017various ways, and their parameters can be controlled by operator objects like
4018oscillators and MIDI-CCs. A versatile console mode user-interface is included
4019in the package.")
d83bb797
JW
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
615a4fbf
CLW
4023 ;; that are not licensed under GPL.
4024 (license (list license:gpl2 license:lgpl2.1))))
5d703da3
AT
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
4051libsamplerate 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+)))
70d9ef51
AT
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
4083given plugin and its UI(s) match up with the provided metadata and adhere
4084to well-known best practices.")
4085 (home-page "https://open-music-kontrollers.ch/lv2/lv2lint/")
4086 (license license:artistic2.0)))