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