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