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