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