gnu: console-setup: Update to 1.207.
[jackhill/guix/guix.git] / gnu / packages / audio.scm
CommitLineData
fb68469f 1;;; GNU Guix --- Functional package management for GNU
4f38e0e4 2;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 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>
267d5947 7;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 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>
c7fc5086 11;;; Copyright © 2016–2022 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>
bd41e590 18;;; Copyright © 2018, 2021 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>
7fc922fd 21;;; Copyright © 2019, 2021 Pierre Langlois <pierre.langlois@gmx.com>
80986c6a 22;;; Copyright © 2019, 2021 Leo Famulari <leo@famulari.name>
ea3510f8 23;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
ac886034 24;;; Copyright © 2019, 2021 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>
94551439 27;;; Copyright © 2019 Christine 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>
4b980563 30;;; Copyright © 2019, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
391d12ff 31;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
f1b0d0d7 32;;; Copyright © 2020, 2021 Guillaume Le Vaillant <glv@posteo.net>
ecd56cd1 33;;; Copyright © 2020 Jonathan Frederickson <jonathan@terracrypt.net>
6241eacd 34;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
177ff077 35;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net>
b0cd4e04 36;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
653bcab9 37;;; Copyright © 2021 jgart <jgart@dismail.de>
0745c820 38;;; Copyright © 2021 Aleksandr Vityazev <avityazev@posteo.org>
830344a9 39;;; Copyright © 2022 Arjan Adriaanse <arjan@adriaan.se>
fb68469f
RW
40;;;
41;;; This file is part of GNU Guix.
42;;;
43;;; GNU Guix is free software; you can redistribute it and/or modify it
44;;; under the terms of the GNU General Public License as published by
45;;; the Free Software Foundation; either version 3 of the License, or (at
46;;; your option) any later version.
47;;;
48;;; GNU Guix is distributed in the hope that it will be useful, but
49;;; WITHOUT ANY WARRANTY; without even the implied warranty of
50;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
51;;; GNU General Public License for more details.
52;;;
53;;; You should have received a copy of the GNU General Public License
54;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
55
56(define-module (gnu packages audio)
fb68469f 57 #:use-module (gnu packages)
d55f912a 58 #:use-module (gnu packages algebra)
9f1cdd9d 59 #:use-module (gnu packages autotools)
fcbeb00b 60 #:use-module (gnu packages avahi)
a76abae1 61 #:use-module (gnu packages backup)
7c92efff 62 #:use-module (gnu packages base)
fda85ca6 63 #:use-module (gnu packages bison)
4c76af04 64 #:use-module (gnu packages build-tools)
522ec708 65 #:use-module (gnu packages boost)
971ebdc8 66 #:use-module (gnu packages check)
7c92efff 67 #:use-module (gnu packages compression)
88efb2c3 68 #:use-module (gnu packages curl)
255d1bbe 69 #:use-module (gnu packages dbm)
0f2ce448 70 #:use-module (gnu packages documentation)
70d9ef51 71 #:use-module (gnu packages elf)
8ae60404 72 #:use-module (gnu packages emacs)
754a98ae 73 #:use-module (gnu packages file)
fda85ca6 74 #:use-module (gnu packages flex)
11d4800a
RW
75 #:use-module (gnu packages fltk)
76 #:use-module (gnu packages fontutils)
25e49169 77 #:use-module (gnu packages gcc)
fda85ca6 78 #:use-module (gnu packages gettext)
f5340e00 79 #:use-module (gnu packages gl)
88efb2c3 80 #:use-module (gnu packages glib)
88efb2c3 81 #:use-module (gnu packages gnome)
8ae60404 82 #:use-module (gnu packages gnunet) ; libmicrohttpd
fcbeb00b 83 #:use-module (gnu packages gperf)
ac886034 84 #:use-module (gnu packages groff)
12158b83 85 #:use-module (gnu packages gstreamer)
522ec708 86 #:use-module (gnu packages gtk)
1ab58a3d 87 #:use-module (gnu packages guile)
247384d0 88 #:use-module (gnu packages icu4c)
d739f481 89 #:use-module (gnu packages image)
dba33ca3 90 #:use-module (gnu packages libbsd)
58932576 91 #:use-module (gnu packages libffi)
72d9ef1b 92 #:use-module (gnu packages libusb)
522ec708 93 #:use-module (gnu packages linux)
8ae60404 94 #:use-module (gnu packages llvm)
2f0107d8 95 #:use-module (gnu packages machine-learning)
670da398 96 #:use-module (gnu packages man)
522ec708 97 #:use-module (gnu packages maths)
88efb2c3 98 #:use-module (gnu packages mp3) ;taglib
522ec708
TGR
99 #:use-module (gnu packages multiprecision)
100 #:use-module (gnu packages music)
101 #:use-module (gnu packages ncurses)
17aa4eb4 102 #:use-module (gnu packages networking)
522ec708 103 #:use-module (gnu packages onc-rpc)
88efb2c3 104 #:use-module (gnu packages perl)
c54a8981
RW
105 #:use-module (gnu packages pkg-config)
106 #:use-module (gnu packages pulseaudio) ;libsndfile, libsamplerate
d55f912a 107 #:use-module (gnu packages python)
b615790a 108 #:use-module (gnu packages python-science)
44d10b1f 109 #:use-module (gnu packages python-xyz)
522ec708 110 #:use-module (gnu packages qt)
5279eb6f 111 #:use-module (gnu packages rdf)
c54a8981 112 #:use-module (gnu packages readline)
ea3510f8 113 #:use-module (gnu packages sdl)
247384d0 114 #:use-module (gnu packages serialization)
f2acd45e 115 #:use-module (gnu packages sqlite)
dba33ca3 116 #:use-module (gnu packages telephony)
9be3ab7b 117 #:use-module (gnu packages linphone)
ac886034 118 #:use-module (gnu packages linux)
8ae60404 119 #:use-module (gnu packages tls)
7cd2609e 120 #:use-module (gnu packages valgrind)
e87c7ec2 121 #:use-module (gnu packages video)
8ae60404 122 #:use-module (gnu packages vim) ;xxd
bf592ef5 123 #:use-module (gnu packages web)
02979664 124 #:use-module (gnu packages webkit)
cd381c31 125 #:use-module (gnu packages wxwidgets)
c54a8981 126 #:use-module (gnu packages xiph)
da49086a 127 #:use-module (gnu packages xml)
caf9055c 128 #:use-module (gnu packages xorg)
522ec708 129 #:use-module (guix build-system cmake)
d4bd5c60 130 #:use-module (guix build-system copy)
522ec708
TGR
131 #:use-module (guix build-system glib-or-gtk)
132 #:use-module (guix build-system gnu)
133 #:use-module (guix build-system meson)
134 #:use-module (guix build-system python)
135 #:use-module (guix build-system trivial)
136 #:use-module (guix build-system waf)
137 #:use-module (guix download)
138 #:use-module (guix git-download)
c7fc5086 139 #:use-module (guix gexp)
522ec708
TGR
140 #:use-module ((guix licenses) #:prefix license:)
141 #:use-module (guix packages)
142 #:use-module (guix utils)
118a8ecc
EF
143 #:use-module (srfi srfi-1)
144 #:use-module (srfi srfi-26))
fb68469f 145
08d048a0
RG
146(define-public opensles
147 (package
148 (name "opensles")
149 (version "1.1.0")
150 (source
151 (origin
152 (method git-fetch)
153 (uri
154 (git-reference
8ed4c468 155 (url "https://github.com/KhronosGroup/OpenSL-ES-Registry")
08d048a0
RG
156 (commit "ea5104bf37bf525c25e6ae2386586048179d0fda")))
157 (file-name (git-file-name name version))
158 (sha256
159 (base32 "0j5bm7h3ahz66f23i9abwc0y10agfkpksnj6y078x2nichq66h4f"))
160 (patches
161 (search-patches "opensles-add-license-file.patch"))))
162 (build-system copy-build-system)
163 (arguments
164 `(#:phases
165 (modify-phases %standard-phases
166 (add-after 'install 'clean
167 (lambda* (#:key outputs #:allow-other-keys)
168 (let* ((out (assoc-ref outputs "out")))
169 (mkdir-p (string-append out "/etc"))
170 (mkdir-p (string-append out "/include"))
171 (mkdir-p (string-append out "/share"))
172 (rename-file
173 (string-append out "/api/1.1/OpenSLES_IID.c")
174 (string-append out "/etc/OpenSLES_IID.c"))
175 (rename-file
176 (string-append out "/api/1.1/OpenSLES.h")
177 (string-append out "/include/OpenSLES.h"))
178 (rename-file
179 (string-append out "/api/1.1/OpenSLES_Platform.h")
180 (string-append out "/include/OpenSLES_Platform.h"))
181 (rename-file
182 (string-append out "/api/1.1/README.txt")
183 (string-append out "/share/README.txt"))
184 (rename-file
185 (string-append out "/LICENSE.txt")
186 (string-append out "/share/LICENSE.txt"))
187 (for-each delete-file-recursively
188 (list
189 (string-append out "/api")
190 (string-append out "/specs")))
191 (for-each delete-file
192 (list
193 (string-append out "/CODE_OF_CONDUCT.md")
194 (string-append out "/index.php")
195 (string-append out "/README.md"))))
196 #t)))))
197 (synopsis "Embedded Audio Acceleration")
198 (description "OpenSLES is a royalty-free, cross-platform,
199hardware-accelerated audio API tuned for embedded systems. It provides a
200standardized, high-performance, low-latency method to access audio
201functionality for developers of native applications on embedded mobile
202multimedia devices, enabling straightforward cross-platform deployment of
203hardware and software audio capabilities, reducing implementation effort, and
204promoting the market for advanced audio.")
205 (home-page "https://www.khronos.org/opensles/")
206 (license (license:non-copyleft "file:///LICENSE.txt"))))
207
3afbc16b
RG
208(define-public wildmidi
209 (package
210 (name "wildmidi")
1585452e 211 (version "0.4.4")
3afbc16b
RG
212 (source
213 (origin
214 (method git-fetch)
215 (uri
216 (git-reference
8ed4c468 217 (url "https://github.com/Mindwerks/wildmidi")
3afbc16b
RG
218 (commit (string-append name "-" version))))
219 (file-name (git-file-name name version))
220 (sha256
1585452e 221 (base32 "08fbbsvw6pkwwqarjwcvdp8mq4zn5sgahf025hynwc6rvf4sp167"))))
3afbc16b
RG
222 (build-system cmake-build-system)
223 (arguments
224 `(#:tests? #f ; No target
225 #:configure-flags
226 (list
227 "-DWANT_ALSA=ON"
228 "-DWANT_OSS=ON"
229 "-DWANT_OPENAL=ON")))
230 (inputs
231 `(("alsa" ,alsa-lib)
232 ("openal" ,openal)))
233 (synopsis "Software Synthesizer")
234 (description "WildMIDI is a simple software midi player which has a core
235softsynth library that can be use with other applications.")
236 (home-page "https://www.mindwerks.net/projects/wildmidi/")
237 (license
238 (list
239 ;; Library.
240 license:lgpl3+
241 ;; Player.
242 license:gpl3+))))
243
94e8c890
RG
244(define-public webrtc-audio-processing
245 (package
246 (name "webrtc-audio-processing")
247 (version "0.3.1")
248 (source
249 (origin
250 (method url-fetch)
251 (uri
252 (string-append "http://freedesktop.org/software/pulseaudio/"
253 name "/" name "-" version ".tar.xz"))
254 (sha256
255 (base32 "1gsx7k77blfy171b6g3m0k0s0072v6jcawhmx1kjs9w5zlwdkzd0"))))
256 (build-system gnu-build-system)
257 (synopsis "WebRTC's Audio Processing Library")
258 (description "WebRTC-Audio-Processing library based on Google's
259implementation of WebRTC.")
260 (home-page
261 "https://freedesktop.org/software/pulseaudio/webrtc-audio-processing/")
262 (license (license:non-copyleft "file:///COPYING"))))
263
5ca56bd5
RG
264(define-public vo-aacenc
265 (package
266 (name "vo-aacenc")
267 (version "0.1.3")
268 (source
269 (origin
270 (method url-fetch)
271 (uri
272 (string-append "https://sourceforge.net/projects/opencore-amr/files/"
273 name "/" name "-" version ".tar.gz"))
274 (sha256
275 (base32 "0dhghm3c8pqrriwwyj5x9i0yf52fmdfijbgqqkvqvwarldvp86p5"))))
276 (build-system gnu-build-system)
277 (synopsis "VisualOn AAC Encoder")
278 (description "VO-AACENC is the VisualOn implementation of Advanced Audio
279Coding (AAC) encoder.")
280 (home-page "https://sourceforge.net/projects/opencore-amr/")
281 (license license:asl2.0)))
282
d4bd5c60
RG
283(define-public tinyalsa
284 (package
285 (name "tinyalsa")
286 (version "1.1.1")
287 (source
288 (origin
289 (method git-fetch)
290 (uri
291 (git-reference
8ed4c468 292 (url "https://github.com/tinyalsa/tinyalsa")
d4bd5c60
RG
293 (commit version)))
294 (file-name (git-file-name name version))
295 (sha256
296 (base32 "0ajyvml5bnzvhiyyrn42gqwgg23ssxkfh09rvsnywhzxhd0xai4h"))))
297 (build-system gnu-build-system)
298 (arguments
299 `(#:tests? #f ; No target
300 #:phases
301 (modify-phases %standard-phases
302 (delete 'configure))
303 #:make-flags
304 (list
305 (string-append "PREFIX=" (assoc-ref %outputs "out")))))
306 (synopsis "ALSA interfacing library")
307 (description "TinyALSA is a small library to interface with ALSA in the
308Linux kernel.")
309 (home-page "https://github.com/tinyalsa/tinyalsa")
310 (license (license:non-copyleft "file:///NOTICE"))))
311
50ca41ad
LP
312(define-public libgme
313 (package
314 (name "libgme")
315 (version "0.6.3")
316 (source (origin
317 (method url-fetch)
318 (uri (string-append "https://bitbucket.org/mpyne/game-music-emu/"
319 "downloads/game-music-emu-" version
320 ".tar.xz"))
321 (sha256
322 (base32
323 "07857vdkak306d9s5g6fhmjyxk7vijzjhkmqb15s7ihfxx9lx8xb"))))
324 (build-system cmake-build-system)
325 (arguments
326 '(#:tests? #f)) ; no check target
327 (home-page "https://bitbucket.org/mpyne/game-music-emu")
328 (synopsis "Video game music file playback library")
329 (description
330 "Game-music-emu is a collection of video game music file emulators that
331support the following formats and systems:
332@table @code
333@item AY
334ZX Spectrum/Asmtrad CPC
335@item GBS
336Nintendo Game Boy
337@item GYM
338Sega Genesis/Mega Drive
339@item HES
340NEC TurboGrafx-16/PC Engine
341@item KSS
342MSX Home Computer/other Z80 systems (doesn't support FM sound)
343@item NSF/NSFE
344Nintendo NES/Famicom (with VRC 6, Namco 106, and FME-7 sound)
345@item SAP
346Atari systems using POKEY sound chip
347@item SPC
348Super Nintendo/Super Famicom
349@item VGM/VGZ
350Sega Master System/Mark III, Sega Genesis/Mega Drive, BBC Micro
351@end table")
352 (license (list license:lgpl2.1+
353 ;; demo and player directories are under the Expat license
354 license:expat))))
355
d6ef1039
RG
356(define-public libopenmpt
357 (package
358 (name "libopenmpt")
963c235d 359 (version "0.5.9")
d6ef1039
RG
360 (source
361 (origin
362 (method url-fetch)
363 (uri
e48c12a3
TGR
364 (string-append "https://download.openmpt.org/archive/libopenmpt/src/"
365 "libopenmpt-" version "+release.autotools.tar.gz"))
d6ef1039 366 (sha256
963c235d 367 (base32 "0h86p8mnpm98vc4v6jbvrmm02fch7dnn332i26fg3a2s1738m04d"))))
d6ef1039 368 (build-system gnu-build-system)
2933e4d4
TGR
369 (arguments
370 `(#:configure-flags
371 (list (string-append "--docdir=" (assoc-ref %outputs "out")
2c6b6d79
TGR
372 "/share/doc/" ,name "-" ,version))
373 #:phases
374 (modify-phases %standard-phases
375 (add-after 'install 'delete-static-libraries
376 (lambda* (#:key outputs #:allow-other-keys)
377 (let* ((out (assoc-ref outputs "out"))
378 (lib (string-append out "/lib")))
379 (for-each delete-file (find-files lib "\\.a$"))
380 #t))))))
d6ef1039 381 (native-inputs
8394619b 382 (list doxygen perl pkg-config))
d6ef1039
RG
383 (inputs
384 `(("alsa" ,alsa-lib)
385 ("flac" ,flac)
386 ("mpg123" ,mpg123)
387 ("portaudio" ,portaudio)
388 ("pulseaudio" ,pulseaudio)
389 ("sdl2" ,sdl2)
390 ("sndfile" ,libsndfile)
391 ("vorbis" ,libvorbis)
392 ("zlib" ,zlib)))
393 (synopsis "Audio tracking library")
394 (description "LibOpenMPT is a cross-platform C++ and C module playback
395library. It is based on the player code of the Open ModPlug Tracker project.")
396 (home-page "https://openmpt.org/")
397 (license (license:non-copyleft "file:///LICENSE"))))
398
38375ce9
RG
399(define-public libofa
400 (package
401 (name "libofa")
402 (version "0.9.3")
403 (source
404 (origin
405 (method url-fetch)
406 (uri
407 (string-append "https://storage.googleapis.com/"
408 "google-code-archive-downloads/v2/code.google.com/"
409 "musicip-libofa/" name "-" version ".tar.gz"))
410 (sha256
411 (base32 "184ham039l7lwhfgg0xr2vch2xnw1lwh7sid432mh879adhlc5h2"))
412 (patches
413 (search-patches
414 "libofa-ftbfs-1.diff"
415 "libofa-curl.diff"
416 "libofa-ftbfs-2.diff"))))
417 (build-system gnu-build-system)
418 (native-inputs
8394619b 419 (list pkg-config))
38375ce9 420 (inputs
8394619b 421 (list curl expat))
38375ce9 422 (propagated-inputs
8394619b 423 (list fftw))
38375ce9
RG
424 (synopsis "Open Fingerprint Architecture")
425 (description "LibOFA is an audio fingerprint library, created and provided
426by MusicIP.")
427 (home-page "https://code.google.com/archive/p/musicip-libofa/")
428 (license license:gpl2+)))
429
de4ca093
RG
430(define-public faac
431 (package
432 (name "faac")
433 (version "1.30")
434 (source
435 (origin
436 (method url-fetch)
437 (uri
3fabb616
RG
438 (string-append "mirror://sourceforge/faac/faac-src"
439 "/faac-" version "/faac-1_30.tar.gz"))
de4ca093
RG
440 (sha256
441 (base32 "1lmj0dib3mjp84jhxc5ddvydkzzhb0gfrdh3ikcidjlcb378ghxd"))))
442 (build-system gnu-build-system)
443 (native-inputs
8394619b 444 (list autoconf automake libtool pkg-config))
de4ca093
RG
445 (synopsis "Freeware Advanced Audio Coder")
446 (description "FAAC is an MPEG-4 and MPEG-2 AAC encoder.")
447 (home-page "https://www.audiocoding.com/faac.html")
448 (license
449 (list
450 ;; ISO MPEG-4 reference code.
451 license:gpl2+
452 ;; Others.
453 license:lgpl2.0+))))
454
568af1bd
RG
455(define-public libtimidity
456 (package
457 (name "libtimidity")
30295ede 458 (version "0.2.7")
568af1bd
RG
459 (source
460 (origin
461 (method url-fetch)
462 (uri
463 (string-append "https://sourceforge.net/projects/" name "/files/"
464 name "/" version "/" name "-" version ".tar.gz"))
465 (sha256
30295ede 466 (base32 "0sif6lxa058b1mg19zwjm8rl2sg8cg0443k4dgi65clz0jy7qi16"))))
568af1bd
RG
467 (build-system gnu-build-system)
468 (arguments
469 `(#:tests? #f)) ; XXX: LibTiMidity could not be initialised
470 (native-inputs
8394619b 471 (list pkg-config))
568af1bd 472 (inputs
8394619b 473 (list ao))
568af1bd
RG
474 (synopsis "MIDI to WAVE converter library")
475 (description "LibTiMidity is a MIDI to WAVE converter library that uses
476Gravis Ultrasound-compatible patch files to generate digital audio data from
477General MIDI files.")
478 (home-page "http://libtimidity.sourceforge.net/")
479 (license
480 ;; This project is dual-licensed.
481 ;; Either of the following licenses can be exercised.
482 (list
483 license:lgpl2.1+
484 license:artistic2.0))))
485
62e9f00c
RG
486(define-public vo-amrwbenc
487 (package
488 (name "vo-amrwbenc")
489 (version "0.1.3")
490 (source
491 (origin
492 (method url-fetch)
493 (uri
494 (string-append "https://sourceforge.net/projects/opencore-amr/files/"
495 name "/" name "-" version ".tar.gz"))
496 (sha256
497 (base32 "0klx3nkidc6b8aawchpk19n3xlrzgnc046w4gd0rdqphw28v6ljn"))))
498 (build-system gnu-build-system)
499 (synopsis "Adaptive Multi Rate Codec")
500 (description "VO-AMR is a library of VisualOn implementation of
501Adaptive Multi Rate Narrowband and Wideband (AMR-NB and AMR-WB) speech codec.")
502 (home-page "https://sourceforge.net/projects/opencore-amr/")
503 (license license:asl2.0)))
504
d5fc8518
RG
505(define-public opencore-amr
506 (package
507 (name "opencore-amr")
508 (version "0.1.5")
509 (source
510 (origin
511 (method url-fetch)
512 (uri
513 (string-append "https://sourceforge.net/projects/opencore-amr/files/"
514 name "/" name "-" version ".tar.gz"))
515 (sha256
516 (base32 "0hfk9khz3by0119h3jdwgdfd7jgkdbzxnmh1wssvylgnsnwnq01c"))))
517 (build-system gnu-build-system)
518 (synopsis "Adaptive Multi Rate Codec")
519 (description "OpenCore-AMR is a library of OpenCORE Framework
520implementation of Adaptive Multi Rate Narrowband and Wideband
521(AMR-NB and AMR-WB) speech codec.")
522 (home-page "https://sourceforge.net/projects/opencore-amr/")
523 (license license:asl2.0)))
524
eb0fb087
RW
525(define-public alsa-modular-synth
526 (package
527 (name "alsa-modular-synth")
9f3cb560 528 (version "2.2.0")
eb0fb087
RW
529 (source (origin
530 (method url-fetch)
de67e922
LF
531 (uri (string-append "mirror://sourceforge/alsamodular/alsamodular"
532 "/" version "/ams-" version ".tar.bz2"))
eb0fb087
RW
533 (sha256
534 (base32
9f3cb560 535 "056dn6b9c5nsw2jdww7z1kxrjqqfvxjzxhsd5x9gi4wkwyiv21nz"))))
eb0fb087
RW
536 (build-system gnu-build-system)
537 (inputs
8394619b
LC
538 (list alsa-lib
539 ;; We cannot use zita-alsa-pcmi (the successor of clalsadrv) due to
540 ;; license incompatibility.
541 clalsadrv
542 fftw
543 jack-1
544 ladspa
545 liblo
546 qtbase-5))
eb0fb087 547 (native-inputs
8394619b 548 (list pkg-config qttools))
eb0fb087
RW
549 (home-page "http://alsamodular.sourceforge.net/")
550 (synopsis "Realtime modular synthesizer and effect processor")
551 (description
552 "AlsaModularSynth is a digital implementation of a classical analog
553modular synthesizer system. It uses virtual control voltages to control the
554parameters of the modules. The control voltages which control the frequency
555e.g. of the VCO (Voltage Controlled Oscillator) and VCF (Voltage Controlled
556Filter) modules follow the convention of 1V / Octave.")
557 (license license:gpl2)))
558
d55f912a
RW
559(define-public aubio
560 (package
561 (name "aubio")
4a17211a 562 (version "0.4.9")
d55f912a
RW
563 (source (origin
564 (method url-fetch)
565 (uri (string-append
c2f6c9ba 566 "https://aubio.org/pub/aubio-" version ".tar.bz2"))
d55f912a
RW
567 (sha256
568 (base32
4a17211a 569 "1npks71ljc48w6858l9bq30kaf5nph8z0v61jkfb70xb9np850nl"))))
d55f912a
RW
570 (build-system waf-build-system)
571 (arguments
4a17211a 572 `(#:tests? #f ; no check target
d55f912a 573 #:configure-flags
409dec3f
TGR
574 (list
575 (string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") "/lib")
576 "--enable-fftw3f"
577 "--enable-jack"
578 "--enable-sndfile"
579 "--enable-samplerate"
4ab9ad1e 580 "--enable-avcodec")
d55f912a
RW
581 #:python ,python-2))
582 (inputs
8394619b 583 (list jack-1 libsndfile libsamplerate fftwf ffmpeg)) ; for libavcodec
d55f912a 584 (native-inputs
8394619b 585 (list pkg-config))
c2f6c9ba 586 (home-page "https://aubio.org/")
a124bbd2 587 (synopsis "Library for audio labelling")
d55f912a
RW
588 (description
589 "aubio is a tool designed for the extraction of annotations from audio
590signals. Its features include segmenting a sound file before each of its
591attacks, performing pitch detection, tapping the beat and producing MIDI
592streams from live audio.")
593 (license license:gpl3+)))
594
d49976ed
RW
595(define (ardour-rpath-phase major-version)
596 `(lambda* (#:key outputs #:allow-other-keys)
597 (let ((libdir (string-append (assoc-ref outputs "out")
598 "/lib/ardour" ,major-version)))
599 (substitute* "wscript"
600 (("linker_flags = \\[\\]")
601 (string-append "linker_flags = [\""
602 "-Wl,-rpath="
603 libdir ":"
604 libdir "/backends" ":"
605 libdir "/engines" ":"
606 libdir "/panners" ":"
607 libdir "/surfaces" ":"
608 libdir "/vamp" "\"]"))))
609 #t))
610
60725232 611(define-public ardour
88efb2c3
RW
612 (package
613 (name "ardour")
bd41e590 614 (version "6.9")
88efb2c3 615 (source (origin
88efb2c3
RW
616 (method git-fetch)
617 (uri (git-reference
7fc922fd 618 (url "git://git.ardour.org/ardour/ardour.git")
88efb2c3
RW
619 (commit version)))
620 (snippet
b16043a3
RW
621 ;; Ardour expects this file to exist at build time. The revision
622 ;; is the output of
623 ;; git describe HEAD | sed 's/^[A-Za-z]*+//'
02ecdeaa 624 `(call-with-output-file
88efb2c3
RW
625 "libs/ardour/revision.cc"
626 (lambda (port)
02ecdeaa 627 (format port ,(string-append "#include \"ardour/revision.h\"
7fc922fd 628namespace ARDOUR { const char* revision = \"" version "\" ; const char* date = \"\"; }"))
6cbee49d 629 #t)))
88efb2c3
RW
630 (sha256
631 (base32
bd41e590 632 "0vlcbd70y0an881zv87kc3akmaiz4w7whsy3yaiiqqjww35jg1mm"))
88efb2c3
RW
633 (file-name (string-append name "-" version))))
634 (build-system waf-build-system)
635 (arguments
b5fc72ff 636 `(#:configure-flags '("--cxx11" ; required by gtkmm
7fc922fd 637 "--optimize"
ba5c8567 638 "--no-phone-home" ; don't contact ardour.org
ff46016e 639 "--freedesktop" ; build .desktop file
5f0c6496 640 "--test") ; build unit tests
92e4fbe2 641 #:phases
21481a28 642 (modify-phases %standard-phases
ff46016e
BT
643 (add-after 'unpack 'set-rpath-in-LDFLAGS
644 ,(ardour-rpath-phase (version-major version)))
645 (add-after 'install 'install-freedesktop-files
646 (lambda* (#:key outputs #:allow-other-keys)
647 (let* ((out (assoc-ref outputs "out"))
648 (share (string-append out "/share"))
649 (ver ,(version-major version)))
650 (for-each
651 (lambda (size)
652 (let ((dir (string-append share "/icons/hicolor/"
653 size "x" size "/apps")))
654 (mkdir-p dir)
655 (copy-file
656 (string-append "gtk2_ardour/resources/Ardour-icon_"
657 size "px.png")
658 (string-append dir "/ardour" ver ".png"))))
659 '("16" "22" "32" "48" "256"))
660 (install-file (string-append "build/gtk2_ardour/ardour"
661 ver ".desktop")
662 (string-append share "/applications/"))
663 (install-file (string-append "build/gtk2_ardour/ardour"
664 ver ".appdata.xml")
665 (string-append share "/appdata/")))
666 #t)))
7fc922fd 667 #:test-target "test"))
88efb2c3 668 (inputs
8394619b
LC
669 (list alsa-lib
670 atkmm
671 aubio
672 boost
673 cairomm
674 curl
675 dbus
676 eudev
677 fftw
678 fftwf
679 flac
680 glibmm
681 gtkmm-2
682 jack-1
683 libarchive
684 libart-lgpl
685 libgnomecanvasmm
686 liblo
687 libogg
688 libsamplerate
689 libsndfile
690 libusb
691 libvorbis
692 libwebsockets
693 libxml2
694 lilv
695 lrdf
696 lv2
697 openssl ; Required by libwebsockets.
698 pangomm
699 python-rdflib
700 pulseaudio
701 readline
702 redland
703 rubberband
704 serd
705 sord
706 soundtouch
707 sratom
708 suil
709 taglib
710 vamp))
88efb2c3 711 (native-inputs
19dd523c 712 `(("cppunit" ,cppunit)
ba5c8567 713 ("gettext" ,gettext-minimal)
19dd523c
BT
714 ("itstool" ,itstool)
715 ("perl" ,perl)
88efb2c3 716 ("pkg-config" ,pkg-config)))
5ba94aa7 717 (home-page "https://ardour.org")
88efb2c3
RW
718 (synopsis "Digital audio workstation")
719 (description
720 "Ardour is a multi-channel digital audio workstation, allowing users to
721record, edit, mix and master audio and MIDI projects. It is targeted at audio
722engineers, musicians, soundtrack editors and composers.")
723 (license license:gpl2+)))
724
cd381c31
KK
725(define-public audacity
726 (package
727 (name "audacity")
3e6c1142 728 (version "2.4.2")
cd381c31
KK
729 (source
730 (origin
8713c03e
TGR
731 (method git-fetch)
732 (uri (git-reference
b0e7b699 733 (url "https://github.com/audacity/audacity")
8713c03e
TGR
734 (commit (string-append "Audacity-" version))))
735 (file-name (git-file-name name version))
cd381c31 736 (sha256
3ae45eb4 737 (base32
3e6c1142
KK
738 "0lklcvqkxrr2gkb9gh3422iadzl2rv9v0a8s76rwq43lj2im7546"))
739 (patches (search-patches "audacity-build-with-system-portaudio.patch"
740 "audacity-add-include.patch"))
3182a1d2
RW
741 (modules '((guix build utils)))
742 (snippet
743 ;; Remove bundled libraries.
744 '(begin
745 (for-each
746 (lambda (dir)
747 (delete-file-recursively (string-append "lib-src/" dir)))
d75a0cd9 748 '("expat" "ffmpeg" "lame" "libflac" "libid3tag" "libmad" "libogg"
3182a1d2 749 "libsndfile" "libsoxr" "libvamp" "libvorbis" "lv2"
3e6c1142 750 "portmidi" "soundtouch" "twolame"
3182a1d2
RW
751 ;; FIXME: these libraries have not been packaged yet:
752 ;; "libnyquist"
753 ;; "libscorealign"
754 ;; "libwidgetextra"
755 ;; "portburn"
756 ;; "portsmf"
757 ;; "portmixer"
758
759 ;; FIXME: we have this library, but it differs in that the Slide
760 ;; class does not have a member "getInverseStretchedTime".
761 ;; "sbsms"
762 ))
763 #t))))
3e6c1142 764 (build-system cmake-build-system)
cd381c31 765 (inputs
8394619b
LC
766 (list wxwidgets
767 gtk+
768 alsa-lib
769 jack-1
770 expat
771 ffmpeg
772 lame
773 flac
774 libid3tag
775 libmad
776 ;;("libsbsms" ,libsbsms) ;bundled version is modified
777 libsndfile
778 soundtouch
779 soxr ;replaces libsamplerate
780 twolame
781 vamp
782 libvorbis
783 lv2
784 lilv ;for lv2
785 suil ;for lv2
786 portmidi))
cd381c31
KK
787 (native-inputs
788 `(("autoconf" ,autoconf)
789 ("automake" ,automake)
790 ("gettext" ,gettext-minimal) ;for msgfmt
791 ("libtool" ,libtool)
792 ("pkg-config" ,pkg-config)
747f68bf 793 ("python" ,python)
cd381c31
KK
794 ("which" ,which)))
795 (arguments
118a8ecc 796 `(#:configure-flags
3e6c1142
KK
797 (list
798 ;; Loading FFmpeg dynamically is problematic.
799 "-Daudacity_use_ffmpeg=linked"
800 "-Daudacity_use_lame=system"
801 "-Daudacity_use_portsmf=system")
fa7f4781
LF
802 #:imported-modules ((guix build glib-or-gtk-build-system)
803 ,@%cmake-build-system-modules)
804 #:modules
805 ((guix build utils)
806 (guix build cmake-build-system)
807 ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:))
cd381c31
KK
808 #:phases
809 (modify-phases %standard-phases
3e6c1142 810 (add-after 'unpack 'comment-out-revision-ident
cd381c31 811 (lambda _
3e6c1142
KK
812 (substitute* "src/AboutDialog.cpp"
813 (("(.*RevisionIdent\\.h.*)" include-line)
814 (string-append "// " include-line)))))
3182a1d2
RW
815 (add-after 'unpack 'use-upstream-headers
816 (lambda* (#:key inputs #:allow-other-keys)
817 (substitute* '("src/NoteTrack.cpp"
818 "src/AudioIO.cpp"
d75a0cd9
KK
819 "src/AudioIO.h"
820 "src/AudioIOBase.cpp")
3182a1d2
RW
821 (("../lib-src/portmidi/pm_common/portmidi.h") "portmidi.h")
822 (("../lib-src/portmidi/porttime/porttime.h") "porttime.h"))
823 (substitute* "src/prefs/MidiIOPrefs.cpp"
fa7f4781
LF
824 (("../../lib-src/portmidi/pm_common/portmidi.h") "portmidi.h"))))
825 (add-after 'wrap-program 'glib-or-gtk-wrap
826 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))
3e6c1142
KK
827 ;; The test suite is not "well exercised" according to the developers,
828 ;; and fails with various errors. See
829 ;; <http://sourceforge.net/p/audacity/mailman/message/33524292/>.
830 #:tests? #f))
2d5fa80e 831 (home-page "https://www.audacityteam.org/")
cd381c31
KK
832 (synopsis "Software for recording and editing sounds")
833 (description
834 "Audacity is a multi-track audio editor designed for recording, playing
835and editing digital audio. It features digital effects and spectrum analysis
836tools.")
837 (license license:gpl2+)))
838
a8e14943
HG
839(define-public audiofile
840 (package
841 (name "audiofile")
842 (version "0.3.6")
843 (source
844 (origin
845 (method url-fetch)
846 (uri (string-append
847 "https://audiofile.68k.org/audiofile-" version ".tar.gz"))
848 (sha256
849 (base32 "0rb927zknk9kmhprd8rdr4azql4gn2dp75a36iazx2xhkbqhvind"))
850 (patches
851 ;; CVE references according to nixpgs
852 (search-patches
853 "audiofile-fix-datatypes-in-tests.patch"
854 "audiofile-fix-sign-conversion.patch"
855 "audiofile-hurd.patch"
856 "audiofile-CVE-2015-7747.patch"
857 ;; CVE-2017-6829:
858 "audiofile-Fix-index-overflow-in-IMA.cpp.patch"
859 ;; CVE-2017-6827, CVE-2017-6828, CVE-2017-6832, CVE-2017-6835,
860 ;; CVE-2017-6837:
8515ea12 861 "audiofile-check-number-of-coefficients.patch"
a8e14943 862 ;; CVE-2017-6839:
8515ea12 863 "audiofile-overflow-in-MSADPCM.patch"
a8e14943 864 ;; CVE-2017-6830, CVE-2017-6834, CVE-2017-6836, CVE-2017-6838:
8515ea12
LC
865 "audiofile-multiply-overflow.patch"
866 "audiofile-function-signature.patch"
a8e14943
HG
867 ;; CVE-2017-6831:
868 "audiofile-Fail-on-error-in-parseFormat.patch"
869 ;; CVE-2017-6833:
8515ea12 870 "audiofile-division-by-zero.patch"
a8e14943
HG
871 "audiofile-CVE-2018-13440.patch"
872 "audiofile-CVE-2018-17095.patch"))))
bdab33a1
LC
873 (properties `((lint-hidden-cve . ("CVE-2017-6829"
874
875 "CVE-2017-6827" "CVE-2017-6828"
876 "CVE-2017-6832" "CVE-2017-6835"
877 "CVE-2017-6837"
878
879 "CVE-2017-6839"
880
881 "CVE-2017-6830" "CVE-2017-6834"
882 "CVE-2017-6836" "CVE-2017-6838"
883
884 "CVE-2017-6831" "CVE-2017-6833"))))
a8e14943
HG
885 (build-system gnu-build-system)
886 (inputs
8394619b 887 (list alsa-lib))
a8e14943
HG
888 (home-page "https://audiofile.68k.org/")
889 (synopsis "Library to handle various audio file formats")
890 (description "This is an open-source version of SGI's audiofile library.
891It provides a uniform programming interface for processing of audio data to
892and from audio files of many common formats.
893
894Currently supported file formats include AIFF/AIFF-C, WAVE, and NeXT/Sun
895.snd/.au, BICS, and raw data. Supported compression formats are currently
896G.711 mu-law and A-law.")
897 (license license:lgpl2.1+)))
898
c3276dbe
TW
899(define-public autotalent
900 (package
901 (name "autotalent")
902 (version "0.2")
903 (source (origin
904 (method url-fetch)
905 (uri (string-append "http://tombaran.info/autotalent-"
906 version ".tar.gz"))
907 (sha256
908 (base32
909 "1n04qm66f14195ly6gsy3ra7v2j7zad5n19d8dwfmh0qs6h9hphh"))))
910 (build-system gnu-build-system)
911 (arguments
912 `(#:tests? #f ; no check target
913 #:phases
914 (modify-phases %standard-phases
915 ;; no configure script
916 (delete 'configure)
917 (add-before 'install 'prepare-target-directory
918 (lambda* (#:key outputs #:allow-other-keys)
919 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
920 #t))
921 (add-after 'unpack 'override-target-directory
922 (lambda* (#:key outputs #:allow-other-keys)
923 (substitute* "Makefile"
924 (("/usr/lib64/ladspa")
925 (string-append (assoc-ref outputs "out") "/lib/ladspa")))
926 #t)))))
927 (inputs
8394619b 928 (list ladspa))
c3276dbe
TW
929 (home-page "http://tombaran.info/autotalent.html")
930 (synopsis "Pitch-correction LADSPA audio plugin")
931 (description
932 "Autotalent is a LADSPA plugin for real-time pitch-correction. Among its
933controls are allowable notes, strength of correction, LFO for vibrato and
934formant warp.")
935 ;; All code except the FFT routine is licensed under GPLv2+.
936 ;; The FFT routine is under BSD-3.
242b29ba 937 (license license:gpl2+)))
c3276dbe 938
497e9a82
RW
939(define-public azr3
940 (package
941 (name "azr3")
942 (version "1.2.3")
943 (source (origin
944 (method url-fetch)
945 (uri (string-append "mirror://savannah/ll-plugins/azr3-jack-"
946 version
947 ".tar.bz2"))
948 (sha256
949 (base32
204adc30
RW
950 "18mdw6nc0vgj6k9rsy0x8w64wvzld0frqshrxxbxfj9qi9843vlc"))
951 (patches (search-patches "azr3.patch"))))
497e9a82
RW
952 (build-system gnu-build-system)
953 (arguments
954 `(#:tests? #f ; no check target
955 #:make-flags
956 (list "LV2PEG=ttl2c"
957 (string-append "prefix=" %output)
ef1f9acf
RW
958 (string-append "pkgdatadir=" %output "/share/azr3-jack"))
959 #:phases
960 (modify-phases %standard-phases
961 (add-before 'install 'fix-timestamp
962 (lambda _
963 (let ((early-1980 315619200)) ; 1980-01-02 UTC
964 (utime "azr3.1" early-1980 early-1980))
965 #t)))))
497e9a82 966 (inputs
8394619b 967 (list gtkmm-2 lvtk jack-1 lash))
497e9a82 968 (native-inputs
8394619b 969 (list pkg-config))
497e9a82
RW
970 (home-page "http://ll-plugins.nongnu.org/azr3/")
971 (synopsis "Tonewheel organ synthesizer")
972 (description
973 "AZR-3 is a port of the free VST plugin AZR-3. It is a tonewheel organ
974with drawbars, distortion and rotating speakers. The organ has three
975sections, two polyphonic sections with nine drawbars each and one monophonic
976bass section with five drawbars. A standalone JACK application and LV2
977plugins are provided.")
978 (license license:gpl2)))
979
f62a8417
RW
980(define-public calf
981 (package
982 (name "calf")
c8de7979 983 (version "0.90.3")
f62a8417
RW
984 (source (origin
985 (method url-fetch)
8f946a18 986 (uri (string-append "https://calf-studio-gear.org/files/calf-"
73cea74d 987 version ".tar.gz"))
f62a8417
RW
988 (sha256
989 (base32
c8de7979 990 "17x4hylgq4dn9qycsdacfxy64f5cv57n2qgkvsdp524gnqzw4az3"))))
f62a8417
RW
991 (build-system gnu-build-system)
992 (inputs
e3196755
LC
993 (list fluidsynth
994 expat
995 glib
996 gtk+-2
997 cairo
998 lash
999 jack-1
1000 lv2
1001 ladspa
1002 fftw))
f62a8417 1003 (native-inputs
8394619b 1004 (list pkg-config))
f62a8417
RW
1005 (native-search-paths
1006 (list (search-path-specification
1007 (variable "LV2_PATH")
1008 (files '("lib/lv2")))))
1009 (home-page "http://calf.sourceforge.net/")
1010 (synopsis "Audio plug-in pack for LV2 and JACK environments")
1011 (description
1012 "Calf Studio Gear is an audio plug-in pack for LV2 and JACK environments.
1013The suite contains lots of effects (delay, modulation, signal processing,
1014filters, equalizers, dynamics, distortion and mastering effects),
1015instruments (SF2 player, organ simulator and a monophonic synthesizer) and
1016tools (analyzer, mono/stereo tools, crossovers).")
1017 ;; calfjackhost is released under GPLv2+
1018 ;; The plugins are released under LGPLv2.1+
1019 (license (list license:lgpl2.1+ license:gpl2+))))
1020
7a44e875
TW
1021(define-public caps-plugins-lv2
1022 (package
1023 (name "caps-plugins-lv2")
5ed105a8 1024 (version "0.9.26")
7a44e875
TW
1025 (source
1026 (origin
1027 ;; The Github project hasn't tagged a release.
1028 (method git-fetch)
1029 (uri (git-reference
5ed105a8
TW
1030 (url "https://github.com/moddevices/caps-lv2.git")
1031 (commit "5d52a0c6e8863c058c2aab2dea9f901a90d96eb9")))
7a44e875
TW
1032 (file-name (git-file-name name version))
1033 (sha256
1034 (base32
5ed105a8 1035 "0hdl7n3ra5gqgwkdfqkw8dj9gb1cgb76bn1v91w06d2w4lj9s8xa"))))
7a44e875
TW
1036 (build-system gnu-build-system)
1037 (arguments
1038 `(#:tests? #f ; no check target
1039 #:phases
1040 (modify-phases %standard-phases
1041 ;; no configure script
1042 (delete 'configure)
1043 (add-after 'unpack 'override-target-directory
1044 (lambda* (#:key outputs #:allow-other-keys)
1045 (substitute* (find-files "plugins" "Makefile")
1046 (("/usr/local")(assoc-ref outputs "out")))
1047 #t)))))
1048 (inputs
8394619b 1049 (list lv2))
7a44e875
TW
1050 ;; home-page of the original LADSPA version: http://quitte.de/dsp/caps.html
1051 (home-page "https://github.com/moddevices/caps-lv2")
7230f6d5 1052 (synopsis "LV2 port of the CAPS audio plugin collection")
7a44e875
TW
1053 (description
1054 "LV2 port of CAPS, a collection of audio plugins comprising basic virtual
1055guitar amplification and a small range of classic effects, signal processors and
1056generators of mostly elementary and occasionally exotic nature.")
1057 (license license:gpl3+)))
1058
8f941dd2
RW
1059(define-public infamous-plugins
1060 (package
1061 (name "infamous-plugins")
fa4dae68 1062 (version "0.3.0")
8f941dd2 1063 (source (origin
0b8db035
RW
1064 (method git-fetch)
1065 (uri (git-reference
b0e7b699 1066 (url "https://github.com/ssj71/infamousPlugins")
0b8db035
RW
1067 (commit (string-append "v" version))))
1068 (file-name (git-file-name name version))
8f941dd2
RW
1069 (sha256
1070 (base32
fa4dae68 1071 "1r72agk5nxf5k0mghcc2j90z43j5d9i7rqjmf49jfyqnd443isip"))))
8f941dd2 1072 (build-system cmake-build-system)
d6618941 1073 (arguments
d11edbdf 1074 `(#:tests? #f ; there are no tests
d6618941
EF
1075 #:phases
1076 (modify-phases %standard-phases
1077 (add-after 'unpack 'remove-compiler-flags
1078 (lambda _
3e0e9e16 1079 (substitute* (find-files "." "CMakeLists.txt")
d11edbdf 1080 (("-msse2 -mfpmath=sse") ""))
03eb0b1b
EF
1081 #t))
1082 (add-after 'unpack 'fix-build-with-newer-lv2
1083 (lambda _
1084 ;; https://github.com/ssj71/infamousPlugins/commit/4c7275b1fa8ea3296446421cbd29ec2df66588c0
1085 (substitute* (find-files "src" ".*\\.cxx")
1086 (("_LV2UI_Descriptor") "LV2UI_Descriptor"))
d6618941 1087 #t)))))
8f941dd2 1088 (inputs
8394619b 1089 (list cairo fftwf lv2 ntk zita-resampler))
8f941dd2 1090 (native-inputs
8394619b 1091 (list pkg-config))
a9071e5c 1092 (home-page "https://ssj71.github.io/infamousPlugins")
8f941dd2
RW
1093 (synopsis "LV2 plugins for live use")
1094 (description
1095 "The infamous plugins are a collection of LV2 audio plugins for live
1096performances. The plugins include a cellular automaton synthesizer, an
1097envelope follower, distortion effects, tape effects and more.")
1098 (license license:gpl2+)))
1099
aa13529b
CB
1100(define-public snapcast
1101 (package
1102 (name "snapcast")
1103 (version "0.24.0")
1104 (source (origin
1105 (method git-fetch)
1106 (uri (git-reference
1107 (url "https://github.com/badaix/snapcast")
1108 (commit (string-append "v" version))))
1109 (file-name (git-file-name name version))
1110 (sha256
1111 (base32
1112 "13yz8alplnqwkcns3mcli01qbyy6l3h62xx0v71ygcrz371l4g9g"))))
1113 (build-system cmake-build-system)
1114 (arguments
1115 '(#:tests? #f)) ; no included tests
1116 (inputs
8394619b
LC
1117 (list boost
1118 libvorbis
1119 soxr
1120 alsa-lib
1121 avahi
1122 pulseaudio
1123 flac
1124 opus))
aa13529b 1125 (native-inputs
8394619b 1126 (list pkg-config))
aa13529b
CB
1127 (home-page "https://github.com/badaix/snapcast")
1128 (synopsis "Synchronous multiroom audio player")
1129 (description
1130 "Snapcast is a multi-room client-server audio player. Clients are time
1131synchronized with the server to play synced audio.")
1132 (license license:gpl3+)))
1133
7366d831
OP
1134(define-public swh-plugins
1135 (package
1136 (name "swh-plugins")
1137 (version "0.4.17")
1138 (source (origin
1139 (method git-fetch)
1140 (uri (git-reference
b0e7b699 1141 (url "https://github.com/swh/ladspa")
7366d831
OP
1142 (commit (string-append "v" version))))
1143 (file-name (git-file-name name version))
1144 (sha256
1145 (base32
1146 "1c98z2xxz9pgcb4dg99gz8qrylh5cnag0j18a52d88ifsy24isvq"))))
1147 (native-inputs
e3196755
LC
1148 (list autoconf
1149 automake
1150 gettext-minimal ;for autopoint
1151 libtool
1152 perl
1153 pkg-config
1154 which))
7366d831 1155 (inputs
8394619b 1156 (list fftwf perl-xml-parser))
7366d831 1157 (build-system gnu-build-system)
0daf7e26 1158 (home-page "http://plugin.org.uk")
7366d831
OP
1159 (synopsis "The SWH Plugins package for the LADSPA plugin system")
1160 (description "This package provides Steve Harris's LADSPA plugins.")
1161 (license license:gpl2+)))
1162
18f3d92b
FPS
1163(define-public swh-plugins-lv2
1164 (package
1165 (name "swh-plugins-lv2")
1166 (version "1.0.16")
1167 (source (origin
2ae23954
RW
1168 (method git-fetch)
1169 (uri (git-reference
b0e7b699 1170 (url "https://github.com/swh/lv2")
2ae23954
RW
1171 (commit (string-append "v" version))))
1172 (file-name (git-file-name name version))
18f3d92b
FPS
1173 (sha256
1174 (base32
2ae23954 1175 "0y7nnww864mm4k6ayy2lhcws3wlbhb2gkyjbrwk921fvc18qk9mz"))))
18f3d92b
FPS
1176 (build-system gnu-build-system)
1177 (arguments
1178 `(#:tests? #f ; no check target
1179 #:make-flags (list "CC=gcc"
1180 (string-append "PREFIX="
1181 (assoc-ref %outputs "out")))
1182 #:phases
1183 (modify-phases %standard-phases
1184 ;; no configure script
1185 (delete 'configure)
1186 (add-after 'unpack 'patch-makefile-and-enter-directory
1187 ;; The default install target doesn't install, but the
1188 ;; "install-system" target does.
1189 (lambda _
1190 (substitute* "Makefile"
1191 (("install:") "install: install-system"))
1192 #t)))))
1193 (inputs
8394619b 1194 (list lv2 fftwf))
18f3d92b 1195 (native-inputs
8394619b 1196 (list libxslt pkg-config))
18f3d92b
FPS
1197 (home-page "http://plugin.org.uk")
1198 (synopsis "SWH plugins in LV2 format")
1199 (description
1200 "Swh-plugins-lv2 is a collection of audio plugins in LV2 format. Plugin
1201classes include: dynamics (compressor, limiter), time (delay, chorus,
1202flanger), ringmodulator, distortion, filters, pitchshift, oscillators,
1203emulation (valve, tape), bit fiddling (decimator, pointer-cast), etc.")
1204 (license license:gpl3+)))
1205
f2acd45e
VM
1206(define-public libdjinterop
1207 (package
1208 (name "libdjinterop")
1209 (version "0.16.0")
1210 (source
1211 (origin
1212 (method git-fetch)
1213 (uri (git-reference
1214 (url "https://github.com/xsco/libdjinterop")
1215 (commit version)))
1216 (file-name (git-file-name name version))
1217 (sha256
1218 (base32 "16nrqpr90vb9ggmp9j73m0hspd7pmfdhh0g6iyp8vd7kx7g17qnk"))))
1219 (build-system meson-build-system)
1220 (arguments
1221 `(#:phases
1222 (modify-phases %standard-phases
1223 ;; crate_test writes a database file to the source tree.
1224 (add-after 'unpack 'make-git-checkout-writable
1225 (lambda _
1226 (for-each make-file-writable (find-files ".")))))))
1227 (native-inputs
8394619b 1228 (list boost pkg-config))
f2acd45e 1229 (inputs
8394619b 1230 (list sqlite zlib))
f2acd45e
VM
1231 (home-page "https://github.com/xsco/libdjinterop")
1232 (synopsis "C++ library for access to DJ record libraries")
1233 (description
1234 "@code{libdjinterop} is a C++ library that allows access to database
1235formats used to store information about DJ record libraries.")
1236 (license license:lgpl3+)))
1237
f5340e00
RW
1238(define-public tao
1239 (package
1240 (name "tao")
1241 (version "1.0-beta-10May2006")
1242 (source (origin
1243 (method url-fetch)
1244 (uri (string-append "mirror://sourceforge/taopm/Tao/"
1245 "tao-" version "/"
1246 "tao-" version ".tar.gz"))
1247 (sha256
1248 (base32
1249 "156py3g6mmglldfd0j76bn7n242hdwf49diaprjpj7crp8vgf2pz"))
1250 (patches
1251 (search-patches "tao-add-missing-headers.patch"
1252 "tao-fix-parser-types.patch"))
1253 (modules '((guix build utils)))
1254 (snippet
d348439b
RW
1255 '(substitute* "configure"
1256 (("SHELL=/bin/sh") "")))))
f5340e00
RW
1257 (build-system gnu-build-system)
1258 (arguments
1259 '(#:configure-flags '("TAO_RELEASE=-beta")
1260 #:phases
1261 (modify-phases %standard-phases
1262 (add-after 'unpack 'fix-references
1263 (lambda* (#:key outputs #:allow-other-keys)
1264 (substitute* "user-scripts/tao.in"
1265 (("taoparse")
1266 (string-append (assoc-ref outputs "out") "/bin/taoparse"))
1267 (("grep") (which "grep"))
1268 (("sed -f \\$distdir/user-scripts/")
1269 (string-append (which "sed") " -f $distdir/"))
1270 (("distdir=.*")
1271 (string-append "distdir="
d348439b 1272 (assoc-ref outputs "out") "/share/tao")))))
f5340e00
RW
1273 (add-after 'install 'install-extra-files
1274 (lambda* (#:key outputs #:allow-other-keys)
1275 (let* ((out (assoc-ref outputs "out"))
1276 (share (string-append out "/share/tao/"))
1277 (inc (string-append out "/include/tao/")))
1278 (mkdir-p share)
1279 (mkdir-p inc)
1280 (install-file "user-scripts/error.parse" share)
1281 (copy-recursively "examples" (string-append share "examples"))
1282 (for-each (lambda (file) (install-file file inc))
d348439b 1283 (find-files "include" "\\.h"))))))))
f5340e00 1284 (inputs
a7302103
RW
1285 (list audiofile
1286 libxi
1287 libxmu
1288 mesa
1289 freeglut
1290 flex
1291 bison
1292 sed
1293 grep))
f5340e00
RW
1294 (home-page "http://taopm.sourceforge.net/")
1295 (synopsis "Sound Synthesis with Physical Models")
1296 (description "Tao is a software package for sound synthesis using physical
1297models. It provides a virtual acoustic material constructed from masses and
1298springs which can be used as the basis for building quite complex virtual
1299musical instruments. Tao comes with a synthesis language for creating and
1300playing instruments and a C++ API for those who would like to use it as an
1301object library.")
1302 (license license:gpl2+)))
1303
77fc94ef
RW
1304(define-public tao-synth
1305 (let ((commit "f3aedd81efbc775574e591081b57ae1c08427064")
1306 (revision "1"))
1307 (package
1308 (name "tao-synth")
1309 (version (git-version "0" revision commit))
1310 (source (origin
1311 (method git-fetch)
1312 (uri (git-reference
1313 (url "https://github.com/lucasw/tao_synth")
1314 (commit commit)))
1315 (file-name (git-file-name name version))
1316 (sha256
1317 (base32
1318 "1jds2l3cb96b02jxd7lmrjjl9s7mylnrvg6fpw0j8c141bk8vyg3"))))
1319 (build-system cmake-build-system)
1320 (arguments (list #:tests? #false)) ;there are no tests
1321 (inputs
1322 (list glfw freeglut))
1323 (native-inputs
1324 (list gcc-7))
1325 (home-page "https://github.com/lucasw/tao_synth")
1326 (synopsis "Sound synthesis with physical models")
1327 (description "Tao is a software package for sound synthesis using physical
1328models. It provides a virtual acoustic material constructed from masses and
1329springs which can be used as the basis for building quite complex virtual
1330musical instruments. Tao comes with a synthesis language for creating and
1331playing instruments and a C++ API for those who would like to use it as an
1332object library.")
1333 (license license:lgpl2.0+))))
1334
fda85ca6
RW
1335(define-public csound
1336 (package
1337 (name "csound")
d818256e
NG
1338 (version "6.14.0")
1339 (source
1340 (origin
1341 (method git-fetch)
1342 (uri (git-reference
b0e7b699 1343 (url "https://github.com/csound/csound")
d818256e
NG
1344 (commit version)))
1345 (file-name (git-file-name name version))
1346 (sha256
1347 (base32 "1sr9knfhbm2m0wpkjq2l5n471vnl51wy4p6j4m95zqybimzb4s2j"))))
fda85ca6 1348 (build-system cmake-build-system)
fda85ca6 1349 (native-inputs
e3196755 1350 (list bison flex gettext-minimal zlib))
d818256e 1351 (inputs
8394619b
LC
1352 (list alsa-lib
1353 boost
1354 jack-1
1355 ladspa
1356 liblo
1357 libsndfile
1358 pulseaudio))
40f856fa 1359 (home-page "https://csound.com/")
fda85ca6
RW
1360 (synopsis "Sound and music computing system")
1361 (description
1362 "Csound is a user-programmable and user-extensible sound processing
1363language and software synthesizer.")
1364 (license license:lgpl2.1+)))
1365
c60ab406
AT
1366(define-public midicomp
1367 ;; The latest tagged release is 9 years old and there have been
1368 ;; unreleased fixes, so we take the last commit.
1369 (let ((commit "70f76963cb0cdb3cbe03ec6e7246b1fb885d3c68")
1370 (revision "1"))
1371 (package
1372 (name "midicomp")
1373 (version (git-version "0.0.8" revision commit))
1374 (source
1375 (origin
1376 (method git-fetch)
1377 (uri (git-reference
1378 (url "https://github.com/markc/midicomp")
1379 (commit commit)))
1380 (file-name (git-file-name name version))
1381 (sha256
1382 (base32
1383 "12zh247c6v88ssy4l8v7yirh4bl2jcc1ch7f4gdry79a82kai1gf"))))
1384 (build-system cmake-build-system)
1385 (arguments
1386 `(#:tests? #f)) ; no "check" target
1387 (synopsis "Convert SMF MIDI files to and from plain text")
1388 (description
1389 "midicomp can manipulate SMF (Standard MIDI File) files. It can both
1390 read and write SMF files in 0 or format 1 and also read and write its own
1391 plain text format. This means a SMF file can be turned into easily
1392 parseable text, edited with any text editor or filtered through any script
1393 language, and recompiled back into a binary SMF file.")
1394 (home-page "https://github.com/markc/midicomp")
1395 (license license:agpl3))))
1396
631ac903
RW
1397(define-public clalsadrv
1398 (package
1399 (name "clalsadrv")
1400 (version "2.0.0")
1401 (source (origin
1402 (method url-fetch)
1403 (uri (string-append
1404 "http://kokkinizita.linuxaudio.org"
1405 "/linuxaudio/downloads/clalsadrv-"
1406 version ".tar.bz2"))
1407 (sha256
1408 (base32
9de2e43c 1409 "0bsacx3l9065gk8g4137qmz2ij7s9x06aldvacinzlcslw7bd1kq"))))
631ac903
RW
1410 (build-system gnu-build-system)
1411 (arguments
1412 `(#:tests? #f ; no "check" target
1413 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
1414 #:phases
dc1d3cde
KK
1415 (modify-phases %standard-phases
1416 (add-after 'unpack 'patch-makefile-and-enter-directory
1417 (lambda _
1418 (substitute* "libs/Makefile"
1419 (("/sbin/ldconfig") "true")
1420 (("^LIBDIR =.*") "LIBDIR = lib\n"))
1421 (chdir "libs")
1422 #t))
1423 (add-after 'install 'install-symlink
1424 (lambda _
1425 (symlink "libclalsadrv.so"
1426 (string-append (assoc-ref %outputs "out")
ee527187
MW
1427 "/lib/libclalsadrv.so.2"))
1428 #t))
631ac903 1429 ;; no configure script
4f27a333 1430 (delete 'configure))))
631ac903 1431 (inputs
8394619b 1432 (list alsa-lib fftw))
4817bb92 1433 (home-page "https://kokkinizita.linuxaudio.org")
631ac903
RW
1434 (synopsis "C++ wrapper around the ALSA API")
1435 (description
1436 "clalsadrv is a C++ wrapper around the ALSA API simplifying access to
1437ALSA PCM devices.")
1438 (license license:gpl2+)))
1439
8ba62f92
RW
1440(define-public amb-plugins
1441 (package
1442 (name "amb-plugins")
1443 (version "0.8.1")
1444 (source (origin
1445 (method url-fetch)
1446 (uri (string-append
1447 "http://kokkinizita.linuxaudio.org"
1448 "/linuxaudio/downloads/AMB-plugins-"
1449 version ".tar.bz2"))
1450 (sha256
1451 (base32
1452 "0x4blm4visjqj0ndqr0cg776v3b7lvplpc8cgi9n51llhavn0jpl"))))
1453 (build-system gnu-build-system)
1454 (arguments
1455 `(#:tests? #f ; no "check" target
1456 #:phases
1457 (modify-phases %standard-phases
1458 ;; no configure script
1459 (delete 'configure)
1460 (add-before 'install 'prepare-target-directory
1461 (lambda* (#:key outputs #:allow-other-keys)
1462 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1463 #t))
1464 (add-after 'unpack 'override-target-directory-and-tool-paths
1465 (lambda* (#:key outputs #:allow-other-keys)
1466 (substitute* "Makefile"
1467 (("/usr/lib/ladspa")
1468 (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1469 (("/usr/bin/install") (which "install"))
1470 (("/bin/rm") "#"))
1471 #t)))))
4817bb92 1472 (home-page "https://kokkinizita.linuxaudio.org")
8ba62f92
RW
1473 (synopsis "LADSPA ambisonics plugins")
1474 (description
1475 "The AMB plugins are a set of LADSPA ambisonics plugins, mainly to be
1476used within Ardour. Features include: mono and stereo to B-format panning,
1477horizontal rotator, square, hexagon and cube decoders.")
1478 (license license:gpl2+)))
1479
fb2e072c
RW
1480(define-public mcp-plugins
1481 (package
1482 (name "mcp-plugins")
1483 (version "0.4.0")
1484 (source (origin
1485 (method url-fetch)
1486 (uri (string-append
1487 "http://kokkinizita.linuxaudio.org"
1488 "/linuxaudio/downloads/MCP-plugins-"
1489 version ".tar.bz2"))
1490 (sha256
1491 (base32
1492 "06a9r1l85jmg7l1cvc3788mk8ra0xagjfy1rmhw3b80y4n0vlnvc"))))
1493 (build-system gnu-build-system)
1494 (arguments
1495 `(#:tests? #f ; no "check" target
1496 #:phases
1497 (modify-phases %standard-phases
1498 ;; no configure script
1499 (delete 'configure)
1500 (add-before 'install 'prepare-target-directory
1501 (lambda* (#:key outputs #:allow-other-keys)
1502 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1503 #t))
1504 (add-after 'unpack 'override-target-directory
1505 (lambda* (#:key outputs #:allow-other-keys)
1506 (substitute* "Makefile"
1507 (("/usr") (assoc-ref outputs "out")))
1508 #t)))))
4817bb92 1509 (home-page "https://kokkinizita.linuxaudio.org")
fb2e072c
RW
1510 (synopsis "Chorus, phaser, and vintage high-pass and low-pass filters")
1511 (description
1512 "This package provides various LADSPA plugins. @code{cs_chorus} and
1513@code{cs_phaser} provide chorus and phaser effects, respectively;
1514@code{mvclpf24} provides four implementations of the low-pass filter used in
1515vintage Moog synthesizers; @code{mvchpf24} is based on the voltage-controlled
1516high-pass filter by Robert Moog. The filters attempt to accurately emulate
1517the non-linear circuit elements of their original analog counterparts.")
1518 (license license:gpl2+)))
1519
dffb6c3b
RW
1520(define-public rev-plugins
1521 (package
1522 (name "rev-plugins")
1523 (version "0.7.1")
1524 (source (origin
1525 (method url-fetch)
1526 (uri (string-append
1527 "http://kokkinizita.linuxaudio.org"
1528 "/linuxaudio/downloads/REV-plugins-"
1529 version ".tar.bz2"))
1530 (sha256
1531 (base32
1532 "1ikpinxm00pkfi259bnkzhsy3miagrjgdihaaf5x4v7zac29j3g7"))))
1533 (build-system gnu-build-system)
1534 (arguments
1535 `(#:tests? #f ; no "check" target
1536 #:phases
1537 (modify-phases %standard-phases
1538 ;; no configure script
1539 (delete 'configure)
1540 (add-before 'install 'prepare-target-directory
1541 (lambda* (#:key outputs #:allow-other-keys)
1542 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1543 #t))
1544 (add-after 'unpack 'override-target-directory
1545 (lambda* (#:key outputs #:allow-other-keys)
1546 (substitute* "Makefile"
1547 (("/usr") (assoc-ref outputs "out")))
1548 #t)))))
4817bb92 1549 (home-page "https://kokkinizita.linuxaudio.org")
dffb6c3b
RW
1550 (synopsis "LADSPA reverb plugin")
1551 (description
1552 "This package provides a stereo reverb LADSPA plugin based on the
1553well-known greverb.")
1554 (license license:gpl2+)))
1555
75f45d16
RW
1556(define-public fil-plugins
1557 (package
1558 (name "fil-plugins")
1559 (version "0.3.0")
1560 (source (origin
1561 (method url-fetch)
1562 (uri (string-append
1563 "http://kokkinizita.linuxaudio.org"
1564 "/linuxaudio/downloads/FIL-plugins-"
1565 version ".tar.bz2"))
1566 (sha256
1567 (base32
1568 "1scfv9j7jrp50r565haa4rvxn1vk2ss86xssl5qgcr8r45qz42qw"))))
1569 (build-system gnu-build-system)
1570 (arguments
1571 `(#:tests? #f ; no "check" target
1572 #:phases
1573 (modify-phases %standard-phases
1574 ;; no configure script
1575 (delete 'configure)
1576 (add-before 'install 'prepare-target-directory
1577 (lambda* (#:key outputs #:allow-other-keys)
1578 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1579 #t))
1580 (add-after 'unpack 'override-target-directory
1581 (lambda* (#:key outputs #:allow-other-keys)
1582 (substitute* "Makefile"
1583 (("/usr") (assoc-ref outputs "out")))
1584 #t)))))
4817bb92 1585 (home-page "https://kokkinizita.linuxaudio.org")
75f45d16
RW
1586 (synopsis "LADSPA four-band parametric equalizer plugin")
1587 (description
1588 "This package provides a LADSPA plugin for a four-band parametric
1589equalizer. Each section has an active/bypass switch, frequency, bandwidth and
1590gain controls. There is also a global bypass switch and gain control.
1591
1592The 2nd order resonant filters are implemented using a Mitra-Regalia style
1593lattice filter, which is stable even while parameters are being changed.
1594
36a4366d 1595All switches and controls are internally smoothed, so they can be used @code{live}
75f45d16
RW
1596without any clicks or zipper noises. This makes this plugin suitable for use
1597in systems that allow automation of plugin control ports, such as Ardour, or
1598for stage use.")
1599 (license license:gpl2+)))
1600
c04b4e7a
RW
1601(define-public ste-plugins
1602 (package
1603 (name "ste-plugins")
1604 (version "0.0.2")
1605 (source (origin
1606 (method url-fetch)
1607 (uri (string-append
1608 "http://kokkinizita.linuxaudio.org"
1609 "/linuxaudio/downloads/STE-plugins-"
1610 version ".tar.bz2"))
1611 (sha256
1612 (base32
1613 "0s3c9w5xihs87cnd1lh9xgj3maabjdyh6bl766qp5lhkg3ax8zy6"))))
1614 (build-system gnu-build-system)
1615 (arguments
1616 `(#:tests? #f ; no "check" target
1617 #:phases
1618 (modify-phases %standard-phases
1619 ;; no configure script
1620 (delete 'configure)
1621 (add-before 'install 'prepare-target-directory
1622 (lambda* (#:key outputs #:allow-other-keys)
1623 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1624 #t))
1625 (add-after 'unpack 'override-target-directory
1626 (lambda* (#:key outputs #:allow-other-keys)
1627 (substitute* "Makefile"
1628 (("/usr") (assoc-ref outputs "out")))
1629 #t)))))
4817bb92 1630 (home-page "https://kokkinizita.linuxaudio.org")
c04b4e7a
RW
1631 (synopsis "LADSPA stereo width plugin")
1632 (description
1633 "This package provides a LADSPA plugin to manipulate the stereo width of
1634audio signals.")
1635 (license license:gpl2+)))
1636
eb4fca7e
RW
1637(define-public vco-plugins
1638 (package
1639 (name "vco-plugins")
1640 (version "0.3.0")
1641 (source (origin
1642 (method url-fetch)
1643 (uri (string-append
1644 "http://kokkinizita.linuxaudio.org"
1645 "/linuxaudio/downloads/VCO-plugins-"
1646 version ".tar.bz2"))
1647 (sha256
1648 (base32
1649 "1xzqdg3b07r7zww05y9bb737l9dxvfkv28m3fyak1aazaci3rsgl"))))
1650 (build-system gnu-build-system)
1651 (arguments
1652 `(#:tests? #f ; no "check" target
1653 #:phases
1654 (modify-phases %standard-phases
1655 ;; no configure script
1656 (delete 'configure)
1657 (add-before 'install 'prepare-target-directory
1658 (lambda* (#:key outputs #:allow-other-keys)
1659 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1660 #t))
1661 (add-after 'unpack 'override-target-directory
1662 (lambda* (#:key outputs #:allow-other-keys)
1663 (substitute* "Makefile"
1664 (("/usr") (assoc-ref outputs "out"))
1665 (("/bin/cp") (which "cp")))
1666 #t)))))
4817bb92 1667 (home-page "https://kokkinizita.linuxaudio.org")
eb4fca7e
RW
1668 (synopsis "LADSPA plugin for synthesizer oscillators")
1669 (description
1670 "The @code{blvco} LADSPA plugin provides three anti-aliased oscillators:
1671
1672@enumerate
1673@item Pulse-VCO, a dirac pulse oscillator with flat amplitude spectrum
1674@item Saw-VCO, a sawtooth oscillator with 1/F amplitude spectrum
947b3ac6 1675@item Rec-VCO, a square / rectangle oscillator
eb4fca7e
RW
1676@end enumerate\n
1677
1678All oscillators are low-pass filtered to provide waveforms similar to the
1679output of analog synthesizers such as the Moog Voyager.")
1680 (license license:gpl2+)))
1681
5e3161d3
RW
1682(define-public wah-plugins
1683 (package
1684 (name "wah-plugins")
1685 (version "0.1.0")
1686 (source (origin
1687 (method url-fetch)
1688 (uri (string-append
1689 "http://kokkinizita.linuxaudio.org"
1690 "/linuxaudio/downloads/WAH-plugins-"
1691 version ".tar.bz2"))
1692 (sha256
1693 (base32
1694 "1wkbjarxdhjixkh7d5abralj11dj2xxg644fz3ycd7qyfgfvjfgd"))))
1695 (build-system gnu-build-system)
1696 (arguments
1697 `(#:tests? #f ; no "check" target
1698 #:phases
1699 (modify-phases %standard-phases
1700 ;; no configure script
1701 (delete 'configure)
1702 (add-before 'install 'prepare-target-directory
1703 (lambda* (#:key outputs #:allow-other-keys)
1704 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1705 #t))
1706 (add-after 'unpack 'override-target-directory
1707 (lambda* (#:key outputs #:allow-other-keys)
1708 (substitute* "Makefile"
1709 (("/usr") (assoc-ref outputs "out")))
1710 #t)))))
4817bb92 1711 (home-page "https://kokkinizita.linuxaudio.org")
5e3161d3
RW
1712 (synopsis "LADSPA Autowah effect plugin")
1713 (description
1714 "This package provides a LADSPA plugin for a Wah effect with envelope
1715follower.")
1716 (license license:gpl2+)))
1717
ed17465d
RW
1718(define-public g2reverb
1719 (package
1720 (name "g2reverb")
1721 (version "0.7.1")
1722 (source (origin
1723 (method url-fetch)
1724 (uri (string-append
1725 "http://kokkinizita.linuxaudio.org"
1726 "/linuxaudio/downloads/g2reverb-"
1727 version ".tar.bz2"))
1728 (sha256
1729 (base32
1730 "18wb8vj1kky5glr76s34awbi8qzplsmf3wjbd7a12hfv4j0bkwrj"))))
1731 (build-system gnu-build-system)
1732 (arguments
1733 `(#:tests? #f ; no "check" target
1734 #:phases
1735 (modify-phases %standard-phases
1736 ;; no configure script
1737 (delete 'configure)
1738 (add-before 'install 'prepare-target-directory
1739 (lambda* (#:key outputs #:allow-other-keys)
1740 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1741 #t))
1742 (add-after 'unpack 'override-target-directory
1743 (lambda* (#:key outputs #:allow-other-keys)
1744 (substitute* "Makefile"
1745 (("/usr") (assoc-ref outputs "out")))
1746 #t)))))
4817bb92 1747 (home-page "https://kokkinizita.linuxaudio.org")
ed17465d
RW
1748 (synopsis "LADSPA stereo reverb plugin")
1749 (description
1750 "This package provides a LADSPA plugin for a stereo reverb effect.")
1751 (license license:gpl2+)))
1752
e4f43b56
RW
1753(define-public fluidsynth
1754 (package
1755 (name "fluidsynth")
bdc35b92 1756 (version "2.2.4")
e4f43b56 1757 (source (origin
dd46c16b
RW
1758 (method git-fetch)
1759 (uri (git-reference
b0e7b699 1760 (url "https://github.com/FluidSynth/fluidsynth")
dd46c16b 1761 (commit (string-append "v" version))))
94781b79 1762 (file-name (git-file-name name version))
e4f43b56
RW
1763 (sha256
1764 (base32
bdc35b92 1765 "1061rdj69503spkd8vmfl3fqvyg4l41k5xcc4gw7niy31hnpnjmn"))))
dd46c16b 1766 (build-system cmake-build-system)
e4f43b56 1767 (arguments
713b519e 1768 '(#:tests? #f ; no check target
dd46c16b 1769 #:phases
dc1d3cde 1770 (modify-phases %standard-phases
dd46c16b
RW
1771 (add-after 'unpack 'fix-libdir
1772 (lambda _
713b519e 1773 ;; Install libraries to /lib, not /lib64.
dd46c16b
RW
1774 (substitute* "CMakeLists.txt"
1775 (("LIB_SUFFIX \\$\\{_init_lib_suffix\\}")
bdc35b92 1776 "LIB_SUFFIX \"\"")))))))
e4f43b56 1777 (inputs
bdc35b92 1778 (list ladspa))
e4f43b56 1779 (native-inputs
8394619b 1780 (list pkg-config))
bdc35b92
TGR
1781 (propagated-inputs
1782 ;; In Libs.private of fluidsynth.pc.
1783 (list alsa-lib
1784 glib
1785 jack-1
1786 lash
1787 libsndfile
1788 readline))
4b980563 1789 (home-page "https://www.fluidsynth.org/")
e4f43b56
RW
1790 (synopsis "SoundFont synthesizer")
1791 (description
1792 "FluidSynth is a real-time software synthesizer based on the SoundFont 2
1793specifications. FluidSynth reads and handles MIDI events from the MIDI input
e881752c 1794device. It is the software analogue of a MIDI synthesizer. FluidSynth can
e4f43b56 1795also play midifiles using a Soundfont.")
dd46c16b 1796 (license license:lgpl2.1+)))
e4f43b56 1797
70fc29d9
TUBK
1798(define-public faad2
1799 (package
1800 (name "faad2")
31f226c4
RG
1801 (version "2.8.8")
1802 (source
1803 (origin
1804 (method url-fetch)
1805 (uri
1806 (string-append "mirror://sourceforge/faac/faad2-src/faad2-"
1807 (version-major+minor version) ".0/"
1808 "faad2-" version ".tar.gz"))
1809 (sha256
1810 (base32 "0va284hndhn0ynm4lyn219qw4y8wa4agfkqgwlaji7bqp6nkyp4q"))))
70fc29d9 1811 (build-system gnu-build-system)
df2f7f5b 1812 (home-page "https://www.audiocoding.com/faad2.html")
70fc29d9
TUBK
1813 (synopsis "MPEG-4 and MPEG-2 AAC decoder")
1814 (description
df2f7f5b 1815 "FAAD2 is an MPEG-4 and MPEG-2 AAC decoder supporting LC, Main, LTP, SBR, -PS, and DAB+.")
31f226c4 1816 (license license:gpl2+)))
70fc29d9 1817
777291f0
RW
1818(define-public faust
1819 (package
1820 (name "faust")
a3604742 1821 (version "0.9.90")
777291f0 1822 (source (origin
a3604742
RW
1823 (method git-fetch)
1824 (uri (git-reference
b0e7b699 1825 (url "https://github.com/grame-cncm/faust")
a3604742
RW
1826 (commit (string-append "v"
1827 (string-map (lambda (c)
1828 (if (char=? c #\.) #\- c))
1829 version)))))
1830 (file-name (string-append "faust-" version "-checkout"))
777291f0
RW
1831 (sha256
1832 (base32
a3604742 1833 "0qc6iwjd3i80jdyjc186c6ywipmjzl8wlsp4050pbr56q4rlkd4z"))))
777291f0
RW
1834 (build-system gnu-build-system)
1835 (arguments
1836 `(#:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
1837 #:tests? #f
1838 #:phases
1839 (modify-phases %standard-phases
0543c326 1840 ;; no "configure" script
a3604742
RW
1841 (delete 'configure)
1842 ;; Files appear under $out/share/faust that are read-only. The
1843 ;; install phase tries to overwrite them and fails, so we change
1844 ;; the permissions first.
1845 (add-before 'install 'fix-permissions
1846 (lambda _
1847 (for-each (lambda (file)
1848 (chmod file #o644))
1849 (find-files "architecture/max-msp" ".*"))
1850 #t)))))
777291f0 1851 (native-inputs
8394619b 1852 (list unzip))
62f6f9d9 1853 (home-page "https://faust.grame.fr/")
777291f0
RW
1854 (synopsis "Signal processing language")
1855 (description
1856 "Faust is a programming language for realtime audio signal processing.")
1857 (license license:gpl2+)))
1858
8ae60404
RW
1859(define-public faust-2
1860 (package
1861 (inherit faust)
89c78948 1862 (version "2.5.23")
8ae60404 1863 (source (origin
89c78948
RW
1864 (method url-fetch)
1865 (uri (string-append "https://github.com/grame-cncm/faust/"
1866 "releases/download/" version
1867 "/faust-" version ".tar.gz"))
8ae60404
RW
1868 (sha256
1869 (base32
89c78948 1870 "1yz5jnr76hh7rmxkpdi7gyrw1wp4gyqfpq8zyl97qdi5ga5gjznq"))))
8ae60404
RW
1871 (build-system gnu-build-system)
1872 (arguments
1873 (substitute-keyword-arguments (package-arguments faust)
1874 ((#:make-flags flags)
1875 `(list (string-append "prefix=" (assoc-ref %outputs "out"))
75bbc3c2 1876 "world"))))
8ae60404 1877 (native-inputs
fc9dbf41 1878 `(("llvm" ,llvm-3.8)
8ae60404 1879 ("which" ,which)
9fc513ad 1880 ("xxd" ,xxd)
8ae60404
RW
1881 ("ctags" ,emacs-minimal) ; for ctags
1882 ("pkg-config" ,pkg-config)))
1883 (inputs
8394619b 1884 (list libsndfile libmicrohttpd ncurses openssl zlib))))
8ae60404 1885
7c92efff
RW
1886(define-public freepats
1887 (package
1888 (name "freepats")
1889 (version "20060219")
1890 (source (origin
1891 (method url-fetch)
1892 (uri (string-append "http://freepats.zenvoid.org/freepats-"
1893 version ".tar.bz2"))
1894 (sha256
1895 (base32
1896 "12iw36rd94zirll96cd5k0va7p5hxmf2shvjlhzihcmjaw8flq82"))))
1897 (build-system trivial-build-system)
1898 (arguments
1899 `(#:modules ((guix build utils))
1900 #:builder (begin
1901 (use-modules (guix build utils))
1902 (let ((out (string-append %output "/share/freepats")))
1903 (setenv "PATH" (string-append
1904 (assoc-ref %build-inputs "bzip2") "/bin:"
1905 (assoc-ref %build-inputs "tar") "/bin"))
e3cfef22 1906 (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
7c92efff
RW
1907 (chdir "freepats")
1908 ;; Use absolute pattern references
1909 (substitute* "freepats.cfg"
1910 (("Tone_000") (string-append out "/Tone_000"))
1911 (("Drum_000") (string-append out "/Drum_000")))
1912 (mkdir-p out)
e3cfef22
MW
1913 (copy-recursively "." out)
1914 #t))))
7c92efff 1915 (native-inputs
8394619b 1916 (list tar bzip2))
7c92efff
RW
1917 (home-page "http://freepats.zenvoid.org")
1918 (synopsis "GUS compatible patches for MIDI players")
1919 (description
1920 "FreePats is a project to create a free and open set of GUS compatible
1921patches that can be used with softsynths such as Timidity and WildMidi.")
1922 ;; GPLv2+ with exception for compositions using these patches.
1923 (license license:gpl2+)))
1924
fcbeb00b
RW
1925(define-public guitarix
1926 (package
1927 (name "guitarix")
002442b2 1928 (version "0.43.1")
fcbeb00b
RW
1929 (source (origin
1930 (method url-fetch)
1931 (uri (string-append
de67e922 1932 "mirror://sourceforge/guitarix/guitarix/guitarix2-"
d706d943 1933 version ".tar.xz"))
fcbeb00b
RW
1934 (sha256
1935 (base32
002442b2 1936 "1bsjlfd7x09p3iiljilyfbns6hpqn9cgp6psl4ccd6i1lwascfrm"))))
fcbeb00b
RW
1937 (build-system waf-build-system)
1938 (arguments
1939 `(#:tests? #f ; no "check" target
fcbeb00b
RW
1940 #:configure-flags
1941 (list
fcbeb00b 1942 ;; Add the output lib directory to the RUNPATH.
bf592ef5 1943 (string-append "--ldflags=-Wl,-rpath=" %output "/lib"))))
fcbeb00b 1944 (inputs
8394619b
LC
1945 (list libsndfile
1946 boost
1947 curl
1948 avahi
1949 eigen
1950 lv2
1951 lilv
1952 ladspa
1953 jack-1
1954 gtkmm-3
1955 gtk+
1956 fftwf
1957 lrdf
1958 zita-resampler
1959 zita-convolver))
fcbeb00b
RW
1960 (native-inputs
1961 `(("gperf" ,gperf)
49767428 1962 ("faust" ,faust)
fcbeb00b 1963 ("intltool" ,intltool)
b94a6ca0 1964 ("gettext" ,gettext-minimal)
bf592ef5
RW
1965 ("pkg-config" ,pkg-config)
1966 ("sassc" ,sassc)))
fcbeb00b
RW
1967 (native-search-paths
1968 (list (search-path-specification
1969 (variable "LV2_PATH")
1970 (files '("lib/lv2")))))
096ed4f9 1971 (home-page "https://guitarix.org/")
fcbeb00b
RW
1972 (synopsis "Virtual guitar amplifier")
1973 (description "Guitarix is a virtual guitar amplifier running JACK.
1974Guitarix takes the signal from your guitar as a mono-signal from your sound
1975card. The input is processed by a main amp and a rack-section. Both can be
1976routed separately and deliver a processed stereo-signal via JACK. You may
1977fill the rack with effects from more than 25 built-in modules including stuff
1978from a simple noise gate to modulation effects like flanger, phaser or
1979auto-wah.")
1980 (license license:gpl2+)))
1981
5f5b5768
RW
1982(define-public guitarix-lv2
1983 (package (inherit guitarix)
1984 (name "guitarix-lv2")
1985 (arguments
1986 (substitute-keyword-arguments (package-arguments guitarix)
1987 ((#:configure-flags flags)
029de52f 1988 `(cons "--no-standalone" ,flags))))))
5f5b5768 1989
11d4800a
RW
1990(define-public rakarrack
1991 (package
1992 (name "rakarrack")
1993 (version "0.6.1")
1994 (source (origin
1995 (method url-fetch)
1996 (uri (string-append "mirror://sourceforge/rakarrack/rakarrack/"
1997 "rakarrack-" version "/rakarrack-"
1998 version ".tar.bz2"))
1999 (sha256
2000 (base32
2001 "1rpf63pdn54c4yg13k7cb1w1c7zsvl97c4qxcpz41c8l91xd55kn"))
2002 (modules '((guix build utils)))
2003 (snippet
2004 '(begin
2005 (substitute* '("src/process.C"
2006 "src/global.h")
2007 (("#include <Fl/") "#include <FL/"))
2008 #t))))
2009 (build-system gnu-build-system)
2010 (inputs
e3196755
LC
2011 (list alsa-utils
2012 fltk
2013 libx11
2014 libxext
2015 libxfixes
2016 libxft
2017 libxrender
2018 libxpm
2019 fontconfig
2020 freetype
2021 jack-1
2022 alsa-lib
2023 libsndfile
2024 libsamplerate
2025 zlib))
11d4800a
RW
2026 (home-page "http://rakarrack.sourceforge.net/")
2027 (synopsis "Audio effects processor")
2028 (description
2029 "Rakarrack is a richly featured multi-effects processor emulating a
2030guitar effects pedalboard. Effects include compressor, expander, noise gate,
2031equalizers, exciter, flangers, chorus, various delay and reverb effects,
2032distortion modules and many more. Most of the effects engine is built from
2033modules found in the excellent software synthesizer ZynAddSubFX. Presets and
2034user interface are optimized for guitar, but Rakarrack processes signals in
2035stereo while it does not apply internal band-limiting filtering, and thus is
2036well suited to all musical instruments and vocals.")
2037 ;; The code is explicitly licensed under the GPL version 2 only.
2038 (license license:gpl2)))
2039
32cf42c1
RW
2040(define-public ir
2041 (package
2042 (name "ir")
6f85a9c4 2043 (version "1.3.4")
32cf42c1 2044 (source (origin
6f85a9c4
RW
2045 (method git-fetch)
2046 (uri (git-reference
2047 (url "https://github.com/tomszilagyi/ir.lv2")
2048 (commit version)))
2049 (file-name (git-file-name name version))
32cf42c1
RW
2050 (sha256
2051 (base32
6f85a9c4 2052 "0svmjhg4r6wy5ci5rwz43ybll7yxjv7nnj7nyqscbzhr3gi5aib0"))))
32cf42c1
RW
2053 (build-system gnu-build-system)
2054 (arguments
2df984f2 2055 `(#:tests? #f ; no tests
6f85a9c4
RW
2056 #:make-flags
2057 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
2058 (string-append "INSTDIR="
2059 (assoc-ref %outputs "out") "/lib/lv2"))
63ebc380
RW
2060 #:phases
2061 (modify-phases %standard-phases
2062 (delete 'configure) ; no configure script
2063 ;; See https://github.com/tomszilagyi/ir.lv2/pull/20
869c416c 2064 (add-after 'unpack 'fix-type
63ebc380
RW
2065 (lambda _
2066 (substitute* '("ir_gui.cc" "lv2_ui.h")
2067 (("_LV2UI_Descriptor") "LV2UI_Descriptor"))
2068 #t)))))
32cf42c1 2069 (inputs
8394619b
LC
2070 (list libsndfile
2071 libsamplerate
2072 lv2
2073 glib
2074 gtk+-2
2075 zita-convolver))
32cf42c1 2076 (native-inputs
8394619b 2077 (list pkg-config))
32cf42c1
RW
2078 (native-search-paths
2079 (list (search-path-specification
2080 (variable "LV2_PATH")
2081 (files '("lib/lv2")))))
6f85a9c4 2082 (home-page "https://tomszilagyi.github.io/plugins/ir.lv2")
32cf42c1
RW
2083 (synopsis "LV2 convolution reverb")
2084 (description
2085 "IR is a low-latency, real-time, high performance signal convolver
2086especially for creating reverb effects. It supports impulse responses with 1,
20872 or 4 channels, in any soundfile format supported by libsndfile.")
2088 (license license:gpl2+)))
2089
fb68469f
RW
2090(define-public jack-1
2091 (package
2092 (name "jack")
31b7af76 2093 (version "0.125.0")
2ae03bf6
TGR
2094 (source
2095 (origin
2096 (method url-fetch)
2097 ;; jackaudio.org/downloads/jack-audio-connection-kit-0.125.0.tar.gz
2098 ;; no longer exists (404). Use an unofficial mirror.
2099 (uri (string-append "https://crux.ster.zone/downloads/"
2100 "jack-audio-connection-kit/"
2101 "jack-audio-connection-kit-" version ".tar.gz"))
2102 (sha256
2103 (base32 "0i6l25dmfk2ji2lrakqq9icnwjxklgcjzzk65dmsff91z2zva5rm"))))
fb68469f 2104 (build-system gnu-build-system)
8e2c0ce4
MB
2105 (arguments
2106 `(#:phases (modify-phases %standard-phases
2107 (add-after 'unpack 'patch-configure
2108 (lambda _
2109 (substitute* "configure"
2110 ;; Install to <out/lib> regardless of platform.
2111 (("libnn=lib64") "libnn=lib"))
2112 #t)))))
fb68469f 2113 (inputs
8394619b 2114 (list alsa-lib readline))
5d95e30b 2115 ;; uuid.h is included in the JACK type headers
ca01b3ad 2116 ;; db.h is included in the libjack metadata headers
5d95e30b 2117 (propagated-inputs
bb93042c 2118 `(("libuuid" ,util-linux "lib")
ca01b3ad 2119 ("bdb" ,bdb)))
2f9ae82f 2120 (native-inputs
8394619b 2121 (list pkg-config))
2ae03bf6 2122 (home-page "https://jackaudio.org/")
fb68469f
RW
2123 (synopsis "JACK audio connection kit")
2124 (description
2125 "JACK is a low-latency audio server. It can connect a number of
2126different applications to an audio device, as well as allowing them to share
2127audio between themselves. JACK is different from other audio server efforts
2128in that it has been designed from the ground up to be suitable for
2129professional audio work. This means that it focuses on two key areas:
2130synchronous execution of all clients, and low latency operation.")
2131 ;; Most files are licensed under the GPL. However, the libjack/ tree is
2132 ;; licensed under the LGPL in order to allow for proprietary usage.
e89fa047 2133 (license (list license:gpl2+ license:lgpl2.1+))))
c54a8981 2134
bcbc02fd
RW
2135;; Packages depending on JACK should always prefer jack-1. Both jack-1 and
2136;; jack-2 implement the same API. JACK2 is provided primarily as a client
2137;; program for users who might benefit from the D-BUS features.
c54a8981
RW
2138(define-public jack-2
2139 (package (inherit jack-1)
314275c7 2140 (name "jack2")
52139ce5 2141 (version "1.9.14")
c54a8981
RW
2142 (source (origin
2143 (method url-fetch)
a4527622
RW
2144 (uri (string-append "https://github.com/jackaudio/jack2/releases/"
2145 "download/v" version "/jack2-"
2146 version ".tar.gz"))
f586c877 2147 (file-name (string-append name "-" version ".tar.gz"))
c54a8981
RW
2148 (sha256
2149 (base32
52139ce5 2150 "0z11hf55a6mi8h50hfz5wry9pshlwl4mzfwgslghdh40cwv342m2"))))
c54a8981
RW
2151 (build-system waf-build-system)
2152 (arguments
fa984fa6 2153 `(#:tests? #f ; no check target
c54a8981 2154 #:configure-flags '("--dbus"
b416c647
SB
2155 "--alsa")
2156 #:phases
2157 (modify-phases %standard-phases
fa984fa6
RW
2158 (add-before 'configure 'set-linkflags
2159 (lambda _
52139ce5
MR
2160 ;; Ensure -lstdc++ is the tail of LDFLAGS or the simdtests.cpp
2161 ;; will not link with undefined reference to symbol
2162 ;; '__gxx_personality_v0@@CXXABI_1.3'
2163 (setenv "LDFLAGS" "-lstdc++")
fa984fa6
RW
2164 ;; Add $libdir to the RUNPATH of all the binaries.
2165 (substitute* "wscript"
2166 ((".*CFLAGS.*-Wall.*" m)
2167 (string-append m
2168 " conf.env.append_unique('LINKFLAGS',"
2169 "'-Wl,-rpath=" %output "/lib')\n")))
2170 #t))
bc8bf605 2171 (add-after 'install 'wrap-python-scripts
fa984fa6
RW
2172 (lambda* (#:key inputs outputs #:allow-other-keys)
2173 ;; Make sure 'jack_control' runs with the correct PYTHONPATH.
2174 (let* ((out (assoc-ref outputs "out"))
d42245d4 2175 (path (getenv "GUIX_PYTHONPATH")))
fa984fa6 2176 (wrap-program (string-append out "/bin/jack_control")
d42245d4 2177 `("GUIX_PYTHONPATH" ":" prefix (,path))))
fa984fa6 2178 #t)))))
c54a8981 2179 (inputs
8394619b
LC
2180 (list alsa-lib
2181 dbus
2182 expat
2183 libsamplerate
2184 opus
2185 python-dbus
2186 readline))
c54a8981 2187 (native-inputs
8394619b 2188 (list pkg-config))
c54a8981
RW
2189 ;; Most files are under GPLv2+, but some headers are under LGPLv2.1+
2190 (license (list license:gpl2+ license:lgpl2.1+))))
f47cba0e 2191
2f4646b6
RW
2192(define-public jalv
2193 (package
2194 (name "jalv")
c569c735 2195 (version "1.6.6")
2f4646b6
RW
2196 (source (origin
2197 (method url-fetch)
0d0252e4 2198 (uri (string-append "https://download.drobilla.net/jalv-"
2f4646b6
RW
2199 version ".tar.bz2"))
2200 (sha256
2201 (base32
c569c735 2202 "05lycfq0f06zjp5xqvzjz9hx9kmqx72yng1lghh76hv63dw43lcj"))))
2f4646b6 2203 (build-system waf-build-system)
d8c317df 2204 (arguments
4e385d2a 2205 `(#:tests? #f ; no check target
0403b04d 2206 #:python ,python-2))
2f4646b6
RW
2207 (inputs
2208 `(("lv2" ,lv2)
2209 ("lilv" ,lilv)
2210 ("suil" ,suil)
9e4e66c4
AT
2211 ("gtk2" ,gtk+-2)
2212 ("gtk3" ,gtk+)
2213 ("gtkmm" ,gtkmm-2)
ea0a5107 2214 ("qtbase" ,qtbase-5)
2f4646b6
RW
2215 ("jack" ,jack-1)))
2216 (native-inputs
8394619b 2217 (list pkg-config))
0d0252e4 2218 (home-page "https://drobilla.net/software/jalv/")
2f4646b6
RW
2219 (synopsis "Simple LV2 host for JACK")
2220 (description
2221 "Jalv is a simple but fully featured LV2 host for JACK. It runs LV2
2222plugins and exposes their ports as JACK ports, essentially making any LV2
2223plugin function as a JACK application.")
2224 (license license:isc)))
2225
2cc7ce31
RW
2226(define-public ladspa
2227 (package
2228 (name "ladspa")
2229 (version "1.13")
0c1910ed
AV
2230 (source
2231 (origin
2232 (method url-fetch)
2233 ;; Since the official link is dead,
2234 ;; we download the tarball from Debian or Internet Archive.
2235 (uri (list (string-append "http://http.debian.net"
2236 "/debian/pool/main/l/ladspa-sdk/ladspa-sdk_"
2237 version ".orig.tar.gz")
2238 (string-append "https://web.archive.org/web/20140717172251/"
2239 "http://www.ladspa.org/download/ladspa_sdk_"
2240 version ".tgz")))
2241 (sha256
2242 (base32
2243 "0srh5n2l63354bc0srcrv58rzjkn4gv8qjqzg8dnq3rs4m7kzvdm"))))
2cc7ce31
RW
2244 (build-system gnu-build-system)
2245 (arguments
2246 `(#:tests? #f ; the "test" target is a listening test only
2247 #:phases
ee527187
MW
2248 (modify-phases %standard-phases
2249 (replace 'configure
2250 (lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
2251 (chdir "src")
2252 (let ((out (assoc-ref outputs "out")))
2253 (substitute* "makefile"
2254 (("/usr/lib/ladspa/") (string-append out "/lib/ladspa/"))
2255 (("/usr/include/") (string-append out "/include/"))
2256 (("/usr/bin/") (string-append out "/bin/"))
2257 (("-mkdirhier") "mkdir -p")
2258 (("^CC.*") "CC = gcc\n")
2259 (("^CPP.*") "CPP = g++\n")))
2260 #t))
2261 (delete 'build))))
0c1910ed
AV
2262 ;; Since the home page is gone, we provide a link to the archived version.
2263 (home-page
2264 "https://web.archive.org/web/20140729190945/http://www.ladspa.org/")
2cc7ce31
RW
2265 (synopsis "Linux Audio Developer's Simple Plugin API (LADSPA)")
2266 (description
2267 "LADSPA is a standard that allows software audio processors and effects
2268to be plugged into a wide range of audio synthesis and recording packages.")
2269 (license license:lgpl2.1+)))
2270
da49086a
RW
2271(define-public lash
2272 (package
2273 (name "lash")
2274 (version "0.6.0-rc2")
2275 (source (origin
2276 (method url-fetch)
2277 ;; The tilde is not permitted in the builder name, but is used
2278 ;; in the tarball.
2279 (uri (string-append
2280 "mirror://savannah/lash/lash-"
2281 (string-join (string-split version #\-) "~")
2282 ".tar.bz2"))
2283 (file-name (string-append name "-" version ".tar.bz2"))
2284 (sha256
2285 (base32
2286 "12z1vx3krrzsfccpah9xjs68900xvr7bw92wx8np5871i2yv47iw"))))
2287 (build-system gnu-build-system)
44df7807 2288 (arguments
f03cda4d
MB
2289 '(;; Glibc no longer includes Sun RPC support, so tell the build system
2290 ;; to use libtirpc instead.
2291 #:make-flags (list (string-append "CFLAGS=-I"
2292 (assoc-ref %build-inputs "libtirpc")
2293 "/include/tirpc -ltirpc"))
2294 #:phases
44df7807
EF
2295 (modify-phases %standard-phases
2296 ;; lashd embeds an ancient version of sigsegv so we just skip it
2297 (add-after 'unpack 'skip-lashd
2298 (lambda _
2299 (substitute* '("Makefile.am" "Makefile.in")
2300 (("lashd ") ""))
b07bfd06
EF
2301 #t)))
2302 #:configure-flags '("--disable-static")))
da49086a
RW
2303 (inputs
2304 `(("bdb" ,bdb)
2305 ("gtk" ,gtk+-2)
2306 ("jack" ,jack-1)
f03cda4d 2307 ("libtirpc" ,libtirpc)
da49086a
RW
2308 ("readline" ,readline)
2309 ("python" ,python-2)))
2310 ;; According to pkg-config, packages depending on lash also need to have
2311 ;; at least the following packages declared as inputs.
2312 (propagated-inputs
8394619b 2313 (list alsa-lib dbus libxml2))
da49086a 2314 (native-inputs
8394619b 2315 (list pkg-config))
340978d7 2316 (home-page "https://www.nongnu.org/lash/")
da49086a
RW
2317 (synopsis "Audio application session manager")
2318 (description
2319 "LASH is a session management system for audio applications. It allows
2320you to save and restore audio sessions consisting of multiple interconneced
2321applications, restoring program state (i.e. loaded patches) and the
2322connections between them.")
2323 (license license:gpl2+)))
2324
8c0b5a75
TUBK
2325(define-public libbs2b
2326 (package
2327 (name "libbs2b")
2328 (version "3.1.0")
2329 (source (origin
2330 (method url-fetch)
de67e922
LF
2331 (uri (string-append "mirror://sourceforge/bs2b/libbs2b/" version
2332 "/libbs2b-" version ".tar.lzma"))
8c0b5a75
TUBK
2333 (sha256
2334 (base32
2335 "1mcc4gjkmphczjybnsrip3gq1f974knzys7x49bv197xk3fn8wdr"))))
2336 (build-system gnu-build-system)
8394619b
LC
2337 (native-inputs (list pkg-config))
2338 (inputs (list libsndfile))
3b3b60d0 2339 (home-page "https://sourceforge.net/projects/bs2b/")
8c0b5a75
TUBK
2340 (synopsis "Bauer stereophonic-to-binaural DSP")
2341 (description
2342 "The Bauer stereophonic-to-binaural DSP (bs2b) library and plugins is
2343designed to improve headphone listening of stereo audio records. Recommended
2344for headphone prolonged listening to disable superstereo fatigue without
2345essential distortions.")
2346 (license license:expat)))
2347
ecd56cd1
JF
2348(define-public ladspa-bs2b
2349 (package
2350 (name "ladspa-bs2b")
2351 (version "0.9.1")
2352 (source (origin
2353 (method url-fetch)
2354 (uri (string-append
2355 "mirror://sourceforge/bs2b/plugins/LADSPA%20plugin/"
2356 version "/" name "-" version ".tar.gz"))
2357 (sha256
2358 (base32
2359 "1b4aipbj1ba5k99gbc7gmgy14sywyrjd8rpyqj5l905j0mjv8jg2"))))
2360 (build-system gnu-build-system)
8394619b
LC
2361 (native-inputs (list pkg-config))
2362 (inputs (list ladspa libbs2b))
ecd56cd1
JF
2363 (home-page "https://sourceforge.net/projects/bs2b/")
2364 (synopsis "Bauer stereophonic-to-binaural DSP - LADSPA plugin")
2365 (description "The Bauer stereophonic-to-binaural DSP (bs2b) library and
2366plugins is designed to improve headphone listening of stereo audio records.
2367Recommended for headphone prolonged listening to disable superstereo fatigue
2368without essential distortions. This package contains a LADSPA plugin for use
2369with applications that support them (e.g. PulseAudio).")
2370 (license license:gpl2+)))
2371
f47cba0e
RW
2372(define-public liblo
2373 (package
2374 (name "liblo")
363fe78a 2375 (version "0.31")
f47cba0e
RW
2376 (source (origin
2377 (method url-fetch)
de67e922
LF
2378 (uri (string-append "mirror://sourceforge/liblo/liblo/" version
2379 "/liblo-" version ".tar.gz"))
f47cba0e
RW
2380 (sha256
2381 (base32
363fe78a 2382 "0l67rkdhfa8cffa0nynql3lh2xlbn1454h6qxhjddp1029p48krb"))))
f47cba0e
RW
2383 (build-system gnu-build-system)
2384 (arguments
2385 `(;; liblo test FAILED
2386 ;; liblo server error 19 in setsockopt(IP_ADD_MEMBERSHIP): No such device
2387 #:tests? #f))
2388 (home-page "http://liblo.sourceforge.net")
2389 (synopsis "Implementation of the Open Sound Control protocol")
2390 (description
2391 "liblo is a lightweight library that provides an easy to use
03b71957 2392implementation of the Open Sound Control (@dfn{OSC}) protocol.")
f47cba0e 2393 (license license:lgpl2.1+)))
e2420191 2394
b6568c35
VM
2395(define-public rtaudio
2396 (package
2397 (name "rtaudio")
2398 (version "5.1.0")
2399 (source
2400 (origin
2401 (method git-fetch)
2402 (uri (git-reference
2403 (url "https://github.com/thestk/rtaudio")
2404 (commit version)))
2405 (file-name (git-file-name name version))
2406 (sha256
2407 (base32 "156c2dgh6jrsyfn1y89nslvaxm4yifmxridsb708yvkaym02w2l8"))))
2408 (build-system cmake-build-system)
177ff077
VM
2409 (arguments
2410 `(#:phases
2411 (modify-phases %standard-phases
2412 ;; The header that pkg-config expects is include/rtaudio/RtAudio.h,
2413 ;; but this package installs it as include/RtAudio.h by default.
2414 (add-after 'install 'fix-inc-path
2415 (lambda* (#:key outputs #:allow-other-keys)
2416 (let* ((out (assoc-ref outputs "out"))
2417 (inc (string-append out "/include")))
2418 (mkdir-p (string-append inc "/rtaudio"))
2419 (rename-file (string-append inc "/RtAudio.h")
2420 (string-append inc "/rtaudio/RtAudio.h"))))))))
b6568c35 2421 (native-inputs
8394619b 2422 (list pkg-config))
b6568c35 2423 (inputs
8394619b 2424 (list alsa-lib jack-1 pulseaudio))
b6568c35
VM
2425 (synopsis "Common API for real-time audio I/O")
2426 (description
2427 "RtAudio is a set of C++ classes that provides a common API for real-time
2428audio input/output. It was designed with the following objectives:
2429
2430@itemize
2431@item object-oriented C++ design
2432@item simple, common API across all supported platforms
2433@item only one source and one header file for easy inclusion in programming
2434projects
2435@item allow simultaneous multi-api support
2436@item support dynamic connection of devices
2437@item provide extensive audio device parameter control
2438@item allow audio device capability probing
2439@item automatic internal conversion for data format, channel number
2440compensation, (de)interleaving, and byte-swapping
2441@end itemize")
2442 (home-page "https://www.music.mcgill.ca/~gary/rtaudio/")
2443 ;; License is expat with a non-binding request to send modifications to
2444 ;; original developer.
2445 (license license:expat)))
2446
fbcad884
OP
2447(define-public python-pyaudio
2448 (package
2449 (name "python-pyaudio")
2450 (version "0.2.11")
2451 (source
2452 (origin
2453 (method url-fetch)
7d4dae6a 2454 (uri (pypi-uri "PyAudio" version))
fbcad884
OP
2455 (sha256
2456 (base32
2457 "0x7vdsigm7xgvyg3shd3lj113m8zqj2pxmrgdyj66kmnw0qdxgwk"))))
2458 (build-system python-build-system)
2459 (inputs
8394619b 2460 (list portaudio))
fbcad884
OP
2461 (home-page "https://people.csail.mit.edu/hubert/pyaudio/")
2462 (synopsis "Bindings for PortAudio v19")
2463 (description "This package provides bindings for PortAudio v19, the
2464cross-platform audio input/output stream library.")
2465 (license license:expat)))
2466
2467(define-public python2-pyaudio
2468 (package-with-python2 python-pyaudio))
2469
a91d72e2
RW
2470(define-public python-pyliblo
2471 (package
2472 (name "python-pyliblo")
2473 (version "0.10.0")
2474 (source (origin
2475 (method url-fetch)
2476 (uri (string-append "http://das.nasophon.de/download/pyliblo-"
2477 version ".tar.gz"))
2478 (sha256
2479 (base32
2480 "13vry6xhxm7adnbyj28w1kpwrh0kf7nw83cz1yq74wl21faz2rzw"))))
2481 (build-system python-build-system)
2482 (arguments `(#:tests? #f)) ;no tests
f2516de2 2483 (native-inputs
8394619b 2484 (list python-cython))
a91d72e2 2485 (inputs
8394619b 2486 (list liblo))
a91d72e2
RW
2487 (home-page "http://das.nasophon.de/pyliblo/")
2488 (synopsis "Python bindings for liblo")
2489 (description
2490 "Pyliblo is a Python wrapper for the liblo Open Sound Control (OSC)
2491library. It supports almost the complete functionality of liblo, allowing you
2492to send and receive OSC messages using a nice and simple Python API. Also
2493included are the command line utilities @code{send_osc} and @code{dump_osc}.")
2494 (license license:lgpl2.1+)))
2495
2496(define-public python2-pyliblo
2497 (package-with-python2 python-pyliblo))
2498
58932576
LP
2499(define-public python-soundfile
2500 (package
2501 (name "python-soundfile")
2502 (version "0.10.3.post1")
2503 (source
2504 (origin
2505 (method url-fetch)
2506 (uri (pypi-uri "SoundFile" version))
2507 (sha256
2508 (base32
2509 "0yqhrfz7xkvqrwdxdx2ydy4h467sk7z3gf984y1x2cq7cm1gy329"))))
2510 (build-system python-build-system)
2511 (propagated-inputs
8394619b 2512 (list python-cffi python-numpy libsndfile))
58932576 2513 (native-inputs
8394619b 2514 (list python-pytest))
58932576
LP
2515 (arguments
2516 `(#:tests? #f ; missing OGG support
2517 #:phases
2518 (modify-phases %standard-phases
2519 (add-after 'unpack 'patch
2520 (lambda* (#:key inputs #:allow-other-keys)
2521 (substitute* "soundfile.py"
2522 (("_find_library\\('sndfile'\\)")
2523 (string-append "\"" (assoc-ref inputs "libsndfile")
2524 "/lib/libsndfile.so\""))))))))
2525 (home-page "https://github.com/bastibe/SoundFile")
2526 (synopsis "Python bindings for libsndfile")
2527 (description "This package provides python bindings for libsndfile based on
2528CFFI and NumPy.")
2529 (license license:expat)))
2530
9e2cdf72
LP
2531(define-public python-python3-midi
2532 (package
2533 (name "python-python3-midi")
2534 (version "0.2.5")
2535 (source
2536 (origin
2537 (method url-fetch)
2538 (uri (pypi-uri "python3_midi" version))
2539 (sha256
2540 (base32
2541 "1z9j1w7mpn3xhkcpxmqm5rvmj6nffb5rf14bv7n3sdh07nf6n7sf"))))
2542 (build-system python-build-system)
2543 (home-page "https://github.com/NFJones/python3-midi")
2544 (synopsis "Python MIDI API")
2545 (description "This package provides a python API to read and write MIDI
2546files.")
2547 (license license:expat)))
2548
f356c71a
LP
2549(define-public audio-to-midi
2550 (package
2551 (name "audio-to-midi")
2552 (version "2020.7")
2553 (source
2554 (origin
2555 (method git-fetch)
2556 (uri (git-reference
2557 (url "https://github.com/NFJones/audio-to-midi")
2558 (commit (string-append "v" version))))
fda4a93e 2559 (file-name (git-file-name name version))
f356c71a
LP
2560 (sha256
2561 (base32
2562 "12wf17abn3psbsg2r2lk0xdnk8n5cd5rrvjlpxjnjfhd09n7qqgm"))))
2563 (build-system python-build-system)
2564 (propagated-inputs
8394619b
LC
2565 (list python-cffi
2566 python-cython
2567 python-numpy
2568 python-progressbar2
2569 python-pycparser
2570 python-python3-midi
2571 python-soundfile))
f356c71a 2572 (native-inputs
8394619b 2573 (list libsndfile))
f356c71a
LP
2574 (arguments
2575 `(#:phases
2576 (modify-phases %standard-phases
2577 (add-after 'unpack 'fix-versions
2578 (lambda _
2579 (substitute* "requirements.txt" (("==") ">=")))))))
2580 (home-page "https://github.com/NFJones/audio-to-midi")
38376090 2581 (synopsis "Convert audio to multichannel MIDI")
f356c71a
LP
2582 (description "@command{audio-to-midi} converts audio files to multichannel
2583MIDI files. It accomplishes this by performing FFTs on all channels of the
2584audio data at user-specified time steps. It then separates the resulting
2585frequency analysis into equivalence classes which correspond to the twelve tone
2586scale; the volume of each class being the average volume of its constituent
2587frequencies. This data is then formatted to MIDI and written to disk.")
2588 (license license:expat)))
2589
332aad1b
RW
2590(define-public lilv
2591 (package
2592 (name "lilv")
b331ee62 2593 (version "0.24.12")
332aad1b
RW
2594 (source (origin
2595 (method url-fetch)
0d0252e4 2596 (uri (string-append "https://download.drobilla.net/lilv-"
d4d3df82 2597 version ".tar.bz2"))
332aad1b
RW
2598 (sha256
2599 (base32
b331ee62 2600 "0qchfsyrsrp2pdpd59025kllycr04ddpzd03ha1iz70ci687g8r6"))))
332aad1b 2601 (build-system waf-build-system)
d80ee442 2602 (arguments
d0b025ea 2603 `(#:tests? #f ; no check target
d80ee442
TUBK
2604 #:phases
2605 (modify-phases %standard-phases
2d91e596 2606 (add-before 'configure 'set-ldflags
d80ee442
TUBK
2607 (lambda* (#:key outputs #:allow-other-keys)
2608 (setenv "LDFLAGS"
2609 (string-append "-Wl,-rpath="
b331ee62 2610 (assoc-ref outputs "out") "/lib"))))
6833c7a1
F
2611 (add-after 'unpack 'full-store-path-to-shared-library
2612 (lambda* (#:key outputs #:allow-other-keys)
2613 (with-directory-excursion "bindings/python"
2614 (substitute* "lilv.py"
2615 (("liblilv-0.so") (string-append (assoc-ref outputs "out")
b331ee62 2616 "/lib/liblilv-0.so")))))))))
d0b025ea 2617 ;; Required by lilv-0.pc.
ff7df27d 2618 (propagated-inputs
8394619b 2619 (list lv2 serd sord sratom))
332aad1b 2620 (native-inputs
8394619b 2621 (list python pkg-config))
6833c7a1 2622 (home-page "https://drobilla.net/software/lilv")
332aad1b
RW
2623 (synopsis "Library to simplify use of LV2 plugins in applications")
2624 (description
2625 "Lilv is a C library to make the use of LV2 plugins as simple as possible
2626for applications. Lilv is the successor to SLV2, rewritten to be
2627significantly faster and have minimal dependencies.")
2628 (license license:isc)))
2629
e2420191
RW
2630(define-public lv2
2631 (package
2632 (name "lv2")
6a36f4e4 2633 (version "1.18.2")
e2420191
RW
2634 (source (origin
2635 (method url-fetch)
2c735995 2636 (uri (string-append "https://lv2plug.in/spec/lv2-"
eb21d248 2637 version ".tar.bz2"))
e2420191
RW
2638 (sha256
2639 (base32
6a36f4e4 2640 "0pp0n9x1rg8d4fw853z9cvfifjdi4bl85yjxxddqa1acfjy1z2af"))))
e2420191
RW
2641 (build-system waf-build-system)
2642 (arguments
2c735995 2643 `(#:tests? #f ; no check target
2e189eb8 2644 #:configure-flags '("--no-plugins")))
e2420191
RW
2645 (inputs
2646 ;; Leaving off cairo and gtk+-2.0 which are needed for example plugins
8394619b 2647 (list libsndfile))
e2420191 2648 (native-inputs
8394619b 2649 (list pkg-config))
2c735995 2650 (home-page "https://lv2plug.in/")
e2420191
RW
2651 (synopsis "LV2 audio plugin specification")
2652 (description
2653 "LV2 is an open specification for audio plugins and host applications.
2654At its core, LV2 is a simple stable interface, accompanied by extensions which
2655add functionality to support the needs of increasingly powerful audio
2656software.")
2657 (license license:isc)))
5279eb6f 2658
98247127
RW
2659(define-public lv2-mda-piano
2660 (package
2661 (name "lv2-mda-piano")
2662 (version "0.0.2")
2663 (source (origin
2664 (method git-fetch)
2665 (uri (git-reference
f6f499b3 2666 (url "http://git.elephly.net/software/lv2-mdametapiano.git")
98247127 2667 (commit version)))
35a01e67 2668 (file-name (git-file-name name version))
98247127
RW
2669 (sha256
2670 (base32
2671 "07lywf6lpfpndg3i9w752mmlg2hgn1bwp23h8b0mdj6awh67abqd"))))
2672 (build-system gnu-build-system)
2673 (arguments
2674 `(#:make-flags (list
2675 "TYPE=mdaPiano"
2676 (string-append "PREFIX=" (assoc-ref %outputs "out")))
2677 #:tests? #f ; no check target
dc1d3cde 2678 #:phases (modify-phases %standard-phases (delete 'configure))))
98247127 2679 (inputs
8394619b 2680 (list lv2 lvtk))
98247127 2681 (native-inputs
8394619b 2682 (list pkg-config))
98247127
RW
2683 (native-search-paths
2684 (list (search-path-specification
2685 (variable "LV2_PATH")
2686 (files '("lib/lv2")))))
a4e8a9e0 2687 (home-page "https://elephly.net/lv2/mdapiano.html")
98247127
RW
2688 (synopsis "LV2 port of the mda Piano plugin")
2689 (description "An LV2 port of the mda Piano VSTi.")
2690 (license license:gpl3+)))
2691
8fb79e3d
RW
2692(define-public lv2-mda-epiano
2693 (package (inherit lv2-mda-piano)
2694 (name "lv2-mda-epiano")
2695 (arguments
2696 `(#:make-flags (list
2697 "TYPE=mdaEPiano"
2698 (string-append "PREFIX=" (assoc-ref %outputs "out")))
2699 #:tests? #f ; no check target
dc1d3cde 2700 #:phases (modify-phases %standard-phases (delete 'configure))))
a4e8a9e0 2701 (home-page "https://elephly.net/lv2/mdaepiano.html")
8fb79e3d
RW
2702 (synopsis "LV2 port of the mda EPiano plugin")
2703 (description "An LV2 port of the mda EPiano VSTi.")))
2704
c1718190
RW
2705(define-public lvtk
2706 (package
2707 (name "lvtk")
2708 (version "1.2.0")
2709 (source (origin
b255365c
RW
2710 (method git-fetch)
2711 (uri (git-reference
b0e7b699 2712 (url "https://github.com/lvtk/lvtk")
b255365c
RW
2713 (commit version)))
2714 (file-name (git-file-name name version))
c1718190
RW
2715 (sha256
2716 (base32
b255365c 2717 "1b01zvzl70ana6l1kn8fgyr7msnn3c7x61cgw7fdpp50322352p8"))))
c1718190
RW
2718 (build-system waf-build-system)
2719 (arguments
2720 `(#:tests? #f ; no check target
2721 #:python ,python-2
2722 #:configure-flags
2723 (list (string-append "--boost-includes="
2724 (assoc-ref %build-inputs "boost")
ed59057b 2725 "/include"))))
c1718190 2726 (inputs
8394619b 2727 (list boost gtkmm-2 lv2))
c1718190 2728 (native-inputs
8394619b 2729 (list pkg-config))
c1718190
RW
2730 (home-page "https://github.com/lvtk/lvtk")
2731 (synopsis "C++ libraries for LV2 plugins")
2732 (description
2733 "The LV2 Toolkit (LVTK) contains libraries that wrap the LV2 C API and
2734extensions into easy to use C++ classes. It is the successor of
2735lv2-c++-tools.")
2736 (license license:gpl3+)))
2737
f2fac359
TUBK
2738(define-public openal
2739 (package
2740 (name "openal")
d5037890 2741 (version "1.20.1")
f2fac359
TUBK
2742 (source (origin
2743 (method url-fetch)
2744 (uri (string-append
b7ea10d0 2745 "https://openal-soft.org/openal-releases/openal-soft-"
f2fac359
TUBK
2746 version ".tar.bz2"))
2747 (sha256
2748 (base32
d5037890 2749 "0vax0b1lgd4212bpxa1rciz52d4mv3dkfvcbbhzw4cjp698v1kmn"))))
f2fac359
TUBK
2750 (build-system cmake-build-system)
2751 (arguments
7ee5db15
RW
2752 `(#:tests? #f ; no check target
2753 #:phases
2754 (modify-phases %standard-phases
2755 (add-after
2756 'unpack 'use-full-library-paths
2757 (lambda* (#:key inputs #:allow-other-keys)
69290fd0 2758 (substitute* "alc/backends/pulseaudio.cpp"
7ee5db15
RW
2759 (("#define PALIB \"libpulse\\.so\\.0\"")
2760 (string-append "#define PALIB \""
2761 (assoc-ref inputs "pulseaudio")
2762 "/lib/libpulse.so.0"
2763 "\"")))
69290fd0 2764 (substitute* "alc/backends/alsa.cpp"
7ee5db15
RW
2765 (("LoadLib\\(\"libasound\\.so\\.2\"\\)")
2766 (string-append "LoadLib(\""
2767 (assoc-ref inputs "alsa-lib")
2768 "/lib/libasound.so.2"
2769 "\")")))
2770 #t)))))
f2fac359 2771 (inputs
8394619b 2772 (list alsa-lib pulseaudio))
f2fac359
TUBK
2773 (synopsis "3D audio API")
2774 (description
2775 "OpenAL provides capabilities for playing audio in a virtual 3D
2776environment. Distance attenuation, doppler shift, and directional sound
2777emitters are among the features handled by the API. More advanced effects,
2778including air absorption, occlusion, and environmental reverb, are available
2779through the EFX extension. It also facilitates streaming audio, multi-channel
2780buffers, and audio capture.")
b7ea10d0 2781 (home-page "https://openal-soft.org/")
f2fac359
TUBK
2782 (license license:lgpl2.0+)))
2783
c2b411c2 2784(define-public freealut
2785 (package
2786 (name "freealut")
2787 (version "1.1.0")
2788 (source (origin
2789 (method url-fetch)
2790 ;; Upstream url is unclear, many systems use Fedora, there is also
2791 ;; https://github.com/vancegroup/freealut though the status of it
2792 ;; (official? unofficial?) is not clear.
2793 (uri (string-append
2794 "https://pkgs.fedoraproject.org/repo/pkgs/" name "/" name "-"
2795 version ".tar.gz" "/e089b28a0267faabdb6c079ee173664a/" name
2796 "-" version ".tar.gz"))
2797 (sha256
2798 (base32
2799 "0kzlil6112x2429nw6mycmif8y6bxr2cwjcvp18vh6s7g63ymlb0"))))
2800 (build-system cmake-build-system)
2801 (arguments
2802 `(#:tests? #f)) ; no check target
2803 (inputs
8394619b 2804 (list openal))
c2b411c2 2805 (synopsis "Free implementation of OpenAL's ALUT standard")
2806 (description "freealut is the OpenAL Utility Toolkit.")
aeca6070 2807 (home-page "https://kcat.strangesoft.net/openal.html")
c2b411c2 2808 (license license:lgpl2.0)))
2809
4443bb8d
RW
2810(define-public patchage
2811 (package
2812 (name "patchage")
c3e70aac 2813 (version "1.0.4")
4443bb8d
RW
2814 (source (origin
2815 (method url-fetch)
0d0252e4 2816 (uri (string-append "https://download.drobilla.net/patchage-"
4443bb8d
RW
2817 version
2818 ".tar.bz2"))
2819 (sha256
2820 (base32
c3e70aac 2821 "0gbakiw3mikgbvy3pssrmqmn7z5c7kp4vyaxj5rs4jnkscxgw9vw"))))
4443bb8d 2822 (build-system waf-build-system)
0fd9671b 2823 (arguments
2a40b199 2824 `(#:tests? #f)) ; no check target
4443bb8d 2825 (inputs
8394619b
LC
2826 (list alsa-lib
2827 boost
2828 jack-1
2829 ganv
2830 glibmm
2831 gtkmm-2
2832 dbus-glib))
4443bb8d 2833 (native-inputs
8394619b 2834 (list pkg-config))
41cb043a 2835 (home-page "https://drobilla.net/software/patchage.html")
4443bb8d
RW
2836 (synopsis "Modular patch bay for audio and MIDI systems")
2837 (description
2838 "Patchage is a modular patch bay for audio and MIDI systems based on JACK
2839and ALSA.")
2840 (license license:gpl3+)))
2841
a4b71b32
MB
2842(define-public pcaudiolib
2843 (package
2844 (name "pcaudiolib")
2845 (version "1.1")
2846 (home-page "https://github.com/espeak-ng/pcaudiolib")
2847 (source (origin
2848 (method git-fetch)
2849 (uri (git-reference (url home-page) (commit version)))
2850 (file-name (git-file-name name version))
2851 (sha256
2852 (base32
2853 "0c55hlqqh0m7bcb3nlgv1s4a22s5bgczr1cakjh3767rjb10khi0"))))
2854 (build-system gnu-build-system)
2855 (arguments
2856 `(#:configure-flags '("--disable-static")))
2857 (native-inputs
8394619b 2858 (list autoconf automake libtool pkg-config which))
a4b71b32 2859 (inputs
8394619b 2860 (list alsa-lib pulseaudio))
a4b71b32
MB
2861 (synopsis "Portable C audio library")
2862 (description
2863 "The Portable C Audio Library (pcaudiolib) provides a C@tie{}API to
2864different audio devices such as ALSA or PulseAudio.")
2865 (license (list license:gpl3+
2866 ;; The bundled TPCircularBuffer uses a custom license.
2867 (license:non-copyleft
2868 "file://src/TPCircularBuffer/README.markdown")))))
2869
0d78e377
MM
2870(define-public qjackctl
2871 (package
2872 (name "qjackctl")
f40526c6 2873 (version "0.9.5")
0d78e377
MM
2874 (source (origin
2875 (method url-fetch)
1538bc33
RW
2876 (uri (string-append "mirror://sourceforge/qjackctl/qjackctl/"
2877 version "/qjackctl-" version ".tar.gz"))
0d78e377
MM
2878 (sha256
2879 (base32
f40526c6 2880 "1g61xwsxsndwlnh4547vl7jfcf4kqlbb4394jq2m8qbbzk51b6rv"))))
c9c27417 2881 (build-system cmake-build-system)
0d78e377 2882 (arguments
4dcf221c 2883 '(#:tests? #f)) ; no check target
0d78e377 2884 (inputs
8394619b 2885 (list jack-1 alsa-lib portaudio qtbase-5 qtx11extras))
0d78e377 2886 (native-inputs
8394619b 2887 (list pkg-config qttools))
0d78e377
MM
2888 (home-page "https://qjackctl.sourceforge.io/")
2889 (synopsis "Jack server control application")
2890 (description "Control a Jack server. Allows you to plug various sources
2891into various outputs and to start, stop and configure jackd")
2892 (license license:gpl2+)))
2893
40713793
RW
2894(define-public qjackrcd
2895 (package
2896 (name "qjackrcd")
78357403 2897 (version "1.2.2")
40713793 2898 (source (origin
78357403
RW
2899 (method git-fetch)
2900 (uri (git-reference
b0e7b699 2901 (url "https://github.com/orouits/qjackrcd")
78357403 2902 (commit (string-append "v" version))))
70aa07d2 2903 (file-name (git-file-name name version))
40713793
RW
2904 (sha256
2905 (base32
78357403 2906 "1l5iq2mkqd4gn9yr8xbh9qlpp1clcflazychl4vhdbz0bzq4c6al"))))
40713793
RW
2907 (build-system gnu-build-system)
2908 (arguments
2909 `(#:phases
2910 (modify-phases %standard-phases
2911 (replace 'configure
2912 (lambda* (#:key outputs #:allow-other-keys)
14a852bd
TGR
2913 (invoke "qmake"
2914 (string-append "PREFIX="
2915 (assoc-ref outputs "out"))))))))
40713793 2916 (native-inputs
8394619b 2917 (list qtbase-5)) ; for qmake
40713793 2918 (inputs
8394619b 2919 (list jack-1 libsndfile qtbase-5))
40713793
RW
2920 (home-page "https://sourceforge.net/projects/qjackrcd/")
2921 (synopsis "Stereo audio recorder for JACK")
2922 (description "QJackRcd is a simple graphical stereo recorder for JACK
2923supporting silence processing for automatic pause, file splitting, and
2924background file post-processing.")
2925 (license license:gpl2+)))
0d78e377 2926
247384d0
MC
2927(define-public supercollider
2928 (package
2929 (name "supercollider")
0745c820 2930 (version "3.12.1")
abd2a5a8
NG
2931 (source
2932 (origin
2933 (method git-fetch)
2934 (uri (git-reference
2935 (url "https://github.com/supercollider/supercollider")
2936 (commit (string-append "Version-" version))
2937 ;; for nova-simd, nova-tt, hidapi, TLSF, oscpack
2938 (recursive? #t)))
2939 (file-name (git-file-name name version))
2940 (sha256
2941 (base32
2942 "0id522338a464j1slcspajwc7klypbc9qpigw5mqjhrw970wij5z"))
2943 (modules '((guix build utils)
2944 (ice-9 ftw)))
2945 (snippet
2946 ;; The build system doesn't allow us to unbundle the following
2947 ;; libraries. hidapi is also heavily patched and upstream not
2948 ;; actively maintained.
2949 '(let ((keep-dirs '("nova-simd" "nova-tt" "hidapi"
2950 "TLSF-2.4.6" "oscpack_1_1_0" "." "..")))
2951 (with-directory-excursion "./external_libraries"
2952 (for-each
2953 delete-file-recursively
2954 (scandir "."
2955 (lambda (x)
2956 (and (eq? (stat:type (stat x)) 'directory)
2957 (not (member (basename x) keep-dirs)))))))
2958 ;; To find the Guix provided ableton-link library.
2959 (substitute* "lang/CMakeLists.txt"
2960 (("include\\(\\.\\./external_libraries/link/\
a5638483 2961AbletonLinkConfig\\.cmake\\)")
abd2a5a8
NG
2962 "find_package(AbletonLink NAMES AbletonLink ableton-link \
2963link REQUIRED)"))))))
247384d0 2964 (build-system cmake-build-system)
409d2907 2965 (outputs
abd2a5a8
NG
2966 '("out" ;core language
2967 "ide")) ;qt ide
247384d0 2968 (arguments
0745c820
AV
2969 `(#:configure-flags '("-DSYSTEM_BOOST=ON"
2970 "-DSYSTEM_YAMLCPP=ON"
2971 "-DSC_QT=ON"
2972 "-DCMAKE_BUILD_TYPE=Release"
267d5947 2973 "-DFORTIFY=ON"
0745c820
AV
2974 ;; "-DLIBSCSYNTH=ON" ; TODO: Re-enable?
2975 "-DSC_EL=OFF") ;scel is packaged individually as emacs-scel
247384d0
MC
2976 #:phases
2977 (modify-phases %standard-phases
2915a760
MC
2978 ;; HOME must be defined otherwise supercollider throws a "ERROR:
2979 ;; Primitive '_FileMkDir' failed." error when generating the doc.
2980 ;; The graphical tests also hang without it.
2981 (add-after 'unpack 'set-home-directory
247384d0 2982 (lambda _
abd2a5a8 2983 (setenv "HOME" (getcwd))))
2915a760 2984 (add-after 'unpack 'patch-scclass-dir
6241eacd
GL
2985 (lambda* (#:key outputs #:allow-other-keys)
2986 (let* ((out (assoc-ref outputs "out"))
2987 (scclass-dir
2988 (string-append out
2989 "/share/SuperCollider/SCClassLibrary")))
2990 (substitute* "lang/LangSource/SC_LanguageConfig.cpp"
2991 (((string-append
2992 "SC_Filesystem::instance\\(\\)\\.getDirectory"
2993 "\\(DirName::Resource\\) / CLASS_LIB_DIR_NAME"))
abd2a5a8 2994 (string-append "Path(\"" scclass-dir "\")"))))))
2915a760
MC
2995 (add-before 'build 'prepare-x
2996 (lambda _
2997 (system "Xvfb &")
abd2a5a8 2998 (setenv "DISPLAY" ":0")))
409d2907
GL
2999 (add-before 'install 'install-ide
3000 (lambda* (#:key outputs #:allow-other-keys)
3001 (let* ((out (assoc-ref outputs "out"))
3002 (ide (assoc-ref outputs "ide"))
3003 (scide "editors/sc-ide/scide"))
3004 (install-file scide
3005 (string-append ide "/bin"))
abd2a5a8 3006 (delete-file scide)))))))
247384d0 3007 (native-inputs
8394619b 3008 (list ableton-link pkg-config qttools xorg-server-for-tests))
0745c820
AV
3009 (inputs (list jack-1
3010 libsndfile
3011 fftw
3012 libxt
3013 readline ;readline support for sclang's CLI
3014 alsa-lib ;for sclang's MIDI interface
3015 eudev ;for user interactions with devices
3016 avahi ;zeroconf service discovery support
3017 icu4c
3018 boost
3019 boost-sync
3020 yaml-cpp
3021 qtbase-5
3022 qtdeclarative
3023 qtsvg
3024 qtwebchannel
3025 qtwebsockets))
409d2907 3026 (propagated-inputs ;to get native-search-path
8394619b 3027 (list qtwebengine))
247384d0
MC
3028 (home-page "https://github.com/supercollider/supercollider")
3029 (synopsis "Synthesis engine and programming language")
3030 (description "SuperCollider is a synthesis engine (@code{scsynth} or
3031@code{supernova}) and programming language (@code{sclang}). It can be used
3032for experimenting with sound synthesis and algorithmic composition.
3033
3034SuperCollider requires jackd to be installed in your user profile and your
3035user must be allowed to access the realtime features of the kernel. Search
3036for \"realtime\" in the index of the Guix manual to learn how to achieve this
59e80445 3037using Guix System.")
247384d0
MC
3038 (license license:gpl2+)))
3039
9fe7b55a
VM
3040(define-public libshout-idjc
3041 (package
3042 (name "libshout-idjc")
3043 (version "2.4.4")
3044 (source
3045 (origin
3046 (method url-fetch)
3047 (uri (string-append "mirror://sourceforge/libshoutidjc.idjc.p"
3048 "/libshout-idjc-" version ".tar.gz"))
3049 (sha256
3050 (base32 "1r9z8ggxylr2ab0isaljbm574rplnlcb12758j994h54nh2vikwb"))))
3051 (build-system gnu-build-system)
3052 (native-inputs
8394619b 3053 (list pkg-config))
9fe7b55a 3054 (inputs
8394619b 3055 (list libogg libtheora libvorbis speex))
9fe7b55a
VM
3056 (home-page "http://idjc.sourceforge.net/")
3057 (synopsis "Broadcast streaming library with IDJC extensions")
3058 (description "This package provides libshout plus IDJC extensions.")
3059 ;; GNU Library (not Lesser) General Public License.
3060 (license license:lgpl2.0+)))
3061
b22755be
RW
3062(define-public raul
3063 (package
3064 (name "raul")
3065 (version "0.8.0")
3066 (source (origin
3067 (method url-fetch)
0d0252e4 3068 (uri (string-append "https://download.drobilla.net/raul-"
b22755be
RW
3069 version ".tar.bz2"))
3070 (sha256
3071 (base32
3072 "09ms40xc1x6qli6lxkwn5ibqh62nl9w7dq0b6jh1q2zvnrxwsd8b"))))
3073 (build-system waf-build-system)
3074 (arguments
3075 `(#:python ,python-2
3076 #:tests? #f)) ; no check target
3077 (inputs
8394619b 3078 (list glib boost))
b22755be 3079 (native-inputs
8394619b 3080 (list pkg-config))
0d0252e4 3081 (home-page "https://drobilla.net/software/raul/")
b22755be
RW
3082 (synopsis "Real-time audio utility library")
3083 (description
3084 "Raul (Real-time Audio Utility Library) is a C++ utility library primarily
3085aimed at audio/musical applications.")
3086 (license license:gpl2+)))
3087
f91d0d08 3088(define-public raul-devel
a8bf6b9b 3089 (let ((commit "4db870b2b20b0a608ec0283139056b836c5b1624")
f91d0d08
RW
3090 (revision "1"))
3091 (package (inherit raul)
3092 (name "raul")
a8bf6b9b 3093 (version (string-append "0.8.9-" revision "."
f91d0d08
RW
3094 (string-take commit 9)))
3095 (source (origin
3096 (method git-fetch)
3097 (uri (git-reference
0d0252e4 3098 (url "https://git.drobilla.net/raul.git")
f91d0d08
RW
3099 (commit commit)))
3100 (file-name (string-append name "-" version "-checkout"))
3101 (sha256
3102 (base32
a8bf6b9b 3103 "04fajrass3ymr72flx5js5vxc601ccrmx8ny8scp0rw7j0igyjdr")))))))
f91d0d08 3104
d83bb797
JW
3105(define-public resample
3106 (package
3107 (name "resample")
3108 (version "1.8.1")
3109 (source (origin
3110 (method url-fetch)
3111 (uri (string-append "https://ccrma.stanford.edu/~jos/gz/resample-"
3112 version
3113 ".tar.gz"))
3114 (sha256 (base32
3115 "074zj8ydp05yy1hjcglfv3hkvj4cm50f9nralka1992pm6yf8yvy"))))
3116 (build-system gnu-build-system)
3117 (native-inputs
8394619b 3118 (list autoconf automake pkg-config libtool))
ce34e87c
MC
3119 (synopsis "Sampling rate conversion and filter design utilities")
3120 (description "This package contains the @command{resample} and
3121@command{windowfilter} command line utilities. The @command{resample} command
3122allows changing the sampling rate of a sound file, while the
ed8c12fb 3123@command{windowfilter} command allows designing Finite Impulse Response (FIR)
ce34e87c 3124filters using the so-called @emph{window method}.")
d83bb797
JW
3125 (home-page "https://ccrma.stanford.edu/~jos/resample/Free_Resampling_Software.html")
3126 (license license:lgpl2.1+)))
3127
57238ff2
RW
3128(define-public rubberband
3129 (package
3130 (name "rubberband")
4bee557d 3131 (version "1.8.2")
57238ff2
RW
3132 (source (origin
3133 (method url-fetch)
3134 (uri
3135 (string-append "https://bitbucket.org/breakfastquay/rubberband/get/v"
3136 version
3137 ".tar.bz2"))
fdf359f8 3138 (file-name (string-append name "-" version ".tar.bz2"))
57238ff2
RW
3139 (sha256
3140 (base32
4bee557d 3141 "0462fmjnfqpv2qi0s6ny42drqarkr0xy9lw8frjmfgzyzl5n9294"))))
57238ff2 3142 (build-system gnu-build-system)
4bee557d
TGR
3143 (arguments
3144 `(#:tests? #f ; no check target
3145 #:phases
3146 (modify-phases %standard-phases
3147 (add-after 'unpack 'skip-jni-installation
3148 ;; ‘make install’ unconditionally installs librubberband-jni.so,
3149 ;; which is never built by ‘make all’. Skip it.
3150 (lambda _
3151 (substitute* "Makefile.in"
3152 ((".*cp -f \\$\\(JNI_TARGET\\).*") ""))
3153 #t)))))
57238ff2 3154 (inputs
8394619b 3155 (list ladspa libsamplerate vamp))
57238ff2 3156 (native-inputs
8394619b 3157 (list pkg-config))
20377e4a 3158 (home-page "https://breakfastquay.com/rubberband/")
57238ff2
RW
3159 (synopsis "Audio time-stretching and pitch-shifting library")
3160 (description
3161 "Rubber Band is a library and utility program that permits changing the
3162tempo and pitch of an audio recording independently of one another.")
3163 (license license:gpl2+)))
3164
cc45cff8
RW
3165(define-public rtmidi
3166 (package
3167 (name "rtmidi")
bcdf11d6 3168 (version "4.0.0")
cc45cff8 3169 (source (origin
bcdf11d6
PL
3170 (method url-fetch)
3171 (uri (string-append "https://www.music.mcgill.ca/~gary/rtmidi"
3172 "/release/rtmidi-" version ".tar.gz"))
3173 (file-name (string-append "rtmidi-" version ".tar.gz"))
cc45cff8
RW
3174 (sha256
3175 (base32
bcdf11d6 3176 "1k962ljpnwyjw9jjiky2372khhri1wqvrj5qsalfpys31xqzw31p"))))
cc45cff8 3177 (build-system gnu-build-system)
cc45cff8 3178 (inputs
8394619b 3179 (list jack-1 alsa-lib))
cc45cff8 3180 (native-inputs
8394619b 3181 (list autoconf automake libtool pkg-config))
bcdf11d6 3182 (home-page "https://www.music.mcgill.ca/~gary/rtmidi")
cc45cff8
RW
3183 (synopsis "Cross-platform MIDI library for C++")
3184 (description
3185 "RtMidi is a set of C++ classes (RtMidiIn, RtMidiOut, and API specific
3186classes) that provide a common cross-platform API for realtime MIDI
3187input/output.")
3188 (license license:expat)))
3189
5279eb6f
RW
3190(define-public sratom
3191 (package
3192 (name "sratom")
dfea2492 3193 (version "0.6.6")
5279eb6f 3194 (source (origin
95f6e6da
MB
3195 (method url-fetch)
3196 (uri (string-append "https://download.drobilla.net/sratom-"
3197 version ".tar.bz2"))
3198 (sha256
3199 (base32
dfea2492 3200 "178v90qvsp6lw4sqdmdz0bzyjkgwhv9m75ph1d1z8say5bv0p4gv"))))
5279eb6f 3201 (build-system waf-build-system)
95f6e6da 3202 (arguments `(#:tests? #f)) ;no check target
6e0b18bf
MB
3203 (propagated-inputs
3204 ;; In Requires of sratom-0.pc.
8394619b 3205 (list lv2 serd sord))
5279eb6f 3206 (native-inputs
8394619b 3207 (list pkg-config))
0d0252e4 3208 (home-page "https://drobilla.net/software/sratom/")
5279eb6f
RW
3209 (synopsis "Library for serialising LV2 atoms to/from RDF")
3210 (description
3211 "Sratom is a library for serialising LV2 atoms to/from RDF, particularly
3212the Turtle syntax.")
3213 (license license:isc)))
f3ab6ad3
RW
3214
3215(define-public suil
3216 (package
3217 (name "suil")
66017728 3218 (version "0.10.10")
f3ab6ad3 3219 (source (origin
8fadac95
TGR
3220 (method url-fetch)
3221 (uri (string-append "https://download.drobilla.net/suil-"
3222 version ".tar.bz2"))
3223 (sha256
3224 (base32
66017728 3225 "1ysbazqlbyxlzyr9zk7dj2mgb6pn0amllj2cd5g1m56wnzk0h3vm"))))
f3ab6ad3 3226 (build-system waf-build-system)
9f64f7e6 3227 (arguments
0fe041bd 3228 `(#:tests? #f)) ;no check target
f3ab6ad3 3229 (inputs
cfd68599
TGR
3230 (list lv2
3231 gtk+-2
3232 gtk+
3233 qtbase-5))
f3ab6ad3 3234 (native-inputs
8394619b 3235 (list pkg-config))
0d0252e4 3236 (home-page "https://drobilla.net/software/suil/")
f3ab6ad3
RW
3237 (synopsis "Library for loading and wrapping LV2 plugin UIs")
3238 (description
3239 "Suil is a lightweight C library for loading and wrapping LV2 plugin UIs.
3240
3241Suil makes it possible to load a UI of a toolkit in a host using another
3242toolkit. The API is designed such that hosts do not need to explicitly
3243support specific toolkits – if Suil supports a particular toolkit, then UIs in
3244that toolkit will work in all hosts that use Suil automatically.
3245
a00403c6 3246Suil currently supports every combination of Gtk, Qt, and X11.")
f3ab6ad3 3247 (license license:isc)))
db46f2fc 3248
2a4f3c17
VM
3249(define-public libebur128
3250 (package
3251 (name "libebur128")
55bdb2b3 3252 (version "1.2.6")
2a4f3c17
VM
3253 (source
3254 (origin
3255 (method git-fetch)
3256 (uri (git-reference
3257 (url "https://github.com/jiixyj/libebur128")
3258 (commit (string-append "v" version))))
3259 (file-name (git-file-name name version))
3260 (sha256
55bdb2b3 3261 (base32 "0xkpz5rzz1j1srhprbh89669gw8z5f1njpvcnxqgf7qax69vd8sh"))))
2a4f3c17
VM
3262 (build-system cmake-build-system)
3263 (arguments
3264 `(;; Tests require proprietary .wav files. See
3265 ;; https://github.com/jiixyj/libebur128/issues/82.
3266 #:tests? #f
3267 #:configure-flags '("-DBUILD_STATIC_LIBS=OFF")))
3268 (home-page "https://github.com/jiixyj/libebur128")
3269 (synopsis "Library implementing the EBU R 128 loudness standard")
3270 (description
3271 "@code{libebur128} is a C library that implements the EBU R 128 standard
3272for loudness normalisation.")
3273 (license license:expat)))
3274
9ffee457
RW
3275(define-public timidity++
3276 (package
3277 (name "timidity++")
0c31e86b 3278 (version "2.15.0")
9ffee457
RW
3279 (source (origin
3280 (method url-fetch)
de67e922
LF
3281 (uri (string-append "mirror://sourceforge/timidity/TiMidity++"
3282 "/TiMidity++-" version
3283 "/TiMidity++-" version ".tar.bz2"))
9ffee457
RW
3284 (sha256
3285 (base32
0c31e86b 3286 "1xf8n6dqzvi6nr2asags12ijbj1lwk1hgl3s27vm2szib8ww07qn"))))
9ffee457
RW
3287 (build-system gnu-build-system)
3288 (arguments
3289 '(#:configure-flags
3290 (list "--enable-audio=alsa,flac,jack,ao,vorbis,speex"
3291 "--enable-ncurses"
3292 "--enable-server"
3293 "--enable-alsaseq"
3294 (string-append "--with-default-path="
3295 (assoc-ref %outputs "out") "/etc/timidity"))
3296 #:phases
dc1d3cde
KK
3297 (modify-phases %standard-phases
3298 (add-after 'install 'install-config
3299 (lambda _
3300 (let ((out (string-append (assoc-ref %outputs "out")
3301 "/etc/timidity")))
3302 (mkdir-p out)
3303 (call-with-output-file
3304 (string-append out "/timidity.cfg")
3305 (lambda (port)
3306 (format port (string-append "source "
3307 (assoc-ref %build-inputs "freepats")
3308 "/share/freepats/freepats.cfg")))))
3309 #t)))))
9ffee457 3310 (inputs
8394619b
LC
3311 (list alsa-lib
3312 ao
3313 flac
3314 jack-1
3315 libogg
3316 libvorbis
3317 speex
3318 ncurses
3319 freepats))
9ffee457 3320 (native-inputs
8394619b 3321 (list pkg-config))
9ffee457
RW
3322 (home-page "http://timidity.sourceforge.net/")
3323 (synopsis "Software synthesizer for playing MIDI files")
3324 (description
3325 "TiMidity++ is a software synthesizer. It can play MIDI files by
3326converting them into PCM waveform data; give it a MIDI data along with digital
3327instrument data files, then it synthesizes them in real-time, and plays. It
3328can not only play sounds, but also can save the generated waveforms into hard
3329disks as various audio file formats.")
3330 (license license:gpl2+)))
3331
db46f2fc
RW
3332(define-public vamp
3333 (package
3334 (name "vamp")
b1fb59d3 3335 (version "2.6")
db46f2fc
RW
3336 (source (origin
3337 (method url-fetch)
3338 (uri (string-append
3339 "https://code.soundsoftware.ac.uk"
494e9b91 3340 "/attachments/download/1520/vamp-plugin-sdk-"
b1fb59d3 3341 version ".tar.gz"))
9002e17c
TUBK
3342 (sha256
3343 (base32
494e9b91 3344 "0pzq0yy2kdl3jgfc2aqmh5m55nk1ild0hq8mydiiw35c6y0mglyh"))))
db46f2fc 3345 (build-system gnu-build-system)
9002e17c
TUBK
3346 (arguments
3347 `(#:tests? #f ; no check target
3348 #:phases
dc1d3cde
KK
3349 (modify-phases %standard-phases
3350 (add-after 'install 'remove-libvamp-hostsdk.la
3351 (lambda* (#:key outputs #:allow-other-keys)
3352 ;; https://bugs.launchpad.net/ubuntu/+source/vamp-plugin-sdk/+bug/1253656
3353 (for-each delete-file
3354 (let ((out (assoc-ref outputs "out")))
3355 (list (string-append out "/lib/libvamp-sdk.la")
3356 (string-append out "/lib/libvamp-hostsdk.la"))))
4f27a333 3357 #t)))))
db46f2fc 3358 (inputs
8394619b 3359 (list libsndfile))
db46f2fc 3360 (native-inputs
8394619b 3361 (list pkg-config))
50a67a46 3362 (home-page "https://vamp-plugins.org")
db46f2fc
RW
3363 (synopsis "Modular and extensible audio processing system")
3364 (description
3365 "Vamp is an audio processing plugin system for plugins that extract
3366descriptive information from audio data — typically referred to as audio
3367analysis plugins or audio feature extraction plugins.")
3368 (license
3369 (license:x11-style
3370 "https://code.soundsoftware.ac.uk/projects/vamp-plugin-sdk/repository/entry/COPYING"))))
9f1cdd9d
TUBK
3371
3372(define-public libsbsms
3373 (package
3374 (name "libsbsms")
3375 (version "2.0.2")
3376 (source
3377 (origin
3378 (method url-fetch)
3379 (uri (string-append "mirror://sourceforge/sbsms/sbsms/" version
3380 "/libsbsms-" version ".tar.gz"))
3381 (sha256
3382 (base32 "1vmf84iy4dkwxv887grnlsfk43fmhd9gbg26gc2kgcv40sbkvayf"))))
3383 (build-system gnu-build-system)
8394619b 3384 (native-inputs (list automake))
9f1cdd9d 3385 (arguments
476b2877
MW
3386 `(#:configure-flags
3387 ;; Disable the use of SSE unless on x86_64.
3388 ,(if (not (string-prefix? "x86_64" (or (%current-target-system)
3389 (%current-system))))
3390 ''("--disable-sse")
3391 ''())
3392 #:phases
09c414d8
MW
3393 (modify-phases %standard-phases
3394 (add-after
3395 'unpack 'fix-ar-lib-path
3396 (lambda* (#:key inputs #:allow-other-keys)
3397 ;; Originally a symlink to '/usr/local/share/automake-1.12/ar-lib'.
3398 (delete-file "ar-lib")
3399 (symlink
ae112039
LC
3400 (search-input-file inputs
3401 (string-append "/share/automake-"
3402 ,(package-version automake)
3403 "/ar-lib"))
ee527187
MW
3404 "ar-lib")
3405 #t)))))
9f1cdd9d
TUBK
3406 (home-page "http://sbsms.sourceforge.net/")
3407 (synopsis "Library for time stretching and pitch scaling of audio")
3408 (description
3409 "SBSMS (Subband Sinusoidal Modeling Synthesis) is software for time
3410stretching and pitch scaling of audio. This package contains the library.")
3411 ;; There is no explicit declaration of a license, but a COPYING file
3412 ;; containing gpl2.
3413 (license license:gpl2)))
754a98ae 3414
5ced0440
VM
3415(define-public libkeyfinder
3416 (package
3417 (name "libkeyfinder")
fb1bf732 3418 (version "2.2.6")
5ced0440
VM
3419 (source
3420 (origin
3421 (method git-fetch)
3422 (uri (git-reference
3423 (url "https://github.com/mixxxdj/libkeyfinder")
3424 (commit (string-append "v" version))))
3425 (file-name (git-file-name name version))
3426 (sha256
fb1bf732 3427 (base32 "0s7nqjmv44q5qjynfcs0j6h4a6qcz4mxzandkkdjjbnwv5rxc3zg"))))
5ced0440
VM
3428 (build-system cmake-build-system)
3429 (native-inputs
e3196755 3430 (list catch-framework2))
5ced0440 3431 (inputs
8394619b 3432 (list fftw))
5ced0440
VM
3433 (home-page "https://mixxxdj.github.io/libkeyfinder/")
3434 (synopsis "Musical key detection for digital audio")
3435 (description
3436 "@code{libkeyfinder} is a small C++11 library for estimating the musical
3437key of digital audio.")
3438 (license license:gpl3+)))
3439
01b90919
SB
3440(define-public wavpack
3441 (package
3442 (name "wavpack")
5a4d0a65 3443 (version "5.4.0")
0e001b1f
TGR
3444 (source
3445 (origin
5a4d0a65
EF
3446 (method url-fetch)
3447 (uri (string-append "https://github.com/dbry/WavPack/releases/download/"
3448 version "/wavpack-" version ".tar.xz"))
0e001b1f 3449 (sha256
5a4d0a65 3450 (base32 "0ycbqarw25x7208jilh86vwwiqklr7f617jps9mllqc659mnmpjb"))))
01b90919 3451 (build-system gnu-build-system)
08b7a278 3452 (arguments
0e001b1f 3453 '(#:configure-flags
d9703035
EF
3454 (list "--disable-static"
3455 "--enable-tests")
0e001b1f
TGR
3456 #:phases
3457 (modify-phases %standard-phases
d9703035
EF
3458 (replace 'check
3459 (lambda* (#:key tests? #:allow-other-keys)
3460 (when tests?
3461 (invoke "./cli/wvtest" "--default" "--short"))
0e001b1f 3462 #t)))))
372b15f8 3463 (home-page "https://www.wavpack.com/")
01b90919
SB
3464 (synopsis "Hybrid lossless audio codec")
3465 (description
3466 "WavPack is an audio compression format with lossless, lossy and hybrid
3467compression modes. This package contains command-line programs and library to
3468encode and decode wavpack files.")
3469 (license license:bsd-3)))
3470
a176dd7e
SB
3471(define-public libmodplug
3472 (package
3473 (name "libmodplug")
06446a7d 3474 (version "0.8.9.0")
a176dd7e
SB
3475 (source (origin
3476 (method url-fetch)
3477 (uri (string-append
0f971a04 3478 "mirror://sourceforge/modplug-xmms/"
a176dd7e
SB
3479 name "/" version "/" name "-" version ".tar.gz"))
3480 (sha256
3481 (base32
06446a7d 3482 "1pnri98a603xk47smnxr551svbmgbzcw018mq1k6srbrq6kaaz25"))))
a176dd7e
SB
3483 (build-system gnu-build-system)
3484 (home-page "http://modplug-xmms.sourceforge.net/")
3485 (synopsis "Mod file playing library")
3486 (description
3487 "Libmodplug renders mod music files as raw audio data, for playing or
3488conversion. mod, .s3m, .it, .xm, and a number of lesser-known formats are
3489supported. Optional features include high-quality resampling, bass expansion,
3490surround and reverb.")
3491 (license license:public-domain)))
3492
b97b5cda
SB
3493(define-public libxmp
3494 (package
3495 (name "libxmp")
2784fca0 3496 (version "4.4.1")
b97b5cda
SB
3497 (source (origin
3498 (method url-fetch)
de67e922 3499 (uri (string-append "mirror://sourceforge/xmp/libxmp/" version "/"
b97b5cda
SB
3500 name "-" version ".tar.gz"))
3501 (sha256
3502 (base32
2784fca0 3503 "1kycz4jsyvmf7ny9227b497wc7y5ligydi6fvvldmkf8hk63ad9m"))))
b97b5cda
SB
3504 (build-system gnu-build-system)
3505 (home-page "http://xmp.sourceforge.net/")
3506 (synopsis "Module player library")
3507 (description
3508 "Libxmp is a library that renders module files to PCM data. It supports
3509over 90 mainstream and obscure module formats including Protracker (MOD),
3510Scream Tracker 3 (S3M), Fast Tracker II (XM), and Impulse Tracker (IT).")
3511 (license license:lgpl2.1+)))
3512
3ec4bba4
SB
3513(define-public xmp
3514 (package
3515 (name "xmp")
1a79d476 3516 (version "4.1.0")
3ec4bba4
SB
3517 (source (origin
3518 (method url-fetch)
de67e922 3519 (uri (string-append "mirror://sourceforge/xmp/xmp/" version "/"
3ec4bba4
SB
3520 name "-" version ".tar.gz"))
3521 (sha256
3522 (base32
1a79d476 3523 "17i8fc7x7yn3z1x963xp9iv108gxfakxmdgmpv3mlm438w3n3g8x"))))
3ec4bba4
SB
3524 (build-system gnu-build-system)
3525 (native-inputs
8394619b 3526 (list pkg-config))
3ec4bba4 3527 (inputs
8394619b 3528 (list libxmp pulseaudio))
3ec4bba4
SB
3529 (home-page "http://xmp.sourceforge.net/")
3530 (synopsis "Extended module player")
3531 (description
3532 "Xmp is a portable module player that plays over 90 mainstream and
3533obscure module formats, including Protracker MOD, Fasttracker II XM, Scream
3534Tracker 3 S3M and Impulse Tracker IT files.")
3535 (license license:gpl2+)))
3536
754a98ae
TUBK
3537(define-public soundtouch
3538 (package
3539 (name "soundtouch")
46fd582f 3540 (version "2.2")
754a98ae
TUBK
3541 (source
3542 (origin
55036ddc
TGR
3543 (method git-fetch)
3544 (uri (git-reference
3545 (url "https://gitlab.com/soundtouch/soundtouch.git")
3546 (commit version)))
3547 (file-name (git-file-name name version))
754a98ae 3548 (sha256
46fd582f 3549 (base32 "12i6yg8vvqwyk412lxl2krbfby6hnxld8qxy0k4m5xp4g94jiq4p"))))
754a98ae
TUBK
3550 (build-system gnu-build-system)
3551 (native-inputs
8394619b 3552 (list autoconf automake libtool file))
c93bd94c 3553 (home-page "https://www.surina.net/soundtouch/")
754a98ae
TUBK
3554 (synopsis
3555 "Audio processing library for changing tempo, pitch and playback rate")
3556 (description
3557 "SoundTouch is an audio processing library for changing the tempo, pitch
3558and playback rates of audio streams or audio files. It is intended for
3559application developers writing sound processing tools that require tempo/pitch
3560control functionality, or just for playing around with the sound effects.")
3561 (license license:lgpl2.1+)))
4bddd14c 3562
d739f481
AK
3563(define-public sox
3564 (package
3565 (name "sox")
3566 (version "14.4.2")
3567 (source (origin
3568 (method url-fetch)
de67e922
LF
3569 (uri (string-append "mirror://sourceforge/sox/sox/" version "/"
3570 name "-" version ".tar.bz2"))
d739f481
AK
3571 (sha256
3572 (base32
3573 "170lx90r1nlnb2j6lg00524iwvqy72p48vii4xc5prrh8dnrb9l1"))))
3574 (build-system gnu-build-system)
3575 (arguments
3576 '(#:configure-flags
3577 ;; The upstream asks to identify the distribution to diagnose SoX
3578 ;; bug reports.
3579 '("--with-distro=Guix System Distribution")))
3580 (native-inputs
8394619b 3581 (list pkg-config))
d739f481 3582 (inputs
8394619b
LC
3583 (list alsa-lib
3584 ao
3585 flac
3586 lame
3587 libid3tag
3588 libltdl
3589 libmad
3590 libpng
3591 libvorbis
3592 pulseaudio))
d739f481
AK
3593 (home-page "http://sox.sourceforge.net")
3594 (synopsis "Sound processing utility")
3595 (description
3596 "SoX (Sound eXchange) is a command line utility that can convert
3597various formats of computer audio files to other formats. It can also
3598apply various effects to these sound files, and, as an added bonus, SoX
3599can play and record audio files.")
3600 ;; sox.c is distributed under GPL, while the files that make up
3601 ;; libsox are licensed under LGPL.
3602 (license (list license:gpl2+ license:lgpl2.1+))))
3603
4bddd14c
TUBK
3604(define-public soxr
3605 (package
3606 (name "soxr")
9e9a211f 3607 (version "0.1.3")
4bddd14c
TUBK
3608 (source
3609 (origin
3610 (method url-fetch)
3611 (uri
3612 (string-append "mirror://sourceforge/soxr/soxr-" version
3613 "-Source.tar.xz"))
3614 (sha256
9e9a211f 3615 (base32 "12aql6svkplxq5fjycar18863hcq84c5kx8g6f4rj0lcvigw24di"))))
4bddd14c
TUBK
3616 (build-system cmake-build-system)
3617 (arguments '(#:tests? #f)) ;no 'check' target
3b3b60d0 3618 (home-page "https://sourceforge.net/p/soxr/wiki/Home/")
4bddd14c
TUBK
3619 (synopsis "One-dimensional sample-rate conversion library")
3620 (description
3621 "The SoX Resampler library (libsoxr) performs one-dimensional sample-rate
3622conversion. It may be used, for example, to resample PCM-encoded audio.")
3623 (license license:lgpl2.1+)))
49f36708
TUBK
3624
3625(define-public twolame
3626 (package
3627 (name "twolame")
196e3579 3628 (version "0.4.0")
49f36708
TUBK
3629 (source
3630 (origin
3631 (method url-fetch)
de67e922
LF
3632 (uri (string-append "mirror://sourceforge/twolame/twolame/" version
3633 "/twolame-" version ".tar.gz"))
49f36708 3634 (sha256
196e3579 3635 (base32 "0zf8sxqb02w07ah55b1y7ab643zmpbhn62spa9pqra0rc17l4dfc"))))
49f36708
TUBK
3636 (build-system gnu-build-system)
3637 (inputs
8394619b 3638 (list libsndfile))
49f36708 3639 (native-inputs
8394619b 3640 (list perl which)) ;used in tests/test.pl
5c5a9cd6 3641 (home-page "https://www.twolame.org/")
49f36708
TUBK
3642 (synopsis "MPEG Audio Layer 2 (MP2) encoder")
3643 (description
3644 "TwoLAME is an optimised MPEG Audio Layer 2 (MP2) encoder based on
3645tooLAME by Mike Cheng, which in turn is based upon the ISO dist10 code and
3646portions of LAME.")
3647 (license license:lgpl2.1+)))
bd4464f2
TUBK
3648
3649(define-public portaudio
3650 (package
3651 (name "portaudio")
80420acb 3652 (version "190600.20161030")
bd4464f2
TUBK
3653 (source
3654 (origin
3655 (method url-fetch)
3656 (uri (string-append
3657 "http://www.portaudio.com/archives/pa_stable_v"
3658 (string-map (lambda (c) (if (char=? c #\.) #\_ c)) version)
3659 ".tgz"))
3660 (sha256
80420acb 3661 (base32 "04qmin6nj144b8qb9kkd9a52xfvm0qdgm8bg8jbl7s3frmyiv8pm"))
fc1adab1 3662 (patches (search-patches "portaudio-audacity-compat.patch"))))
bd4464f2
TUBK
3663 (build-system gnu-build-system)
3664 (inputs
3665 ;; TODO: Add ASIHPI.
8394619b 3666 (list alsa-lib jack-1))
cdb4048d
RW
3667 ;; Autoreconf is necessary because the audacity-compat patch modifies .in
3668 ;; files.
bd4464f2 3669 (native-inputs
8394619b 3670 (list autoconf automake libtool pkg-config))
86fded86 3671 (arguments
1ce6bfc2 3672 '(#:tests? #f ;no 'check' target
c9cd4a84 3673 #:parallel-build? #f ;fails on some systems
1ce6bfc2
NG
3674 #:configure-flags '("--with-pic"
3675 "--enable-cxx"
3676 ;; XXX: The following prevents a build error
3677 ;; because of missing depcomp when C++ bindings are
3678 ;; requested.
3679 "--disable-dependency-tracking")
86fded86
RW
3680 #:phases
3681 (modify-phases %standard-phases
3682 ;; This is needed for linking the static libraries
3683 (add-after 'unpack 'build-only-position-independent-code
3684 (lambda _
3685 (substitute* "configure.in"
3686 (("AC_PROG_LIBTOOL" m)
3687 (string-append m "\nAM_PROG_AR\nLT_INIT([pic-only])")))
3688 (delete-file "configure")
3689 #t))
3690 ;; Some headers are not installed by default, but are needed by
3691 ;; packages like Kaldi.
3692 (add-after 'install 'install-missing-headers
3693 (lambda* (#:key outputs #:allow-other-keys)
3694 (install-file "src/common/pa_ringbuffer.h"
3695 (string-append (assoc-ref outputs "out") "/include"))
3696 #t)))))
bd4464f2
TUBK
3697 (home-page "http://www.portaudio.com/")
3698 (synopsis "Audio I/O library")
3699 (description
3700 "PortAudio is a portable C/C++ audio I/O library providing a simple API
3701to record and/or play sound using a callback function or a blocking read/write
3702interface.")
3703 (license license:expat)))
74bbf894 3704
fe73aef4
RW
3705(define-public qsynth
3706 (package
3707 (name "qsynth")
5e4cb92e 3708 (version "0.5.7")
fe73aef4
RW
3709 (source
3710 (origin
3711 (method url-fetch)
b9495d07
EF
3712 (uri (list
3713 (string-append "mirror://sourceforge/qsynth/qsynth/" version
3714 "/qsynth-" version ".tar.gz")
3715 (string-append "mirror://sourceforge/qsynth/qsynth (attic)"
3716 "/qsynth-" version ".tar.gz")))
fe73aef4 3717 (sha256
5e4cb92e 3718 (base32 "18im4w8agj60nkppwbkxqnhpp13z5li3w30kklv4lgs20rvgbvl6"))))
fe73aef4
RW
3719 (build-system gnu-build-system)
3720 (arguments
5e4cb92e 3721 `(#:tests? #f)) ; no "check" phase
598f6394 3722 (native-inputs
8394619b 3723 (list qttools pkg-config))
fe73aef4 3724 (inputs
8394619b 3725 (list fluidsynth qtbase-5 qtx11extras))
12c8c997 3726 (home-page "https://qsynth.sourceforge.io")
fe73aef4
RW
3727 (synopsis "Graphical user interface for FluidSynth")
3728 (description
3729 "Qsynth is a GUI front-end application for the FluidSynth SoundFont
3730synthesizer written in C++.")
3731 (license license:gpl2+)))
3732
55b596c3
TUBK
3733(define-public rsound
3734 (package
3735 (name "rsound")
3736 (version "1.1")
3737 (source
3738 (origin
458baefb
RW
3739 (method git-fetch)
3740 (uri (git-reference
b0e7b699 3741 (url "https://github.com/Themaister/RSound")
458baefb
RW
3742 (commit (string-append "v" version))))
3743 (file-name (git-file-name name version))
55b596c3 3744 (sha256
458baefb 3745 (base32 "0gspmr3klwnq98h17p5hc6ifygya4p80g4g8r7a1qavm3mv19waf"))))
55b596c3
TUBK
3746 (build-system gnu-build-system)
3747 (inputs
8394619b
LC
3748 (list alsa-lib
3749 jack-1
3750 ao
3751 libsamplerate
3752 openal
3753 portaudio
3754 pulseaudio))
55b596c3
TUBK
3755 (arguments
3756 '(#:phases
dc1d3cde
KK
3757 (modify-phases %standard-phases
3758 (replace 'configure
3759 (lambda* (#:key outputs #:allow-other-keys)
3760 (setenv "CC" "gcc")
c3d14484
TGR
3761 (invoke "./configure"
3762 (string-append "--prefix=" (assoc-ref outputs "out"))))))
55b596c3
TUBK
3763 ;; No 'check' target.
3764 #:tests? #f))
286ab9d3 3765 (home-page "https://themaister.net/rsound.html")
55b596c3
TUBK
3766 (synopsis "Networked audio system")
3767 (description
3768 "RSound allows you to send audio from an application and transfer it
3769directly to a different computer on your LAN network. It is an audio daemon
3770with a much different focus than most other audio daemons.")
3771 (license license:gpl3+)))
3772
caf9055c
RW
3773(define-public xjackfreak
3774 (package
3775 (name "xjackfreak")
3776 (version "1.0")
3777 (source (origin
8e5995e3
RW
3778 (method git-fetch)
3779 (uri (git-reference
b0e7b699 3780 (url "https://github.com/johnhldavis/xjackfreak")
8e5995e3
RW
3781 (commit (string-append "v" version))))
3782 (file-name (git-file-name name version))
caf9055c
RW
3783 (sha256
3784 (base32
8e5995e3 3785 "18c546qidbrj0f5wfiq5llii2192xpln0ab3r4vpr7i3wybxqjfz"))))
caf9055c
RW
3786 (build-system gnu-build-system)
3787 (arguments
3788 `(#:make-flags
3789 (list (string-append "docdir=" (assoc-ref %outputs "out")
3790 "/share/doc/xjackfreak"))))
3791 (inputs
8394619b 3792 (list jack-1 libx11 libxt libxext))
caf9055c 3793 (native-inputs
8394619b 3794 (list pkg-config))
caf9055c
RW
3795 (home-page "https://github.com/johnhldavis/xjackfreak")
3796 (synopsis "JACK audio frequency analyzer and display")
3797 (description
3798 "XJackFreak is an audio analysis and equalizing tool for the Jack Audio
3799Connection Kit. It can display the FFT of any input, modify it and output the
3800result.")
3801 (license license:gpl3+)))
3802
d73f7909
RW
3803(define-public zita-convolver
3804 (package
3805 (name "zita-convolver")
1c1ce52a 3806 (version "4.0.3")
d73f7909
RW
3807 (source (origin
3808 (method url-fetch)
3809 (uri (string-append
3810 "http://kokkinizita.linuxaudio.org"
3811 "/linuxaudio/downloads/zita-convolver-"
3812 version ".tar.bz2"))
29e255ca
SB
3813 (snippet
3814 ;; Don't optimize for a specific processor architecture.
6cbee49d 3815 '(begin
1c1ce52a 3816 (substitute* "source/Makefile"
6cbee49d
MW
3817 (("^CXXFLAGS \\+= -march=native") ""))
3818 #t))
29e255ca 3819 (modules '((guix build utils)))
d73f7909
RW
3820 (sha256
3821 (base32
1c1ce52a 3822 "0prji66p86z2bzminywkwchr5bfgxcg2i8y803pydd1hzf2198cs"))))
d73f7909
RW
3823 (build-system gnu-build-system)
3824 (arguments
3825 `(#:tests? #f ; no "check" target
1c1ce52a
AT
3826 #:make-flags
3827 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
3828 (string-append "SUFFIX="))
d73f7909 3829 #:phases
dc1d3cde
KK
3830 (modify-phases %standard-phases
3831 (add-after 'unpack 'patch-makefile-and-enter-directory
3832 (lambda _
1c1ce52a 3833 (substitute* "source/Makefile"
dc1d3cde
KK
3834 (("ldconfig") "true")
3835 (("^LIBDIR =.*") "LIBDIR = lib\n"))
1c1ce52a 3836 (chdir "source")
ee527187 3837 #t))
4f27a333
MB
3838 (add-after 'install 'install-symlink
3839 (lambda _
3840 (symlink "libzita-convolver.so"
3841 (string-append (assoc-ref %outputs "out")
1c1ce52a 3842 "/lib/libzita-convolver.so.4"))
ee527187 3843 #t))
d73f7909 3844 ;; no configure script
4f27a333 3845 (delete 'configure))))
8394619b 3846 (inputs (list fftwf))
4817bb92 3847 (home-page "https://kokkinizita.linuxaudio.org")
d73f7909
RW
3848 (synopsis "Fast, partitioned convolution engine library")
3849 (description
3850 "Zita convolver is a C++ library providing a real-time convolution
3851engine.")
3852 (license license:gpl3+)))
3853
b7ed6784
RW
3854(define-public zita-resampler
3855 (package
3856 (name "zita-resampler")
a35cd752 3857 (version "1.6.2")
b7ed6784
RW
3858 (source (origin
3859 (method url-fetch)
3860 (uri (string-append
3861 "http://kokkinizita.linuxaudio.org"
3862 "/linuxaudio/downloads/zita-resampler-"
3863 version ".tar.bz2"))
6dff4955
SB
3864 (snippet
3865 ;; Don't optimize for a specific processor architecture.
6cbee49d 3866 '(begin
a35cd752 3867 (substitute* '("apps/Makefile" "source/Makefile")
6cbee49d
MW
3868 (("^CXXFLAGS \\+= -march=native") ""))
3869 #t))
6dff4955 3870 (modules '((guix build utils)))
b7ed6784
RW
3871 (sha256
3872 (base32
a35cd752 3873 "1my5k2dh2dkvjp6xjnf9qy6i7s28z13kw1n9pwa4a2cpwbzawfr3"))))
b7ed6784
RW
3874 (build-system gnu-build-system)
3875 (arguments
3876 `(#:tests? #f ; no "check" target
a35cd752
AT
3877 #:make-flags
3878 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
3879 (string-append "SUFFIX="))
b7ed6784
RW
3880 #:phases
3881 (modify-phases %standard-phases
3882 (add-after
3883 'unpack 'patch-makefile-and-enter-directory
3884 (lambda _
a35cd752 3885 (substitute* "source/Makefile"
b7ed6784
RW
3886 (("ldconfig") "true")
3887 (("^LIBDIR =.*") "LIBDIR = lib\n"))
a35cd752 3888 (chdir "source")
b7ed6784
RW
3889 #t))
3890 (add-after
3891 'install 'install-symlink
3892 (lambda _
3893 (symlink "libzita-resampler.so"
3894 (string-append (assoc-ref %outputs "out")
ee527187
MW
3895 "/lib/libzita-resampler.so.1"))
3896 #t))
b7ed6784
RW
3897 ;; no configure script
3898 (delete 'configure))))
4817bb92 3899 (home-page "https://kokkinizita.linuxaudio.org/linuxaudio/zita-resampler/resampler.html")
b7ed6784
RW
3900 (synopsis "C++ library for resampling audio signals")
3901 (description
3902 "Libzita-resampler is a C++ library for resampling audio signals. It is
3903designed to be used within a real-time processing context, to be fast, and to
3904provide high-quality sample rate conversion.")
3905 (license license:gpl3+)))
3906
74bbf894
RW
3907(define-public zita-alsa-pcmi
3908 (package
3909 (name "zita-alsa-pcmi")
d0f0e2bd 3910 (version "0.3.2")
74bbf894
RW
3911 (source (origin
3912 (method url-fetch)
3913 (uri (string-append
3914 "http://kokkinizita.linuxaudio.org"
3915 "/linuxaudio/downloads/zita-alsa-pcmi-"
3916 version ".tar.bz2"))
3917 (sha256
3918 (base32
d0f0e2bd 3919 "12d7vdg74yh21w69qi0wg57iz4876j94qbiq09bvscih6xz9y78s"))))
74bbf894
RW
3920 (build-system gnu-build-system)
3921 (arguments
3922 `(#:tests? #f ; no "check" target
d0f0e2bd
AT
3923 #:make-flags
3924 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
3925 (string-append "SUFFIX="))
74bbf894 3926 #:phases
dc1d3cde
KK
3927 (modify-phases %standard-phases
3928 (add-after 'unpack 'patch-makefile-and-enter-directory
3929 (lambda _
d0f0e2bd 3930 (substitute* "source/Makefile"
dc1d3cde
KK
3931 (("ldconfig") "true")
3932 (("^LIBDIR =.*") "LIBDIR = lib\n"))
d0f0e2bd 3933 (chdir "source")
dc1d3cde
KK
3934 #t))
3935 (add-after 'install 'install-symlink
3936 (lambda _
3937 (symlink "libzita-alsa-pcmi.so"
3938 (string-append (assoc-ref %outputs "out")
ee527187
MW
3939 "/lib/libzita-alsa-pcmi.so.0"))
3940 #t))
dc1d3cde
KK
3941 ;; no configure script
3942 (delete 'configure))))
74bbf894 3943 (inputs
8394619b 3944 (list alsa-lib fftw))
4817bb92 3945 (home-page "https://kokkinizita.linuxaudio.org")
74bbf894
RW
3946 (synopsis "C++ wrapper around the ALSA API")
3947 (description
3948 "Zita-alsa-pcmi is a C++ wrapper around the ALSA API. It provides easy
3949access to ALSA PCM devices, taking care of the many functions required to
3950open, initialise and use a hw: device in mmap mode, and providing floating
3951point audio data.")
3952 (license license:gpl3+)))
6da16993
LF
3953
3954(define-public cuetools
3955 (package
3956 (name "cuetools")
3957 (version "1.4.1")
3958 (source (origin
4289a306
RW
3959 (method git-fetch)
3960 (uri (git-reference
b0e7b699 3961 (url "https://github.com/svend/cuetools")
4289a306
RW
3962 (commit version)))
3963 (file-name (git-file-name name version))
6da16993
LF
3964 (sha256
3965 (base32
4289a306 3966 "02ksv1ahf1v4cr2xbclsfv5x17m9ivzbssb5r8xjm97yh8a7spa3"))))
6da16993 3967 (build-system gnu-build-system)
4289a306 3968 ;; The source checkout is not bootstrapped.
6da16993 3969 (native-inputs
8394619b 3970 (list autoconf automake flex bison))
6da16993
LF
3971 (synopsis "Cue and toc file parsers and utilities")
3972 (description "Cuetools is a set of programs that are useful for manipulating
3973and using CUE sheet (cue) files and Table of Contents (toc) files. CUE and TOC
3974files are a way to represent the layout of a data or audio CD in a
3975machine-readable ASCII format.")
3976 (home-page "https://github.com/svend/cuetools")
3977 (license license:gpl2+)))
6819a8dd 3978
747b98b3
VM
3979(define-public mp3guessenc
3980 (package
3981 (name "mp3guessenc")
3982 (version "0.27.5")
3983 (source
3984 (origin
3985 (method url-fetch)
3986 (uri (string-append "mirror://sourceforge/mp3guessenc/mp3guessenc-"
3987 (version-major+minor version) "/mp3guessenc-"
3988 version ".tar.gz"))
3989 (sha256
3990 (base32 "1fa3sbwwn4p2v1749lzy040bfy1xfd574mf2frwgg9ikgk3vlb3c"))))
3991 (build-system gnu-build-system)
3992 (arguments
3993 `(#:tests? #f ; no tests
3994 #:make-flags
3995 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
3996 #:phases
3997 (modify-phases %standard-phases
3998 (delete 'configure)))) ; no configure phase
3999 (home-page "https://mp3guessenc.sourceforge.io")
4000 (synopsis "Analyze MPEG layer I/II/III files")
4001 (description "mp3guessenc is a command line utility that tries to detect the
4002encoder used for an MPEG Layer III (MP3) file, as well as scan any MPEG audio
4003file (any layer) and print a lot of useful information.")
4004 (license license:lgpl2.1+)))
4005
6819a8dd
LF
4006(define-public shntool
4007 (package
4008 (name "shntool")
4009 (version "3.0.10")
4010 (source (origin
4011 (method url-fetch)
7db934a9
EF
4012 (uri (list
4013 (string-append "http://etree.org/shnutils/shntool/dist/src/"
4014 "shntool-" version ".tar.gz")
4015 (string-append "mirror://debian/pool/main/s/shntool/shntool_"
4016 version ".orig.tar.gz")))
6819a8dd
LF
4017 (sha256
4018 (base32
4019 "00i1rbjaaws3drkhiczaign3lnbhr161b7rbnjr8z83w8yn2wc3l"))))
4020 (build-system gnu-build-system)
4021 (synopsis "WAVE audio data processing tool")
4022 (description "shntool is a multi-purpose WAVE data processing and reporting
4023utility. File formats are abstracted from its core, so it can process any file
4024that contains WAVE data, compressed or not---provided there exists a format
d5b357ec
LF
4025module to handle that particular file type. It can also generate CUE files, and
4026use them split WAVE data into multiple files.")
6819a8dd 4027 (home-page "http://etree.org/shnutils/shntool/")
6ac2af78
LF
4028 ;; 'install-sh' bears the x11 license
4029 (license (list license:gpl2+ license:x11))))
680b54c5
DT
4030
4031(define-public dcadec
4032 (package
4033 (name "dcadec")
4034 (version "0.2.0")
4035 (source (origin
b249ff5d
RW
4036 (method git-fetch)
4037 (uri (git-reference
b0e7b699 4038 (url "https://github.com/foo86/dcadec")
b249ff5d
RW
4039 (commit (string-append "v" version))))
4040 (file-name (git-file-name name version))
680b54c5
DT
4041 (sha256
4042 (base32
b249ff5d 4043 "07nd0ajizrp1w02bsyfcv18431r8m8rq8gjfmz9wmckpg7cxj2hs"))))
680b54c5
DT
4044 (build-system gnu-build-system)
4045 (arguments
4046 ;; Test files are missing: https://github.com/foo86/dcadec/issues/53
4def7dac 4047 `(#:tests? #f
680b54c5 4048 #:make-flags
4def7dac 4049 (list (string-append "CC=" ,(cc-for-target))
680b54c5
DT
4050 ;; Build shared library.
4051 "CONFIG_SHARED=1"
4052 (string-append "PREFIX=" (assoc-ref %outputs "out"))
4053 ;; Set proper runpath.
4054 (string-append "LDFLAGS=-Wl,-rpath="
4055 (assoc-ref %outputs "out")
4056 "/lib"))
4057 #:phases
4058 (modify-phases %standard-phases
4059 ;; No configure script, just a hand-written Makefile.
4060 (delete 'configure))))
4061 (synopsis "DTS Coherent Acoustics decoder")
4062 (description "Dcadec is a DTS Coherent Acoustics surround sound decoder
4063with support for HD extensions.")
4064 (home-page "https://github.com/foo86/dcadec")
4065 (license license:lgpl2.1+)))
e87c7ec2
AG
4066
4067(define-public bs1770gain
4068 (package
4069 (name "bs1770gain")
d6af2737 4070 (version "0.7.0")
f295c083 4071 (home-page "https://manpages.debian.org/sid/bs1770gain/bs1770gain.1.en.html")
e87c7ec2
AG
4072 (source
4073 (origin
4074 (method url-fetch)
4075 (uri (string-append "mirror://sourceforge/bs1770gain/bs1770gain/"
4076 version "/bs1770gain-" version ".tar.gz"))
4077 (sha256
d6af2737 4078 (base32 "0a2dcaxvxy5m3a5sb1lhplsymvz3ypaiidc5xn9qy01h53zvyvkp"))
17098a49
LF
4079 (modules '((guix build utils)))
4080 (snippet
f295c083 4081 `(begin
17098a49 4082 ;; XXX
39c746f0
TGR
4083 (substitute* (find-files "." "\\.[ch]$")
4084 (("^ \\* N..o.*") ""))
a2931b14 4085 (substitute* "libbg/bgx.c"
39c746f0
TGR
4086 (("#define BG.* ") "#define BS ")
4087 (("BG.*NO?.*N.*S.*E.*N.*SE?") "NO")
a2931b14
TGR
4088 (("\"( #|N).*\"") "\"\""))
4089 (substitute* (list "config.h"
4090 "configure.ac"
4091 "configure")
4092 (("https?://bs1770gain[^/]*/")
f295c083 4093 ,home-page))
2777dc75 4094 #t))))
e87c7ec2 4095 (build-system gnu-build-system)
8394619b 4096 (inputs (list ffmpeg sox))
e87c7ec2
AG
4097 (synopsis "Tool to adjust loudness of media files")
4098 (description
4099 "BS1770GAIN is a loudness scanner compliant with ITU-R BS.1770 and its
4100flavors EBU R128, ATSC A/85, and ReplayGain 2.0. It helps normalizing the
4101loudness of audio and video files to the same level.")
4102 (license license:gpl2+)))
eb64bde1
EE
4103
4104(define-public filteraudio
4105 (let ((revision "1")
4106 (commit "2fc669581e2a0ff87fba8de85861b49133306094"))
4107 (package
4108 (name "filteraudio")
4109 (version (string-append "0.0.0-" revision "."
4110 (string-take commit 7)))
4111 (source
4112 (origin
4113 (method git-fetch)
4114 (uri (git-reference
b0e7b699 4115 (url "https://github.com/irungentoo/filter_audio")
eb64bde1
EE
4116 (commit commit)))
4117 (file-name (string-append name "-" version "-checkout"))
4118 (sha256
4119 (base32
4120 "0hbb290n3wb23f2k692a6bhc23nnqmxqi9sc9j15pnya8wifw64g"))))
4121 (build-system gnu-build-system)
4122 (arguments
bd3200fd
EF
4123 `(#:make-flags (list (string-append "PREFIX=" %output)
4124 (string-append "CC=" ,(cc-for-target)))
eb64bde1
EE
4125 #:tests? #f ; No tests
4126 #:phases
4127 (modify-phases %standard-phases
4128 ;; No configure script
4129 (delete 'configure))))
4130 (synopsis "Lightweight audio filtering library")
4131 (description "An easy to use audio filtering library made from webrtc
4132code, used in @code{libtoxcore}.")
4133 (home-page "https://github.com/irungentoo/filter_audio")
4134 (license license:bsd-3))))
9a4c032c
LG
4135
4136(define-public gsm
4137 (package
4138 (name "gsm")
5e16e440 4139 (version "1.0.19")
9a4c032c
LG
4140 (source
4141 (origin
4142 (method url-fetch)
4143 (uri
4144 (string-append "http://www.quut.com/" name "/" name
4145 "-" version ".tar.gz"))
4146 (sha256
4147 (base32
5e16e440 4148 "1xkha9ss5g5qnfaybi8il0mcvp8knwg9plgh8404vh58d0pna0s9"))))
9a4c032c
LG
4149 (build-system gnu-build-system)
4150 (arguments
4151 `(#:test-target "tst"
5b05f8e9 4152 #:make-flags (list (string-append "INSTALL_ROOT=" %output))
9a4c032c
LG
4153 #:phases
4154 (modify-phases %standard-phases
5b05f8e9
MC
4155 (add-after 'unpack 'add-fpic-ccflag
4156 (lambda _
4157 ;; The -fPIC compiler option is needed when building
4158 ;; mediastreamer.
4159 (substitute* "Makefile"
4160 (("^CCFLAGS.*" all)
b6b07568 4161 (string-append all "CCFLAGS += -fPIC\n")))
5b05f8e9 4162 #t))
9a4c032c
LG
4163 (add-before 'install 'pre-install
4164 (lambda _
4165 (let ((out (assoc-ref %outputs "out")))
9a4c032c
LG
4166 (mkdir-p (string-append out "/inc"))
4167 (mkdir-p (string-append out "/man"))
4168 (mkdir-p (string-append out "/man/man1"))
4169 (mkdir-p (string-append out "/man/man3"))
4170 (mkdir-p (string-append out "/bin"))
ee527187
MW
4171 (mkdir-p (string-append out "/lib")))
4172 #t))
9a4c032c
LG
4173 (add-after 'install 'post-install
4174 (lambda _
4175 (let ((out (assoc-ref %outputs "out")))
4176 (rename-file (string-append out "/inc")
4177 (string-append out "/include"))
4178 (mkdir-p (string-append out "/include/gsm"))
4179 (copy-recursively "inc"
ee527187
MW
4180 (string-append out "/include/gsm")))
4181 #t))
aabe29af 4182 (delete 'configure)))) ; no configure script
9a4c032c
LG
4183 (synopsis "GSM 06.10 lossy speech compression library")
4184 (description "This C library provides an encoder and a decoder for the GSM
418506.10 RPE-LTP lossy speech compression algorithm.")
4186 (home-page "http://quut.com/gsm/")
4187 (license (license:non-copyleft "file://COPYRIGHT"))))
84d9abe4
DM
4188
4189(define-public python-pyalsaaudio
4190 (package
4191 (name "python-pyalsaaudio")
4192 (version "0.8.4")
4193 (source (origin
4194 (method url-fetch)
4195 (uri (pypi-uri "pyalsaaudio" version))
4196 (sha256
4197 (base32
4198 "1180ypn9596rq4b7y7dyv627j1q0fqilmkkrckclnzsdakdgis44"))))
4199 (build-system python-build-system)
4200 (arguments
4201 `(#:tests? #f)) ; tests require access to ALSA devices.
4202 (inputs
8394619b 4203 (list alsa-lib))
5adaeb36 4204 (home-page "https://larsimmisch.github.io/pyalsaaudio/")
84d9abe4
DM
4205 (synopsis "ALSA wrappers for Python")
4206 (description
4207 "This package contains wrappers for accessing the ALSA API from Python.
4208It is currently fairly complete for PCM devices, and has some support for
4209mixers.")
4210 (license license:psfl)))
4211
4212(define-public python2-pyalsaaudio
4213 (package-with-python2 python-pyalsaaudio))
d0c8e524 4214
c8d07c5f
RW
4215(define-public ldacbt
4216 (package
4217 (name "ldacbt")
4218 (version "2.0.2.3")
4219 (source (origin
4220 (method url-fetch)
4221 (uri (string-append "https://github.com/EHfive/ldacBT"
4222 "/releases/download/v" version
4223 "/ldacBT-" version ".tar.gz"))
4224 (sha256
4225 (base32
4226 "1d65dms4klzql29abi15i90f41h523kl6mxrz9hi6p5vg37fxn2b"))))
4227 (build-system cmake-build-system)
4228 (arguments `(#:tests? #f)) ; no check target
4229 (home-page "https://github.com/EHfive/ldacBT/")
4230 (synopsis "LDAC Bluetooth encoder and ABR library")
4231 (description "This package provides an encoder for the LDAC
4232high-resolution Bluetooth audio streaming codec for streaming at up to 990
4233kbps at 24 bit/96 kHz.")
4234 (license license:asl2.0)))
4235
dba33ca3
RW
4236(define-public bluez-alsa
4237 (package
4238 (name "bluez-alsa")
a079f3eb 4239 (version "3.0.0")
dba33ca3
RW
4240 (source (origin
4241 ;; The tarballs are mere snapshots and don't contain a
4242 ;; bootstrapped build system.
4243 (method git-fetch)
4244 (uri (git-reference
b0e7b699 4245 (url "https://github.com/Arkq/bluez-alsa")
dba33ca3 4246 (commit (string-append "v" version))))
9f9520a1 4247 (file-name (git-file-name name version))
dba33ca3
RW
4248 (sha256
4249 (base32
a079f3eb 4250 "1jlsgxyqfhncfhx1sy3ry0dp6p95kd4agh7g2b7g51h0c4cv74h8"))))
dba33ca3 4251 (build-system gnu-build-system)
9f9520a1
RW
4252 (arguments
4253 `(#:configure-flags
09b00a62
RW
4254 (list "--enable-ldac"
4255 (string-append "--with-alsaplugindir="
9f9520a1
RW
4256 (assoc-ref %outputs "out")
4257 "/lib/alsa-lib")
4258 (string-append "--with-dbusconfdir="
4259 (assoc-ref %outputs "out")
8f2e2120 4260 "/etc/dbus-1/system.d"))))
dba33ca3 4261 (native-inputs
8394619b 4262 (list autoconf automake libtool pkg-config))
dba33ca3 4263 (inputs
8394619b
LC
4264 (list alsa-lib
4265 bluez
4266 dbus
4267 glib
4268 ldacbt
4269 libbsd
4270 ncurses
4271 ortp
4272 sbc))
dba33ca3
RW
4273 (home-page "https://github.com/Arkq/bluez-alsa")
4274 (synopsis "Bluetooth ALSA backend")
4275 (description "This project is a rebirth of a direct integration between
cb22d103 4276Bluez and ALSA. Since Bluez >= 5, the built-in integration has been removed
dba33ca3
RW
4277in favor of 3rd party audio applications. From now on, Bluez acts as a
4278middleware between an audio application, which implements Bluetooth audio
4279profile, and a Bluetooth audio device. BlueALSA registers all known Bluetooth
4280audio profiles in Bluez, so in theory every Bluetooth device (with audio
4281capabilities) can be connected. In order to access the audio stream, one has
4282to connect to the ALSA PCM device called @code{bluealsa}. The device is based
4283on the ALSA software PCM plugin.")
4284 (license license:expat)))
4285
d0c8e524
SB
4286(define-public snd
4287 (package
4288 (name "snd")
c569aae1 4289 (version "20.9")
d0c8e524
SB
4290 (source (origin
4291 (method url-fetch)
4292 (uri (string-append "ftp://ccrma-ftp.stanford.edu/pub/Lisp/"
4293 "snd-" version ".tar.gz"))
4294 (sha256
4295 (base32
c569aae1 4296 "0jxkycxn6jcbs4gklk9sk3gfr0y26dz1m71nxah9rnx80wnzj6hr"))))
d0c8e524
SB
4297 (build-system glib-or-gtk-build-system)
4298 (arguments
4ae9274a 4299 `(#:tests? #f ; no tests
d0c8e524
SB
4300 #:out-of-source? #f ; for the 'install-doc' phase
4301 #:configure-flags
4302 (let* ((out (assoc-ref %outputs "out"))
94774876
TGR
4303 (docdir (string-append out "/share/doc/"
4304 ,name "-" ,version)))
d0c8e524
SB
4305 (list "--with-alsa" "--with-jack" "--with-gmp"
4306 (string-append "--with-doc-dir=" docdir)))
4307 #:phases
4308 (modify-phases %standard-phases
4309 (add-after 'install 'install-doc
4310 (lambda* (#:key outputs #:allow-other-keys)
4311 (let* ((out (assoc-ref outputs "out"))
4ae9274a
TGR
4312 (doc (string-append out "/share/doc/"
4313 ,name "-" ,version)))
d0c8e524
SB
4314 (for-each
4315 (lambda (f)
4ae9274a 4316 (install-file f doc))
3ef664d0 4317 (find-files "." "\\.html$"))
4ae9274a 4318 (copy-recursively "pix" (string-append doc "/pix"))
d0c8e524
SB
4319 #t))))))
4320 (native-inputs
8394619b 4321 (list pkg-config))
d0c8e524 4322 (inputs
8394619b
LC
4323 (list alsa-lib
4324 fftw
4325 flac
4326 gmp
4327 gsl
4328 gtk+
4329 jack-1
4330 libsamplerate
4331 mpc
4332 mpfr
4333 mpg123
4334 speex
4335 timidity++
4336 vorbis-tools
4337 wavpack))
d0c8e524
SB
4338 (synopsis "Sound editor")
4339 (home-page "https://ccrma.stanford.edu/software/snd/")
4340 (description
4341 "Snd is a sound editor modelled loosely after Emacs. It can be
4342customized and extended using either the s7 Scheme implementation (included in
4343the Snd sources), Ruby, or Forth.")
4344 (license (license:non-copyleft "file://COPYING"))))
adedbe95 4345
cf31d5e1
RW
4346(define-public noise-repellent
4347 (package
4348 (name "noise-repellent")
f6c8ba31 4349 (version "0.1.5")
cf31d5e1
RW
4350 (source (origin
4351 (method git-fetch)
4352 (uri (git-reference
b0e7b699 4353 (url "https://github.com/lucianodato/noise-repellent")
cf31d5e1
RW
4354 (commit version)))
4355 (file-name (string-append name "-" version "-checkout"))
4356 (sha256
4357 (base32
f6c8ba31
TGR
4358 "0hb89x9i2knzan46q4nwscf5zmnb2nwf4w13xl2c0y1mx1ls1mwl"))))
4359 (build-system meson-build-system)
cf31d5e1 4360 (arguments
f6c8ba31
TGR
4361 `(#:configure-flags
4362 (list (string-append "--prefix=" (assoc-ref %outputs "out")
4363 "/lib/lv2"))))
cf31d5e1 4364 (inputs
8394619b 4365 (list lv2 fftwf))
cf31d5e1 4366 (native-inputs
8394619b 4367 (list pkg-config))
cf31d5e1
RW
4368 (home-page "https://github.com/lucianodato/noise-repellent")
4369 (synopsis "LV2 plugin for broadband noise reduction")
4370 (description "Noise Repellent is an LV2 plugin to reduce noise. It has
4371the following features:
4372
4373@enumerate
4374@item Spectral gating and spectral subtraction suppression rule
4375@item Adaptive and manual noise thresholds estimation
4376@item Adjustable noise floor
4377@item Adjustable offset of thresholds to perform over-subtraction
4378@item Time smoothing and a masking estimation to reduce artifacts
4379@item Basic onset detector to avoid transients suppression
4380@item Whitening of the noise floor to mask artifacts and to recover higher
4381 frequencies
4382@item Option to listen to the residual signal
4383@item Soft bypass
4384@item Noise profile saved with the session
4385@end enumerate
4386")
4387 (license license:lgpl3+)))
4388
4f38e0e4
RW
4389(define-public lv2-speech-denoiser
4390 (let ((commit "04cfba929630404f8d4f4ca5bac8d9b09a99152f")
4391 (revision "1"))
4392 (package
4393 (name "lv2-speech-denoiser")
4394 (version (git-version "0" revision commit))
4395 (source
4396 (origin
4397 (method git-fetch)
4398 (uri (git-reference
4399 (url "https://github.com/lucianodato/speech-denoiser/")
4400 (commit commit)))
4401 (file-name (git-file-name name version))
4402 (sha256
4403 (base32 "189l6lz8sz5vr6bjyzgcsrvksl1w6crqsg0q65r94b5yjsmjnpr4"))))
4404 (build-system meson-build-system)
4405 (arguments
dfd6ca19 4406 `(;; Using a "release" build is recommended for performance
4f38e0e4
RW
4407 #:build-type "release"
4408 #:phases
4409 (modify-phases %standard-phases
4410 (add-after 'unpack 'patch-meson-build
4411 (lambda _
4412 (substitute* "meson.build"
4413 (("install_folder = 'sdenoise.lv2'")
4414 "install_folder = 'lib/lv2/sdenoise.lv2'")
4415 (("build/manifest.ttl") "../build/manifest.ttl"))
4416 #t))
4417 (add-after 'unpack 'build-rnnoise
4418 (lambda _
4419 (with-directory-excursion "rnnoise"
4420 (let ((old-CFLAGS (getenv "CFLAGS")))
4421 (setenv "CFLAGS" "-fvisibility=hidden -fPIC -Wl,--exclude-libs,ALL")
4422 (setenv "CONFIG_SHELL" (which "bash"))
4423 (invoke "autoreconf" "-vif")
4424 (invoke "sh" "configure"
4425 "--disable-examples"
4426 "--disable-doc"
4427 "--disable-shared"
4428 "--enable-static")
4429 (invoke "make")
4430 (setenv "CFLAGS" old-CFLAGS))))))))
4431 (inputs
8394619b 4432 (list lv2))
4f38e0e4 4433 (native-inputs
8394619b 4434 (list autoconf automake libtool pkg-config))
4f38e0e4
RW
4435 (home-page "https://github.com/werman/noise-suppression-for-voice")
4436 (synopsis "Speech denoise LV2 plugin based on Xiph's RNNoise library")
4437 (description "RNNoise is a library that uses deep learning to apply
7699bbb3 4438noise suppression to audio sources with voice presence. This package provides
4f38e0e4
RW
4439an LV2 audio plugin.")
4440 (license license:lgpl3+))))
4441
adedbe95
OP
4442(define-public cli-visualizer
4443 (package
4444 (name "cli-visualizer")
e121cb87 4445 (version "1.8")
adedbe95
OP
4446 (source
4447 (origin
c2a2d364
RW
4448 (method git-fetch)
4449 (uri (git-reference
b0e7b699 4450 (url "https://github.com/dpayne/cli-visualizer")
e121cb87 4451 (commit (string-append "v" version))))
c2a2d364 4452 (file-name (git-file-name name version))
adedbe95 4453 (sha256
e121cb87
TGR
4454 (base32 "003mbbwsz43mg3d7llphpypqa9g7rs1p1cdbqi1mbc2bfrc1gcq2"))))
4455 (build-system cmake-build-system)
adedbe95 4456 (native-inputs
e121cb87 4457 ;; TODO: Try using the latest googletest for versions > 1.8.
8394619b
LC
4458 (list ;; ("googletest" ,googletest-1.8)
4459 which))
adedbe95 4460 (inputs
8394619b 4461 (list fftw ncurses pulseaudio))
adedbe95 4462 (arguments
e121cb87
TGR
4463 '(#:tests? #f
4464 ;; XXX Enable tests after patching them to use the system googletest.
4465 ;; #:configure-flags (list "-DVIS_WITH_TESTS=true")
adedbe95
OP
4466 #:phases
4467 (modify-phases %standard-phases
e121cb87
TGR
4468 (add-after 'install 'install-examples
4469 (lambda* (#:key outputs #:allow-other-keys)
4470 (with-directory-excursion "../source/examples"
4471 (delete-file "mac_osx_config")
4472 (for-each (lambda (file)
4473 (install-file file
4474 (string-append
4475 (assoc-ref outputs "out")
4476 "/share/doc")))
4477 (find-files ".")))
adedbe95
OP
4478 #t)))))
4479 (home-page "https://github.com/dpayne/cli-visualizer/")
4480 (synopsis "Command-line audio visualizer")
4481 (description "@code{cli-visualizer} displays fast-Fourier
4482transforms (FFTs) of the sound being played, as well as other graphical
4483representations.")
4484 (license license:expat)))
c2c0d661
OP
4485
4486(define-public cava
4487 (package
4488 (name "cava")
ba31fbb1 4489 (version "0.7.4")
c2c0d661 4490 (source (origin
a7fde1a8
RW
4491 (method git-fetch)
4492 (uri (git-reference
b0e7b699 4493 (url "https://github.com/karlstav/cava")
a7fde1a8
RW
4494 (commit version)))
4495 (file-name (git-file-name name version))
c2c0d661
OP
4496 (sha256
4497 (base32
ba31fbb1 4498 "1mziklmqifhnb4kg9ia2r56r8wjn6xp40bkpf484hsgqvnrccl86"))))
c2c0d661
OP
4499 (build-system gnu-build-system)
4500 (native-inputs
8394619b 4501 (list autoconf automake libtool))
c2c0d661 4502 (inputs
8394619b 4503 (list fftw ncurses pulseaudio))
c2c0d661
OP
4504 (arguments
4505 `(#:configure-flags
4506 (list (string-append "PREFIX=" %output)
9e3e80ba 4507 (string-append "FONT_DIR=" %output "/share/consolefonts"))
c2c0d661
OP
4508 #:make-flags
4509 (let ((lib (string-append %output "/lib")))
4510 (list (string-append "cava_LDFLAGS = -L" lib " -Wl,-rpath " lib)))
4511 #:phases
4512 (modify-phases %standard-phases
189be331 4513 (replace 'bootstrap
c2c0d661
OP
4514 (lambda* (#:key outputs #:allow-other-keys)
4515 (setenv "HOME" (getcwd))
4516 (invoke "sh" "autogen.sh")))
4517 (add-before 'build 'make-cava-ldflags
4518 (lambda* (#:key outputs #:allow-other-keys)
ee527187
MW
4519 (mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
4520 #t))
c2c0d661
OP
4521 (add-after 'install 'data
4522 (lambda* (#:key outputs #:allow-other-keys)
4523 (for-each (lambda (file)
4524 (install-file file
4525 (string-append (assoc-ref outputs "out")
4526 "/share/doc/examples")))
ee527187
MW
4527 (find-files "example_files"))
4528 #t)))))
c2c0d661
OP
4529 (home-page "https://karlstav.github.io/cava/")
4530 (synopsis "Console audio visualizer for ALSA, MPD, and PulseAudio")
4531 (description "C.A.V.A. is a bar audio spectrum visualizer for the terminal
4532using ALSA, MPD, PulseAudio, or a FIFO buffer as its input.")
4533 (license license:expat)))
9073c875 4534
4535(define-public fluid-3
4536 (let ((commit "871c8ce2002e8b3c198f532fdb4fbcce7914f951"))
4537 (package
4538 (name "fluid-3")
4539 (version "2.1")
4540 (source
4541 (origin
4542 (method url-fetch)
4543 ;; Only one file is required, but the release bundles the whole
4544 ;; software which is 50MiB as tar and 200MiB unpacked. The website
4545 ;; directly links the soundfont release to the github file download.
4546 (uri (string-append "https://github.com/musescore/MuseScore/raw/"
4547 commit "/share/sound/FluidR3Mono_GM.sf3"))
4548 (file-name (string-append name "-" version ".sf3"))
4549 (sha256
4550 (base32
4551 "1hjfg5i15bw9279007xs92zsggjgn4s4k9pc00s851l3kvc6dkfg"))))
4552 (build-system trivial-build-system)
4553 (arguments
4554 `(#:modules ((guix build utils))
4555 #:builder
4556 (begin
4557 (use-modules (guix build utils))
4558 (let ((file (assoc-ref %build-inputs "source"))
4559 (out (string-append %output "/share/soundfonts")))
4560 (mkdir-p out)
e3cfef22
MW
4561 (copy-file file (string-append out "/FluidR3Mono_GM.sf3"))
4562 #t))))
9073c875 4563 (home-page "https://github.com/musescore/MuseScore/tree/master/share/sound")
4564 (synopsis "Pro-quality GM soundfont")
4565 (description "Fluid-3 is Frank Wen's pro-quality GM soundfont.")
4566 (license license:expat))))
5c40a69f
LF
4567
4568(define-public libfdk
b8930fd8
LF
4569 (package
4570 (name "libfdk")
4571 (version "2.0.1")
4572 (source
4573 (origin
4574 (method git-fetch)
4575 (uri (git-reference
4576 (url "https://github.com/mstorsjo/fdk-aac")
4577 (commit (string-append "v" version))))
4578 (file-name (git-file-name name version))
4579 (sha256
4580 (base32
4581 "1fkrnzs78fmj11n9z3l0w53i2fl16jcfiyavwidck9bzmkmsf486"))))
4582 (build-system gnu-build-system)
4583 (native-inputs
8394619b 4584 (list autoconf automake libtool))
b8930fd8
LF
4585 (home-page "https://github.com/mstorsjo/fdk-aac")
4586 (synopsis "Fraunhofer FDK AAC library")
4587 (description "FDK is a library for encoding and decoding Advanced Audio
5c40a69f
LF
4588Coding (AAC) format audio, developed by Fraunhofer IIS, and included as part of
4589Android. It supports several Audio Object Types including MPEG-2 and MPEG-4 AAC
4590LC, HE-AAC (AAC LC + SBR), HE-AACv2 (LC + SBR + PS) as well AAC-LD (low delay)
4591and AAC-ELD (enhanced low delay) for real-time communication. The encoding
4592library supports sample rates up to 96 kHz and up to eight channels (7.1
b8930fd8
LF
4593 surround).")
4594 (license (license:fsf-free "https://github.com/mstorsjo/fdk-aac/blob/master/NOTICE"
4595 "https://www.gnu.org/licenses/license-list.html#fdk"))))
ef8517f2
EB
4596
4597(define-public libopenshot-audio
4598 (package
4599 (name "libopenshot-audio")
c4ca2e95 4600 (version "0.2.2")
ef8517f2
EB
4601 (source (origin
4602 (method git-fetch)
4603 (uri (git-reference
4604 (url "https://github.com/OpenShot/libopenshot-audio")
4605 (commit (string-append "v" version))))
4606 (file-name (git-file-name name version))
4607 (sha256
4608 (base32
c4ca2e95 4609 "03dygh85riljk7dpn5a5a0d22a2kz45fs13gzwqgnbzzr1k17p2y"))))
ef8517f2
EB
4610 (build-system cmake-build-system)
4611 (inputs
8394619b
LC
4612 (list alsa-lib
4613 ;; The following are for JUCE GUI components:
4614 libx11
4615 freetype
4616 libxrandr
4617 libxinerama
4618 libxcursor))
ef8517f2
EB
4619 (arguments
4620 `(#:tests? #f ;there are no tests
4621 #:configure-flags
4622 (list (string-append "-DCMAKE_CXX_FLAGS=-I"
4623 (assoc-ref %build-inputs "freetype")
4624 "/include/freetype2"))))
4625 (home-page "https://openshot.org")
4626 (synopsis "Audio editing and playback for OpenShot")
4627 (description "OpenShot Audio Library (libopenshot-audio) allows
4628high-quality editing and playback of audio, and is based on the JUCE
4629library.")
4630 (license license:lgpl3+)))
ea3510f8
RH
4631
4632(define-public faudio
4633 (package
4634 (name "faudio")
61118aed 4635 (version "21.10")
ea3510f8
RH
4636 (source
4637 (origin
4638 (method git-fetch)
4639 (uri (git-reference
b0e7b699 4640 (url "https://github.com/FNA-XNA/FAudio")
ea3510f8 4641 (commit version)))
543f7ad1 4642 (file-name (git-file-name name version))
ea3510f8 4643 (sha256
61118aed 4644 (base32 "0l9bicg8v1shsyq9k48zh4wv5kwfs6lfjmm9blzd13xrgmhd07w2"))))
ea3510f8
RH
4645 (arguments
4646 '(#:tests? #f ; No tests.
12158b83 4647 #:configure-flags '("-DGSTREAMER=ON")))
ea3510f8 4648 (build-system cmake-build-system)
8394619b
LC
4649 (native-inputs (list pkg-config))
4650 (inputs (list gstreamer gst-plugins-base sdl2))
ea3510f8
RH
4651 (home-page "https://github.com/FNA-XNA/FAudio")
4652 (synopsis "XAudio reimplementation")
4653 (description "FAudio is an XAudio reimplementation that focuses solely on
4654developing fully accurate DirectX Audio runtime libraries.")
12158b83
TGR
4655 (license
4656 (list license:zlib
4657 ;; stb & utils/{ui,wav}common are dual-licenced under either of:
4658 license:expat
4659 license:public-domain))))
e13714b6
AI
4660
4661(define-public gnaural
4662 (package
4663 (name "gnaural")
4664 (version "20110606")
4665 (source
4666 (origin
4667 (method url-fetch)
4668 (uri (string-append "mirror://sourceforge/gnaural/Gnaural/gnaural_"
4669 version ".tar.xz"))
4670 (sha256
4671 (base32
4672 "1gq519c0imsh57zklyi0f8h64l3ai48lh672c834470z8c6kvbfi"))))
4673 (build-system gnu-build-system)
4674 (inputs
8394619b 4675 (list alsa-lib gtk+-2 libsndfile portaudio))
e13714b6 4676 (native-inputs
8394619b 4677 (list pkg-config))
e13714b6
AI
4678 (home-page "http://gnaural.sourceforge.net/")
4679 (synopsis "Binaural beat synthesizer")
4680 (description "Gnaural is a programmable auditory binaural beat synthesizer
4681intended to be used for brainwave entrainment. Gnaural supports creation of
4682binaural beat tracks of different frequencies and exporting of tracks into
4683different audio formats. Gnaural can also be linked over the internet with
4684other Gnaural instances, allowing synchronous sessions between many users.")
4685 (license license:gpl2+)))
2f4698d7
MW
4686
4687(define-public darkice
4688 (package
4689 (name "darkice")
c827c52a 4690 (version "1.4")
2f4698d7
MW
4691 (source (origin
4692 (method url-fetch)
c827c52a
LF
4693 (uri (string-append "https://github.com/rafael2k/darkice/releases/"
4694 "download/v" version "/darkice-"
4695 version ".tar.gz"))
2f4698d7 4696 (sha256
c827c52a
LF
4697 (base32
4698 "05yq7lggxygrkd76yiqby3msrgdn082p0qlvmzzv9xbw8hmyra76"))))
2f4698d7 4699 (build-system gnu-build-system)
8394619b
LC
4700 (native-inputs (list pkg-config))
4701 (inputs (list lame
4702 libvorbis
4703 opus
4704 twolame
4705 alsa-lib
4706 pulseaudio
4707 jack-1
4708 libsamplerate))
2f4698d7
MW
4709 (arguments
4710 `(#:configure-flags
4711 (list (string-append "--with-lame-prefix="
4712 (assoc-ref %build-inputs "lame")))))
4713 (home-page "http://www.darkice.org/")
4714 (synopsis "Live audio streamer")
4715 (description "DarkIce is a live audio streamer. It takes audio input from
4716a sound card, encodes it into Ogg Vorbis and/or mp3, and sends the audio
4717stream to one or more IceCast and/or ShoutCast servers.")
4718 (license license:gpl3+)))
0f2ce448
AT
4719
4720(define-public libltc
4721 (package
4722 (name "libltc")
4723 (version "1.3.1")
4724 (source
4725 (origin
4726 (method url-fetch)
4727 (uri
4728 (string-append "https://github.com/x42/libltc/releases/download/v"
4729 version "/libltc-" version ".tar.gz"))
4730 (sha256
4731 (base32
4732 "173h9dgmain3nyrwk6q2d7yl4fnh4vacag4s2p01n5b7nyrkxrjh"))))
4733 (build-system gnu-build-system)
4734 (arguments
4735 `(#:parallel-tests? #f)) ;tests fail otherwise
4736 (native-inputs
8394619b 4737 (list doxygen pkg-config))
0f2ce448
AT
4738 (synopsis "Encode or decode Linear/Longitudinal Time Code (LTC) audio")
4739 (description "Libltc is a POSIX-C Library for handling
4740@dfn{Linear/Longitudinal Time Code} (LTC) data.")
4741 (home-page "https://x42.github.io/libltc/")
4742 (license license:lgpl3+)))
74f9a8fb 4743
8aca4f69
AT
4744(define-public ttaenc
4745 (package
4746 (name "ttaenc")
4747 (version "3.4.1")
4748 (source
4749 (origin
4750 (method url-fetch)
4751 (uri (string-append "mirror://sourceforge/tta/"
4752 "tta/ttaenc-src"
4753 "/ttaenc-" version "-src.tgz"))
4754 (sha256
4755 (base32
4756 "1iixpr4b89g9g1hwn8ak8k8iflcww3r5f09a117qdidc2nqcijdj"))))
4757 (build-system gnu-build-system)
4758 (arguments
4759 `(#:tests? #f ;no tests
4760 #:make-flags
4761 (list (string-append "CC=" ,(cc-for-target))
4762 (string-append "INSDIR=" (assoc-ref %outputs "out") "/bin"))
4763 #:phases
4764 (modify-phases %standard-phases
4765 (delete 'configure) ; no configure
4766 (add-before 'install 'make-bindir
4767 (lambda* (#:key outputs #:allow-other-keys)
4768 (let* ((out (assoc-ref outputs "out")))
4769 (mkdir-p (string-append out "/bin"))
4770 #t))))))
4771 (synopsis "TTA lossless audio encoder")
4772 (description
4773 "TTA performs lossless compression on multichannel 8,16 and 24 bits
4774data of the Wav audio files. Being lossless means that no data-
4775quality is lost in the compression - when uncompressed, the data will
4776be identical to the original. The compression ratios of TTA depend on
4777the type of music file being compressed, but the compression size
4778will generally range between 30% - 70% of the original. TTA format
4779supports both of ID3v1/v2 and APEv2 tags.")
4780 (home-page "http://tausoft.org/")
4781 (license license:gpl2+)))
4782
bea98f9a
AT
4783(define-public libsoundio
4784 (package
66c83960
MO
4785 (name "libsoundio")
4786 (version "2.0.0")
4787 (source
bea98f9a
AT
4788 (origin
4789 (method git-fetch)
4790 (uri (git-reference
66c83960
MO
4791 (url "https://github.com/andrewrk/libsoundio")
4792 (commit version)))
bea98f9a
AT
4793 (file-name (git-file-name name version))
4794 (sha256
66c83960
MO
4795 (base32
4796 "12l4rvaypv87vigdrmjz48d4d6sq4gfxf5asvnc4adyabxb73i4x"))))
4797 (build-system cmake-build-system)
4798 (arguments
4799 `(#:tests? #f)) ;no tests included
4800 (inputs
8394619b 4801 (list alsa-lib jack-1 pulseaudio))
66c83960 4802 (native-inputs
8394619b 4803 (list pkg-config))
66c83960
MO
4804 (home-page "http://libsound.io")
4805 (synopsis "C library for real-time audio input and output")
4806 (description "@code{libsoundio} is a C library providing audio input and
4807output. The API is suitable for real-time software such as digital audio
4808workstations as well as consumer software such as music players.")
4809 (license license:expat)))
bea98f9a 4810
74f9a8fb
AT
4811(define-public redkite
4812 (package
4813 (name "redkite")
e46e144b 4814 (version "1.3.1") ;marked unmaintained as of Oct. 2021
74f9a8fb
AT
4815 (source
4816 (origin
83ba0e42
MB
4817 (method git-fetch)
4818 (uri (git-reference
4ddcd0e2 4819 (url "https://github.com/free-sm/redkite")
83ba0e42
MB
4820 (commit (string-append "v" version))))
4821 (file-name (git-file-name name version))
74f9a8fb 4822 (sha256
e46e144b 4823 (base32 "1zb2k2a4m7z2ravqrjn8fq8lic20wbr2m8kja3p3113jsk7j9zvd"))))
74f9a8fb
AT
4824 (build-system cmake-build-system)
4825 (arguments
4826 `(#:tests? #f)) ;no tests included
3fc49dae 4827 (propagated-inputs
8394619b 4828 (list cairo))
74f9a8fb 4829 (native-inputs
8394619b 4830 (list pkg-config))
74f9a8fb
AT
4831 (synopsis "Small GUI toolkit")
4832 (description "Redkite is a small GUI toolkit developed in C++17 and
4833inspired from other well known GUI toolkits such as Qt and GTK. It is
4834minimal on purpose and is intended to be statically linked to applications,
4835therefore satisfying any requirements they may have to be self contained,
4836as is the case with audio plugins.")
4837 (home-page "https://gitlab.com/geontime/redkite")
4838 (license license:gpl3+)))
caa1f6a8
AT
4839
4840(define-public carla
4841 (package
4842 (name "carla")
c11c1080 4843 (version "2.4.1")
caa1f6a8
AT
4844 (source
4845 (origin
4846 (method git-fetch)
4847 (uri
4848 (git-reference
b0e7b699 4849 (url "https://github.com/falkTX/Carla")
caa1f6a8
AT
4850 (commit (string-append "v" version))))
4851 (file-name (git-file-name name version))
4852 (sha256
c11c1080 4853 (base32 "01ngkmfcxyg1bb4qmfvlkkjbx4lx62akxqhizl8zmqnhfcy4p9bx"))))
caa1f6a8
AT
4854 (build-system gnu-build-system)
4855 (arguments
4856 `(#:tests? #f ; no "check" target
4857 #:make-flags
4858 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
4859 #:phases
4860 (modify-phases %standard-phases
5424e680 4861 (delete 'configure) ; no configure script
caa1f6a8
AT
4862 (add-before 'build 'set-CC-variable-and-show-features
4863 (lambda _
4864 (setenv "CC" "gcc")
4865 (invoke "make" "features")))
5424e680
TGR
4866 (add-after 'install 'make-carla-executable
4867 (lambda* (#:key outputs #:allow-other-keys)
4868 (let ((out (assoc-ref outputs "out")))
4869 (chmod (string-append out "/share/carla/carla") #o555)
4870 #t)))
1ab58a3d 4871 (add-after 'install 'wrap-executables
0a843e36 4872 (lambda* (#:key inputs outputs #:allow-other-keys)
1ab58a3d
TGR
4873 (let ((out (assoc-ref outputs "out")))
4874 (wrap-script (string-append out "/bin/carla")
0a843e36 4875 #:guile (search-input-file inputs "bin/guile")
d42245d4 4876 `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH"))))
1ab58a3d 4877 #t))))))
caa1f6a8
AT
4878 (inputs
4879 `(("alsa-lib" ,alsa-lib)
4880 ("ffmpeg" ,ffmpeg)
4881 ("fluidsynth" ,fluidsynth)
4882 ("file" ,file)
4883 ("liblo" ,liblo)
4884 ("libsndfile" ,libsndfile)
281456b4 4885 ("gtk2" ,gtk+-2) ;needed for bridging GTK2 plugins in GTK3 hosts
caa1f6a8
AT
4886 ("gtk+" ,gtk+)
4887 ("python-pyliblo" ,python-pyliblo)
4888 ("python-pyqt" ,python-pyqt)
4889 ("python-rdflib" ,python-rdflib)
4890 ;; python-pyqt shows the following error without python-wrapper:
4891 ;; Error while finding module specification for 'PyQt5.uic.pyuic'
4892 ;; (ModuleNotFoundError: No module named 'PyQt5')
4893 ("python-wrapper" ,python-wrapper)
4894 ("libx11" ,libx11)
ea0a5107 4895 ("qtbase" ,qtbase-5)
1ab58a3d
TGR
4896 ("zlib" ,zlib)
4897
4898 ;; For WRAP-SCRIPT above.
4899 ("guile" ,guile-2.2)))
caa1f6a8 4900 (native-inputs
8394619b 4901 (list pkg-config))
caa1f6a8
AT
4902 (home-page "https://kx.studio/Applications:Carla")
4903 (synopsis "Audio plugin host")
4904 (description "Carla is a modular audio plugin host, with features like
4905transport control, automation of parameters via MIDI CC and remote control
4906over OSC. Carla currently supports LADSPA (including LRDF), DSSI, LV2, VST2,
4907and VST3 plugin formats, plus SF2 and SFZ file support. It uses JACK as the
4908default and preferred audio driver but also supports native drivers like ALSA.")
4909 (license license:gpl2+)))
615a4fbf
CLW
4910
4911(define-public ecasound
4912 (package
4913 (name "ecasound")
ec67d069 4914 (version "2.9.3")
615a4fbf
CLW
4915 (source (origin
4916 (method url-fetch)
694c2976 4917 (uri (string-append "https://nosignal.fi/download/ecasound-"
615a4fbf
CLW
4918 version ".tar.gz"))
4919 (sha256
ec67d069 4920 (base32 "1m7njfjdb7sqf0lhgc4swihgdr4snkg8v02wcly08wb5ar2fr2s6"))))
615a4fbf 4921 (build-system gnu-build-system)
8394619b 4922 (native-inputs (list pkg-config))
ec67d069
TGR
4923 ;; It would be nice to add mikmod to inputs if that gets packaged
4924 ;; eventually.
8394619b
LC
4925 (inputs (list alsa-lib
4926 jack-1
4927 mpg123
4928 lame
4929 vorbis-tools
4930 faad2
4931 flac
4932 timidity++
4933 libsndfile
4934 libsamplerate
4935 ncurses
4936 ladspa
4937 lilv))
694c2976 4938 (home-page "https://nosignal.fi/ecasound/index.php")
615a4fbf
CLW
4939 (synopsis "Multitrack audio processing")
4940 (description "Ecasound is a software package designed for multitrack audio
4941processing. It can be used for simple tasks like audio playback, recording and
4942format conversions, as well as for multitrack effect processing, mixing,
4943recording and signal recycling. Ecasound supports a wide range of audio inputs,
4944outputs and effect algorithms. Effects and audio objects can be combined in
4945various ways, and their parameters can be controlled by operator objects like
4946oscillators and MIDI-CCs. A versatile console mode user-interface is included
4947in the package.")
d83bb797
JW
4948 ;; As an exception to the above, the C, C++ and python implementations
4949 ;; of the Ecasound Control Interface (ECI) are licensed under the LGPL
4950 ;; (see the file 'COPYING.LGPL'). This allows writing ECI applications
615a4fbf
CLW
4951 ;; that are not licensed under GPL.
4952 (license (list license:gpl2 license:lgpl2.1))))
5d703da3
AT
4953
4954(define-public libaudec
4955 (package
4956 (name "libaudec")
4c76af04 4957 (version "0.2.4")
5d703da3
AT
4958 (source
4959 (origin
4960 (method git-fetch)
4961 (uri (git-reference
4831f4e8 4962 (url "https://git.zrythm.org/zrythm/libaudec")
5d703da3
AT
4963 (commit (string-append "v" version))))
4964 (file-name (git-file-name name version))
4965 (sha256
4966 (base32
4c76af04 4967 "1570m2dfia17dbkhd2qhx8jjihrpm7g8nnyg6n4wif4vv229s7dz"))))
5d703da3
AT
4968 (build-system meson-build-system)
4969 (arguments
dfd6ca19 4970 `(#:configure-flags
4c76af04
TGR
4971 ;; Build the tests.
4972 `("-Dtests=true")))
5d703da3 4973 (inputs
8394619b 4974 (list libsamplerate libsndfile))
5d703da3 4975 (native-inputs
8394619b 4976 (list pkg-config))
5d703da3
AT
4977 (synopsis "Library for reading and resampling audio files")
4978 (description "libaudec is a wrapper library over ffmpeg, sndfile and
4979libsamplerate for reading and resampling audio files, based on Robin Gareus'
4980@code{audio_decoder} code.")
4831f4e8 4981 (home-page "https://git.zrythm.org/zrythm/libaudec")
5d703da3 4982 (license license:agpl3+)))
70d9ef51
AT
4983
4984(define-public lv2lint
4985 (package
4986 (name "lv2lint")
b02e52f6 4987 (version "0.8.0")
70d9ef51
AT
4988 (source
4989 (origin
4990 (method git-fetch)
4991 (uri (git-reference
4992 (url "https://git.open-music-kontrollers.ch/lv2/lv2lint")
4993 (commit version)))
4994 (file-name (git-file-name name version))
4995 (sha256
4996 (base32
b02e52f6 4997 "1jrka0hsn4n1clri7zfkcl3c2vi52144lkpjm81l51ff8rqy8ks1"))))
70d9ef51
AT
4998 (build-system meson-build-system)
4999 (arguments
5000 `(#:configure-flags
5001 `("-Delf-tests=true" ; for checking symbol visibility
5002 "-Donline-tests=true"))) ; for checking URI existence
5003 (inputs
8394619b 5004 (list curl libelf lilv))
70d9ef51 5005 (native-inputs
8394619b 5006 (list pkg-config))
70d9ef51
AT
5007 (synopsis "LV2 plugin lint tool")
5008 (description "lv2lint is an LV2 lint-like tool that checks whether a
5009given plugin and its UI(s) match up with the provided metadata and adhere
5010to well-known best practices.")
5011 (home-page "https://open-music-kontrollers.ch/lv2/lv2lint/")
5012 (license license:artistic2.0)))
670da398
AT
5013
5014(define-public lv2toweb
5015 (package
5016 (name "lv2toweb")
5017 (version "0.4")
5018 (source
5019 (origin
5020 (method git-fetch)
5021 (uri (git-reference
5022 (url "https://github.com/x42/lv2toweb")
5023 (commit (string-append "v" version))))
5024 (file-name (git-file-name name version))
5025 (sha256
5026 (base32
5027 "007aysqvgkf25za8nkmyd5g9kp1zla460dcpidlj5xg1zc3fcdfi"))))
5028 (build-system gnu-build-system)
5029 (arguments
5030 `(#:tests? #f ; no "check" target
5031 #:make-flags (list "CC=gcc"
5032 (string-append "PREFIX=" (assoc-ref %outputs "out")))
5033 #:phases
5034 (modify-phases %standard-phases
5035 (delete 'configure))))
5036 (inputs
8394619b 5037 (list jalv lilv))
670da398 5038 (native-inputs
8394619b 5039 (list help2man pkg-config))
670da398
AT
5040 (synopsis "Documentation generator for LV2 plugins")
5041 (description
5042 "lv2toweb allows the user to create an xhtml page with information
5043about the given LV2 plugin, provided that the plugin and its UI(s) match up
5044with the provided metadata and adhere to well-known best practices.")
5045 (home-page "https://github.com/x42/lv2toweb")
5046 (license (list license:isc license:gpl2))))
2f4faccc
AT
5047
5048(define-public ztoolkit
5049 (package
5050 (name "ztoolkit")
5051 (version "0.1.1")
5052 (source
5053 (origin
5054 (method git-fetch)
5055 (uri (git-reference
4831f4e8 5056 (url "https://git.zrythm.org/zrythm/ztoolkit")
2f4faccc
AT
5057 (commit (string-append "v" version))))
5058 (file-name (git-file-name name version))
5059 (sha256
5060 (base32
5061 "07xl3cmdaf7k9mm58m93cn8i1jvgimmiifdw1w7v2jl88nx60pm1"))))
5062 (build-system meson-build-system)
2f4faccc 5063 (native-inputs
8394619b 5064 (list pkg-config))
4bce3a06
AT
5065 ;; These are listed as propagated inputs because they are dependencies
5066 ;; in pkgconfig.
5067 (propagated-inputs
8394619b 5068 (list cairo libx11))
2f4faccc
AT
5069 (synopsis "GUI toolkit for LV2 plugins")
5070 (description "ZToolkit (Ztk) is a cross-platform GUI toolkit heavily
5071inspired by GTK. It handles events and low level drawing on behalf of
5072the user and provides a high-level API for managing the UI and custom
5073widgets. ZToolkit is written in C and was created to be used for building
5074audio plugin UIs, where the dependencies often need to be kept to a
5075minimum.")
4831f4e8 5076 (home-page "https://git.zrythm.org/zrythm/ztoolkit")
2f4faccc 5077 (license license:agpl3+)))
360ebe50 5078
d474052b
VM
5079(define-public libinstpatch
5080 (package
5081 (name "libinstpatch")
846a6aad 5082 (version "1.1.6")
d474052b
VM
5083 (source
5084 (origin
5085 (method git-fetch)
5086 (uri (git-reference
5087 (url "https://github.com/swami/libinstpatch")
5088 (commit (string-append "v" version))))
5089 (file-name (git-file-name name version))
5090 (sha256
846a6aad 5091 (base32 "1w3nk0vvd1cxic70n45zjip0bdsrja969myvyvkhq3ngbarbykir"))))
d474052b
VM
5092 (build-system cmake-build-system)
5093 (arguments
5094 `(#:tests? #f)) ;there are no tests
5095 (native-inputs
5096 `(("glib:bin" ,glib "bin")
5097 ("pkg-config" ,pkg-config)))
5098 (inputs
8394619b 5099 (list glib libsndfile))
d474052b
VM
5100 (home-page "http://www.swamiproject.org/")
5101 (synopsis "Instrument file software library")
5102 (description
5103 "libInstPatch is a library for processing digital sample based MIDI
5104instrument \"patch\" files. The types of files libInstPatch supports are used
5105for creating instrument sounds for wavetable synthesis. libInstPatch provides
5106an object framework (based on GObject) to load patch files, which can then be
5107edited, converted, compressed and saved.")
5108 (license license:lgpl2.1)))
5109
360ebe50 5110(define-public ztoolkit-rsvg
1a265842 5111 (package/inherit ztoolkit
360ebe50
AT
5112 (name "ztoolkit-rsvg")
5113 (arguments
5114 `(#:configure-flags `("-Denable_rsvg=true")))
60a5071f 5115 (propagated-inputs
360ebe50 5116 `(("librsvg" ,librsvg)
60a5071f 5117 ,@(package-propagated-inputs ztoolkit)))
360ebe50 5118 (synopsis "ZToolkit with SVG support")))
7cd2609e 5119
913faed8
AT
5120(define-public lsp-dsp-lib
5121 (package
5122 (name "lsp-dsp-lib")
1e36a6ad 5123 (version "0.5.14")
913faed8
AT
5124 (source
5125 (origin
5126 (method url-fetch)
5127 (uri (string-append "https://github.com/sadko4u/lsp-dsp-lib/"
f50adf0b 5128 "releases/download/" version
913faed8
AT
5129 "/lsp-dsp-lib-" version "-src.tar.gz"))
5130 (sha256
1e36a6ad 5131 (base32 "1gcznkyybywbgdi2fhx27i8sckhy6ahvxax72b213g1lr5aaw7bq"))))
913faed8
AT
5132 (build-system gnu-build-system)
5133 (arguments
c7fc5086
TGR
5134 (list #:tests? #f ; no tests
5135 #:make-flags
5136 #~(list (string-append "CC=" #$(cc-for-target)))
5137 #:phases
5138 #~(modify-phases %standard-phases
5139 (add-after 'unpack 'omit-static-library
5140 (lambda _
5141 (substitute* "src/Makefile"
5142 ((".*cp \\$\\(ARTIFACT_SLIB\\).*") "") ; don't install it
5143 ((" \\$\\(ARTIFACT_SLIB\\)") "")))) ; don't build it
5144 (replace 'configure
5145 (lambda _
5146 (invoke "make" "config"
5147 (string-append "PREFIX=" #$output)))))))
913faed8
AT
5148 (home-page "https://github.com/sadko4u/lsp-dsp-lib")
5149 (synopsis "Digital signal processing library")
5150 (description "The LSP DSP library provides a set of functions that perform
5151SIMD-optimized computing on several hardware architectures. All functions
5152currently operate on IEEE-754 single-precision floating-point numbers.")
5153 (license license:lgpl3+)))
5154
7cd2609e
GLV
5155(define-public codec2
5156 (package
5157 (name "codec2")
5158 (version "0.9.2")
5159 (source
5160 (origin
5161 (method git-fetch)
5162 (uri (git-reference
b0e7b699 5163 (url "https://github.com/drowe67/codec2")
7cd2609e
GLV
5164 (commit (string-append "v" version))))
5165 (file-name (git-file-name name version))
5166 (sha256
5167 (base32 "1jpvr7bra8srz8jvnlbmhf8andbaavq5v01qjnp2f61za93rzwba"))))
5168 (build-system cmake-build-system)
5169 (native-inputs
8394619b 5170 (list bc octave valgrind))
7cd2609e
GLV
5171 (arguments
5172 `(#:tests? #f ; TODO: Fix tests (paths, graphic toolkit, octave modules).
5173 #:phases
5174 (modify-phases %standard-phases
5175 (add-before 'check 'set-test-environment
5176 (lambda _
5177 (setenv "HOME" "/tmp")
5178 #t)))))
5179 (synopsis "Speech codec")
5180 (description
5181 "Codec 2 is a speech codec designed for communications quality speech
5182between 700 and 3200 bit/s. The main application is low bandwidth HF/VHF
5183digital radio.")
5184 (home-page "https://www.rowetel.com/?page_id=452")
5185 (license license:lgpl2.1)))
17aa4eb4 5186
f1b0d0d7
GLV
5187(define-public mbelib
5188 ;; No release since 2016, use commit directly.
5189 (let ((commit "9a04ed5c78176a9965f3d43f7aa1b1f5330e771f")
5190 (revision "1"))
5191 (package
5192 (name "mbelib")
4b861c89 5193 (version (git-version "1.3.0" revision commit))
f1b0d0d7
GLV
5194 (source
5195 (origin
5196 (method git-fetch)
5197 (uri (git-reference
5198 (url "https://github.com/szechyjs/mbelib")
5199 (commit commit)))
5200 (file-name (git-file-name name version))
5201 (sha256
5202 (base32 "0a7xmf87xnjzm5b437j2vnwv39x0ascja1j04c5wj6xs1529gw8h"))))
5203 (build-system cmake-build-system)
5204 (home-page "https://github.com/szechyjs/mbelib")
5205 (synopsis "P25 Phase 1 and ProVoice vocoder")
5206 (description
5207 "The mbelib library provides support for the 7200x4400 bit/s codec used
5208in P25 Phase 1, the 7100x4400 bit/s codec used in ProVoice and the @emph{Half
5209Rate} 3600x2250 bit/s vocoder used in various radio systems.")
e15f7a6b
TGR
5210 (license (list license:bsd-3 ; test/ framework
5211 license:isc))))) ; the rest
f1b0d0d7 5212
17aa4eb4
GL
5213(define-public ableton-link
5214 (package
5215 (name "ableton-link")
e874c730 5216 (version "3.0.3")
17aa4eb4
GL
5217 (source (origin
5218 (method git-fetch)
5219 (uri (git-reference
b0e7b699 5220 (url "https://github.com/Ableton/link")
17aa4eb4
GL
5221 (commit (string-append "Link-" version))))
5222 (file-name (git-file-name name version))
5223 (sha256
5224 (base32
e874c730 5225 "1wplqj11ww64gmw2kzlxpvfs3v04m2036f7k5ndm34zcv12b91fa"))
17aa4eb4
GL
5226 (modules '((guix build utils)))
5227 (patches
5228 (search-patches "ableton-link-system-libraries-debian.patch"))
5229 (snippet
5230 '(begin
5231 ;; Tests assume that CMake's "build" directory is a
5232 ;; sub-directory of the source tree, so we fix it.
5233 (substitute* "ci/run-tests.py"
5234 (("root_dir,") "root_dir, os.pardir,"))
5235 ;; Unbundle dependencies.
5236 (delete-file-recursively "third_party")
e874c730 5237 (delete-file-recursively "modules")))))
17aa4eb4
GL
5238 (build-system cmake-build-system)
5239 (native-inputs
8394619b
LC
5240 (list catch-framework
5241 python ;for running tests
5242 portaudio ;for portaudio examples
5243 qtbase-5 ;for Qt examples
5244 qtdeclarative
5245 qttools))
17aa4eb4 5246 (inputs
8394619b
LC
5247 (list jack-1 ;for JACK examples
5248 qtquickcontrols)) ;for Qt examples
17aa4eb4
GL
5249 (propagated-inputs
5250 ;; This is because include/ableton/platforms/asio/AsioWrapper.hpp
5251 ;; contains '#include <asio.hpp>'.
8394619b 5252 (list asio))
17aa4eb4
GL
5253 (arguments
5254 `(#:configure-flags
5255 '("-DLINK_BUILD_QT_EXAMPLES=ON"
5256 "-DLINK_BUILD_JACK=ON")
5257 #:phases
5258 (modify-phases %standard-phases
5259 (replace 'check
d29cf19b
AV
5260 (lambda* (#:key inputs tests? #:allow-other-keys)
5261 (when tests?
5262 (let* ((python (search-input-file inputs "/bin/python3"))
5263 (run-tests "../source/ci/run-tests.py"))
5264 (invoke python run-tests "--target" "LinkCoreTest")
5265 (invoke python run-tests "--target" "LinkDiscoveryTest")))))
17aa4eb4
GL
5266 (add-before 'install 'patch-cmake
5267 (lambda* (#:key inputs #:allow-other-keys)
e874c730 5268 (let* ((source "../source/"))
17aa4eb4
GL
5269 (substitute* (string-append source
5270 "cmake_include/AsioStandaloneConfig.cmake")
5271 (((string-append "\\$\\{CMAKE_CURRENT_LIST_DIR\\}/\\.\\./"
5272 "modules/asio-standalone/asio/include"))
5273 (string-append (assoc-ref inputs "asio")
5274 "/include")))
5275 (substitute* (string-append source "AbletonLinkConfig.cmake")
5276 (("\\$\\{CMAKE_CURRENT_LIST_DIR\\}/include")
5277 "${CMAKE_CURRENT_LIST_DIR}/../../../include")
5278 (("\\$\\{CMAKE_CURRENT_LIST_DIR\\}/include/ableton/Link\\.hpp")
e874c730 5279 "${CMAKE_CURRENT_LIST_DIR}/../../../include/ableton/Link.hpp")))))
17aa4eb4
GL
5280 (replace 'install
5281 (lambda* (#:key outputs #:allow-other-keys)
5282 (let* ((out (assoc-ref outputs "out"))
5283 (bin (string-append out "/bin"))
5284 (lib-cmake (string-append out "/lib/cmake/ableton-link"))
e874c730 5285 (source "../source"))
17aa4eb4
GL
5286 (for-each (lambda (test-file)
5287 (delete-file test-file))
5288 '("bin/LinkDiscoveryTest" "bin/LinkCoreTest"))
5289 (copy-recursively "bin" bin)
5290 (copy-recursively (string-append source "/include/ableton")
5291 (string-append out "/include/ableton"))
5292 (install-file (string-append source "/AbletonLinkConfig.cmake")
5293 lib-cmake)
5294 (install-file (string-append source
5295 "/cmake_include/AsioStandaloneConfig.cmake")
e874c730 5296 (string-append lib-cmake "/cmake_include"))))))))
17aa4eb4
GL
5297 (home-page "https://github.com/Ableton/link")
5298 (synopsis "Synchronize musical beat, tempo, and phase across multiple applications")
5299 (description
5300 "Ableton Link is a C++ library that synchronizes musical beat, tempo, and phase
5301across multiple applications running on one or more devices. Applications on devices
5302connected to a local network discover each other automatically and form a musical
5303session in which each participant can perform independently: anyone can start or stop
5304while still staying in time.")
5305 (license license:gpl2+)))
80986c6a
LF
5306
5307(define-public butt
5308 (package
5309 (name "butt")
4938ea5f 5310 (version "0.1.32")
80986c6a
LF
5311 (source (origin
5312 (method url-fetch)
5313 (uri (string-append "mirror://sourceforge/butt/butt/butt-"
5314 version "/butt-" version ".tar.gz"))
5315 (sha256
5316 (base32
4938ea5f 5317 "1qwllkx9p1gb3syhbbck3agrk375m82l18fb81aqygi4g3dg3s9r"))
6c7dc0ba
TGR
5318 (modules '((guix build utils)))
5319 (snippet
5320 '(substitute* "src/butt.cpp"
5321 ((".*zica.*") "")))))
80986c6a
LF
5322 (build-system gnu-build-system)
5323 (arguments
5324 `(#:phases
5325 (modify-phases %standard-phases
5326 (add-after 'install 'install-documentation
5327 (lambda* (#:key inputs outputs #:allow-other-keys)
5328 (let* ((out (assoc-ref outputs "out"))
5329 (manual (assoc-ref inputs "manual"))
5330 (doc (string-append out "/share/doc/" ,name "-" ,version)))
5331 (install-file "README" doc)
5332 (copy-file manual (string-append doc "/butt-manual.pdf"))))))))
5333 (inputs
5334 `(("dbus" ,dbus)
5335 ("flac" ,flac)
5336 ("fltk" ,fltk)
5337 ("lame" ,lame)
5338 ("libfdk" ,libfdk)
5339 ("libsamplerate" ,libsamplerate)
5340 ("libvorbis" ,libvorbis)
5341 ("libx11" ,libx11)
5342 ("libxext" ,libxext)
5343 ("libxfixes" ,libxfixes)
5344 ("libxft" ,libxft)
5345 ("libxrender" ,libxrender)
5346 ("ogg" ,libogg)
5347 ("openssl" ,openssl)
5348 ("opus" ,opus)
5349 ("portaudio" ,portaudio)))
5350 (native-inputs
5351 `(("pkg-config" ,pkg-config)
5352 ("manual" ,(origin
5353 (method url-fetch)
5354 (uri (string-append "https://danielnoethen.de/butt/butt-"
5355 version "_manual.pdf"))
5356 (sha256
5357 (base32
4938ea5f 5358 "0g70jyyxbx5nin3xs9q9zf878b2kyy7rn8gn9w91x1ychbjd6dhh"))))))
80986c6a
LF
5359 (home-page "https://danielnoethen.de/butt/")
5360 (synopsis "Audio streaming tool")
5361 (description "Butt is a tool to stream audio to a ShoutCast or
5362Icecast server.")
5363 (license license:gpl2+)))
ac886034
AI
5364
5365(define-public siggen
5366 (package
5367 (name "siggen")
5368 (version "2.3.10")
5369 (source
5370 (origin
5371 (method git-fetch)
5372 (uri (git-reference
5373 (url "https://github.com/bleskodev/siggen")
5374 (commit "a407611b59d59c7770bbe62ba9b8e9a948cf3210")))
5375 (file-name (git-file-name name version))
5376 (sha256
5377 (base32
5378 "0szhgfd9kddr6qsz0imp0x66jjn6ry236f35vjl82ivc1v2bllcb"))))
5379 (build-system gnu-build-system)
5380 (arguments
5381 `(#:make-flags (list (string-append "INSDIR=" %output "/bin")
5382 (string-append "MANDIR=" %output "/share/man"))
5383 #:tests? #f ; no tests
5384 #:phases
5385 (modify-phases %standard-phases
5386 ;; Patch misc.c to prevent a segfault.
5387 (add-after 'unpack 'patch-segfault
5388 (lambda _
5389 (substitute* "misc.c"
5390 (("#include <stdio.h>\n" all)
5391 (string-append all "#include <string.h>\n")))))
5392 (delete 'configure)
5393 (replace 'install
5394 (lambda* (#:key make-flags outputs #:allow-other-keys)
5395 (let ((out (assoc-ref outputs "out")))
5396 (for-each (lambda (dir)
5397 (mkdir-p (string-append out dir)))
5398 (list "/bin" "/share/man/man1" "/share/man/man5"))
5399 (apply invoke "make" "sysinstall" make-flags)))))))
5400 (inputs
8394619b 5401 (list ncurses))
ac886034
AI
5402 (native-inputs
5403 `(("groff" ,groff-minimal) ; for nroff
5404 ("util-linux" ,util-linux))) ; for col
5405 (home-page "https://github.com/bleskodev/siggen")
5406 (synopsis "Signal generation tools")
5407 (description "siggen is a set of tools for imitating a laboratory signal
5408generator, generating audio signals out of Linux's /dev/dsp audio
5409device. There is support for mono and/or stereo and 8 or 16 bit samples.")
5410 (license license:gpl2)))
77c9c5c1 5411
653bcab9 5412(define-public python-pysox
5413 ;; PyPi does not include the data folder containing audio files for testing.
5414 (let ((commit "3d0053381c24ae3490f759d4de87194b85789d36")
5415 (revision "0"))
5416 (package
5417 (name "python-pysox")
5418 (version (git-version "1.4.2" revision commit))
5419 (source
5420 (origin
5421 (method git-fetch)
5422 (uri (git-reference
5423 (url "https://github.com/rabitt/pysox")
5424 (commit commit)))
5425 (file-name (git-file-name name version))
5426 (sha256
5427 (base32
5428 "0i62jx92vfpcr2z7lp69yzqdi9idfs3pifl3rzm2akc2c4cr1mac"))))
5429 (build-system python-build-system)
5430 (arguments
5431 `(#:phases
5432 (modify-phases %standard-phases
5433 (add-after 'unpack 'patch-sox
5434 (lambda* (#:key inputs #:allow-other-keys)
5435 (let* ((sox-store-path (assoc-ref inputs "sox"))
5436 (sox-bin (string-append sox-store-path "/bin/sox")))
5437 (substitute* "sox/__init__.py"
5438 (("sox -h")
5439 (string-append sox-bin " -h")))
5440 (substitute* "sox/core.py"
5441 (("\\['sox")
5442 (string-append "['" sox-bin))))))
5443 (replace 'check
5444 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
5445 (when tests?
5446 (add-installed-pythonpath inputs outputs)
5447 (invoke "pytest")))))))
5448 (propagated-inputs
8394619b 5449 (list python-numpy python-typing-extensions))
653bcab9 5450 (native-inputs
8394619b 5451 (list sox python-pytest python-pytest-cov python-soundfile))
653bcab9 5452 (home-page "https://github.com/rabitt/pysox")
5453 (synopsis "Python wrapper around SoX")
5454 (description "@code{python-pysox} is a wrapper around the @command{sox}
5455command line tool. The API offers @code{Transformer} and @code{Combiner}
5456classes that allow the user to incrementally build up effects and audio
5457manipulations. @code{python-pysox} also provides methods for querying audio
5458information such as sample rate, determining whether an audio file is silent,
5459and much more.")
5460 (license license:bsd-3))))
5461
b615790a 5462(define-public python-resampy
5463 (package
5464 (name "python-resampy")
5465 (version "0.2.2")
5466 (source
5467 (origin
5468 (method git-fetch)
5469 (uri
5470 (git-reference
5471 ;; PyPi does not include tests.
5472 (url "https://github.com/bmcfee/resampy")
5473 (commit version)))
5474 (file-name (git-file-name name version))
5475 (sha256
5476 (base32 "0qmkxl5sbgh0j73n667vyi7ywzh09iaync91yp1j5rrcmwsn0qfs"))))
5477 (build-system python-build-system)
5478 (arguments
5479 '(#:phases
5480 (modify-phases %standard-phases
5481 (replace 'check
5482 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
5483 (when tests?
5484 (add-installed-pythonpath inputs outputs)
5485 (invoke "pytest" "tests")))))))
5486 (propagated-inputs
5487 (list python-numba python-numpy python-scipy python-six))
5488 (native-inputs
5489 (list python-pytest python-pytest-cov))
5490 (home-page "https://github.com/bmcfee/resampy")
5491 (synopsis "Efficient signal resampling")
5492 (description
5493 "@code{python-resampy} implements the band-limited sinc interpolation
5494method for sampling rate conversion as described by Julius O. Smith at the
5495@url{https://ccrma.stanford.edu/~jos/resample/, Digital Audio Resampling
5496Home Page}.")
5497 (license license:isc)))
2f0107d8 5498
5499(define-public python-librosa
5500 (package
5501 (name "python-librosa")
5502 (version "0.8.1")
5503 (source
5504 (origin
5505 (method url-fetch)
5506 (uri (pypi-uri "librosa" version))
5507 (sha256
5508 (base32 "1cx6rhcvak0hy6bx84jwzpxmwgi92m82w77279akwjmfd3khagf5"))))
5509 (build-system python-build-system)
5510 (arguments
5511 ;; Tests require internet connection to download MATLAB scripts for
5512 ;; generating the testing data.
5513 `(#:tests? #f))
5514 (propagated-inputs
5515 (list python-audioread
5516 python-decorator
5517 python-joblib
5518 python-numba
5519 python-numpy
5520 python-packaging
5521 python-pooch
5522 python-resampy
5523 python-scikit-learn
5524 python-scipy
5525 python-soundfile))
5526 (home-page "https://librosa.org")
5527 (synopsis "Python module for audio and music processing")
5528 (description
5529 "@code{librosa} is a python package for music and audio analysis. It
5530provides the building blocks necessary to create music information retrieval
5531systems.")
5532 (license license:isc)))
b615790a 5533
77c9c5c1
TW
5534(define-public mda-lv2
5535 (package
5536 (name "mda-lv2")
5537 (version "1.2.6")
5538 (source
5539 (origin
5540 (method url-fetch)
5541 (uri (string-append "http://download.drobilla.net/mda-lv2-"
5542 version ".tar.bz2"))
5543 (sha256
5544 (base32 "1nspk2j11l65m5r9z5isw8j749vh9a89wgx8mkrrq15f4iq12rnd"))))
5545 (build-system waf-build-system)
5546 (arguments
5547 `(#:tests? #f ; There are no tests.
5548 #:configure-flags
5549 (list (string-append "--prefix="
5550 (assoc-ref %outputs "out")))))
5551 (inputs
8394619b 5552 (list lv2))
77c9c5c1 5553 (native-inputs
8394619b 5554 (list pkg-config))
77c9c5c1
TW
5555 (native-search-paths
5556 (list (search-path-specification
5557 (variable "LV2_PATH")
5558 (files '("lib/lv2")))))
5559 (home-page "https://drobilla.net/software/mda-lv2")
5560 (synopsis "Audio plug-in pack for LV2")
5561 (description
5562 "MDA-LV2 is an LV2 port of the MDA plugins. It includes effects and a few
5563instrument plugins.")
5564 (license license:gpl3+)))
830344a9
AA
5565
5566(define-public libodiosacd
5567 (package
5568 (name "libodiosacd")
5569 (version "21.8.30")
5570 (source (origin
5571 (method git-fetch)
5572 (uri (git-reference
5573 (url "https://github.com/tari01/libodiosacd")
5574 (commit version)))
5575 (file-name (git-file-name name version))
5576 (sha256
5577 (base32
5578 "0iamf7wksbql0qfigdv5ahaax53ms2yligdav8dw6x0ay88x4lhi"))))
5579 (build-system gnu-build-system)
5580 (arguments
5581 `(#:tests? #f ; no check target
5582 #:phases
5583 (modify-phases %standard-phases
5584 (add-after 'unpack 'patch-makefile
5585 (lambda _
5586 (substitute* "Makefile"
5587 (("\\$\\(DESTDIR\\)/usr")
5588 "\\$(DESTDIR)"))))
5589 (delete 'configure)) ; no configure script
5590 #:make-flags
5591 (list (string-append "DESTDIR=" %output))))
5592 (synopsis "Library for decoding Super Audio CDs (SACD)")
5593 (description
5594 "The Odio SACD shared library is a decoding engine which takes a Super
5595Audio CD source and extracts a 24-bit high resolution WAV file. It handles
5596both DST and DSD streams.")
5597 (home-page "https://tari.in/www/software/libodiosacd/")
5598 (license license:gpl3+)))
0e4a2309
AA
5599
5600(define-public odio-sacd
5601 (package
5602 (name "odio-sacd")
5603 (version "21.1.9")
5604 (source (origin
5605 (method git-fetch)
5606 (uri (git-reference
5607 (url "https://github.com/tari01/odio-sacd")
5608 (commit version)))
5609 (file-name (git-file-name name version))
5610 (sha256
5611 (base32
5612 "0314srqk0r4qv292qiaply619l2fw04nkdwvqhj3q1dqzv41g4qk"))))
5613 (inputs (list libodiosacd))
5614 ;; Build system and arguments for libodiosacd are identical.
5615 (build-system (package-build-system libodiosacd))
5616 (arguments (package-arguments libodiosacd))
5617 (synopsis "Rip Super Audio CDs (SACD)")
5618 (description
5619 "Odio SACD is a command-line application which takes a Super Audio CD
5620source and extracts a 24-bit high resolution WAV file. It handles both DST
5621and DSD streams.")
5622 (home-page "https://tari.in/www/software/odio-sacd/")
5623 (license license:gpl3+)))