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