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