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