1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
3 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
4 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
5 ;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
6 ;;; Copyright © 2015, 2016 Mark H Weaver <mhw@netris.org>
7 ;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
8 ;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com>
9 ;;; Copyright © 2016 Nikita <nikita@n0.is>
10 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
11 ;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr>
12 ;;; Copyright © 2018, 2020 Oleg Pykhalov <go.wigust@gmail.com>
13 ;;; Copyright © 2018 okapi <okapi@firemail.cc>
14 ;;; Copyright © 2018, 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
15 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
16 ;;; Copyright © 2018 Brett Gilio <brettg@gnu.org>
17 ;;; Copyright © 2018, 2019 Marius Bakke <mbakke@fastmail.com>
18 ;;; Copyright © 2018 Thorsten Wilms <t_w_@freenet.de>
19 ;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
20 ;;; Copyright © 2018 Brendan Tildesley <mail@brendan.scot>
21 ;;; Copyright © 2019, 2021 Pierre Langlois <pierre.langlois@gmx.com>
22 ;;; Copyright © 2019, 2021 Leo Famulari <leo@famulari.name>
23 ;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
24 ;;; Copyright © 2019 Arun Isaac <arunisaac@systemreboot.net>
25 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
26 ;;; Copyright © 2019, 2020 Alexandros Theodotou <alex@zrythm.org>
27 ;;; Copyright © 2019 Christopher Lemmer Webber <cwebber@dustycloud.org>
28 ;;; Copyright © 2019 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
29 ;;; Copyright © 2019 Hartmt Goebel <h.goebel@crazy-compilers.com>
30 ;;; Copyright © 2019, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
31 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
32 ;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
33 ;;; Copyright © 2020 Jonathan Frederickson <jonathan@terracrypt.net>
34 ;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
35 ;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
36 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
38 ;;; This file is part of GNU Guix.
40 ;;; GNU Guix is free software; you can redistribute it and/or modify it
41 ;;; under the terms of the GNU General Public License as published by
42 ;;; the Free Software Foundation; either version 3 of the License, or (at
43 ;;; your option) any later version.
45 ;;; GNU Guix is distributed in the hope that it will be useful, but
46 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
47 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
48 ;;; GNU General Public License for more details.
50 ;;; You should have received a copy of the GNU General Public License
51 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
53 (define-module (gnu packages audio)
54 #:use-module (gnu packages)
55 #:use-module (gnu packages algebra)
56 #:use-module (gnu packages autotools)
57 #:use-module (gnu packages avahi)
58 #:use-module (gnu packages backup)
59 #:use-module (gnu packages base)
60 #:use-module (gnu packages bison)
61 #:use-module (gnu packages build-tools)
62 #:use-module (gnu packages boost)
63 #:use-module (gnu packages check)
64 #:use-module (gnu packages compression)
65 #:use-module (gnu packages curl)
66 #:use-module (gnu packages dbm)
67 #:use-module (gnu packages documentation)
68 #:use-module (gnu packages elf)
69 #:use-module (gnu packages emacs)
70 #:use-module (gnu packages file)
71 #:use-module (gnu packages flex)
72 #:use-module (gnu packages fltk)
73 #:use-module (gnu packages fontutils)
74 #:use-module (gnu packages gcc)
75 #:use-module (gnu packages gettext)
76 #:use-module (gnu packages gl)
77 #:use-module (gnu packages glib)
78 #:use-module (gnu packages gnome)
79 #:use-module (gnu packages gnunet) ; libmicrohttpd
80 #:use-module (gnu packages gperf)
81 #:use-module (gnu packages gstreamer)
82 #:use-module (gnu packages gtk)
83 #:use-module (gnu packages guile)
84 #:use-module (gnu packages icu4c)
85 #:use-module (gnu packages image)
86 #:use-module (gnu packages libbsd)
87 #:use-module (gnu packages libusb)
88 #:use-module (gnu packages linux)
89 #:use-module (gnu packages llvm)
90 #:use-module (gnu packages man)
91 #:use-module (gnu packages maths)
92 #:use-module (gnu packages mp3) ;taglib
93 #:use-module (gnu packages multiprecision)
94 #:use-module (gnu packages music)
95 #:use-module (gnu packages ncurses)
96 #:use-module (gnu packages networking)
97 #:use-module (gnu packages onc-rpc)
98 #:use-module (gnu packages perl)
99 #:use-module (gnu packages pkg-config)
100 #:use-module (gnu packages pulseaudio) ;libsndfile, libsamplerate
101 #:use-module (gnu packages python)
102 #:use-module (gnu packages python-xyz)
103 #:use-module (gnu packages qt)
104 #:use-module (gnu packages rdf)
105 #:use-module (gnu packages readline)
106 #:use-module (gnu packages sdl)
107 #:use-module (gnu packages serialization)
108 #:use-module (gnu packages telephony)
109 #:use-module (gnu packages linphone)
110 #:use-module (gnu packages tls)
111 #:use-module (gnu packages valgrind)
112 #:use-module (gnu packages video)
113 #:use-module (gnu packages vim) ;xxd
114 #:use-module (gnu packages web)
115 #:use-module (gnu packages webkit)
116 #:use-module (gnu packages wxwidgets)
117 #:use-module (gnu packages xiph)
118 #:use-module (gnu packages xml)
119 #:use-module (gnu packages xorg)
120 #:use-module (guix build-system cmake)
121 #:use-module (guix build-system copy)
122 #:use-module (guix build-system glib-or-gtk)
123 #:use-module (guix build-system gnu)
124 #:use-module (guix build-system meson)
125 #:use-module (guix build-system python)
126 #:use-module (guix build-system trivial)
127 #:use-module (guix build-system waf)
128 #:use-module (guix download)
129 #:use-module (guix git-download)
130 #:use-module ((guix licenses) #:prefix license:)
131 #:use-module (guix packages)
132 #:use-module (guix utils)
133 #:use-module (srfi srfi-1)
134 #:use-module (srfi srfi-26))
136 (define-public opensles
145 (url "https://github.com/KhronosGroup/OpenSL-ES-Registry")
146 (commit "ea5104bf37bf525c25e6ae2386586048179d0fda")))
147 (file-name (git-file-name name version))
149 (base32 "0j5bm7h3ahz66f23i9abwc0y10agfkpksnj6y078x2nichq66h4f"))
151 (search-patches "opensles-add-license-file.patch"))))
152 (build-system copy-build-system)
155 (modify-phases %standard-phases
156 (add-after 'install 'clean
157 (lambda* (#:key outputs #:allow-other-keys)
158 (let* ((out (assoc-ref outputs "out")))
159 (mkdir-p (string-append out "/etc"))
160 (mkdir-p (string-append out "/include"))
161 (mkdir-p (string-append out "/share"))
163 (string-append out "/api/1.1/OpenSLES_IID.c")
164 (string-append out "/etc/OpenSLES_IID.c"))
166 (string-append out "/api/1.1/OpenSLES.h")
167 (string-append out "/include/OpenSLES.h"))
169 (string-append out "/api/1.1/OpenSLES_Platform.h")
170 (string-append out "/include/OpenSLES_Platform.h"))
172 (string-append out "/api/1.1/README.txt")
173 (string-append out "/share/README.txt"))
175 (string-append out "/LICENSE.txt")
176 (string-append out "/share/LICENSE.txt"))
177 (for-each delete-file-recursively
179 (string-append out "/api")
180 (string-append out "/specs")))
181 (for-each delete-file
183 (string-append out "/CODE_OF_CONDUCT.md")
184 (string-append out "/index.php")
185 (string-append out "/README.md"))))
187 (synopsis "Embedded Audio Acceleration")
188 (description "OpenSLES is a royalty-free, cross-platform,
189 hardware-accelerated audio API tuned for embedded systems. It provides a
190 standardized, high-performance, low-latency method to access audio
191 functionality for developers of native applications on embedded mobile
192 multimedia devices, enabling straightforward cross-platform deployment of
193 hardware and software audio capabilities, reducing implementation effort, and
194 promoting the market for advanced audio.")
195 (home-page "https://www.khronos.org/opensles/")
196 (license (license:non-copyleft "file:///LICENSE.txt"))))
198 (define-public wildmidi
207 (url "https://github.com/Mindwerks/wildmidi")
208 (commit (string-append name "-" version))))
209 (file-name (git-file-name name version))
211 (base32 "08fbbsvw6pkwwqarjwcvdp8mq4zn5sgahf025hynwc6rvf4sp167"))))
212 (build-system cmake-build-system)
214 `(#:tests? #f ; No target
219 "-DWANT_OPENAL=ON")))
223 (synopsis "Software Synthesizer")
224 (description "WildMIDI is a simple software midi player which has a core
225 softsynth library that can be use with other applications.")
226 (home-page "https://www.mindwerks.net/projects/wildmidi/")
234 (define-public webrtc-audio-processing
236 (name "webrtc-audio-processing")
242 (string-append "http://freedesktop.org/software/pulseaudio/"
243 name "/" name "-" version ".tar.xz"))
245 (base32 "1gsx7k77blfy171b6g3m0k0s0072v6jcawhmx1kjs9w5zlwdkzd0"))))
246 (build-system gnu-build-system)
247 (synopsis "WebRTC's Audio Processing Library")
248 (description "WebRTC-Audio-Processing library based on Google's
249 implementation of WebRTC.")
251 "https://freedesktop.org/software/pulseaudio/webrtc-audio-processing/")
252 (license (license:non-copyleft "file:///COPYING"))))
254 (define-public vo-aacenc
262 (string-append "https://sourceforge.net/projects/opencore-amr/files/"
263 name "/" name "-" version ".tar.gz"))
265 (base32 "0dhghm3c8pqrriwwyj5x9i0yf52fmdfijbgqqkvqvwarldvp86p5"))))
266 (build-system gnu-build-system)
267 (synopsis "VisualOn AAC Encoder")
268 (description "VO-AACENC is the VisualOn implementation of Advanced Audio
269 Coding (AAC) encoder.")
270 (home-page "https://sourceforge.net/projects/opencore-amr/")
271 (license license:asl2.0)))
273 (define-public tinyalsa
282 (url "https://github.com/tinyalsa/tinyalsa")
284 (file-name (git-file-name name version))
286 (base32 "0ajyvml5bnzvhiyyrn42gqwgg23ssxkfh09rvsnywhzxhd0xai4h"))))
287 (build-system gnu-build-system)
289 `(#:tests? #f ; No target
291 (modify-phases %standard-phases
295 (string-append "PREFIX=" (assoc-ref %outputs "out")))))
296 (synopsis "ALSA interfacing library")
297 (description "TinyALSA is a small library to interface with ALSA in the
299 (home-page "https://github.com/tinyalsa/tinyalsa")
300 (license (license:non-copyleft "file:///NOTICE"))))
302 (define-public libopenmpt
310 (string-append "https://download.openmpt.org/archive/libopenmpt/src/"
311 "libopenmpt-" version "+release.autotools.tar.gz"))
313 (base32 "1kca5nc870mfv7i4ww2g1q9jn61gsq46irsypbr6fgxpfh8w5qi9"))))
314 (build-system gnu-build-system)
317 (list (string-append "--docdir=" (assoc-ref %outputs "out")
318 "/share/doc/" ,name "-" ,version))
320 (modify-phases %standard-phases
321 (add-after 'install 'delete-static-libraries
322 (lambda* (#:key outputs #:allow-other-keys)
323 (let* ((out (assoc-ref outputs "out"))
324 (lib (string-append out "/lib")))
325 (for-each delete-file (find-files lib "\\.a$"))
328 `(("doxygen" ,doxygen)
330 ("pkg-config" ,pkg-config)))
335 ("portaudio" ,portaudio)
336 ("pulseaudio" ,pulseaudio)
338 ("sndfile" ,libsndfile)
339 ("vorbis" ,libvorbis)
341 (synopsis "Audio tracking library")
342 (description "LibOpenMPT is a cross-platform C++ and C module playback
343 library. It is based on the player code of the Open ModPlug Tracker project.")
344 (home-page "https://openmpt.org/")
345 (license (license:non-copyleft "file:///LICENSE"))))
347 (define-public libofa
355 (string-append "https://storage.googleapis.com/"
356 "google-code-archive-downloads/v2/code.google.com/"
357 "musicip-libofa/" name "-" version ".tar.gz"))
359 (base32 "184ham039l7lwhfgg0xr2vch2xnw1lwh7sid432mh879adhlc5h2"))
362 "libofa-ftbfs-1.diff"
364 "libofa-ftbfs-2.diff"))))
365 (build-system gnu-build-system)
367 `(("pkg-config" ,pkg-config)))
373 (synopsis "Open Fingerprint Architecture")
374 (description "LibOFA is an audio fingerprint library, created and provided
376 (home-page "https://code.google.com/archive/p/musicip-libofa/")
377 (license license:gpl2+)))
387 (string-append "https://sourceforge.net/projects/faac/files/faac-src/"
388 "faac-1.30/faac-1_30.tar.gz/download"))
390 (base32 "1lmj0dib3mjp84jhxc5ddvydkzzhb0gfrdh3ikcidjlcb378ghxd"))))
391 (build-system gnu-build-system)
393 `(("autoconf" ,autoconf)
394 ("automake" ,automake)
396 ("pkg-config" ,pkg-config)))
397 (synopsis "Freeware Advanced Audio Coder")
398 (description "FAAC is an MPEG-4 and MPEG-2 AAC encoder.")
399 (home-page "https://www.audiocoding.com/faac.html")
402 ;; ISO MPEG-4 reference code.
407 (define-public libtimidity
415 (string-append "https://sourceforge.net/projects/" name "/files/"
416 name "/" version "/" name "-" version ".tar.gz"))
418 (base32 "0p2px0m907gi1zpdr0l9adq25jl89j85c11ag9s2g4yc6n1nhgfm"))))
419 (build-system gnu-build-system)
421 `(#:tests? #f)) ; XXX: LibTiMidity could not be initialised
423 `(("pkg-config" ,pkg-config)))
426 (synopsis "MIDI to WAVE converter library")
427 (description "LibTiMidity is a MIDI to WAVE converter library that uses
428 Gravis Ultrasound-compatible patch files to generate digital audio data from
429 General MIDI files.")
430 (home-page "http://libtimidity.sourceforge.net/")
432 ;; This project is dual-licensed.
433 ;; Either of the following licenses can be exercised.
436 license:artistic2.0))))
438 (define-public vo-amrwbenc
446 (string-append "https://sourceforge.net/projects/opencore-amr/files/"
447 name "/" name "-" version ".tar.gz"))
449 (base32 "0klx3nkidc6b8aawchpk19n3xlrzgnc046w4gd0rdqphw28v6ljn"))))
450 (build-system gnu-build-system)
451 (synopsis "Adaptive Multi Rate Codec")
452 (description "VO-AMR is a library of VisualOn implementation of
453 Adaptive Multi Rate Narrowband and Wideband (AMR-NB and AMR-WB) speech codec.")
454 (home-page "https://sourceforge.net/projects/opencore-amr/")
455 (license license:asl2.0)))
457 (define-public opencore-amr
459 (name "opencore-amr")
465 (string-append "https://sourceforge.net/projects/opencore-amr/files/"
466 name "/" name "-" version ".tar.gz"))
468 (base32 "0hfk9khz3by0119h3jdwgdfd7jgkdbzxnmh1wssvylgnsnwnq01c"))))
469 (build-system gnu-build-system)
470 (synopsis "Adaptive Multi Rate Codec")
471 (description "OpenCore-AMR is a library of OpenCORE Framework
472 implementation of Adaptive Multi Rate Narrowband and Wideband
473 (AMR-NB and AMR-WB) speech codec.")
474 (home-page "https://sourceforge.net/projects/opencore-amr/")
475 (license license:asl2.0)))
477 (define-public alsa-modular-synth
479 (name "alsa-modular-synth")
483 (uri (string-append "mirror://sourceforge/alsamodular/alsamodular"
484 "/" version "/ams-" version ".tar.bz2"))
487 "056dn6b9c5nsw2jdww7z1kxrjqqfvxjzxhsd5x9gi4wkwyiv21nz"))))
488 (build-system gnu-build-system)
490 `(("alsa-lib" ,alsa-lib)
491 ;; We cannot use zita-alsa-pcmi (the successor of clalsadrv) due to
492 ;; license incompatibility.
493 ("clalsadrv" ,clalsadrv)
500 `(("pkg-config" ,pkg-config)
501 ("qttools" ,qttools)))
502 (home-page "http://alsamodular.sourceforge.net/")
503 (synopsis "Realtime modular synthesizer and effect processor")
505 "AlsaModularSynth is a digital implementation of a classical analog
506 modular synthesizer system. It uses virtual control voltages to control the
507 parameters of the modules. The control voltages which control the frequency
508 e.g. of the VCO (Voltage Controlled Oscillator) and VCF (Voltage Controlled
509 Filter) modules follow the convention of 1V / Octave.")
510 (license license:gpl2)))
519 "https://aubio.org/pub/aubio-" version ".tar.bz2"))
522 "1npks71ljc48w6858l9bq30kaf5nph8z0v61jkfb70xb9np850nl"))))
523 (build-system waf-build-system)
525 `(#:tests? #f ; no check target
528 (string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") "/lib")
532 "--enable-samplerate"
537 ("libsndfile" ,libsndfile)
538 ("libsamplerate" ,libsamplerate)
540 ("ffmpeg" ,ffmpeg))) ; for libavcodec
542 `(("pkg-config" ,pkg-config)))
543 (home-page "https://aubio.org/")
544 (synopsis "Library for audio labelling")
546 "aubio is a tool designed for the extraction of annotations from audio
547 signals. Its features include segmenting a sound file before each of its
548 attacks, performing pitch detection, tapping the beat and producing MIDI
549 streams from live audio.")
550 (license license:gpl3+)))
552 (define (ardour-rpath-phase major-version)
553 `(lambda* (#:key outputs #:allow-other-keys)
554 (let ((libdir (string-append (assoc-ref outputs "out")
555 "/lib/ardour" ,major-version)))
556 (substitute* "wscript"
557 (("linker_flags = \\[\\]")
558 (string-append "linker_flags = [\""
561 libdir "/backends" ":"
562 libdir "/engines" ":"
563 libdir "/panners" ":"
564 libdir "/surfaces" ":"
565 libdir "/vamp" "\"]"))))
568 (define-public ardour
575 (url "git://git.ardour.org/ardour/ardour.git")
578 ;; Ardour expects this file to exist at build time. The revision
580 ;; git describe HEAD | sed 's/^[A-Za-z]*+//'
581 `(call-with-output-file
582 "libs/ardour/revision.cc"
584 (format port ,(string-append "#include \"ardour/revision.h\"
585 namespace ARDOUR { const char* revision = \"" version "\" ; const char* date = \"\"; }"))
589 "0k5rxh8b3d8si3lj01gfqj0pmd448d8sj4asnb205mwhwbfgn0cp"))
590 (file-name (string-append name "-" version))))
591 (build-system waf-build-system)
593 `(#:configure-flags '("--cxx11" ; required by gtkmm
595 "--no-phone-home" ; don't contact ardour.org
596 "--freedesktop" ; build .desktop file
597 "--test") ; build unit tests
599 (modify-phases %standard-phases
600 (add-after 'unpack 'set-rpath-in-LDFLAGS
601 ,(ardour-rpath-phase (version-major version)))
602 (add-after 'install 'install-freedesktop-files
603 (lambda* (#:key outputs #:allow-other-keys)
604 (let* ((out (assoc-ref outputs "out"))
605 (share (string-append out "/share"))
606 (ver ,(version-major version)))
609 (let ((dir (string-append share "/icons/hicolor/"
610 size "x" size "/apps")))
613 (string-append "gtk2_ardour/resources/Ardour-icon_"
615 (string-append dir "/ardour" ver ".png"))))
616 '("16" "22" "32" "48" "256"))
617 (install-file (string-append "build/gtk2_ardour/ardour"
619 (string-append share "/applications/"))
620 (install-file (string-append "build/gtk2_ardour/ardour"
622 (string-append share "/appdata/")))
624 #:test-target "test"))
626 `(("alsa-lib" ,alsa-lib)
640 ("libarchive" ,libarchive)
641 ("libart-lgpl" ,libart-lgpl)
642 ("libgnomecanvasmm" ,libgnomecanvasmm)
645 ("libsamplerate" ,libsamplerate)
646 ("libsndfile" ,libsndfile)
648 ("libvorbis" ,libvorbis)
649 ("libwebsockets" ,libwebsockets)
654 ("openssl" ,openssl) ; Required by libwebsockets.
656 ("python-rdflib" ,python-rdflib)
657 ("pulseaudio" ,pulseaudio)
658 ("readline" ,readline)
660 ("rubberband" ,rubberband)
663 ("soundtouch" ,soundtouch)
669 `(("cppunit" ,cppunit)
670 ("gettext" ,gettext-minimal)
673 ("pkg-config" ,pkg-config)))
674 (home-page "https://ardour.org")
675 (synopsis "Digital audio workstation")
677 "Ardour is a multi-channel digital audio workstation, allowing users to
678 record, edit, mix and master audio and MIDI projects. It is targeted at audio
679 engineers, musicians, soundtrack editors and composers.")
680 (license license:gpl2+)))
682 (define-public audacity
690 (url "https://github.com/audacity/audacity")
691 (commit (string-append "Audacity-" version))))
692 (file-name (git-file-name name version))
695 "0lklcvqkxrr2gkb9gh3422iadzl2rv9v0a8s76rwq43lj2im7546"))
696 (patches (search-patches "audacity-build-with-system-portaudio.patch"
697 "audacity-add-include.patch"))
698 (modules '((guix build utils)))
700 ;; Remove bundled libraries.
704 (delete-file-recursively (string-append "lib-src/" dir)))
705 '("expat" "ffmpeg" "lame" "libflac" "libid3tag" "libmad" "libogg"
706 "libsndfile" "libsoxr" "libvamp" "libvorbis" "lv2"
707 "portmidi" "soundtouch" "twolame"
708 ;; FIXME: these libraries have not been packaged yet:
716 ;; FIXME: we have this library, but it differs in that the Slide
717 ;; class does not have a member "getInverseStretchedTime".
721 (build-system cmake-build-system)
723 `(("wxwidgets" ,wxwidgets)
725 ("alsa-lib" ,alsa-lib)
731 ("libid3tag" ,libid3tag)
733 ;;("libsbsms" ,libsbsms) ;bundled version is modified
734 ("libsndfile" ,libsndfile)
735 ("soundtouch" ,soundtouch)
736 ("soxr" ,soxr) ;replaces libsamplerate
739 ("libvorbis" ,libvorbis)
741 ("lilv" ,lilv) ;for lv2
742 ("suil" ,suil) ;for lv2
743 ("portmidi" ,portmidi)))
745 `(("autoconf" ,autoconf)
746 ("automake" ,automake)
747 ("gettext" ,gettext-minimal) ;for msgfmt
749 ("pkg-config" ,pkg-config)
755 ;; Loading FFmpeg dynamically is problematic.
756 "-Daudacity_use_ffmpeg=linked"
757 "-Daudacity_use_lame=system"
758 "-Daudacity_use_portsmf=system")
759 #:imported-modules ((guix build glib-or-gtk-build-system)
760 ,@%cmake-build-system-modules)
763 (guix build cmake-build-system)
764 ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:))
766 (modify-phases %standard-phases
767 (add-after 'unpack 'comment-out-revision-ident
769 (substitute* "src/AboutDialog.cpp"
770 (("(.*RevisionIdent\\.h.*)" include-line)
771 (string-append "// " include-line)))))
772 (add-after 'unpack 'use-upstream-headers
773 (lambda* (#:key inputs #:allow-other-keys)
774 (substitute* '("src/NoteTrack.cpp"
777 "src/AudioIOBase.cpp")
778 (("../lib-src/portmidi/pm_common/portmidi.h") "portmidi.h")
779 (("../lib-src/portmidi/porttime/porttime.h") "porttime.h"))
780 (substitute* "src/prefs/MidiIOPrefs.cpp"
781 (("../../lib-src/portmidi/pm_common/portmidi.h") "portmidi.h"))))
782 (add-after 'wrap-program 'glib-or-gtk-wrap
783 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))
784 ;; The test suite is not "well exercised" according to the developers,
785 ;; and fails with various errors. See
786 ;; <http://sourceforge.net/p/audacity/mailman/message/33524292/>.
788 (home-page "https://www.audacityteam.org/")
789 (synopsis "Software for recording and editing sounds")
791 "Audacity is a multi-track audio editor designed for recording, playing
792 and editing digital audio. It features digital effects and spectrum analysis
794 (license license:gpl2+)))
796 (define-public audiofile
804 "https://audiofile.68k.org/audiofile-" version ".tar.gz"))
806 (base32 "0rb927zknk9kmhprd8rdr4azql4gn2dp75a36iazx2xhkbqhvind"))
808 ;; CVE references according to nixpgs
810 "audiofile-fix-datatypes-in-tests.patch"
811 "audiofile-fix-sign-conversion.patch"
812 "audiofile-hurd.patch"
813 "audiofile-CVE-2015-7747.patch"
815 "audiofile-Fix-index-overflow-in-IMA.cpp.patch"
816 ;; CVE-2017-6827, CVE-2017-6828, CVE-2017-6832, CVE-2017-6835,
818 "audiofile-check-number-of-coefficients.patch"
820 "audiofile-overflow-in-MSADPCM.patch"
821 ;; CVE-2017-6830, CVE-2017-6834, CVE-2017-6836, CVE-2017-6838:
822 "audiofile-multiply-overflow.patch"
823 "audiofile-function-signature.patch"
825 "audiofile-Fail-on-error-in-parseFormat.patch"
827 "audiofile-division-by-zero.patch"
828 "audiofile-CVE-2018-13440.patch"
829 "audiofile-CVE-2018-17095.patch"))))
830 (properties `((lint-hidden-cve . ("CVE-2017-6829"
832 "CVE-2017-6827" "CVE-2017-6828"
833 "CVE-2017-6832" "CVE-2017-6835"
838 "CVE-2017-6830" "CVE-2017-6834"
839 "CVE-2017-6836" "CVE-2017-6838"
841 "CVE-2017-6831" "CVE-2017-6833"))))
842 (build-system gnu-build-system)
844 `(("alsa-lib" ,alsa-lib)))
845 (home-page "https://audiofile.68k.org/")
846 (synopsis "Library to handle various audio file formats")
847 (description "This is an open-source version of SGI's audiofile library.
848 It provides a uniform programming interface for processing of audio data to
849 and from audio files of many common formats.
851 Currently supported file formats include AIFF/AIFF-C, WAVE, and NeXT/Sun
852 .snd/.au, BICS, and raw data. Supported compression formats are currently
853 G.711 mu-law and A-law.")
854 (license license:lgpl2.1+)))
856 (define-public autotalent
862 (uri (string-append "http://tombaran.info/autotalent-"
866 "1n04qm66f14195ly6gsy3ra7v2j7zad5n19d8dwfmh0qs6h9hphh"))))
867 (build-system gnu-build-system)
869 `(#:tests? #f ; no check target
871 (modify-phases %standard-phases
872 ;; no configure script
874 (add-before 'install 'prepare-target-directory
875 (lambda* (#:key outputs #:allow-other-keys)
876 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
878 (add-after 'unpack 'override-target-directory
879 (lambda* (#:key outputs #:allow-other-keys)
880 (substitute* "Makefile"
881 (("/usr/lib64/ladspa")
882 (string-append (assoc-ref outputs "out") "/lib/ladspa")))
885 `(("ladspa" ,ladspa)))
886 (home-page "http://tombaran.info/autotalent.html")
887 (synopsis "Pitch-correction LADSPA audio plugin")
889 "Autotalent is a LADSPA plugin for real-time pitch-correction. Among its
890 controls are allowable notes, strength of correction, LFO for vibrato and
892 ;; All code except the FFT routine is licensed under GPLv2+.
893 ;; The FFT routine is under BSD-3.
894 (license license:gpl2+)))
902 (uri (string-append "mirror://savannah/ll-plugins/azr3-jack-"
907 "18mdw6nc0vgj6k9rsy0x8w64wvzld0frqshrxxbxfj9qi9843vlc"))
908 (patches (search-patches "azr3.patch"))))
909 (build-system gnu-build-system)
911 `(#:tests? #f ; no check target
914 (string-append "prefix=" %output)
915 (string-append "pkgdatadir=" %output "/share/azr3-jack"))
917 (modify-phases %standard-phases
918 (add-before 'install 'fix-timestamp
920 (let ((early-1980 315619200)) ; 1980-01-02 UTC
921 (utime "azr3.1" early-1980 early-1980))
929 `(("pkg-config" ,pkg-config)))
930 (home-page "http://ll-plugins.nongnu.org/azr3/")
931 (synopsis "Tonewheel organ synthesizer")
933 "AZR-3 is a port of the free VST plugin AZR-3. It is a tonewheel organ
934 with drawbars, distortion and rotating speakers. The organ has three
935 sections, two polyphonic sections with nine drawbars each and one monophonic
936 bass section with five drawbars. A standalone JACK application and LV2
937 plugins are provided.")
938 (license license:gpl2)))
946 (uri (string-append "https://calf-studio-gear.org/files/calf-"
950 "17x4hylgq4dn9qycsdacfxy64f5cv57n2qgkvsdp524gnqzw4az3"))))
951 (build-system gnu-build-system)
953 `(("fluidsynth" ,fluidsynth)
964 `(("pkg-config" ,pkg-config)))
966 (list (search-path-specification
967 (variable "LV2_PATH")
968 (files '("lib/lv2")))))
969 (home-page "http://calf.sourceforge.net/")
970 (synopsis "Audio plug-in pack for LV2 and JACK environments")
972 "Calf Studio Gear is an audio plug-in pack for LV2 and JACK environments.
973 The suite contains lots of effects (delay, modulation, signal processing,
974 filters, equalizers, dynamics, distortion and mastering effects),
975 instruments (SF2 player, organ simulator and a monophonic synthesizer) and
976 tools (analyzer, mono/stereo tools, crossovers).")
977 ;; calfjackhost is released under GPLv2+
978 ;; The plugins are released under LGPLv2.1+
979 (license (list license:lgpl2.1+ license:gpl2+))))
981 (define-public caps-plugins-lv2
983 (name "caps-plugins-lv2")
984 (version "0.9.24") ; version that has been ported.
987 ;; The Github project hasn't tagged a release.
990 ;; Actually https://github.com/moddevices/caps-lv2.git, but it's
991 ;; missing fixes for newer glibc, so using the origin of a pull
992 ;; request regarding this issue:
993 (url "https://github.com/jujudusud/caps-lv2")
994 (commit "9c9478b7fbd8f9714f552ebe2a6866398b0babfb")))
995 (file-name (git-file-name name version))
998 "1idfnazin3cca41zw1a8vwgnxjnkrap7bxxjamjqvgpmvydgcam1"))))
999 (build-system gnu-build-system)
1001 `(#:tests? #f ; no check target
1003 (modify-phases %standard-phases
1004 ;; no configure script
1006 (add-after 'unpack 'override-target-directory
1007 (lambda* (#:key outputs #:allow-other-keys)
1008 (substitute* (find-files "plugins" "Makefile")
1009 (("/usr/local")(assoc-ref outputs "out")))
1013 ;; home-page of the original LADSPA version: http://quitte.de/dsp/caps.html
1014 (home-page "https://github.com/moddevices/caps-lv2")
1015 (synopsis "LV2 port of the CAPS audio plugin collection")
1017 "LV2 port of CAPS, a collection of audio plugins comprising basic virtual
1018 guitar amplification and a small range of classic effects, signal processors and
1019 generators of mostly elementary and occasionally exotic nature.")
1020 (license license:gpl3+)))
1022 (define-public infamous-plugins
1024 (name "infamous-plugins")
1029 (url "https://github.com/ssj71/infamousPlugins")
1030 (commit (string-append "v" version))))
1031 (file-name (git-file-name name version))
1034 "0hmqk80w4qxq09iag7b7srf2g0wigkyhzq0ywxvhz2iz0hq9k0dh"))))
1035 (build-system cmake-build-system)
1037 `(#:tests? #f ; there are no tests
1039 (modify-phases %standard-phases
1040 (add-after 'unpack 'remove-compiler-flags
1042 (substitute* (find-files "." "CMakeLists.txt")
1043 (("-msse2 -mfpmath=sse") ""))
1050 ("zita-resampler" ,zita-resampler)))
1052 `(("pkg-config" ,pkg-config)))
1053 (home-page "https://ssj71.github.io/infamousPlugins")
1054 (synopsis "LV2 plugins for live use")
1056 "The infamous plugins are a collection of LV2 audio plugins for live
1057 performances. The plugins include a cellular automaton synthesizer, an
1058 envelope follower, distortion effects, tape effects and more.")
1059 (license license:gpl2+)))
1061 (define-public snapcast
1068 (url "https://github.com/badaix/snapcast")
1069 (commit (string-append "v" version))))
1070 (file-name (git-file-name name version))
1073 "13yz8alplnqwkcns3mcli01qbyy6l3h62xx0v71ygcrz371l4g9g"))))
1074 (build-system cmake-build-system)
1076 '(#:tests? #f)) ; no included tests
1079 ("libvorbis" ,libvorbis)
1081 ("alsa-lib" ,alsa-lib)
1083 ("pulseaudio" ,pulseaudio)
1087 `(("pkg-config" ,pkg-config)))
1088 (home-page "https://github.com/badaix/snapcast")
1089 (synopsis "Synchronous multiroom audio player")
1091 "Snapcast is a multi-room client-server audio player. Clients are time
1092 synchronized with the server to play synced audio.")
1093 (license license:gpl3+)))
1095 (define-public swh-plugins
1097 (name "swh-plugins")
1102 (url "https://github.com/swh/ladspa")
1103 (commit (string-append "v" version))))
1104 (file-name (git-file-name name version))
1107 "1c98z2xxz9pgcb4dg99gz8qrylh5cnag0j18a52d88ifsy24isvq"))))
1109 `(("autoconf" ,autoconf)
1110 ("automake" ,automake)
1111 ("gettext" ,gettext-minimal) ;for autopoint
1112 ("libtool" ,libtool)
1114 ("pkg-config" ,pkg-config)
1118 ("perl-xml-parser" ,perl-xml-parser)))
1119 (build-system gnu-build-system)
1120 (home-page "http://plugin.org.uk")
1121 (synopsis "The SWH Plugins package for the LADSPA plugin system")
1122 (description "This package provides Steve Harris's LADSPA plugins.")
1123 (license license:gpl2+)))
1125 (define-public swh-plugins-lv2
1127 (name "swh-plugins-lv2")
1132 (url "https://github.com/swh/lv2")
1133 (commit (string-append "v" version))))
1134 (file-name (git-file-name name version))
1137 "0y7nnww864mm4k6ayy2lhcws3wlbhb2gkyjbrwk921fvc18qk9mz"))))
1138 (build-system gnu-build-system)
1140 `(#:tests? #f ; no check target
1141 #:make-flags (list "CC=gcc"
1142 (string-append "PREFIX="
1143 (assoc-ref %outputs "out")))
1145 (modify-phases %standard-phases
1146 ;; no configure script
1148 (add-after 'unpack 'patch-makefile-and-enter-directory
1149 ;; The default install target doesn't install, but the
1150 ;; "install-system" target does.
1152 (substitute* "Makefile"
1153 (("install:") "install: install-system"))
1159 `(("libxslt" ,libxslt)
1160 ("pkg-config" ,pkg-config)))
1161 (home-page "http://plugin.org.uk")
1162 (synopsis "SWH plugins in LV2 format")
1164 "Swh-plugins-lv2 is a collection of audio plugins in LV2 format. Plugin
1165 classes include: dynamics (compressor, limiter), time (delay, chorus,
1166 flanger), ringmodulator, distortion, filters, pitchshift, oscillators,
1167 emulation (valve, tape), bit fiddling (decimator, pointer-cast), etc.")
1168 (license license:gpl3+)))
1173 (version "1.0-beta-10May2006")
1176 (uri (string-append "mirror://sourceforge/taopm/Tao/"
1178 "tao-" version ".tar.gz"))
1181 "156py3g6mmglldfd0j76bn7n242hdwf49diaprjpj7crp8vgf2pz"))
1183 (search-patches "tao-add-missing-headers.patch"
1184 "tao-fix-parser-types.patch"))
1185 (modules '((guix build utils)))
1188 (substitute* "configure"
1189 (("SHELL=/bin/sh") ""))
1191 (build-system gnu-build-system)
1193 '(#:configure-flags '("TAO_RELEASE=-beta")
1195 (modify-phases %standard-phases
1196 (add-after 'unpack 'fix-references
1197 (lambda* (#:key outputs #:allow-other-keys)
1198 (substitute* "user-scripts/tao.in"
1200 (string-append (assoc-ref outputs "out") "/bin/taoparse"))
1201 (("grep") (which "grep"))
1202 (("sed -f \\$distdir/user-scripts/")
1203 (string-append (which "sed") " -f $distdir/"))
1205 (string-append "distdir="
1206 (assoc-ref outputs "out") "/share/tao")))
1208 (add-after 'install 'install-extra-files
1209 (lambda* (#:key outputs #:allow-other-keys)
1210 (let* ((out (assoc-ref outputs "out"))
1211 (share (string-append out "/share/tao/"))
1212 (inc (string-append out "/include/tao/")))
1215 (install-file "user-scripts/error.parse" share)
1216 (copy-recursively "examples" (string-append share "examples"))
1217 (for-each (lambda (file) (install-file file inc))
1218 (find-files "include" "\\.h"))
1221 `(("audiofile" ,audiofile)
1230 (home-page "http://taopm.sourceforge.net/")
1231 (synopsis "Sound Synthesis with Physical Models")
1232 (description "Tao is a software package for sound synthesis using physical
1233 models. It provides a virtual acoustic material constructed from masses and
1234 springs which can be used as the basis for building quite complex virtual
1235 musical instruments. Tao comes with a synthesis language for creating and
1236 playing instruments and a C++ API for those who would like to use it as an
1238 (license license:gpl2+)))
1240 (define-public csound
1248 (url "https://github.com/csound/csound")
1250 (file-name (git-file-name name version))
1252 (base32 "1sr9knfhbm2m0wpkjq2l5n471vnl51wy4p6j4m95zqybimzb4s2j"))))
1253 (build-system cmake-build-system)
1257 ("gettext" ,gettext-minimal)
1260 `(("alsa-lib" ,alsa-lib)
1265 ("libsndfile" ,libsndfile)
1266 ("pulseaudio" ,pulseaudio)))
1267 (home-page "https://csound.com/")
1268 (synopsis "Sound and music computing system")
1270 "Csound is a user-programmable and user-extensible sound processing
1271 language and software synthesizer.")
1272 (license license:lgpl2.1+)))
1274 (define-public midicomp
1275 ;; The latest tagged release is 9 years old and there have been
1276 ;; unreleased fixes, so we take the last commit.
1277 (let ((commit "70f76963cb0cdb3cbe03ec6e7246b1fb885d3c68")
1281 (version (git-version "0.0.8" revision commit))
1286 (url "https://github.com/markc/midicomp")
1288 (file-name (git-file-name name version))
1291 "12zh247c6v88ssy4l8v7yirh4bl2jcc1ch7f4gdry79a82kai1gf"))))
1292 (build-system cmake-build-system)
1294 `(#:tests? #f)) ; no "check" target
1295 (synopsis "Convert SMF MIDI files to and from plain text")
1297 "midicomp can manipulate SMF (Standard MIDI File) files. It can both
1298 read and write SMF files in 0 or format 1 and also read and write its own
1299 plain text format. This means a SMF file can be turned into easily
1300 parseable text, edited with any text editor or filtered through any script
1301 language, and recompiled back into a binary SMF file.")
1302 (home-page "https://github.com/markc/midicomp")
1303 (license license:agpl3))))
1305 (define-public clalsadrv
1312 "http://kokkinizita.linuxaudio.org"
1313 "/linuxaudio/downloads/clalsadrv-"
1314 version ".tar.bz2"))
1317 "0bsacx3l9065gk8g4137qmz2ij7s9x06aldvacinzlcslw7bd1kq"))))
1318 (build-system gnu-build-system)
1320 `(#:tests? #f ; no "check" target
1321 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
1323 (modify-phases %standard-phases
1324 (add-after 'unpack 'patch-makefile-and-enter-directory
1326 (substitute* "libs/Makefile"
1327 (("/sbin/ldconfig") "true")
1328 (("^LIBDIR =.*") "LIBDIR = lib\n"))
1331 (add-after 'install 'install-symlink
1333 (symlink "libclalsadrv.so"
1334 (string-append (assoc-ref %outputs "out")
1335 "/lib/libclalsadrv.so.2"))
1337 ;; no configure script
1338 (delete 'configure))))
1340 `(("alsa-lib" ,alsa-lib)
1342 (home-page "https://kokkinizita.linuxaudio.org")
1343 (synopsis "C++ wrapper around the ALSA API")
1345 "clalsadrv is a C++ wrapper around the ALSA API simplifying access to
1347 (license license:gpl2+)))
1349 (define-public amb-plugins
1351 (name "amb-plugins")
1356 "http://kokkinizita.linuxaudio.org"
1357 "/linuxaudio/downloads/AMB-plugins-"
1358 version ".tar.bz2"))
1361 "0x4blm4visjqj0ndqr0cg776v3b7lvplpc8cgi9n51llhavn0jpl"))))
1362 (build-system gnu-build-system)
1364 `(#:tests? #f ; no "check" target
1366 (modify-phases %standard-phases
1367 ;; no configure script
1369 (add-before 'install 'prepare-target-directory
1370 (lambda* (#:key outputs #:allow-other-keys)
1371 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1373 (add-after 'unpack 'override-target-directory-and-tool-paths
1374 (lambda* (#:key outputs #:allow-other-keys)
1375 (substitute* "Makefile"
1376 (("/usr/lib/ladspa")
1377 (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1378 (("/usr/bin/install") (which "install"))
1381 (home-page "https://kokkinizita.linuxaudio.org")
1382 (synopsis "LADSPA ambisonics plugins")
1384 "The AMB plugins are a set of LADSPA ambisonics plugins, mainly to be
1385 used within Ardour. Features include: mono and stereo to B-format panning,
1386 horizontal rotator, square, hexagon and cube decoders.")
1387 (license license:gpl2+)))
1389 (define-public mcp-plugins
1391 (name "mcp-plugins")
1396 "http://kokkinizita.linuxaudio.org"
1397 "/linuxaudio/downloads/MCP-plugins-"
1398 version ".tar.bz2"))
1401 "06a9r1l85jmg7l1cvc3788mk8ra0xagjfy1rmhw3b80y4n0vlnvc"))))
1402 (build-system gnu-build-system)
1404 `(#:tests? #f ; no "check" target
1406 (modify-phases %standard-phases
1407 ;; no configure script
1409 (add-before 'install 'prepare-target-directory
1410 (lambda* (#:key outputs #:allow-other-keys)
1411 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1413 (add-after 'unpack 'override-target-directory
1414 (lambda* (#:key outputs #:allow-other-keys)
1415 (substitute* "Makefile"
1416 (("/usr") (assoc-ref outputs "out")))
1418 (home-page "https://kokkinizita.linuxaudio.org")
1419 (synopsis "Chorus, phaser, and vintage high-pass and low-pass filters")
1421 "This package provides various LADSPA plugins. @code{cs_chorus} and
1422 @code{cs_phaser} provide chorus and phaser effects, respectively;
1423 @code{mvclpf24} provides four implementations of the low-pass filter used in
1424 vintage Moog synthesizers; @code{mvchpf24} is based on the voltage-controlled
1425 high-pass filter by Robert Moog. The filters attempt to accurately emulate
1426 the non-linear circuit elements of their original analog counterparts.")
1427 (license license:gpl2+)))
1429 (define-public rev-plugins
1431 (name "rev-plugins")
1436 "http://kokkinizita.linuxaudio.org"
1437 "/linuxaudio/downloads/REV-plugins-"
1438 version ".tar.bz2"))
1441 "1ikpinxm00pkfi259bnkzhsy3miagrjgdihaaf5x4v7zac29j3g7"))))
1442 (build-system gnu-build-system)
1444 `(#:tests? #f ; no "check" target
1446 (modify-phases %standard-phases
1447 ;; no configure script
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"))
1453 (add-after 'unpack 'override-target-directory
1454 (lambda* (#:key outputs #:allow-other-keys)
1455 (substitute* "Makefile"
1456 (("/usr") (assoc-ref outputs "out")))
1458 (home-page "https://kokkinizita.linuxaudio.org")
1459 (synopsis "LADSPA reverb plugin")
1461 "This package provides a stereo reverb LADSPA plugin based on the
1462 well-known greverb.")
1463 (license license:gpl2+)))
1465 (define-public fil-plugins
1467 (name "fil-plugins")
1472 "http://kokkinizita.linuxaudio.org"
1473 "/linuxaudio/downloads/FIL-plugins-"
1474 version ".tar.bz2"))
1477 "1scfv9j7jrp50r565haa4rvxn1vk2ss86xssl5qgcr8r45qz42qw"))))
1478 (build-system gnu-build-system)
1480 `(#:tests? #f ; no "check" target
1482 (modify-phases %standard-phases
1483 ;; no configure script
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"))
1489 (add-after 'unpack 'override-target-directory
1490 (lambda* (#:key outputs #:allow-other-keys)
1491 (substitute* "Makefile"
1492 (("/usr") (assoc-ref outputs "out")))
1494 (home-page "https://kokkinizita.linuxaudio.org")
1495 (synopsis "LADSPA four-band parametric equalizer plugin")
1497 "This package provides a LADSPA plugin for a four-band parametric
1498 equalizer. Each section has an active/bypass switch, frequency, bandwidth and
1499 gain controls. There is also a global bypass switch and gain control.
1501 The 2nd order resonant filters are implemented using a Mitra-Regalia style
1502 lattice filter, which is stable even while parameters are being changed.
1504 All switches and controls are internally smoothed, so they can be used @code{live}
1505 without any clicks or zipper noises. This makes this plugin suitable for use
1506 in systems that allow automation of plugin control ports, such as Ardour, or
1508 (license license:gpl2+)))
1510 (define-public ste-plugins
1512 (name "ste-plugins")
1517 "http://kokkinizita.linuxaudio.org"
1518 "/linuxaudio/downloads/STE-plugins-"
1519 version ".tar.bz2"))
1522 "0s3c9w5xihs87cnd1lh9xgj3maabjdyh6bl766qp5lhkg3ax8zy6"))))
1523 (build-system gnu-build-system)
1525 `(#:tests? #f ; no "check" target
1527 (modify-phases %standard-phases
1528 ;; no configure script
1530 (add-before 'install 'prepare-target-directory
1531 (lambda* (#:key outputs #:allow-other-keys)
1532 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1534 (add-after 'unpack 'override-target-directory
1535 (lambda* (#:key outputs #:allow-other-keys)
1536 (substitute* "Makefile"
1537 (("/usr") (assoc-ref outputs "out")))
1539 (home-page "https://kokkinizita.linuxaudio.org")
1540 (synopsis "LADSPA stereo width plugin")
1542 "This package provides a LADSPA plugin to manipulate the stereo width of
1544 (license license:gpl2+)))
1546 (define-public vco-plugins
1548 (name "vco-plugins")
1553 "http://kokkinizita.linuxaudio.org"
1554 "/linuxaudio/downloads/VCO-plugins-"
1555 version ".tar.bz2"))
1558 "1xzqdg3b07r7zww05y9bb737l9dxvfkv28m3fyak1aazaci3rsgl"))))
1559 (build-system gnu-build-system)
1561 `(#:tests? #f ; no "check" target
1563 (modify-phases %standard-phases
1564 ;; no configure script
1566 (add-before 'install 'prepare-target-directory
1567 (lambda* (#:key outputs #:allow-other-keys)
1568 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1570 (add-after 'unpack 'override-target-directory
1571 (lambda* (#:key outputs #:allow-other-keys)
1572 (substitute* "Makefile"
1573 (("/usr") (assoc-ref outputs "out"))
1574 (("/bin/cp") (which "cp")))
1576 (home-page "https://kokkinizita.linuxaudio.org")
1577 (synopsis "LADSPA plugin for synthesizer oscillators")
1579 "The @code{blvco} LADSPA plugin provides three anti-aliased oscillators:
1582 @item Pulse-VCO, a dirac pulse oscillator with flat amplitude spectrum
1583 @item Saw-VCO, a sawtooth oscillator with 1/F amplitude spectrum
1584 @item Rec-VCO, a square / rectangle oscillator
1587 All oscillators are low-pass filtered to provide waveforms similar to the
1588 output of analog synthesizers such as the Moog Voyager.")
1589 (license license:gpl2+)))
1591 (define-public wah-plugins
1593 (name "wah-plugins")
1598 "http://kokkinizita.linuxaudio.org"
1599 "/linuxaudio/downloads/WAH-plugins-"
1600 version ".tar.bz2"))
1603 "1wkbjarxdhjixkh7d5abralj11dj2xxg644fz3ycd7qyfgfvjfgd"))))
1604 (build-system gnu-build-system)
1606 `(#:tests? #f ; no "check" target
1608 (modify-phases %standard-phases
1609 ;; no configure script
1611 (add-before 'install 'prepare-target-directory
1612 (lambda* (#:key outputs #:allow-other-keys)
1613 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1615 (add-after 'unpack 'override-target-directory
1616 (lambda* (#:key outputs #:allow-other-keys)
1617 (substitute* "Makefile"
1618 (("/usr") (assoc-ref outputs "out")))
1620 (home-page "https://kokkinizita.linuxaudio.org")
1621 (synopsis "LADSPA Autowah effect plugin")
1623 "This package provides a LADSPA plugin for a Wah effect with envelope
1625 (license license:gpl2+)))
1627 (define-public g2reverb
1634 "http://kokkinizita.linuxaudio.org"
1635 "/linuxaudio/downloads/g2reverb-"
1636 version ".tar.bz2"))
1639 "18wb8vj1kky5glr76s34awbi8qzplsmf3wjbd7a12hfv4j0bkwrj"))))
1640 (build-system gnu-build-system)
1642 `(#:tests? #f ; no "check" target
1644 (modify-phases %standard-phases
1645 ;; no configure script
1647 (add-before 'install 'prepare-target-directory
1648 (lambda* (#:key outputs #:allow-other-keys)
1649 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1651 (add-after 'unpack 'override-target-directory
1652 (lambda* (#:key outputs #:allow-other-keys)
1653 (substitute* "Makefile"
1654 (("/usr") (assoc-ref outputs "out")))
1656 (home-page "https://kokkinizita.linuxaudio.org")
1657 (synopsis "LADSPA stereo reverb plugin")
1659 "This package provides a LADSPA plugin for a stereo reverb effect.")
1660 (license license:gpl2+)))
1662 (define-public fluidsynth
1669 (url "https://github.com/FluidSynth/fluidsynth")
1670 (commit (string-append "v" version))))
1671 (file-name (git-file-name name version))
1674 "0r944ndn138ak9s3ivgd1wgkwkh6zp7jjnxd30hryczc6kbhkpmr"))))
1675 (build-system cmake-build-system)
1677 '(#:tests? #f ; no check target
1679 (modify-phases %standard-phases
1680 (add-after 'unpack 'fix-libdir
1682 ;; Install libraries to /lib, not /lib64.
1683 (substitute* "CMakeLists.txt"
1684 (("LIB_SUFFIX \\$\\{_init_lib_suffix\\}")
1688 `(("libsndfile" ,libsndfile)
1689 ("alsa-lib" ,alsa-lib)
1693 ("readline" ,readline)
1696 `(("pkg-config" ,pkg-config)))
1697 (home-page "https://www.fluidsynth.org/")
1698 (synopsis "SoundFont synthesizer")
1700 "FluidSynth is a real-time software synthesizer based on the SoundFont 2
1701 specifications. FluidSynth reads and handles MIDI events from the MIDI input
1702 device. It is the software analogue of a MIDI synthesizer. FluidSynth can
1703 also play midifiles using a Soundfont.")
1704 (license license:lgpl2.1+)))
1706 ;; gzdoom@3.3.0 and lmms@1.1.3 requires this version. Remove once no longer
1708 (define-public fluidsynth-1
1710 (inherit fluidsynth)
1713 (inherit (package-source fluidsynth))
1715 (url "https://github.com/FluidSynth/fluidsynth")
1716 (commit (string-append "v" version))))
1717 (file-name (git-file-name "fluidsynth" version))
1720 "0n75jq3xgq46hfmjkaaxz3gic77shs4fzajq40c8gk043i84xbdh"))))))
1722 (define-public faad2
1730 (string-append "mirror://sourceforge/faac/faad2-src/faad2-"
1731 (version-major+minor version) ".0/"
1732 "faad2-" version ".tar.gz"))
1734 (base32 "0va284hndhn0ynm4lyn219qw4y8wa4agfkqgwlaji7bqp6nkyp4q"))))
1735 (build-system gnu-build-system)
1736 (home-page "https://www.audiocoding.com/faad2.html")
1737 (synopsis "MPEG-4 and MPEG-2 AAC decoder")
1739 "FAAD2 is an MPEG-4 and MPEG-2 AAC decoder supporting LC, Main, LTP, SBR, -PS, and DAB+.")
1740 (license license:gpl2+)))
1742 (define-public faust
1749 (url "https://github.com/grame-cncm/faust")
1750 (commit (string-append "v"
1751 (string-map (lambda (c)
1752 (if (char=? c #\.) #\- c))
1754 (file-name (string-append "faust-" version "-checkout"))
1757 "0qc6iwjd3i80jdyjc186c6ywipmjzl8wlsp4050pbr56q4rlkd4z"))))
1758 (build-system gnu-build-system)
1760 `(#:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
1763 (modify-phases %standard-phases
1764 ;; no "configure" script
1766 ;; Files appear under $out/share/faust that are read-only. The
1767 ;; install phase tries to overwrite them and fails, so we change
1768 ;; the permissions first.
1769 (add-before 'install 'fix-permissions
1771 (for-each (lambda (file)
1773 (find-files "architecture/max-msp" ".*"))
1776 `(("unzip" ,unzip)))
1777 (home-page "https://faust.grame.fr/")
1778 (synopsis "Signal processing language")
1780 "Faust is a programming language for realtime audio signal processing.")
1781 (license license:gpl2+)))
1783 (define-public faust-2
1789 (uri (string-append "https://github.com/grame-cncm/faust/"
1790 "releases/download/" version
1791 "/faust-" version ".tar.gz"))
1794 "1yz5jnr76hh7rmxkpdi7gyrw1wp4gyqfpq8zyl97qdi5ga5gjznq"))))
1795 (build-system gnu-build-system)
1797 (substitute-keyword-arguments (package-arguments faust)
1798 ((#:make-flags flags)
1799 `(list (string-append "prefix=" (assoc-ref %outputs "out"))
1802 `(("llvm" ,llvm-3.8)
1805 ("ctags" ,emacs-minimal) ; for ctags
1806 ("pkg-config" ,pkg-config)))
1808 `(("libsndfile" ,libsndfile)
1809 ("libmicrohttpd" ,libmicrohttpd)
1810 ("ncurses" ,ncurses)
1811 ("openssl" ,openssl)
1814 (define-public freepats
1817 (version "20060219")
1820 (uri (string-append "http://freepats.zenvoid.org/freepats-"
1821 version ".tar.bz2"))
1824 "12iw36rd94zirll96cd5k0va7p5hxmf2shvjlhzihcmjaw8flq82"))))
1825 (build-system trivial-build-system)
1827 `(#:modules ((guix build utils))
1829 (use-modules (guix build utils))
1830 (let ((out (string-append %output "/share/freepats")))
1831 (setenv "PATH" (string-append
1832 (assoc-ref %build-inputs "bzip2") "/bin:"
1833 (assoc-ref %build-inputs "tar") "/bin"))
1834 (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
1836 ;; Use absolute pattern references
1837 (substitute* "freepats.cfg"
1838 (("Tone_000") (string-append out "/Tone_000"))
1839 (("Drum_000") (string-append out "/Drum_000")))
1841 (copy-recursively "." out)
1846 (home-page "http://freepats.zenvoid.org")
1847 (synopsis "GUS compatible patches for MIDI players")
1849 "FreePats is a project to create a free and open set of GUS compatible
1850 patches that can be used with softsynths such as Timidity and WildMidi.")
1851 ;; GPLv2+ with exception for compositions using these patches.
1852 (license license:gpl2+)))
1854 (define-public guitarix
1861 "mirror://sourceforge/guitarix/guitarix/guitarix2-"
1865 "0qsfbyrrpb3bbdyq68k28mjql7kglxh8nqcw9jvja28x6x9ik5a0"))))
1866 (build-system waf-build-system)
1868 `(#:tests? #f ; no "check" target
1871 ;; Add the output lib directory to the RUNPATH.
1872 (string-append "--ldflags=-Wl,-rpath=" %output "/lib"))))
1874 `(("libsndfile" ,libsndfile)
1887 ("zita-resampler" ,zita-resampler)
1888 ("zita-convolver" ,zita-convolver)))
1892 ("intltool" ,intltool)
1893 ("gettext" ,gettext-minimal)
1894 ("pkg-config" ,pkg-config)
1896 (native-search-paths
1897 (list (search-path-specification
1898 (variable "LV2_PATH")
1899 (files '("lib/lv2")))))
1900 (home-page "https://guitarix.org/")
1901 (synopsis "Virtual guitar amplifier")
1902 (description "Guitarix is a virtual guitar amplifier running JACK.
1903 Guitarix takes the signal from your guitar as a mono-signal from your sound
1904 card. The input is processed by a main amp and a rack-section. Both can be
1905 routed separately and deliver a processed stereo-signal via JACK. You may
1906 fill the rack with effects from more than 25 built-in modules including stuff
1907 from a simple noise gate to modulation effects like flanger, phaser or
1909 (license license:gpl2+)))
1911 (define-public guitarix-lv2
1912 (package (inherit guitarix)
1913 (name "guitarix-lv2")
1915 (substitute-keyword-arguments (package-arguments guitarix)
1916 ((#:configure-flags flags)
1917 `(cons "--no-standalone" ,flags))))))
1919 (define-public rakarrack
1925 (uri (string-append "mirror://sourceforge/rakarrack/rakarrack/"
1926 "rakarrack-" version "/rakarrack-"
1927 version ".tar.bz2"))
1930 "1rpf63pdn54c4yg13k7cb1w1c7zsvl97c4qxcpz41c8l91xd55kn"))
1931 (modules '((guix build utils)))
1934 (substitute* '("src/process.C"
1936 (("#include <Fl/") "#include <FL/"))
1938 (build-system gnu-build-system)
1940 `(("alsa-utils" ,alsa-utils)
1943 ("libxext" ,libxext)
1944 ("libxfixes" ,libxfixes)
1946 ("libxrender" ,libxrender)
1948 ("fontconfig" ,fontconfig)
1949 ("freetype" ,freetype)
1951 ("alsa-lib" ,alsa-lib)
1952 ("libsndfile" ,libsndfile)
1953 ("libsamplerate" ,libsamplerate)
1955 (home-page "http://rakarrack.sourceforge.net/")
1956 (synopsis "Audio effects processor")
1958 "Rakarrack is a richly featured multi-effects processor emulating a
1959 guitar effects pedalboard. Effects include compressor, expander, noise gate,
1960 equalizers, exciter, flangers, chorus, various delay and reverb effects,
1961 distortion modules and many more. Most of the effects engine is built from
1962 modules found in the excellent software synthesizer ZynAddSubFX. Presets and
1963 user interface are optimized for guitar, but Rakarrack processes signals in
1964 stereo while it does not apply internal band-limiting filtering, and thus is
1965 well suited to all musical instruments and vocals.")
1966 ;; The code is explicitly licensed under the GPL version 2 only.
1967 (license license:gpl2)))
1976 (url "https://github.com/tomszilagyi/ir.lv2")
1978 (file-name (git-file-name name version))
1981 "0svmjhg4r6wy5ci5rwz43ybll7yxjv7nnj7nyqscbzhr3gi5aib0"))))
1982 (build-system gnu-build-system)
1984 `(#:tests? #f ; no tests
1986 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
1987 (string-append "INSTDIR="
1988 (assoc-ref %outputs "out") "/lib/lv2"))
1990 (modify-phases %standard-phases
1991 (delete 'configure) ; no configure script
1992 ;; See https://github.com/tomszilagyi/ir.lv2/pull/20
1993 (add-after 'unpack 'fix-type
1995 (substitute* '("ir_gui.cc" "lv2_ui.h")
1996 (("_LV2UI_Descriptor") "LV2UI_Descriptor"))
1999 `(("libsndfile" ,libsndfile)
2000 ("libsamplerate" ,libsamplerate)
2004 ("zita-convolver" ,zita-convolver)))
2006 `(("pkg-config" ,pkg-config)))
2007 (native-search-paths
2008 (list (search-path-specification
2009 (variable "LV2_PATH")
2010 (files '("lib/lv2")))))
2011 (home-page "https://tomszilagyi.github.io/plugins/ir.lv2")
2012 (synopsis "LV2 convolution reverb")
2014 "IR is a low-latency, real-time, high performance signal convolver
2015 especially for creating reverb effects. It supports impulse responses with 1,
2016 2 or 4 channels, in any soundfile format supported by libsndfile.")
2017 (license license:gpl2+)))
2019 (define-public jack-1
2026 ;; jackaudio.org/downloads/jack-audio-connection-kit-0.125.0.tar.gz
2027 ;; no longer exists (404). Use an unofficial mirror.
2028 (uri (string-append "https://crux.ster.zone/downloads/"
2029 "jack-audio-connection-kit/"
2030 "jack-audio-connection-kit-" version ".tar.gz"))
2032 (base32 "0i6l25dmfk2ji2lrakqq9icnwjxklgcjzzk65dmsff91z2zva5rm"))))
2033 (build-system gnu-build-system)
2035 `(#:phases (modify-phases %standard-phases
2036 (add-after 'unpack 'patch-configure
2038 (substitute* "configure"
2039 ;; Install to <out/lib> regardless of platform.
2040 (("libnn=lib64") "libnn=lib"))
2043 `(("alsa-lib" ,alsa-lib)
2044 ("readline" ,readline)))
2045 ;; uuid.h is included in the JACK type headers
2046 ;; db.h is included in the libjack metadata headers
2048 `(("libuuid" ,util-linux "lib")
2051 `(("pkg-config" ,pkg-config)))
2052 (home-page "https://jackaudio.org/")
2053 (synopsis "JACK audio connection kit")
2055 "JACK is a low-latency audio server. It can connect a number of
2056 different applications to an audio device, as well as allowing them to share
2057 audio between themselves. JACK is different from other audio server efforts
2058 in that it has been designed from the ground up to be suitable for
2059 professional audio work. This means that it focuses on two key areas:
2060 synchronous execution of all clients, and low latency operation.")
2061 ;; Most files are licensed under the GPL. However, the libjack/ tree is
2062 ;; licensed under the LGPL in order to allow for proprietary usage.
2063 (license (list license:gpl2+ license:lgpl2.1+))))
2065 ;; Packages depending on JACK should always prefer jack-1. Both jack-1 and
2066 ;; jack-2 implement the same API. JACK2 is provided primarily as a client
2067 ;; program for users who might benefit from the D-BUS features.
2068 (define-public jack-2
2069 (package (inherit jack-1)
2074 (uri (string-append "https://github.com/jackaudio/jack2/releases/"
2075 "download/v" version "/jack2-"
2077 (file-name (string-append name "-" version ".tar.gz"))
2080 "0z11hf55a6mi8h50hfz5wry9pshlwl4mzfwgslghdh40cwv342m2"))))
2081 (build-system waf-build-system)
2083 `(#:tests? #f ; no check target
2084 #:configure-flags '("--dbus"
2087 (modify-phases %standard-phases
2088 (add-before 'configure 'set-linkflags
2090 ;; Ensure -lstdc++ is the tail of LDFLAGS or the simdtests.cpp
2091 ;; will not link with undefined reference to symbol
2092 ;; '__gxx_personality_v0@@CXXABI_1.3'
2093 (setenv "LDFLAGS" "-lstdc++")
2094 ;; Add $libdir to the RUNPATH of all the binaries.
2095 (substitute* "wscript"
2096 ((".*CFLAGS.*-Wall.*" m)
2098 " conf.env.append_unique('LINKFLAGS',"
2099 "'-Wl,-rpath=" %output "/lib')\n")))
2101 (add-after 'install 'wrap-python-scripts
2102 (lambda* (#:key inputs outputs #:allow-other-keys)
2103 ;; Make sure 'jack_control' runs with the correct PYTHONPATH.
2104 (let* ((out (assoc-ref outputs "out"))
2105 (path (getenv "PYTHONPATH")))
2106 (wrap-program (string-append out "/bin/jack_control")
2107 `("PYTHONPATH" ":" prefix (,path))))
2110 `(("alsa-lib" ,alsa-lib)
2113 ("libsamplerate" ,libsamplerate)
2115 ("python-dbus" ,python-dbus)
2116 ("readline" ,readline)))
2118 `(("pkg-config" ,pkg-config)))
2119 ;; Most files are under GPLv2+, but some headers are under LGPLv2.1+
2120 (license (list license:gpl2+ license:lgpl2.1+))))
2128 (uri (string-append "https://download.drobilla.net/jalv-"
2129 version ".tar.bz2"))
2132 "1wwfn7yzbs37s2rdlfjgks63svd5g14yyzd2gdl7h0z12qncwsy2"))))
2133 (build-system waf-build-system)
2135 `(#:tests? #f ; no check target
2136 #:python ,python-2))
2147 `(("pkg-config" ,pkg-config)))
2148 (home-page "https://drobilla.net/software/jalv/")
2149 (synopsis "Simple LV2 host for JACK")
2151 "Jalv is a simple but fully featured LV2 host for JACK. It runs LV2
2152 plugins and exposes their ports as JACK ports, essentially making any LV2
2153 plugin function as a JACK application.")
2154 (license license:isc)))
2156 (define-public ladspa
2163 ;; Since the official link is dead,
2164 ;; we download the tarball from Debian or Internet Archive.
2165 (uri (list (string-append "http://http.debian.net"
2166 "/debian/pool/main/l/ladspa-sdk/ladspa-sdk_"
2167 version ".orig.tar.gz")
2168 (string-append "https://web.archive.org/web/20140717172251/"
2169 "http://www.ladspa.org/download/ladspa_sdk_"
2173 "0srh5n2l63354bc0srcrv58rzjkn4gv8qjqzg8dnq3rs4m7kzvdm"))))
2174 (build-system gnu-build-system)
2176 `(#:tests? #f ; the "test" target is a listening test only
2178 (modify-phases %standard-phases
2180 (lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
2182 (let ((out (assoc-ref outputs "out")))
2183 (substitute* "makefile"
2184 (("/usr/lib/ladspa/") (string-append out "/lib/ladspa/"))
2185 (("/usr/include/") (string-append out "/include/"))
2186 (("/usr/bin/") (string-append out "/bin/"))
2187 (("-mkdirhier") "mkdir -p")
2188 (("^CC.*") "CC = gcc\n")
2189 (("^CPP.*") "CPP = g++\n")))
2192 ;; Since the home page is gone, we provide a link to the archived version.
2194 "https://web.archive.org/web/20140729190945/http://www.ladspa.org/")
2195 (synopsis "Linux Audio Developer's Simple Plugin API (LADSPA)")
2197 "LADSPA is a standard that allows software audio processors and effects
2198 to be plugged into a wide range of audio synthesis and recording packages.")
2199 (license license:lgpl2.1+)))
2204 (version "0.6.0-rc2")
2207 ;; The tilde is not permitted in the builder name, but is used
2210 "mirror://savannah/lash/lash-"
2211 (string-join (string-split version #\-) "~")
2213 (file-name (string-append name "-" version ".tar.bz2"))
2216 "12z1vx3krrzsfccpah9xjs68900xvr7bw92wx8np5871i2yv47iw"))))
2217 (build-system gnu-build-system)
2219 '(;; Glibc no longer includes Sun RPC support, so tell the build system
2220 ;; to use libtirpc instead.
2221 #:make-flags (list (string-append "CFLAGS=-I"
2222 (assoc-ref %build-inputs "libtirpc")
2223 "/include/tirpc -ltirpc"))
2225 (modify-phases %standard-phases
2226 ;; lashd embeds an ancient version of sigsegv so we just skip it
2227 (add-after 'unpack 'skip-lashd
2229 (substitute* '("Makefile.am" "Makefile.in")
2232 #:configure-flags '("--disable-static")))
2237 ("libtirpc" ,libtirpc)
2238 ("readline" ,readline)
2239 ("python" ,python-2)))
2240 ;; According to pkg-config, packages depending on lash also need to have
2241 ;; at least the following packages declared as inputs.
2243 `(("alsa-lib" ,alsa-lib)
2245 ("libxml2" ,libxml2)))
2247 `(("pkg-config" ,pkg-config)))
2248 (home-page "https://www.nongnu.org/lash/")
2249 (synopsis "Audio application session manager")
2251 "LASH is a session management system for audio applications. It allows
2252 you to save and restore audio sessions consisting of multiple interconneced
2253 applications, restoring program state (i.e. loaded patches) and the
2254 connections between them.")
2255 (license license:gpl2+)))
2257 (define-public libbs2b
2263 (uri (string-append "mirror://sourceforge/bs2b/libbs2b/" version
2264 "/libbs2b-" version ".tar.lzma"))
2267 "1mcc4gjkmphczjybnsrip3gq1f974knzys7x49bv197xk3fn8wdr"))))
2268 (build-system gnu-build-system)
2269 (native-inputs `(("pkg-config" ,pkg-config)))
2270 (inputs `(("libsndfile" ,libsndfile)))
2271 (home-page "https://sourceforge.net/projects/bs2b/")
2272 (synopsis "Bauer stereophonic-to-binaural DSP")
2274 "The Bauer stereophonic-to-binaural DSP (bs2b) library and plugins is
2275 designed to improve headphone listening of stereo audio records. Recommended
2276 for headphone prolonged listening to disable superstereo fatigue without
2277 essential distortions.")
2278 (license license:expat)))
2280 (define-public ladspa-bs2b
2282 (name "ladspa-bs2b")
2287 "mirror://sourceforge/bs2b/plugins/LADSPA%20plugin/"
2288 version "/" name "-" version ".tar.gz"))
2291 "1b4aipbj1ba5k99gbc7gmgy14sywyrjd8rpyqj5l905j0mjv8jg2"))))
2292 (build-system gnu-build-system)
2293 (native-inputs `(("pkg-config" ,pkg-config)))
2294 (inputs `(("ladspa" ,ladspa)
2295 ("libbs2b" ,libbs2b)))
2296 (home-page "https://sourceforge.net/projects/bs2b/")
2297 (synopsis "Bauer stereophonic-to-binaural DSP - LADSPA plugin")
2298 (description "The Bauer stereophonic-to-binaural DSP (bs2b) library and
2299 plugins is designed to improve headphone listening of stereo audio records.
2300 Recommended for headphone prolonged listening to disable superstereo fatigue
2301 without essential distortions. This package contains a LADSPA plugin for use
2302 with applications that support them (e.g. PulseAudio).")
2303 (license license:gpl2+)))
2305 (define-public liblo
2311 (uri (string-append "mirror://sourceforge/liblo/liblo/" version
2312 "/liblo-" version ".tar.gz"))
2315 "0l67rkdhfa8cffa0nynql3lh2xlbn1454h6qxhjddp1029p48krb"))))
2316 (build-system gnu-build-system)
2318 `(;; liblo test FAILED
2319 ;; liblo server error 19 in setsockopt(IP_ADD_MEMBERSHIP): No such device
2321 (home-page "http://liblo.sourceforge.net")
2322 (synopsis "Implementation of the Open Sound Control protocol")
2324 "liblo is a lightweight library that provides an easy to use
2325 implementation of the Open Sound Control (@dfn{OSC}) protocol.")
2326 (license license:lgpl2.1+)))
2328 (define-public rtaudio
2336 (url "https://github.com/thestk/rtaudio")
2338 (file-name (git-file-name name version))
2340 (base32 "156c2dgh6jrsyfn1y89nslvaxm4yifmxridsb708yvkaym02w2l8"))))
2341 (build-system cmake-build-system)
2343 `(("pkg-config" ,pkg-config)))
2345 `(("alsa-lib" ,alsa-lib)
2347 ("pulseaudio" ,pulseaudio)))
2348 (synopsis "Common API for real-time audio I/O")
2350 "RtAudio is a set of C++ classes that provides a common API for real-time
2351 audio input/output. It was designed with the following objectives:
2354 @item object-oriented C++ design
2355 @item simple, common API across all supported platforms
2356 @item only one source and one header file for easy inclusion in programming
2358 @item allow simultaneous multi-api support
2359 @item support dynamic connection of devices
2360 @item provide extensive audio device parameter control
2361 @item allow audio device capability probing
2362 @item automatic internal conversion for data format, channel number
2363 compensation, (de)interleaving, and byte-swapping
2365 (home-page "https://www.music.mcgill.ca/~gary/rtaudio/")
2366 ;; License is expat with a non-binding request to send modifications to
2367 ;; original developer.
2368 (license license:expat)))
2370 (define-public python-pyaudio
2372 (name "python-pyaudio")
2377 (uri (pypi-uri "PyAudio" version))
2380 "0x7vdsigm7xgvyg3shd3lj113m8zqj2pxmrgdyj66kmnw0qdxgwk"))))
2381 (build-system python-build-system)
2383 `(("portaudio" ,portaudio)))
2384 (home-page "https://people.csail.mit.edu/hubert/pyaudio/")
2385 (synopsis "Bindings for PortAudio v19")
2386 (description "This package provides bindings for PortAudio v19, the
2387 cross-platform audio input/output stream library.")
2388 (license license:expat)))
2390 (define-public python2-pyaudio
2391 (package-with-python2 python-pyaudio))
2393 (define-public python-pyliblo
2395 (name "python-pyliblo")
2399 (uri (string-append "http://das.nasophon.de/download/pyliblo-"
2403 "13vry6xhxm7adnbyj28w1kpwrh0kf7nw83cz1yq74wl21faz2rzw"))))
2404 (build-system python-build-system)
2405 (arguments `(#:tests? #f)) ;no tests
2407 `(("python-cython" ,python-cython)))
2409 `(("liblo" ,liblo)))
2410 (home-page "http://das.nasophon.de/pyliblo/")
2411 (synopsis "Python bindings for liblo")
2413 "Pyliblo is a Python wrapper for the liblo Open Sound Control (OSC)
2414 library. It supports almost the complete functionality of liblo, allowing you
2415 to send and receive OSC messages using a nice and simple Python API. Also
2416 included are the command line utilities @code{send_osc} and @code{dump_osc}.")
2417 (license license:lgpl2.1+)))
2419 (define-public python2-pyliblo
2420 (package-with-python2 python-pyliblo))
2428 (uri (string-append "https://download.drobilla.net/lilv-"
2429 version ".tar.bz2"))
2432 "1565zy0yz46cf2f25pi46msdnzkj6bbhml9gfigdpjnsdlyskfyi"))))
2433 (build-system waf-build-system)
2435 `(#:tests? #f ; no check target
2437 (modify-phases %standard-phases
2438 (add-before 'configure 'set-ldflags
2439 (lambda* (#:key outputs #:allow-other-keys)
2441 (string-append "-Wl,-rpath="
2442 (assoc-ref outputs "out") "/lib"))
2444 (add-after 'unpack 'full-store-path-to-shared-library
2445 (lambda* (#:key outputs #:allow-other-keys)
2446 (with-directory-excursion "bindings/python"
2447 (substitute* "lilv.py"
2448 (("liblilv-0.so") (string-append (assoc-ref outputs "out")
2449 "/lib/liblilv-0.so"))))
2451 ;; Required by lilv-0.pc.
2456 ("sratom" ,sratom)))
2458 `(("python" ,python)
2459 ("pkg-config" ,pkg-config)))
2460 (home-page "https://drobilla.net/software/lilv")
2461 (synopsis "Library to simplify use of LV2 plugins in applications")
2463 "Lilv is a C library to make the use of LV2 plugins as simple as possible
2464 for applications. Lilv is the successor to SLV2, rewritten to be
2465 significantly faster and have minimal dependencies.")
2466 (license license:isc)))
2474 (uri (string-append "https://lv2plug.in/spec/lv2-"
2475 version ".tar.bz2"))
2478 "0gs7401xz23q9vajqr31aa2db8dvssgyh5zrvr4ipa6wig7yb8wh"))))
2479 (build-system waf-build-system)
2481 `(#:tests? #f ; no check target
2482 #:configure-flags '("--no-plugins")))
2484 ;; Leaving off cairo and gtk+-2.0 which are needed for example plugins
2485 `(("libsndfile" ,libsndfile)))
2487 `(("pkg-config" ,pkg-config)))
2488 (home-page "https://lv2plug.in/")
2489 (synopsis "LV2 audio plugin specification")
2491 "LV2 is an open specification for audio plugins and host applications.
2492 At its core, LV2 is a simple stable interface, accompanied by extensions which
2493 add functionality to support the needs of increasingly powerful audio
2495 (license license:isc)))
2497 (define-public lv2-mda-piano
2499 (name "lv2-mda-piano")
2504 (url "http://git.elephly.net/software/lv2-mdametapiano.git")
2506 (file-name (git-file-name name version))
2509 "07lywf6lpfpndg3i9w752mmlg2hgn1bwp23h8b0mdj6awh67abqd"))))
2510 (build-system gnu-build-system)
2512 `(#:make-flags (list
2514 (string-append "PREFIX=" (assoc-ref %outputs "out")))
2515 #:tests? #f ; no check target
2516 #:phases (modify-phases %standard-phases (delete 'configure))))
2521 `(("pkg-config" ,pkg-config)))
2522 (native-search-paths
2523 (list (search-path-specification
2524 (variable "LV2_PATH")
2525 (files '("lib/lv2")))))
2526 (home-page "https://elephly.net/lv2/mdapiano.html")
2527 (synopsis "LV2 port of the mda Piano plugin")
2528 (description "An LV2 port of the mda Piano VSTi.")
2529 (license license:gpl3+)))
2531 (define-public lv2-mda-epiano
2532 (package (inherit lv2-mda-piano)
2533 (name "lv2-mda-epiano")
2535 `(#:make-flags (list
2537 (string-append "PREFIX=" (assoc-ref %outputs "out")))
2538 #:tests? #f ; no check target
2539 #:phases (modify-phases %standard-phases (delete 'configure))))
2540 (home-page "https://elephly.net/lv2/mdaepiano.html")
2541 (synopsis "LV2 port of the mda EPiano plugin")
2542 (description "An LV2 port of the mda EPiano VSTi.")))
2551 (url "https://github.com/lvtk/lvtk")
2553 (file-name (git-file-name name version))
2556 "1b01zvzl70ana6l1kn8fgyr7msnn3c7x61cgw7fdpp50322352p8"))))
2557 (build-system waf-build-system)
2559 `(#:tests? #f ; no check target
2562 (list (string-append "--boost-includes="
2563 (assoc-ref %build-inputs "boost")
2570 `(("pkg-config" ,pkg-config)))
2571 (home-page "https://github.com/lvtk/lvtk")
2572 (synopsis "C++ libraries for LV2 plugins")
2574 "The LV2 Toolkit (LVTK) contains libraries that wrap the LV2 C API and
2575 extensions into easy to use C++ classes. It is the successor of
2577 (license license:gpl3+)))
2579 (define-public openal
2586 "https://openal-soft.org/openal-releases/openal-soft-"
2587 version ".tar.bz2"))
2590 "0vax0b1lgd4212bpxa1rciz52d4mv3dkfvcbbhzw4cjp698v1kmn"))))
2591 (build-system cmake-build-system)
2593 `(#:tests? #f ; no check target
2595 (modify-phases %standard-phases
2597 'unpack 'use-full-library-paths
2598 (lambda* (#:key inputs #:allow-other-keys)
2599 (substitute* "alc/backends/pulseaudio.cpp"
2600 (("#define PALIB \"libpulse\\.so\\.0\"")
2601 (string-append "#define PALIB \""
2602 (assoc-ref inputs "pulseaudio")
2603 "/lib/libpulse.so.0"
2605 (substitute* "alc/backends/alsa.cpp"
2606 (("LoadLib\\(\"libasound\\.so\\.2\"\\)")
2607 (string-append "LoadLib(\""
2608 (assoc-ref inputs "alsa-lib")
2609 "/lib/libasound.so.2"
2613 `(("alsa-lib" ,alsa-lib)
2614 ("pulseaudio" ,pulseaudio)))
2615 (synopsis "3D audio API")
2617 "OpenAL provides capabilities for playing audio in a virtual 3D
2618 environment. Distance attenuation, doppler shift, and directional sound
2619 emitters are among the features handled by the API. More advanced effects,
2620 including air absorption, occlusion, and environmental reverb, are available
2621 through the EFX extension. It also facilitates streaming audio, multi-channel
2622 buffers, and audio capture.")
2623 (home-page "https://openal-soft.org/")
2624 (license license:lgpl2.0+)))
2626 (define-public freealut
2632 ;; Upstream url is unclear, many systems use Fedora, there is also
2633 ;; https://github.com/vancegroup/freealut though the status of it
2634 ;; (official? unofficial?) is not clear.
2636 "https://pkgs.fedoraproject.org/repo/pkgs/" name "/" name "-"
2637 version ".tar.gz" "/e089b28a0267faabdb6c079ee173664a/" name
2638 "-" version ".tar.gz"))
2641 "0kzlil6112x2429nw6mycmif8y6bxr2cwjcvp18vh6s7g63ymlb0"))))
2642 (build-system cmake-build-system)
2644 `(#:tests? #f)) ; no check target
2646 `(("openal" ,openal)))
2647 (synopsis "Free implementation of OpenAL's ALUT standard")
2648 (description "freealut is the OpenAL Utility Toolkit.")
2649 (home-page "https://kcat.strangesoft.net/openal.html")
2650 (license license:lgpl2.0)))
2652 (define-public patchage
2658 (uri (string-append "https://download.drobilla.net/patchage-"
2663 "0dk3fiac10m83mwss3026yz7ygc47c2iw924cwwnh2fyydc9bsy6"))))
2664 (build-system waf-build-system)
2666 `(#:tests? #f ; no check target
2667 #:python ,python-2))
2669 `(("alsa-lib" ,alsa-lib)
2675 ("dbus-glib" ,dbus-glib)))
2677 `(("pkg-config" ,pkg-config)))
2678 (home-page "https://drobilla.net/software/patchage/")
2679 (synopsis "Modular patch bay for audio and MIDI systems")
2681 "Patchage is a modular patch bay for audio and MIDI systems based on JACK
2683 (license license:gpl3+)))
2685 (define-public pcaudiolib
2689 (home-page "https://github.com/espeak-ng/pcaudiolib")
2692 (uri (git-reference (url home-page) (commit version)))
2693 (file-name (git-file-name name version))
2696 "0c55hlqqh0m7bcb3nlgv1s4a22s5bgczr1cakjh3767rjb10khi0"))))
2697 (build-system gnu-build-system)
2699 `(#:configure-flags '("--disable-static")))
2701 `(("autoconf" ,autoconf)
2702 ("automake" ,automake)
2703 ("libtool" ,libtool)
2704 ("pkg-config" ,pkg-config)
2707 `(("alsa-lib" ,alsa-lib)
2708 ("pulseaudio" ,pulseaudio)))
2709 (synopsis "Portable C audio library")
2711 "The Portable C Audio Library (pcaudiolib) provides a C@tie{}API to
2712 different audio devices such as ALSA or PulseAudio.")
2713 (license (list license:gpl3+
2714 ;; The bundled TPCircularBuffer uses a custom license.
2715 (license:non-copyleft
2716 "file://src/TPCircularBuffer/README.markdown")))))
2718 (define-public qjackctl
2724 (uri (string-append "mirror://sourceforge/qjackctl/qjackctl/"
2725 version "/qjackctl-" version ".tar.gz"))
2728 "0m72kglwwvn91dxnka4lx765p3r0bcpqw251svymxr2wxjc4rgjg"))))
2729 (build-system gnu-build-system)
2731 '(#:tests? #f)) ; no check target
2734 ("alsa-lib" ,alsa-lib)
2735 ("portaudio" ,portaudio)
2737 ("qtx11extras" ,qtx11extras)))
2739 `(("pkg-config" ,pkg-config)
2740 ("qttools" ,qttools)))
2741 (home-page "https://qjackctl.sourceforge.io/")
2742 (synopsis "Jack server control application")
2743 (description "Control a Jack server. Allows you to plug various sources
2744 into various outputs and to start, stop and configure jackd")
2745 (license license:gpl2+)))
2747 (define-public qjackrcd
2754 (url "https://github.com/orouits/qjackrcd")
2755 (commit (string-append "v" version))))
2756 (file-name (git-file-name name version))
2759 "1l5iq2mkqd4gn9yr8xbh9qlpp1clcflazychl4vhdbz0bzq4c6al"))))
2760 (build-system gnu-build-system)
2763 (modify-phases %standard-phases
2765 (lambda* (#:key outputs #:allow-other-keys)
2767 (string-append "PREFIX="
2768 (assoc-ref outputs "out"))))))))
2770 `(("qtbase" ,qtbase))) ; for qmake
2773 ("libsndfile" ,libsndfile)
2774 ("qtbase" ,qtbase)))
2775 (home-page "https://sourceforge.net/projects/qjackrcd/")
2776 (synopsis "Stereo audio recorder for JACK")
2777 (description "QJackRcd is a simple graphical stereo recorder for JACK
2778 supporting silence processing for automatic pause, file splitting, and
2779 background file post-processing.")
2780 (license license:gpl2+)))
2782 (define-public supercollider
2784 (name "supercollider")
2789 (url "https://github.com/supercollider/supercollider")
2790 (commit (string-append "Version-" version))
2791 ;; for nova-simd, nova-tt, hidapi, TLSF, oscpack
2793 (file-name (git-file-name name version))
2796 "1gi7nrmjmbnjndqkmhfrkk0jchrzvnhl3f6gp6n5wgdd4mxbgxgw"))
2797 (modules '((guix build utils)
2800 ;; The build system doesn't allow us to unbundle the following
2801 ;; libraries. hidapi is also heavily patched and upstream not
2802 ;; actively maintained.
2803 '(let ((keep-dirs '("nova-simd" "nova-tt" "hidapi"
2804 "TLSF-2.4.6" "oscpack_1_1_0" "." "..")))
2805 (with-directory-excursion "./external_libraries"
2807 delete-file-recursively
2810 (and (eq? (stat:type (stat x)) 'directory)
2811 (not (member (basename x) keep-dirs)))))))
2812 ;; To find the Guix provided ableton-link library.
2813 (substitute* "lang/CMakeLists.txt"
2814 (("include\\(\\.\\./external_libraries/link/\
2815 AbletonLinkConfig\\.cmake\\)")
2816 "find_package(AbletonLink NAMES AbletonLink ableton-link \
2819 (build-system cmake-build-system)
2821 '("out" ;core language
2824 `(#:configure-flags '("-DSYSTEM_BOOST=on" "-DSYSTEM_YAMLCPP=on"
2825 "-DSC_QT=ON" "-DCMAKE_BUILD_TYPE=Release"
2827 ;"-DLIBSCSYNTH=ON" ; TODO: Re-enable?
2828 "-DSC_EL=off") ;scel is packaged individually as
2831 (modify-phases %standard-phases
2832 ;; HOME must be defined otherwise supercollider throws a "ERROR:
2833 ;; Primitive '_FileMkDir' failed." error when generating the doc.
2834 ;; The graphical tests also hang without it.
2835 (add-after 'unpack 'set-home-directory
2837 (setenv "HOME" (getcwd))
2839 (add-after 'unpack 'patch-scclass-dir
2840 (lambda* (#:key outputs #:allow-other-keys)
2841 (let* ((out (assoc-ref outputs "out"))
2844 "/share/SuperCollider/SCClassLibrary")))
2845 (substitute* "lang/LangSource/SC_LanguageConfig.cpp"
2847 "SC_Filesystem::instance\\(\\)\\.getDirectory"
2848 "\\(DirName::Resource\\) / CLASS_LIB_DIR_NAME"))
2849 (string-append "Path(\"" scclass-dir "\")")))
2851 (add-before 'build 'prepare-x
2854 (setenv "DISPLAY" ":0")
2856 (add-before 'install 'install-ide
2857 (lambda* (#:key outputs #:allow-other-keys)
2858 (let* ((out (assoc-ref outputs "out"))
2859 (ide (assoc-ref outputs "ide"))
2860 (scide "editors/sc-ide/scide"))
2862 (string-append ide "/bin"))
2866 `(("ableton-link" ,ableton-link)
2867 ("pkg-config" ,pkg-config)
2868 ("qttools" ,qttools)
2869 ("xorg-server" ,xorg-server-for-tests)))
2872 ("libsndfile" ,libsndfile)
2875 ("readline" ,readline) ;readline support for sclang's CLI
2876 ("alsa" ,alsa-lib) ;for sclang's MIDI interface
2877 ("eudev" ,eudev) ;for user interactions with devices
2878 ("avahi" ,avahi) ;zeroconf service discovery support
2881 ("boost-sync" ,boost-sync)
2882 ("yaml-cpp" ,yaml-cpp)
2884 ("qtdeclarative" ,qtdeclarative)
2886 ("qtwebchannel" ,qtwebchannel)
2887 ("qtwebsockets" ,qtwebsockets)))
2888 (propagated-inputs ;to get native-search-path
2889 `(("qtwebengine" ,qtwebengine)))
2890 (home-page "https://github.com/supercollider/supercollider")
2891 (synopsis "Synthesis engine and programming language")
2892 (description "SuperCollider is a synthesis engine (@code{scsynth} or
2893 @code{supernova}) and programming language (@code{sclang}). It can be used
2894 for experimenting with sound synthesis and algorithmic composition.
2896 SuperCollider requires jackd to be installed in your user profile and your
2897 user must be allowed to access the realtime features of the kernel. Search
2898 for \"realtime\" in the index of the Guix manual to learn how to achieve this
2899 using Guix System.")
2900 (license license:gpl2+)))
2908 (uri (string-append "https://download.drobilla.net/raul-"
2909 version ".tar.bz2"))
2912 "09ms40xc1x6qli6lxkwn5ibqh62nl9w7dq0b6jh1q2zvnrxwsd8b"))))
2913 (build-system waf-build-system)
2915 `(#:python ,python-2
2916 #:tests? #f)) ; no check target
2921 `(("pkg-config" ,pkg-config)))
2922 (home-page "https://drobilla.net/software/raul/")
2923 (synopsis "Real-time audio utility library")
2925 "Raul (Real-time Audio Utility Library) is a C++ utility library primarily
2926 aimed at audio/musical applications.")
2927 (license license:gpl2+)))
2929 (define-public raul-devel
2930 (let ((commit "4db870b2b20b0a608ec0283139056b836c5b1624")
2932 (package (inherit raul)
2934 (version (string-append "0.8.9-" revision "."
2935 (string-take commit 9)))
2939 (url "https://git.drobilla.net/raul.git")
2941 (file-name (string-append name "-" version "-checkout"))
2944 "04fajrass3ymr72flx5js5vxc601ccrmx8ny8scp0rw7j0igyjdr")))))))
2946 (define-public resample
2952 (uri (string-append "https://ccrma.stanford.edu/~jos/gz/resample-"
2956 "074zj8ydp05yy1hjcglfv3hkvj4cm50f9nralka1992pm6yf8yvy"))))
2957 (build-system gnu-build-system)
2959 `(("autoconf" ,autoconf)
2960 ("automake" ,automake)
2961 ("pkg-config" ,pkg-config)
2962 ("libtool" ,libtool)))
2963 (synopsis "Sampling rate conversion and filter design utilities")
2964 (description "This package contains the @command{resample} and
2965 @command{windowfilter} command line utilities. The @command{resample} command
2966 allows changing the sampling rate of a sound file, while the
2967 @command{windowfilter} command allows designing Finite Impulse Response (FIR)
2968 filters using the so-called @emph{window method}.")
2969 (home-page "https://ccrma.stanford.edu/~jos/resample/Free_Resampling_Software.html")
2970 (license license:lgpl2.1+)))
2972 (define-public rubberband
2979 (string-append "https://bitbucket.org/breakfastquay/rubberband/get/v"
2982 (file-name (string-append name "-" version ".tar.bz2"))
2985 "0462fmjnfqpv2qi0s6ny42drqarkr0xy9lw8frjmfgzyzl5n9294"))))
2986 (build-system gnu-build-system)
2988 `(#:tests? #f ; no check target
2990 (modify-phases %standard-phases
2991 (add-after 'unpack 'skip-jni-installation
2992 ;; ‘make install’ unconditionally installs librubberband-jni.so,
2993 ;; which is never built by ‘make all’. Skip it.
2995 (substitute* "Makefile.in"
2996 ((".*cp -f \\$\\(JNI_TARGET\\).*") ""))
2999 `(("ladspa" ,ladspa)
3000 ("libsamplerate" ,libsamplerate)
3003 `(("pkg-config" ,pkg-config)))
3004 (home-page "https://breakfastquay.com/rubberband/")
3005 (synopsis "Audio time-stretching and pitch-shifting library")
3007 "Rubber Band is a library and utility program that permits changing the
3008 tempo and pitch of an audio recording independently of one another.")
3009 (license license:gpl2+)))
3011 (define-public rtmidi
3017 (uri (string-append "https://www.music.mcgill.ca/~gary/rtmidi"
3018 "/release/rtmidi-" version ".tar.gz"))
3019 (file-name (string-append "rtmidi-" version ".tar.gz"))
3022 "1k962ljpnwyjw9jjiky2372khhri1wqvrj5qsalfpys31xqzw31p"))))
3023 (build-system gnu-build-system)
3026 ("alsa-lib" ,alsa-lib)))
3028 `(("autoconf" ,autoconf)
3029 ("automake" ,automake)
3030 ("libtool" ,libtool)
3031 ("pkg-config" ,pkg-config)))
3032 (home-page "https://www.music.mcgill.ca/~gary/rtmidi")
3033 (synopsis "Cross-platform MIDI library for C++")
3035 "RtMidi is a set of C++ classes (RtMidiIn, RtMidiOut, and API specific
3036 classes) that provide a common cross-platform API for realtime MIDI
3038 (license license:expat)))
3040 (define-public sratom
3046 (uri (string-append "https://download.drobilla.net/sratom-"
3047 version ".tar.bz2"))
3050 "178v90qvsp6lw4sqdmdz0bzyjkgwhv9m75ph1d1z8say5bv0p4gv"))))
3051 (build-system waf-build-system)
3052 (arguments `(#:tests? #f)) ;no check target
3054 ;; In Requires of sratom-0.pc.
3059 `(("pkg-config" ,pkg-config)))
3060 (home-page "https://drobilla.net/software/sratom/")
3061 (synopsis "Library for serialising LV2 atoms to/from RDF")
3063 "Sratom is a library for serialising LV2 atoms to/from RDF, particularly
3064 the Turtle syntax.")
3065 (license license:isc)))
3073 (uri (string-append "https://download.drobilla.net/suil-"
3074 version ".tar.bz2"))
3077 "0h0ghk1s0lrj4gh12r7390b0ybaw7awnj0vhchyy9ll0gvhqgkci"))))
3078 (build-system waf-build-system)
3080 `(#:tests? #f)) ;no check target
3087 `(("pkg-config" ,pkg-config)))
3088 (home-page "https://drobilla.net/software/suil/")
3089 (synopsis "Library for loading and wrapping LV2 plugin UIs")
3091 "Suil is a lightweight C library for loading and wrapping LV2 plugin UIs.
3093 Suil makes it possible to load a UI of a toolkit in a host using another
3094 toolkit. The API is designed such that hosts do not need to explicitly
3095 support specific toolkits – if Suil supports a particular toolkit, then UIs in
3096 that toolkit will work in all hosts that use Suil automatically.
3098 Suil currently supports every combination of Gtk, Qt, and X11.")
3099 (license license:isc)))
3101 (define-public libebur128
3109 (url "https://github.com/jiixyj/libebur128")
3110 (commit (string-append "v" version))))
3111 (file-name (git-file-name name version))
3113 (base32 "0n81rnm8dm1zmibkr2v3q79rsd609y0dbbsrbay18njcjva88p0g"))))
3114 (build-system cmake-build-system)
3116 `(;; Tests require proprietary .wav files. See
3117 ;; https://github.com/jiixyj/libebur128/issues/82.
3119 #:configure-flags '("-DBUILD_STATIC_LIBS=OFF")))
3120 (home-page "https://github.com/jiixyj/libebur128")
3121 (synopsis "Library implementing the EBU R 128 loudness standard")
3123 "@code{libebur128} is a C library that implements the EBU R 128 standard
3124 for loudness normalisation.")
3125 (license license:expat)))
3127 (define-public timidity++
3133 (uri (string-append "mirror://sourceforge/timidity/TiMidity++"
3134 "/TiMidity++-" version
3135 "/TiMidity++-" version ".tar.bz2"))
3138 "1xf8n6dqzvi6nr2asags12ijbj1lwk1hgl3s27vm2szib8ww07qn"))))
3139 (build-system gnu-build-system)
3142 (list "--enable-audio=alsa,flac,jack,ao,vorbis,speex"
3146 (string-append "--with-default-path="
3147 (assoc-ref %outputs "out") "/etc/timidity"))
3149 (modify-phases %standard-phases
3150 (add-after 'install 'install-config
3152 (let ((out (string-append (assoc-ref %outputs "out")
3155 (call-with-output-file
3156 (string-append out "/timidity.cfg")
3158 (format port (string-append "source "
3159 (assoc-ref %build-inputs "freepats")
3160 "/share/freepats/freepats.cfg")))))
3163 `(("alsa-lib" ,alsa-lib)
3168 ("libvorbis" ,libvorbis)
3170 ("ncurses" ,ncurses)
3171 ("freepats" ,freepats)))
3173 `(("pkg-config" ,pkg-config)))
3174 (home-page "http://timidity.sourceforge.net/")
3175 (synopsis "Software synthesizer for playing MIDI files")
3177 "TiMidity++ is a software synthesizer. It can play MIDI files by
3178 converting them into PCM waveform data; give it a MIDI data along with digital
3179 instrument data files, then it synthesizes them in real-time, and plays. It
3180 can not only play sounds, but also can save the generated waveforms into hard
3181 disks as various audio file formats.")
3182 (license license:gpl2+)))
3191 "https://code.soundsoftware.ac.uk"
3192 "/attachments/download/1520/vamp-plugin-sdk-"
3196 "0pzq0yy2kdl3jgfc2aqmh5m55nk1ild0hq8mydiiw35c6y0mglyh"))))
3197 (build-system gnu-build-system)
3199 `(#:tests? #f ; no check target
3201 (modify-phases %standard-phases
3202 (add-after 'install 'remove-libvamp-hostsdk.la
3203 (lambda* (#:key outputs #:allow-other-keys)
3204 ;; https://bugs.launchpad.net/ubuntu/+source/vamp-plugin-sdk/+bug/1253656
3205 (for-each delete-file
3206 (let ((out (assoc-ref outputs "out")))
3207 (list (string-append out "/lib/libvamp-sdk.la")
3208 (string-append out "/lib/libvamp-hostsdk.la"))))
3211 `(("libsndfile" ,libsndfile)))
3213 `(("pkg-config" ,pkg-config)))
3214 (home-page "https://vamp-plugins.org")
3215 (synopsis "Modular and extensible audio processing system")
3217 "Vamp is an audio processing plugin system for plugins that extract
3218 descriptive information from audio data — typically referred to as audio
3219 analysis plugins or audio feature extraction plugins.")
3222 "https://code.soundsoftware.ac.uk/projects/vamp-plugin-sdk/repository/entry/COPYING"))))
3224 (define-public libsbsms
3231 (uri (string-append "mirror://sourceforge/sbsms/sbsms/" version
3232 "/libsbsms-" version ".tar.gz"))
3234 (base32 "1vmf84iy4dkwxv887grnlsfk43fmhd9gbg26gc2kgcv40sbkvayf"))))
3235 (build-system gnu-build-system)
3236 (native-inputs `(("automake" ,automake)))
3239 ;; Disable the use of SSE unless on x86_64.
3240 ,(if (not (string-prefix? "x86_64" (or (%current-target-system)
3241 (%current-system))))
3245 (modify-phases %standard-phases
3247 'unpack 'fix-ar-lib-path
3248 (lambda* (#:key inputs #:allow-other-keys)
3249 ;; Originally a symlink to '/usr/local/share/automake-1.12/ar-lib'.
3250 (delete-file "ar-lib")
3252 (string-append (assoc-ref inputs "automake") "/share/automake-"
3253 ,(package-version automake) "/ar-lib")
3256 (home-page "http://sbsms.sourceforge.net/")
3257 (synopsis "Library for time stretching and pitch scaling of audio")
3259 "SBSMS (Subband Sinusoidal Modeling Synthesis) is software for time
3260 stretching and pitch scaling of audio. This package contains the library.")
3261 ;; There is no explicit declaration of a license, but a COPYING file
3263 (license license:gpl2)))
3265 (define-public wavpack
3272 (uri (string-append "https://github.com/dbry/WavPack/releases/download/"
3273 version "/wavpack-" version ".tar.xz"))
3275 (base32 "0ycbqarw25x7208jilh86vwwiqklr7f617jps9mllqc659mnmpjb"))))
3276 (build-system gnu-build-system)
3279 (list "--disable-static"
3282 (modify-phases %standard-phases
3284 (lambda* (#:key tests? #:allow-other-keys)
3286 (invoke "./cli/wvtest" "--default" "--short"))
3288 (home-page "https://www.wavpack.com/")
3289 (synopsis "Hybrid lossless audio codec")
3291 "WavPack is an audio compression format with lossless, lossy and hybrid
3292 compression modes. This package contains command-line programs and library to
3293 encode and decode wavpack files.")
3294 (license license:bsd-3)))
3296 (define-public libmodplug
3303 "mirror://sourceforge/modplug-xmms/"
3304 name "/" version "/" name "-" version ".tar.gz"))
3307 "1pnri98a603xk47smnxr551svbmgbzcw018mq1k6srbrq6kaaz25"))))
3308 (build-system gnu-build-system)
3309 (home-page "http://modplug-xmms.sourceforge.net/")
3310 (synopsis "Mod file playing library")
3312 "Libmodplug renders mod music files as raw audio data, for playing or
3313 conversion. mod, .s3m, .it, .xm, and a number of lesser-known formats are
3314 supported. Optional features include high-quality resampling, bass expansion,
3315 surround and reverb.")
3316 (license license:public-domain)))
3318 (define-public libxmp
3324 (uri (string-append "mirror://sourceforge/xmp/libxmp/" version "/"
3325 name "-" version ".tar.gz"))
3328 "1kycz4jsyvmf7ny9227b497wc7y5ligydi6fvvldmkf8hk63ad9m"))))
3329 (build-system gnu-build-system)
3330 (home-page "http://xmp.sourceforge.net/")
3331 (synopsis "Module player library")
3333 "Libxmp is a library that renders module files to PCM data. It supports
3334 over 90 mainstream and obscure module formats including Protracker (MOD),
3335 Scream Tracker 3 (S3M), Fast Tracker II (XM), and Impulse Tracker (IT).")
3336 (license license:lgpl2.1+)))
3344 (uri (string-append "mirror://sourceforge/xmp/xmp/" version "/"
3345 name "-" version ".tar.gz"))
3348 "17i8fc7x7yn3z1x963xp9iv108gxfakxmdgmpv3mlm438w3n3g8x"))))
3349 (build-system gnu-build-system)
3351 `(("pkg-config" ,pkg-config)))
3353 `(("libxmp" ,libxmp)
3354 ("pulseaudio" ,pulseaudio)))
3355 (home-page "http://xmp.sourceforge.net/")
3356 (synopsis "Extended module player")
3358 "Xmp is a portable module player that plays over 90 mainstream and
3359 obscure module formats, including Protracker MOD, Fasttracker II XM, Scream
3360 Tracker 3 S3M and Impulse Tracker IT files.")
3361 (license license:gpl2+)))
3363 (define-public soundtouch
3371 (url "https://gitlab.com/soundtouch/soundtouch.git")
3373 (file-name (git-file-name name version))
3375 (base32 "12i6yg8vvqwyk412lxl2krbfby6hnxld8qxy0k4m5xp4g94jiq4p"))))
3376 (build-system gnu-build-system)
3378 `(("autoconf" ,autoconf)
3379 ("automake" ,automake)
3380 ("libtool" ,libtool)
3382 (home-page "https://www.surina.net/soundtouch/")
3384 "Audio processing library for changing tempo, pitch and playback rate")
3386 "SoundTouch is an audio processing library for changing the tempo, pitch
3387 and playback rates of audio streams or audio files. It is intended for
3388 application developers writing sound processing tools that require tempo/pitch
3389 control functionality, or just for playing around with the sound effects.")
3390 (license license:lgpl2.1+)))
3398 (uri (string-append "mirror://sourceforge/sox/sox/" version "/"
3399 name "-" version ".tar.bz2"))
3402 "170lx90r1nlnb2j6lg00524iwvqy72p48vii4xc5prrh8dnrb9l1"))))
3403 (build-system gnu-build-system)
3406 ;; The upstream asks to identify the distribution to diagnose SoX
3408 '("--with-distro=Guix System Distribution")))
3410 `(("pkg-config" ,pkg-config)))
3412 `(("alsa-lib" ,alsa-lib)
3416 ("libid3tag" ,libid3tag)
3417 ("libltdl" ,libltdl)
3420 ("libvorbis" ,libvorbis)
3421 ("pulseaudio" ,pulseaudio)))
3422 (home-page "http://sox.sourceforge.net")
3423 (synopsis "Sound processing utility")
3425 "SoX (Sound eXchange) is a command line utility that can convert
3426 various formats of computer audio files to other formats. It can also
3427 apply various effects to these sound files, and, as an added bonus, SoX
3428 can play and record audio files.")
3429 ;; sox.c is distributed under GPL, while the files that make up
3430 ;; libsox are licensed under LGPL.
3431 (license (list license:gpl2+ license:lgpl2.1+))))
3441 (string-append "mirror://sourceforge/soxr/soxr-" version
3444 (base32 "12aql6svkplxq5fjycar18863hcq84c5kx8g6f4rj0lcvigw24di"))))
3445 (build-system cmake-build-system)
3446 (arguments '(#:tests? #f)) ;no 'check' target
3447 (home-page "https://sourceforge.net/p/soxr/wiki/Home/")
3448 (synopsis "One-dimensional sample-rate conversion library")
3450 "The SoX Resampler library (libsoxr) performs one-dimensional sample-rate
3451 conversion. It may be used, for example, to resample PCM-encoded audio.")
3452 (license license:lgpl2.1+)))
3454 (define-public twolame
3461 (uri (string-append "mirror://sourceforge/twolame/twolame/" version
3462 "/twolame-" version ".tar.gz"))
3464 (base32 "0zf8sxqb02w07ah55b1y7ab643zmpbhn62spa9pqra0rc17l4dfc"))))
3465 (build-system gnu-build-system)
3467 `(("libsndfile" ,libsndfile)))
3470 ("which" ,which))) ;used in tests/test.pl
3471 (home-page "https://www.twolame.org/")
3472 (synopsis "MPEG Audio Layer 2 (MP2) encoder")
3474 "TwoLAME is an optimised MPEG Audio Layer 2 (MP2) encoder based on
3475 tooLAME by Mike Cheng, which in turn is based upon the ISO dist10 code and
3477 (license license:lgpl2.1+)))
3479 (define-public portaudio
3482 (version "190600.20161030")
3487 "http://www.portaudio.com/archives/pa_stable_v"
3488 (string-map (lambda (c) (if (char=? c #\.) #\_ c)) version)
3491 (base32 "04qmin6nj144b8qb9kkd9a52xfvm0qdgm8bg8jbl7s3frmyiv8pm"))
3492 (patches (search-patches "portaudio-audacity-compat.patch"))))
3493 (build-system gnu-build-system)
3495 ;; TODO: Add ASIHPI.
3496 `(("alsa-lib" ,alsa-lib)
3498 ;; Autoreconf is necessary because the audacity-compat patch modifies .in
3501 `(("autoconf" ,autoconf)
3502 ("automake" ,automake)
3503 ("libtool" ,libtool)
3504 ("pkg-config" ,pkg-config)))
3506 '(#:tests? #f ;no 'check' target
3507 #:parallel-build? #f ;fails on some systems
3508 #:configure-flags '("--with-pic"
3510 ;; XXX: The following prevents a build error
3511 ;; because of missing depcomp when C++ bindings are
3513 "--disable-dependency-tracking")
3515 (modify-phases %standard-phases
3516 ;; This is needed for linking the static libraries
3517 (add-after 'unpack 'build-only-position-independent-code
3519 (substitute* "configure.in"
3520 (("AC_PROG_LIBTOOL" m)
3521 (string-append m "\nAM_PROG_AR\nLT_INIT([pic-only])")))
3522 (delete-file "configure")
3524 ;; Some headers are not installed by default, but are needed by
3525 ;; packages like Kaldi.
3526 (add-after 'install 'install-missing-headers
3527 (lambda* (#:key outputs #:allow-other-keys)
3528 (install-file "src/common/pa_ringbuffer.h"
3529 (string-append (assoc-ref outputs "out") "/include"))
3531 (home-page "http://www.portaudio.com/")
3532 (synopsis "Audio I/O library")
3534 "PortAudio is a portable C/C++ audio I/O library providing a simple API
3535 to record and/or play sound using a callback function or a blocking read/write
3537 (license license:expat)))
3539 (define-public qsynth
3547 (string-append "mirror://sourceforge/qsynth/qsynth/" version
3548 "/qsynth-" version ".tar.gz")
3549 (string-append "mirror://sourceforge/qsynth/qsynth (attic)"
3550 "/qsynth-" version ".tar.gz")))
3552 (base32 "18im4w8agj60nkppwbkxqnhpp13z5li3w30kklv4lgs20rvgbvl6"))))
3553 (build-system gnu-build-system)
3555 `(#:tests? #f)) ; no "check" phase
3557 `(("qttools" ,qttools)
3558 ("pkg-config" ,pkg-config)))
3560 `(("fluidsynth" ,fluidsynth)
3562 ("qtx11extras" ,qtx11extras)))
3563 (home-page "https://qsynth.sourceforge.io")
3564 (synopsis "Graphical user interface for FluidSynth")
3566 "Qsynth is a GUI front-end application for the FluidSynth SoundFont
3567 synthesizer written in C++.")
3568 (license license:gpl2+)))
3570 (define-public rsound
3578 (url "https://github.com/Themaister/RSound")
3579 (commit (string-append "v" version))))
3580 (file-name (git-file-name name version))
3582 (base32 "0gspmr3klwnq98h17p5hc6ifygya4p80g4g8r7a1qavm3mv19waf"))))
3583 (build-system gnu-build-system)
3585 `(("alsa-lib" ,alsa-lib)
3588 ("libsamplerate" ,libsamplerate)
3590 ("portaudio" ,portaudio)
3591 ("pulseaudio" ,pulseaudio)))
3594 (modify-phases %standard-phases
3596 (lambda* (#:key outputs #:allow-other-keys)
3598 (invoke "./configure"
3599 (string-append "--prefix=" (assoc-ref outputs "out"))))))
3600 ;; No 'check' target.
3602 (home-page "https://themaister.net/rsound.html")
3603 (synopsis "Networked audio system")
3605 "RSound allows you to send audio from an application and transfer it
3606 directly to a different computer on your LAN network. It is an audio daemon
3607 with a much different focus than most other audio daemons.")
3608 (license license:gpl3+)))
3610 (define-public xjackfreak
3617 (url "https://github.com/johnhldavis/xjackfreak")
3618 (commit (string-append "v" version))))
3619 (file-name (git-file-name name version))
3622 "18c546qidbrj0f5wfiq5llii2192xpln0ab3r4vpr7i3wybxqjfz"))))
3623 (build-system gnu-build-system)
3626 (list (string-append "docdir=" (assoc-ref %outputs "out")
3627 "/share/doc/xjackfreak"))))
3632 ("libxext" ,libxext)))
3634 `(("pkg-config" ,pkg-config)))
3635 (home-page "https://github.com/johnhldavis/xjackfreak")
3636 (synopsis "JACK audio frequency analyzer and display")
3638 "XJackFreak is an audio analysis and equalizing tool for the Jack Audio
3639 Connection Kit. It can display the FFT of any input, modify it and output the
3641 (license license:gpl3+)))
3643 (define-public zita-convolver
3645 (name "zita-convolver")
3650 "http://kokkinizita.linuxaudio.org"
3651 "/linuxaudio/downloads/zita-convolver-"
3652 version ".tar.bz2"))
3654 ;; Don't optimize for a specific processor architecture.
3656 (substitute* "source/Makefile"
3657 (("^CXXFLAGS \\+= -march=native") ""))
3659 (modules '((guix build utils)))
3662 "0prji66p86z2bzminywkwchr5bfgxcg2i8y803pydd1hzf2198cs"))))
3663 (build-system gnu-build-system)
3665 `(#:tests? #f ; no "check" target
3667 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
3668 (string-append "SUFFIX="))
3670 (modify-phases %standard-phases
3671 (add-after 'unpack 'patch-makefile-and-enter-directory
3673 (substitute* "source/Makefile"
3674 (("ldconfig") "true")
3675 (("^LIBDIR =.*") "LIBDIR = lib\n"))
3678 (add-after 'install 'install-symlink
3680 (symlink "libzita-convolver.so"
3681 (string-append (assoc-ref %outputs "out")
3682 "/lib/libzita-convolver.so.4"))
3684 ;; no configure script
3685 (delete 'configure))))
3686 (inputs `(("fftwf" ,fftwf)))
3687 (home-page "https://kokkinizita.linuxaudio.org")
3688 (synopsis "Fast, partitioned convolution engine library")
3690 "Zita convolver is a C++ library providing a real-time convolution
3692 (license license:gpl3+)))
3694 (define-public zita-resampler
3696 (name "zita-resampler")
3701 "http://kokkinizita.linuxaudio.org"
3702 "/linuxaudio/downloads/zita-resampler-"
3703 version ".tar.bz2"))
3705 ;; Don't optimize for a specific processor architecture.
3707 (substitute* '("apps/Makefile" "source/Makefile")
3708 (("^CXXFLAGS \\+= -march=native") ""))
3710 (modules '((guix build utils)))
3713 "1my5k2dh2dkvjp6xjnf9qy6i7s28z13kw1n9pwa4a2cpwbzawfr3"))))
3714 (build-system gnu-build-system)
3716 `(#:tests? #f ; no "check" target
3718 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
3719 (string-append "SUFFIX="))
3721 (modify-phases %standard-phases
3723 'unpack 'patch-makefile-and-enter-directory
3725 (substitute* "source/Makefile"
3726 (("ldconfig") "true")
3727 (("^LIBDIR =.*") "LIBDIR = lib\n"))
3731 'install 'install-symlink
3733 (symlink "libzita-resampler.so"
3734 (string-append (assoc-ref %outputs "out")
3735 "/lib/libzita-resampler.so.1"))
3737 ;; no configure script
3738 (delete 'configure))))
3739 (home-page "https://kokkinizita.linuxaudio.org/linuxaudio/zita-resampler/resampler.html")
3740 (synopsis "C++ library for resampling audio signals")
3742 "Libzita-resampler is a C++ library for resampling audio signals. It is
3743 designed to be used within a real-time processing context, to be fast, and to
3744 provide high-quality sample rate conversion.")
3745 (license license:gpl3+)))
3747 (define-public zita-alsa-pcmi
3749 (name "zita-alsa-pcmi")
3754 "http://kokkinizita.linuxaudio.org"
3755 "/linuxaudio/downloads/zita-alsa-pcmi-"
3756 version ".tar.bz2"))
3759 "12d7vdg74yh21w69qi0wg57iz4876j94qbiq09bvscih6xz9y78s"))))
3760 (build-system gnu-build-system)
3762 `(#:tests? #f ; no "check" target
3764 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
3765 (string-append "SUFFIX="))
3767 (modify-phases %standard-phases
3768 (add-after 'unpack 'patch-makefile-and-enter-directory
3770 (substitute* "source/Makefile"
3771 (("ldconfig") "true")
3772 (("^LIBDIR =.*") "LIBDIR = lib\n"))
3775 (add-after 'install 'install-symlink
3777 (symlink "libzita-alsa-pcmi.so"
3778 (string-append (assoc-ref %outputs "out")
3779 "/lib/libzita-alsa-pcmi.so.0"))
3781 ;; no configure script
3782 (delete 'configure))))
3784 `(("alsa-lib" ,alsa-lib)
3786 (home-page "https://kokkinizita.linuxaudio.org")
3787 (synopsis "C++ wrapper around the ALSA API")
3789 "Zita-alsa-pcmi is a C++ wrapper around the ALSA API. It provides easy
3790 access to ALSA PCM devices, taking care of the many functions required to
3791 open, initialise and use a hw: device in mmap mode, and providing floating
3793 (license license:gpl3+)))
3795 (define-public cuetools
3802 (url "https://github.com/svend/cuetools")
3804 (file-name (git-file-name name version))
3807 "02ksv1ahf1v4cr2xbclsfv5x17m9ivzbssb5r8xjm97yh8a7spa3"))))
3808 (build-system gnu-build-system)
3809 ;; The source checkout is not bootstrapped.
3811 `(("autoconf" ,autoconf)
3812 ("automake" ,automake)
3815 (synopsis "Cue and toc file parsers and utilities")
3816 (description "Cuetools is a set of programs that are useful for manipulating
3817 and using CUE sheet (cue) files and Table of Contents (toc) files. CUE and TOC
3818 files are a way to represent the layout of a data or audio CD in a
3819 machine-readable ASCII format.")
3820 (home-page "https://github.com/svend/cuetools")
3821 (license license:gpl2+)))
3823 (define-public shntool
3830 (string-append "http://etree.org/shnutils/shntool/dist/src/"
3831 "shntool-" version ".tar.gz")
3832 (string-append "mirror://debian/pool/main/s/shntool/shntool_"
3833 version ".orig.tar.gz")))
3836 "00i1rbjaaws3drkhiczaign3lnbhr161b7rbnjr8z83w8yn2wc3l"))))
3837 (build-system gnu-build-system)
3838 (synopsis "WAVE audio data processing tool")
3839 (description "shntool is a multi-purpose WAVE data processing and reporting
3840 utility. File formats are abstracted from its core, so it can process any file
3841 that contains WAVE data, compressed or not---provided there exists a format
3842 module to handle that particular file type. It can also generate CUE files, and
3843 use them split WAVE data into multiple files.")
3844 (home-page "http://etree.org/shnutils/shntool/")
3845 ;; 'install-sh' bears the x11 license
3846 (license (list license:gpl2+ license:x11))))
3848 (define-public dcadec
3855 (url "https://github.com/foo86/dcadec")
3856 (commit (string-append "v" version))))
3857 (file-name (git-file-name name version))
3860 "07nd0ajizrp1w02bsyfcv18431r8m8rq8gjfmz9wmckpg7cxj2hs"))))
3861 (build-system gnu-build-system)
3863 ;; Test files are missing: https://github.com/foo86/dcadec/issues/53
3866 (list (string-append "CC=" ,(cc-for-target))
3867 ;; Build shared library.
3869 (string-append "PREFIX=" (assoc-ref %outputs "out"))
3870 ;; Set proper runpath.
3871 (string-append "LDFLAGS=-Wl,-rpath="
3872 (assoc-ref %outputs "out")
3875 (modify-phases %standard-phases
3876 ;; No configure script, just a hand-written Makefile.
3877 (delete 'configure))))
3878 (synopsis "DTS Coherent Acoustics decoder")
3879 (description "Dcadec is a DTS Coherent Acoustics surround sound decoder
3880 with support for HD extensions.")
3881 (home-page "https://github.com/foo86/dcadec")
3882 (license license:lgpl2.1+)))
3884 (define-public bs1770gain
3888 (home-page "https://manpages.debian.org/sid/bs1770gain/bs1770gain.1.en.html")
3892 (uri (string-append "mirror://sourceforge/bs1770gain/bs1770gain/"
3893 version "/bs1770gain-" version ".tar.gz"))
3895 (base32 "0a2dcaxvxy5m3a5sb1lhplsymvz3ypaiidc5xn9qy01h53zvyvkp"))
3896 (modules '((guix build utils)))
3900 (substitute* (find-files "." "\\.[ch]$")
3901 (("^ \\* N..o.*") ""))
3902 (substitute* "libbg/bgx.c"
3903 (("#define BG.* ") "#define BS ")
3904 (("BG.*NO?.*N.*S.*E.*N.*SE?") "NO")
3905 (("\"( #|N).*\"") "\"\""))
3906 (substitute* (list "config.h"
3909 (("https?://bs1770gain[^/]*/")
3912 (build-system gnu-build-system)
3913 (inputs `(("ffmpeg" ,ffmpeg)
3915 (synopsis "Tool to adjust loudness of media files")
3917 "BS1770GAIN is a loudness scanner compliant with ITU-R BS.1770 and its
3918 flavors EBU R128, ATSC A/85, and ReplayGain 2.0. It helps normalizing the
3919 loudness of audio and video files to the same level.")
3920 (license license:gpl2+)))
3922 (define-public filteraudio
3923 (let ((revision "1")
3924 (commit "2fc669581e2a0ff87fba8de85861b49133306094"))
3926 (name "filteraudio")
3927 (version (string-append "0.0.0-" revision "."
3928 (string-take commit 7)))
3933 (url "https://github.com/irungentoo/filter_audio")
3935 (file-name (string-append name "-" version "-checkout"))
3938 "0hbb290n3wb23f2k692a6bhc23nnqmxqi9sc9j15pnya8wifw64g"))))
3939 (build-system gnu-build-system)
3941 `(#:make-flags (list (string-append "PREFIX=" %output)
3942 (string-append "CC=" ,(cc-for-target)))
3943 #:tests? #f ; No tests
3945 (modify-phases %standard-phases
3946 ;; No configure script
3947 (delete 'configure))))
3948 (synopsis "Lightweight audio filtering library")
3949 (description "An easy to use audio filtering library made from webrtc
3950 code, used in @code{libtoxcore}.")
3951 (home-page "https://github.com/irungentoo/filter_audio")
3952 (license license:bsd-3))))
3962 (string-append "http://www.quut.com/" name "/" name
3963 "-" version ".tar.gz"))
3966 "1xkha9ss5g5qnfaybi8il0mcvp8knwg9plgh8404vh58d0pna0s9"))))
3967 (build-system gnu-build-system)
3969 `(#:test-target "tst"
3970 #:make-flags (list (string-append "INSTALL_ROOT=" %output))
3972 (modify-phases %standard-phases
3973 (add-after 'unpack 'add-fpic-ccflag
3975 ;; The -fPIC compiler option is needed when building
3977 (substitute* "Makefile"
3979 (string-append all "CCFLAGS += -fPIC\n")))
3981 (add-before 'install 'pre-install
3983 (let ((out (assoc-ref %outputs "out")))
3984 (mkdir-p (string-append out "/inc"))
3985 (mkdir-p (string-append out "/man"))
3986 (mkdir-p (string-append out "/man/man1"))
3987 (mkdir-p (string-append out "/man/man3"))
3988 (mkdir-p (string-append out "/bin"))
3989 (mkdir-p (string-append out "/lib")))
3991 (add-after 'install 'post-install
3993 (let ((out (assoc-ref %outputs "out")))
3994 (rename-file (string-append out "/inc")
3995 (string-append out "/include"))
3996 (mkdir-p (string-append out "/include/gsm"))
3997 (copy-recursively "inc"
3998 (string-append out "/include/gsm")))
4000 (delete 'configure)))) ; no configure script
4001 (synopsis "GSM 06.10 lossy speech compression library")
4002 (description "This C library provides an encoder and a decoder for the GSM
4003 06.10 RPE-LTP lossy speech compression algorithm.")
4004 (home-page "http://quut.com/gsm/")
4005 (license (license:non-copyleft "file://COPYRIGHT"))))
4007 (define-public python-pyalsaaudio
4009 (name "python-pyalsaaudio")
4013 (uri (pypi-uri "pyalsaaudio" version))
4016 "1180ypn9596rq4b7y7dyv627j1q0fqilmkkrckclnzsdakdgis44"))))
4017 (build-system python-build-system)
4019 `(#:tests? #f)) ; tests require access to ALSA devices.
4021 `(("alsa-lib" ,alsa-lib)))
4022 (home-page "https://larsimmisch.github.io/pyalsaaudio/")
4023 (synopsis "ALSA wrappers for Python")
4025 "This package contains wrappers for accessing the ALSA API from Python.
4026 It is currently fairly complete for PCM devices, and has some support for
4028 (license license:psfl)))
4030 (define-public python2-pyalsaaudio
4031 (package-with-python2 python-pyalsaaudio))
4033 (define-public ldacbt
4039 (uri (string-append "https://github.com/EHfive/ldacBT"
4040 "/releases/download/v" version
4041 "/ldacBT-" version ".tar.gz"))
4044 "1d65dms4klzql29abi15i90f41h523kl6mxrz9hi6p5vg37fxn2b"))))
4045 (build-system cmake-build-system)
4046 (arguments `(#:tests? #f)) ; no check target
4047 (home-page "https://github.com/EHfive/ldacBT/")
4048 (synopsis "LDAC Bluetooth encoder and ABR library")
4049 (description "This package provides an encoder for the LDAC
4050 high-resolution Bluetooth audio streaming codec for streaming at up to 990
4051 kbps at 24 bit/96 kHz.")
4052 (license license:asl2.0)))
4054 (define-public bluez-alsa
4059 ;; The tarballs are mere snapshots and don't contain a
4060 ;; bootstrapped build system.
4063 (url "https://github.com/Arkq/bluez-alsa")
4064 (commit (string-append "v" version))))
4065 (file-name (git-file-name name version))
4068 "1jlsgxyqfhncfhx1sy3ry0dp6p95kd4agh7g2b7g51h0c4cv74h8"))))
4069 (build-system gnu-build-system)
4072 (list "--enable-ldac"
4073 (string-append "--with-alsaplugindir="
4074 (assoc-ref %outputs "out")
4076 (string-append "--with-dbusconfdir="
4077 (assoc-ref %outputs "out")
4078 "/etc/dbus-1/system.d"))))
4080 `(("autoconf" ,autoconf)
4081 ("automake" ,automake)
4082 ("libtool" ,libtool)
4083 ("pkg-config" ,pkg-config)))
4085 `(("alsa-lib" ,alsa-lib)
4091 ("ncurses" ,ncurses)
4094 (home-page "https://github.com/Arkq/bluez-alsa")
4095 (synopsis "Bluetooth ALSA backend")
4096 (description "This project is a rebirth of a direct integration between
4097 Bluez and ALSA. Since Bluez >= 5, the built-in integration has been removed
4098 in favor of 3rd party audio applications. From now on, Bluez acts as a
4099 middleware between an audio application, which implements Bluetooth audio
4100 profile, and a Bluetooth audio device. BlueALSA registers all known Bluetooth
4101 audio profiles in Bluez, so in theory every Bluetooth device (with audio
4102 capabilities) can be connected. In order to access the audio stream, one has
4103 to connect to the ALSA PCM device called @code{bluealsa}. The device is based
4104 on the ALSA software PCM plugin.")
4105 (license license:expat)))
4113 (uri (string-append "ftp://ccrma-ftp.stanford.edu/pub/Lisp/"
4114 "snd-" version ".tar.gz"))
4117 "0jxkycxn6jcbs4gklk9sk3gfr0y26dz1m71nxah9rnx80wnzj6hr"))))
4118 (build-system glib-or-gtk-build-system)
4120 `(#:tests? #f ; no tests
4121 #:out-of-source? #f ; for the 'install-doc' phase
4123 (let* ((out (assoc-ref %outputs "out"))
4124 (docdir (string-append out "/share/doc/"
4125 ,name "-" ,version)))
4126 (list "--with-alsa" "--with-jack" "--with-gmp"
4127 (string-append "--with-doc-dir=" docdir)))
4129 (modify-phases %standard-phases
4130 (add-after 'install 'install-doc
4131 (lambda* (#:key outputs #:allow-other-keys)
4132 (let* ((out (assoc-ref outputs "out"))
4133 (doc (string-append out "/share/doc/"
4134 ,name "-" ,version)))
4137 (install-file f doc))
4138 (find-files "." "\\.html$"))
4139 (copy-recursively "pix" (string-append doc "/pix"))
4142 `(("pkg-config" ,pkg-config)))
4144 `(("alsa-lib" ,alsa-lib)
4151 ("libsamplerate" ,libsamplerate)
4156 ("timidity++" ,timidity++)
4157 ("vorbis-tools" ,vorbis-tools)
4158 ("wavpack" ,wavpack)))
4159 (synopsis "Sound editor")
4160 (home-page "https://ccrma.stanford.edu/software/snd/")
4162 "Snd is a sound editor modelled loosely after Emacs. It can be
4163 customized and extended using either the s7 Scheme implementation (included in
4164 the Snd sources), Ruby, or Forth.")
4165 (license (license:non-copyleft "file://COPYING"))))
4167 (define-public noise-repellent
4169 (name "noise-repellent")
4174 (url "https://github.com/lucianodato/noise-repellent")
4176 (file-name (string-append name "-" version "-checkout"))
4179 "0hb89x9i2knzan46q4nwscf5zmnb2nwf4w13xl2c0y1mx1ls1mwl"))))
4180 (build-system meson-build-system)
4183 (list (string-append "--prefix=" (assoc-ref %outputs "out")
4189 `(("pkg-config" ,pkg-config)))
4190 (home-page "https://github.com/lucianodato/noise-repellent")
4191 (synopsis "LV2 plugin for broadband noise reduction")
4192 (description "Noise Repellent is an LV2 plugin to reduce noise. It has
4193 the following features:
4196 @item Spectral gating and spectral subtraction suppression rule
4197 @item Adaptive and manual noise thresholds estimation
4198 @item Adjustable noise floor
4199 @item Adjustable offset of thresholds to perform over-subtraction
4200 @item Time smoothing and a masking estimation to reduce artifacts
4201 @item Basic onset detector to avoid transients suppression
4202 @item Whitening of the noise floor to mask artifacts and to recover higher
4204 @item Option to listen to the residual signal
4206 @item Noise profile saved with the session
4209 (license license:lgpl3+)))
4211 (define-public lv2-speech-denoiser
4212 (let ((commit "04cfba929630404f8d4f4ca5bac8d9b09a99152f")
4215 (name "lv2-speech-denoiser")
4216 (version (git-version "0" revision commit))
4221 (url "https://github.com/lucianodato/speech-denoiser/")
4223 (file-name (git-file-name name version))
4225 (base32 "189l6lz8sz5vr6bjyzgcsrvksl1w6crqsg0q65r94b5yjsmjnpr4"))))
4226 (build-system meson-build-system)
4228 `(#:meson ,meson-0.55
4229 ;; Using a "release" build is recommended for performance
4230 #:build-type "release"
4232 (modify-phases %standard-phases
4233 (add-after 'unpack 'patch-meson-build
4235 (substitute* "meson.build"
4236 (("install_folder = 'sdenoise.lv2'")
4237 "install_folder = 'lib/lv2/sdenoise.lv2'")
4238 (("build/manifest.ttl") "../build/manifest.ttl"))
4240 (add-after 'unpack 'build-rnnoise
4242 (with-directory-excursion "rnnoise"
4243 (let ((old-CFLAGS (getenv "CFLAGS")))
4244 (setenv "CFLAGS" "-fvisibility=hidden -fPIC -Wl,--exclude-libs,ALL")
4245 (setenv "CONFIG_SHELL" (which "bash"))
4246 (invoke "autoreconf" "-vif")
4247 (invoke "sh" "configure"
4248 "--disable-examples"
4253 (setenv "CFLAGS" old-CFLAGS))))))))
4257 `(("autoconf" ,autoconf)
4258 ("automake" ,automake)
4259 ("libtool" ,libtool)
4260 ("pkg-config" ,pkg-config)))
4261 (home-page "https://github.com/werman/noise-suppression-for-voice")
4262 (synopsis "Speech denoise LV2 plugin based on Xiph's RNNoise library")
4263 (description "RNNoise is a library that uses deep learning to apply
4264 noise suppression to audio sources with voice presence. This package provides
4265 an LV2 audio plugin.")
4266 (license license:lgpl3+))))
4268 (define-public cli-visualizer
4270 (name "cli-visualizer")
4276 (url "https://github.com/dpayne/cli-visualizer")
4277 (commit (string-append "v" version))))
4278 (file-name (git-file-name name version))
4280 (base32 "003mbbwsz43mg3d7llphpypqa9g7rs1p1cdbqi1mbc2bfrc1gcq2"))))
4281 (build-system cmake-build-system)
4283 ;; TODO: Try using the latest googletest for versions > 1.8.
4284 `( ;; ("googletest" ,googletest-1.8)
4288 ("ncurses" ,ncurses)
4289 ("pulseaudio" ,pulseaudio)))
4292 ;; XXX Enable tests after patching them to use the system googletest.
4293 ;; #:configure-flags (list "-DVIS_WITH_TESTS=true")
4295 (modify-phases %standard-phases
4296 (add-after 'install 'install-examples
4297 (lambda* (#:key outputs #:allow-other-keys)
4298 (with-directory-excursion "../source/examples"
4299 (delete-file "mac_osx_config")
4300 (for-each (lambda (file)
4303 (assoc-ref outputs "out")
4307 (home-page "https://github.com/dpayne/cli-visualizer/")
4308 (synopsis "Command-line audio visualizer")
4309 (description "@code{cli-visualizer} displays fast-Fourier
4310 transforms (FFTs) of the sound being played, as well as other graphical
4312 (license license:expat)))
4321 (url "https://github.com/karlstav/cava")
4323 (file-name (git-file-name name version))
4326 "04j5hb29hivcbk542sfsx9m57dbnj2s6qpvy9fs488zvgjbgxrai"))))
4327 (build-system gnu-build-system)
4329 `(("autoconf" ,autoconf)
4330 ("automake" ,automake)
4331 ("libtool" ,libtool)))
4334 ("ncurses" ,ncurses)
4335 ("pulseaudio" ,pulseaudio)))
4338 (list (string-append "PREFIX=" %output)
4339 (string-append "FONT_DIR=" %output "/share/consolefonts"))
4341 (let ((lib (string-append %output "/lib")))
4342 (list (string-append "cava_LDFLAGS = -L" lib " -Wl,-rpath " lib)))
4344 (modify-phases %standard-phases
4346 (lambda* (#:key outputs #:allow-other-keys)
4347 (setenv "HOME" (getcwd))
4348 (invoke "sh" "autogen.sh")))
4349 (add-before 'build 'make-cava-ldflags
4350 (lambda* (#:key outputs #:allow-other-keys)
4351 (mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
4353 (add-after 'install 'data
4354 (lambda* (#:key outputs #:allow-other-keys)
4355 (for-each (lambda (file)
4357 (string-append (assoc-ref outputs "out")
4358 "/share/doc/examples")))
4359 (find-files "example_files"))
4361 (home-page "https://karlstav.github.io/cava/")
4362 (synopsis "Console audio visualizer for ALSA, MPD, and PulseAudio")
4363 (description "C.A.V.A. is a bar audio spectrum visualizer for the terminal
4364 using ALSA, MPD, PulseAudio, or a FIFO buffer as its input.")
4365 (license license:expat)))
4367 (define-public fluid-3
4368 (let ((commit "871c8ce2002e8b3c198f532fdb4fbcce7914f951"))
4375 ;; Only one file is required, but the release bundles the whole
4376 ;; software which is 50MiB as tar and 200MiB unpacked. The website
4377 ;; directly links the soundfont release to the github file download.
4378 (uri (string-append "https://github.com/musescore/MuseScore/raw/"
4379 commit "/share/sound/FluidR3Mono_GM.sf3"))
4380 (file-name (string-append name "-" version ".sf3"))
4383 "1hjfg5i15bw9279007xs92zsggjgn4s4k9pc00s851l3kvc6dkfg"))))
4384 (build-system trivial-build-system)
4386 `(#:modules ((guix build utils))
4389 (use-modules (guix build utils))
4390 (let ((file (assoc-ref %build-inputs "source"))
4391 (out (string-append %output "/share/soundfonts")))
4393 (copy-file file (string-append out "/FluidR3Mono_GM.sf3"))
4395 (home-page "https://github.com/musescore/MuseScore/tree/master/share/sound")
4396 (synopsis "Pro-quality GM soundfont")
4397 (description "Fluid-3 is Frank Wen's pro-quality GM soundfont.")
4398 (license license:expat))))
4400 (define-public libfdk
4408 (url "https://github.com/mstorsjo/fdk-aac")
4409 (commit (string-append "v" version))))
4410 (file-name (git-file-name name version))
4413 "1fkrnzs78fmj11n9z3l0w53i2fl16jcfiyavwidck9bzmkmsf486"))))
4414 (build-system gnu-build-system)
4416 `(("autoconf" ,autoconf)
4417 ("automake" ,automake)
4418 ("libtool" ,libtool)))
4419 (home-page "https://github.com/mstorsjo/fdk-aac")
4420 (synopsis "Fraunhofer FDK AAC library")
4421 (description "FDK is a library for encoding and decoding Advanced Audio
4422 Coding (AAC) format audio, developed by Fraunhofer IIS, and included as part of
4423 Android. It supports several Audio Object Types including MPEG-2 and MPEG-4 AAC
4424 LC, HE-AAC (AAC LC + SBR), HE-AACv2 (LC + SBR + PS) as well AAC-LD (low delay)
4425 and AAC-ELD (enhanced low delay) for real-time communication. The encoding
4426 library supports sample rates up to 96 kHz and up to eight channels (7.1
4428 (license (license:fsf-free "https://github.com/mstorsjo/fdk-aac/blob/master/NOTICE"
4429 "https://www.gnu.org/licenses/license-list.html#fdk"))))
4431 (define-public libopenshot-audio
4433 (name "libopenshot-audio")
4438 (url "https://github.com/OpenShot/libopenshot-audio")
4439 (commit (string-append "v" version))))
4440 (file-name (git-file-name name version))
4443 "13if0m5mvlqly8gmbhschzb9papkgp3yqivklhb949dhy16m8zgf"))))
4444 (build-system cmake-build-system)
4446 `(("alsa-lib" ,alsa-lib)
4447 ;; The following are for JUCE GUI components:
4449 ("freetype" ,freetype)
4450 ("libxrandr" ,libxrandr)
4451 ("libxinerama" ,libxinerama)
4452 ("libxcursor" ,libxcursor)))
4454 `(#:tests? #f ;there are no tests
4456 (list (string-append "-DCMAKE_CXX_FLAGS=-I"
4457 (assoc-ref %build-inputs "freetype")
4458 "/include/freetype2"))))
4459 (home-page "https://openshot.org")
4460 (synopsis "Audio editing and playback for OpenShot")
4461 (description "OpenShot Audio Library (libopenshot-audio) allows
4462 high-quality editing and playback of audio, and is based on the JUCE
4464 (license license:lgpl3+)))
4466 (define-public faudio
4474 (url "https://github.com/FNA-XNA/FAudio")
4476 (file-name (git-file-name name version))
4478 (base32 "1g3zp7igh4ns31sqnxddxqhgibijngkbcqqsj23i9d1lah6k4747"))))
4480 '(#:tests? #f ; No tests.
4481 #:configure-flags '("-DGSTREAMER=ON")))
4482 (build-system cmake-build-system)
4483 (native-inputs `(("pkg-config" ,pkg-config)))
4484 (inputs `(("gstreamer" ,gstreamer)
4485 ("gst-plugins-base" ,gst-plugins-base)
4487 (home-page "https://github.com/FNA-XNA/FAudio")
4488 (synopsis "XAudio reimplementation")
4489 (description "FAudio is an XAudio reimplementation that focuses solely on
4490 developing fully accurate DirectX Audio runtime libraries.")
4493 ;; stb & utils/{ui,wav}common are dual-licenced under either of:
4495 license:public-domain))))
4497 (define-public gnaural
4500 (version "20110606")
4504 (uri (string-append "mirror://sourceforge/gnaural/Gnaural/gnaural_"
4508 "1gq519c0imsh57zklyi0f8h64l3ai48lh672c834470z8c6kvbfi"))))
4509 (build-system gnu-build-system)
4511 `(("alsa-lib" ,alsa-lib)
4513 ("libsndfile" ,libsndfile)
4514 ("portaudio" ,portaudio)))
4516 `(("pkg-config" ,pkg-config)))
4517 (home-page "http://gnaural.sourceforge.net/")
4518 (synopsis "Binaural beat synthesizer")
4519 (description "Gnaural is a programmable auditory binaural beat synthesizer
4520 intended to be used for brainwave entrainment. Gnaural supports creation of
4521 binaural beat tracks of different frequencies and exporting of tracks into
4522 different audio formats. Gnaural can also be linked over the internet with
4523 other Gnaural instances, allowing synchronous sessions between many users.")
4524 (license license:gpl2+)))
4526 (define-public darkice
4532 (uri (string-append "https://github.com/rafael2k/darkice/releases/"
4533 "download/v" version "/darkice-"
4537 "05yq7lggxygrkd76yiqby3msrgdn082p0qlvmzzv9xbw8hmyra76"))))
4538 (build-system gnu-build-system)
4539 (native-inputs `(("pkg-config" ,pkg-config)))
4540 (inputs `(("lame" ,lame)
4541 ("libvorbis" ,libvorbis)
4543 ("twolame" ,twolame)
4544 ("alsa-lib" ,alsa-lib)
4545 ("pulseaudio" ,pulseaudio)
4547 ("libsamplerate" ,libsamplerate)))
4550 (list (string-append "--with-lame-prefix="
4551 (assoc-ref %build-inputs "lame")))))
4552 (home-page "http://www.darkice.org/")
4553 (synopsis "Live audio streamer")
4554 (description "DarkIce is a live audio streamer. It takes audio input from
4555 a sound card, encodes it into Ogg Vorbis and/or mp3, and sends the audio
4556 stream to one or more IceCast and/or ShoutCast servers.")
4557 (license license:gpl3+)))
4559 (define-public libltc
4567 (string-append "https://github.com/x42/libltc/releases/download/v"
4568 version "/libltc-" version ".tar.gz"))
4571 "173h9dgmain3nyrwk6q2d7yl4fnh4vacag4s2p01n5b7nyrkxrjh"))))
4572 (build-system gnu-build-system)
4574 `(#:parallel-tests? #f)) ;tests fail otherwise
4576 `(("doxygen" ,doxygen)
4577 ("pkg-config" ,pkg-config)))
4578 (synopsis "Encode or decode Linear/Longitudinal Time Code (LTC) audio")
4579 (description "Libltc is a POSIX-C Library for handling
4580 @dfn{Linear/Longitudinal Time Code} (LTC) data.")
4581 (home-page "https://x42.github.io/libltc/")
4582 (license license:lgpl3+)))
4584 (define-public ttaenc
4591 (uri (string-append "mirror://sourceforge/tta/"
4593 "/ttaenc-" version "-src.tgz"))
4596 "1iixpr4b89g9g1hwn8ak8k8iflcww3r5f09a117qdidc2nqcijdj"))))
4597 (build-system gnu-build-system)
4599 `(#:tests? #f ;no tests
4601 (list (string-append "CC=" ,(cc-for-target))
4602 (string-append "INSDIR=" (assoc-ref %outputs "out") "/bin"))
4604 (modify-phases %standard-phases
4605 (delete 'configure) ; no configure
4606 (add-before 'install 'make-bindir
4607 (lambda* (#:key outputs #:allow-other-keys)
4608 (let* ((out (assoc-ref outputs "out")))
4609 (mkdir-p (string-append out "/bin"))
4611 (synopsis "TTA lossless audio encoder")
4613 "TTA performs lossless compression on multichannel 8,16 and 24 bits
4614 data of the Wav audio files. Being lossless means that no data-
4615 quality is lost in the compression - when uncompressed, the data will
4616 be identical to the original. The compression ratios of TTA depend on
4617 the type of music file being compressed, but the compression size
4618 will generally range between 30% - 70% of the original. TTA format
4619 supports both of ID3v1/v2 and APEv2 tags.")
4620 (home-page "http://tausoft.org/")
4621 (license license:gpl2+)))
4623 (define-public libsoundio
4631 (url "https://github.com/andrewrk/libsoundio")
4633 (file-name (git-file-name name version))
4636 "12l4rvaypv87vigdrmjz48d4d6sq4gfxf5asvnc4adyabxb73i4x"))))
4637 (build-system cmake-build-system)
4639 `(#:tests? #f)) ;no tests included
4641 `(("alsa-lib" ,alsa-lib)
4643 ("pulseaudio" ,pulseaudio)))
4645 `(("pkg-config" ,pkg-config)))
4646 (home-page "http://libsound.io")
4647 (synopsis "C library for real-time audio input and output")
4648 (description "@code{libsoundio} is a C library providing audio input and
4649 output. The API is suitable for real-time software such as digital audio
4650 workstations as well as consumer software such as music players.")
4651 (license license:expat)))
4653 (define-public redkite
4661 (url "https://gitlab.com/iurie-sw/redkite")
4662 (commit (string-append "v" version))))
4663 (file-name (git-file-name name version))
4665 (base32 "16j9zp5i7svq3g38rfb6h257qfgnd2brrxi7cjd2pdax9xxwj40y"))))
4666 (build-system cmake-build-system)
4668 `(#:tests? #f)) ;no tests included
4670 `(("cairo" ,cairo)))
4672 `(("pkg-config" ,pkg-config)))
4673 (synopsis "Small GUI toolkit")
4674 (description "Redkite is a small GUI toolkit developed in C++17 and
4675 inspired from other well known GUI toolkits such as Qt and GTK. It is
4676 minimal on purpose and is intended to be statically linked to applications,
4677 therefore satisfying any requirements they may have to be self contained,
4678 as is the case with audio plugins.")
4679 (home-page "https://gitlab.com/geontime/redkite")
4680 (license license:gpl3+)))
4682 (define-public carla
4691 (url "https://github.com/falkTX/Carla")
4692 (commit (string-append "v" version))))
4693 (file-name (git-file-name name version))
4696 "0c3y4a6cgi4bv1mg57i3qn5ia6pqjqlaylvkapj6bmpsw71ig22g"))))
4697 (build-system gnu-build-system)
4699 `(#:tests? #f ; no "check" target
4701 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
4703 (modify-phases %standard-phases
4704 (delete 'configure) ; no configure script
4705 (add-before 'build 'set-CC-variable-and-show-features
4708 (invoke "make" "features")))
4709 (add-after 'install 'make-carla-executable
4710 (lambda* (#:key outputs #:allow-other-keys)
4711 (let ((out (assoc-ref outputs "out")))
4712 (chmod (string-append out "/share/carla/carla") #o555)
4714 (add-after 'install 'wrap-executables
4715 (lambda* (#:key outputs #:allow-other-keys)
4716 (let ((out (assoc-ref outputs "out")))
4717 (wrap-script (string-append out "/bin/carla")
4718 `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH"))))
4721 `(("alsa-lib" ,alsa-lib)
4723 ("fluidsynth" ,fluidsynth)
4726 ("libsndfile" ,libsndfile)
4727 ("gtk2" ,gtk+-2) ;needed for bridging GTK2 plugins in GTK3 hosts
4729 ("python-pyliblo" ,python-pyliblo)
4730 ("python-pyqt" ,python-pyqt)
4731 ("python-rdflib" ,python-rdflib)
4732 ;; python-pyqt shows the following error without python-wrapper:
4733 ;; Error while finding module specification for 'PyQt5.uic.pyuic'
4734 ;; (ModuleNotFoundError: No module named 'PyQt5')
4735 ("python-wrapper" ,python-wrapper)
4740 ;; For WRAP-SCRIPT above.
4741 ("guile" ,guile-2.2)))
4743 `(("pkg-config" ,pkg-config)))
4744 (home-page "https://kx.studio/Applications:Carla")
4745 (synopsis "Audio plugin host")
4746 (description "Carla is a modular audio plugin host, with features like
4747 transport control, automation of parameters via MIDI CC and remote control
4748 over OSC. Carla currently supports LADSPA (including LRDF), DSSI, LV2, VST2,
4749 and VST3 plugin formats, plus SF2 and SFZ file support. It uses JACK as the
4750 default and preferred audio driver but also supports native drivers like ALSA.")
4751 (license license:gpl2+)))
4753 (define-public ecasound
4759 (uri (string-append "https://nosignal.fi/download/ecasound-"
4762 (base32 "1m7njfjdb7sqf0lhgc4swihgdr4snkg8v02wcly08wb5ar2fr2s6"))))
4763 (build-system gnu-build-system)
4764 (native-inputs `(("pkg-config" ,pkg-config)))
4765 ;; It would be nice to add mikmod to inputs if that gets packaged
4767 (inputs `(("alsa-lib" ,alsa-lib)
4771 ("vorbis-tools" ,vorbis-tools)
4774 ("timidity++" ,timidity++)
4775 ("libsndfile" ,libsndfile)
4776 ("libsamplerate" ,libsamplerate)
4777 ("ncurses" ,ncurses)
4780 (home-page "https://nosignal.fi/ecasound/index.php")
4781 (synopsis "Multitrack audio processing")
4782 (description "Ecasound is a software package designed for multitrack audio
4783 processing. It can be used for simple tasks like audio playback, recording and
4784 format conversions, as well as for multitrack effect processing, mixing,
4785 recording and signal recycling. Ecasound supports a wide range of audio inputs,
4786 outputs and effect algorithms. Effects and audio objects can be combined in
4787 various ways, and their parameters can be controlled by operator objects like
4788 oscillators and MIDI-CCs. A versatile console mode user-interface is included
4790 ;; As an exception to the above, the C, C++ and python implementations
4791 ;; of the Ecasound Control Interface (ECI) are licensed under the LGPL
4792 ;; (see the file 'COPYING.LGPL'). This allows writing ECI applications
4793 ;; that are not licensed under GPL.
4794 (license (list license:gpl2 license:lgpl2.1))))
4796 (define-public libaudec
4804 (url "https://git.zrythm.org/git/libaudec")
4805 (commit (string-append "v" version))))
4806 (file-name (git-file-name name version))
4809 "1570m2dfia17dbkhd2qhx8jjihrpm7g8nnyg6n4wif4vv229s7dz"))))
4810 (build-system meson-build-system)
4812 `(#:meson ,meson-0.55
4817 `(("libsamplerate" ,libsamplerate)
4818 ("libsndfile" ,libsndfile)))
4820 `(("pkg-config" ,pkg-config)))
4821 (synopsis "Library for reading and resampling audio files")
4822 (description "libaudec is a wrapper library over ffmpeg, sndfile and
4823 libsamplerate for reading and resampling audio files, based on Robin Gareus'
4824 @code{audio_decoder} code.")
4825 (home-page "https://git.zrythm.org/cgit/libaudec")
4826 (license license:agpl3+)))
4828 (define-public lv2lint
4836 (url "https://git.open-music-kontrollers.ch/lv2/lv2lint")
4838 (file-name (git-file-name name version))
4841 "1jrka0hsn4n1clri7zfkcl3c2vi52144lkpjm81l51ff8rqy8ks1"))))
4842 (build-system meson-build-system)
4845 `("-Delf-tests=true" ; for checking symbol visibility
4846 "-Donline-tests=true"))) ; for checking URI existence
4852 `(("pkg-config" ,pkg-config)))
4853 (synopsis "LV2 plugin lint tool")
4854 (description "lv2lint is an LV2 lint-like tool that checks whether a
4855 given plugin and its UI(s) match up with the provided metadata and adhere
4856 to well-known best practices.")
4857 (home-page "https://open-music-kontrollers.ch/lv2/lv2lint/")
4858 (license license:artistic2.0)))
4860 (define-public lv2toweb
4868 (url "https://github.com/x42/lv2toweb")
4869 (commit (string-append "v" version))))
4870 (file-name (git-file-name name version))
4873 "007aysqvgkf25za8nkmyd5g9kp1zla460dcpidlj5xg1zc3fcdfi"))))
4874 (build-system gnu-build-system)
4876 `(#:tests? #f ; no "check" target
4877 #:make-flags (list "CC=gcc"
4878 (string-append "PREFIX=" (assoc-ref %outputs "out")))
4880 (modify-phases %standard-phases
4881 (delete 'configure))))
4886 `(("help2man" ,help2man)
4887 ("pkg-config" ,pkg-config)))
4888 (synopsis "Documentation generator for LV2 plugins")
4890 "lv2toweb allows the user to create an xhtml page with information
4891 about the given LV2 plugin, provided that the plugin and its UI(s) match up
4892 with the provided metadata and adhere to well-known best practices.")
4893 (home-page "https://github.com/x42/lv2toweb")
4894 (license (list license:isc license:gpl2))))
4896 (define-public ztoolkit
4904 (url "https://git.zrythm.org/git/ztoolkit")
4905 (commit (string-append "v" version))))
4906 (file-name (git-file-name name version))
4909 "07xl3cmdaf7k9mm58m93cn8i1jvgimmiifdw1w7v2jl88nx60pm1"))))
4910 (build-system meson-build-system)
4912 `(("pkg-config" ,pkg-config)))
4913 ;; These are listed as propagated inputs because they are dependencies
4917 ("libx11" ,libx11)))
4918 (synopsis "GUI toolkit for LV2 plugins")
4919 (description "ZToolkit (Ztk) is a cross-platform GUI toolkit heavily
4920 inspired by GTK. It handles events and low level drawing on behalf of
4921 the user and provides a high-level API for managing the UI and custom
4922 widgets. ZToolkit is written in C and was created to be used for building
4923 audio plugin UIs, where the dependencies often need to be kept to a
4925 (home-page "https://git.zrythm.org/cgit/ztoolkit/")
4926 (license license:agpl3+)))
4928 (define-public libinstpatch
4930 (name "libinstpatch")
4936 (url "https://github.com/swami/libinstpatch")
4937 (commit (string-append "v" version))))
4938 (file-name (git-file-name name version))
4940 (base32 "1w3nk0vvd1cxic70n45zjip0bdsrja969myvyvkhq3ngbarbykir"))))
4941 (build-system cmake-build-system)
4943 `(#:tests? #f)) ;there are no tests
4945 `(("glib:bin" ,glib "bin")
4946 ("pkg-config" ,pkg-config)))
4949 ("libsndfile" ,libsndfile)))
4950 (home-page "http://www.swamiproject.org/")
4951 (synopsis "Instrument file software library")
4953 "libInstPatch is a library for processing digital sample based MIDI
4954 instrument \"patch\" files. The types of files libInstPatch supports are used
4955 for creating instrument sounds for wavetable synthesis. libInstPatch provides
4956 an object framework (based on GObject) to load patch files, which can then be
4957 edited, converted, compressed and saved.")
4958 (license license:lgpl2.1)))
4960 (define-public ztoolkit-rsvg
4961 (package/inherit ztoolkit
4962 (name "ztoolkit-rsvg")
4964 `(#:configure-flags `("-Denable_rsvg=true")))
4966 `(("librsvg" ,librsvg)
4967 ,@(package-propagated-inputs ztoolkit)))
4968 (synopsis "ZToolkit with SVG support")))
4970 (define-public lsp-dsp-lib
4972 (name "lsp-dsp-lib")
4977 (uri (string-append "https://github.com/sadko4u/lsp-dsp-lib/"
4978 "releases/download/" version
4979 "/lsp-dsp-lib-" version "-src.tar.gz"))
4981 (base32 "0lkar6r9jfrrqswi8nnndlm5a9kfwqjn92d81gp2yhc3p46xsswz"))))
4982 (build-system gnu-build-system)
4984 `(#:tests? #f ; no tests
4986 (list (string-append "CC=" ,(cc-for-target)))
4988 (modify-phases %standard-phases
4989 (add-after 'unpack 'omit-static-library
4991 (substitute* "src/Makefile"
4992 ((".*@.*ARTIFACT_SLIB.*") "") ; don't install it
4993 ((" \\$\\(ARTIFACT_SLIB\\)") "")))) ; don't build it
4995 (lambda* (#:key outputs #:allow-other-keys)
4996 (invoke "make" "config"
4997 (string-append "PREFIX=" (assoc-ref outputs "out"))))))))
4998 (home-page "https://github.com/sadko4u/lsp-dsp-lib")
4999 (synopsis "Digital signal processing library")
5000 (description "The LSP DSP library provides a set of functions that perform
5001 SIMD-optimized computing on several hardware architectures. All functions
5002 currently operate on IEEE-754 single-precision floating-point numbers.")
5003 (license license:lgpl3+)))
5005 (define-public codec2
5013 (url "https://github.com/drowe67/codec2")
5014 (commit (string-append "v" version))))
5015 (file-name (git-file-name name version))
5017 (base32 "1jpvr7bra8srz8jvnlbmhf8andbaavq5v01qjnp2f61za93rzwba"))))
5018 (build-system cmake-build-system)
5022 ("valgrind" ,valgrind)))
5024 `(#:tests? #f ; TODO: Fix tests (paths, graphic toolkit, octave modules).
5026 (modify-phases %standard-phases
5027 (add-before 'check 'set-test-environment
5029 (setenv "HOME" "/tmp")
5031 (synopsis "Speech codec")
5033 "Codec 2 is a speech codec designed for communications quality speech
5034 between 700 and 3200 bit/s. The main application is low bandwidth HF/VHF
5036 (home-page "https://www.rowetel.com/?page_id=452")
5037 (license license:lgpl2.1)))
5039 (define-public ableton-link
5041 (name "ableton-link")
5046 (url "https://github.com/Ableton/link")
5047 (commit (string-append "Link-" version))))
5048 (file-name (git-file-name name version))
5051 "0262vm0v7hmqjhqx5xikh529p3c065p1yld6ymaiz74yq1dnnjir"))
5052 (modules '((guix build utils)))
5054 (search-patches "ableton-link-system-libraries-debian.patch"))
5057 ;; Tests assume that CMake's "build" directory is a
5058 ;; sub-directory of the source tree, so we fix it.
5059 (substitute* "ci/run-tests.py"
5060 (("root_dir,") "root_dir, os.pardir,"))
5061 ;; Unbundle dependencies.
5062 (delete-file-recursively "third_party")
5063 (delete-file-recursively "modules")
5065 (build-system cmake-build-system)
5067 `(("catch" ,catch-framework)
5068 ("python" ,python) ;for running tests
5069 ("portaudio" ,portaudio) ;for portaudio examples
5070 ("qtbase" ,qtbase) ;for Qt examples
5071 ("qtdeclarative" ,qtdeclarative)
5072 ("qttools" ,qttools)))
5074 `(("jack" ,jack-1) ;for JACK examples
5075 ("qtquickcontrols" ,qtquickcontrols))) ;for Qt examples
5077 ;; This is because include/ableton/platforms/asio/AsioWrapper.hpp
5078 ;; contains '#include <asio.hpp>'.
5082 '("-DLINK_BUILD_QT_EXAMPLES=ON"
5083 "-DLINK_BUILD_JACK=ON")
5085 (modify-phases %standard-phases
5087 (lambda* (#:key inputs #:allow-other-keys)
5088 (let* ((python (string-append (assoc-ref inputs "python")
5090 (run-tests (string-append "../ableton-link-"
5092 "-checkout/ci/run-tests.py")))
5093 (invoke python run-tests "--target" "LinkCoreTest")
5094 (invoke python run-tests "--target" "LinkDiscoveryTest"))))
5095 (add-before 'install 'patch-cmake
5096 (lambda* (#:key inputs #:allow-other-keys)
5097 (let* ((source (string-append "../ableton-link-"
5100 (substitute* (string-append source
5101 "cmake_include/AsioStandaloneConfig.cmake")
5102 (((string-append "\\$\\{CMAKE_CURRENT_LIST_DIR\\}/\\.\\./"
5103 "modules/asio-standalone/asio/include"))
5104 (string-append (assoc-ref inputs "asio")
5106 (substitute* (string-append source "AbletonLinkConfig.cmake")
5107 (("\\$\\{CMAKE_CURRENT_LIST_DIR\\}/include")
5108 "${CMAKE_CURRENT_LIST_DIR}/../../../include")
5109 (("\\$\\{CMAKE_CURRENT_LIST_DIR\\}/include/ableton/Link\\.hpp")
5110 "${CMAKE_CURRENT_LIST_DIR}/../../../include/ableton/Link.hpp"))
5113 (lambda* (#:key outputs #:allow-other-keys)
5114 (let* ((out (assoc-ref outputs "out"))
5115 (bin (string-append out "/bin"))
5116 (lib-cmake (string-append out "/lib/cmake/ableton-link"))
5117 (source (string-append "../ableton-link-" ,version "-checkout")))
5118 (for-each (lambda (test-file)
5119 (delete-file test-file))
5120 '("bin/LinkDiscoveryTest" "bin/LinkCoreTest"))
5121 (copy-recursively "bin" bin)
5122 (copy-recursively (string-append source "/include/ableton")
5123 (string-append out "/include/ableton"))
5124 (install-file (string-append source "/AbletonLinkConfig.cmake")
5126 (install-file (string-append source
5127 "/cmake_include/AsioStandaloneConfig.cmake")
5128 (string-append lib-cmake "/cmake_include"))
5130 (home-page "https://github.com/Ableton/link")
5131 (synopsis "Synchronize musical beat, tempo, and phase across multiple applications")
5133 "Ableton Link is a C++ library that synchronizes musical beat, tempo, and phase
5134 across multiple applications running on one or more devices. Applications on devices
5135 connected to a local network discover each other automatically and form a musical
5136 session in which each participant can perform independently: anyone can start or stop
5137 while still staying in time.")
5138 (license license:gpl2+)))
5146 (uri (string-append "mirror://sourceforge/butt/butt/butt-"
5147 version "/butt-" version ".tar.gz"))
5150 "0nbz0z4d7krvhmnwn10594gwc61gn2dlb5fazmynjfisrfdswqlg"))))
5151 (build-system gnu-build-system)
5154 (modify-phases %standard-phases
5155 (add-after 'install 'install-documentation
5156 (lambda* (#:key inputs outputs #:allow-other-keys)
5157 (let* ((out (assoc-ref outputs "out"))
5158 (manual (assoc-ref inputs "manual"))
5159 (doc (string-append out "/share/doc/" ,name "-" ,version)))
5160 (install-file "README" doc)
5161 (copy-file manual (string-append doc "/butt-manual.pdf"))))))))
5168 ("libsamplerate" ,libsamplerate)
5169 ("libvorbis" ,libvorbis)
5171 ("libxext" ,libxext)
5172 ("libxfixes" ,libxfixes)
5174 ("libxrender" ,libxrender)
5176 ("openssl" ,openssl)
5178 ("portaudio" ,portaudio)))
5180 `(("pkg-config" ,pkg-config)
5183 (uri (string-append "https://danielnoethen.de/butt/butt-"
5184 version "_manual.pdf"))
5187 "1hhgdhdg5s86hjcbwh856gcd3kcch0i5xgi3i3v02zz3xmzl7gg3"))))))
5188 (home-page "https://danielnoethen.de/butt/")
5189 (synopsis "Audio streaming tool")
5190 (description "Butt is a tool to stream audio to a ShoutCast or
5192 (license license:gpl2+)))