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