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