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