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