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