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