linux-container: Do not add %CONTAINER-FILE-SYSTEMS to Docker image OSes.
[guix.git] / gnu / packages / audio.scm
blobc897e30458b837b1dce64c658776931db607f677
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
3 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
4 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
5 ;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
6 ;;; Copyright © 2015, 2016 Mark H Weaver <mhw@netris.org>
7 ;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
8 ;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com>
9 ;;; Copyright © 2016 ng0 <ng0@n0.is>
10 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
11 ;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
12 ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
13 ;;; Copyright © 2018 okapi <okapi@firemail.cc>
14 ;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
15 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
16 ;;; Copyright © 2018 Brett Gilio <brettg@posteo.net>
17 ;;; Copyright © 2018, 2019 Marius Bakke <mbakke@fastmail.com>
18 ;;; Copyright © 2018 Thorsten Wilms <t_w_@freenet.de>
19 ;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
20 ;;; Copyright © 2018 Brendan Tildesley <mail@brendan.scot>
21 ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
22 ;;; Copyright © 2019 Leo Famulari <leo@famulari.name>
23 ;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
24 ;;;
25 ;;; This file is part of GNU Guix.
26 ;;;
27 ;;; GNU Guix is free software; you can redistribute it and/or modify it
28 ;;; under the terms of the GNU General Public License as published by
29 ;;; the Free Software Foundation; either version 3 of the License, or (at
30 ;;; your option) any later version.
31 ;;;
32 ;;; GNU Guix is distributed in the hope that it will be useful, but
33 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
34 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
35 ;;; GNU General Public License for more details.
36 ;;;
37 ;;; You should have received a copy of the GNU General Public License
38 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
40 (define-module (gnu packages audio)
41   #:use-module (guix packages)
42   #:use-module (guix download)
43   #:use-module (guix git-download)
44   #:use-module (guix utils)
45   #:use-module ((guix licenses) #:prefix license:)
46   #:use-module (guix build-system gnu)
47   #:use-module (guix build-system waf)
48   #:use-module (guix build-system trivial)
49   #:use-module (guix build-system cmake)
50   #:use-module (guix build-system python)
51   #:use-module (guix build-system glib-or-gtk)
52   #:use-module (gnu packages)
53   #:use-module (gnu packages algebra)
54   #:use-module (gnu packages autotools)
55   #:use-module (gnu packages avahi)
56   #:use-module (gnu packages boost)
57   #:use-module (gnu packages backup)
58   #:use-module (gnu packages base)
59   #:use-module (gnu packages bison)
60   #:use-module (gnu packages check)
61   #:use-module (gnu packages compression)
62   #:use-module (gnu packages curl)
63   #:use-module (gnu packages dbm)
64   #:use-module (gnu packages emacs)
65   #:use-module (gnu packages file)
66   #:use-module (gnu packages flex)
67   #:use-module (gnu packages fltk)
68   #:use-module (gnu packages fontutils)
69   #:use-module (gnu packages gettext)
70   #:use-module (gnu packages glib)
71   #:use-module (gnu packages gtk)
72   #:use-module (gnu packages gnome)
73   #:use-module (gnu packages gnunet) ; libmicrohttpd
74   #:use-module (gnu packages gperf)
75   #:use-module (gnu packages icu4c)
76   #:use-module (gnu packages image)
77   #:use-module (gnu packages ncurses)
78   #:use-module (gnu packages qt)
79   #:use-module (gnu packages libbsd)
80   #:use-module (gnu packages linux)
81   #:use-module (gnu packages libusb)
82   #:use-module (gnu packages llvm)
83   #:use-module (gnu packages mp3) ;taglib
84   #:use-module (gnu packages perl)
85   #:use-module (gnu packages pkg-config)
86   #:use-module (gnu packages pulseaudio)  ;libsndfile, libsamplerate
87   #:use-module (gnu packages python)
88   #:use-module (gnu packages python-xyz)
89   #:use-module (gnu packages rdf)
90   #:use-module (gnu packages readline)
91   #:use-module (gnu packages sdl)
92   #:use-module (gnu packages serialization)
93   #:use-module (gnu packages telephony)
94   #:use-module (gnu packages tls)
95   #:use-module (gnu packages video)
96   #:use-module (gnu packages vim) ;xxd
97   #:use-module (gnu packages webkit)
98   #:use-module (gnu packages wxwidgets)
99   #:use-module (gnu packages xiph)
100   #:use-module (gnu packages xml)
101   #:use-module (gnu packages xorg)
102   #:use-module (gnu packages maths)
103   #:use-module (gnu packages multiprecision)
104   #:use-module (gnu packages music)
105   #:use-module (srfi srfi-1)
106   #:use-module (srfi srfi-26))
108 (define-public alsa-modular-synth
109   (package
110     (name "alsa-modular-synth")
111     (version "2.1.2")
112     (source (origin
113               (method url-fetch)
114               (uri (string-append "mirror://sourceforge/alsamodular/alsamodular"
115                                   "/" version "/ams-" version ".tar.bz2"))
116               (sha256
117                (base32
118                 "1azbrhpfk4nnybr7kgmc7w6al6xnzppg853vas8gmkh185kk11l0"))))
119     (build-system gnu-build-system)
120     (arguments
121      `(#:configure-flags
122        '("--enable-qt5"
123          "CXXFLAGS=-std=gnu++11")
124        #:phases
125        (modify-phases %standard-phases
126          ;; Insert an extra space between linker flags.
127          (add-before 'configure 'add-missing-space
128            (lambda _
129              (substitute* "configure"
130                (("LIBS\\+=\\$LIBSsave") "LIBS+=\" $LIBSsave\"")
131                (("CFLAGS\\+=\\$CFLAGSsave") "CFLAGS+=\" $CFLAGSsave\""))
132              #t)))))
133     (inputs
134      `(("alsa-lib" ,alsa-lib)
135        ;; We cannot use zita-alsa-pcmi (the successor of clalsadrv) due to
136        ;; license incompatibility.
137        ("clalsadrv" ,clalsadrv)
138        ("fftw" ,fftw)
139        ("jack" ,jack-1)
140        ("ladspa" ,ladspa)
141        ("liblo" ,liblo)
142        ("qtbase" ,qtbase)
143        ("qttools" ,qttools)))
144     (native-inputs
145      `(("pkg-config" ,pkg-config)))
146     (home-page "http://alsamodular.sourceforge.net/")
147     (synopsis "Realtime modular synthesizer and effect processor")
148     (description
149      "AlsaModularSynth is a digital implementation of a classical analog
150 modular synthesizer system.  It uses virtual control voltages to control the
151 parameters of the modules.  The control voltages which control the frequency
152 e.g. of the VCO (Voltage Controlled Oscillator) and VCF (Voltage Controlled
153 Filter) modules follow the convention of 1V / Octave.")
154     (license license:gpl2)))
156 (define-public aubio
157   (package
158     (name "aubio")
159     (version "0.4.9")
160     (source (origin
161              (method url-fetch)
162              (uri (string-append
163                    "https://aubio.org/pub/aubio-" version ".tar.bz2"))
164              (sha256
165               (base32
166                "1npks71ljc48w6858l9bq30kaf5nph8z0v61jkfb70xb9np850nl"))))
167     (build-system waf-build-system)
168     (arguments
169      `(#:tests? #f                      ; no check target
170        #:configure-flags
171        (list
172         (string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") "/lib")
173         "--enable-fftw3f"
174         "--enable-jack"
175         "--enable-sndfile"
176         "--enable-samplerate"
177         ;; TODO: enable compilation with avcodec once available.
178         "--disable-avcodec")
179        #:python ,python-2))
180     (inputs
181      `(("jack" ,jack-1)
182        ("libsndfile" ,libsndfile)
183        ("libsamplerate" ,libsamplerate)
184        ("fftwf" ,fftwf)))
185     (native-inputs
186      `(("pkg-config" ,pkg-config)))
187     (home-page "https://aubio.org/")
188     (synopsis "Library for audio labelling")
189     (description
190      "aubio is a tool designed for the extraction of annotations from audio
191 signals.  Its features include segmenting a sound file before each of its
192 attacks, performing pitch detection, tapping the beat and producing MIDI
193 streams from live audio.")
194     (license license:gpl3+)))
196 (define (ardour-rpath-phase major-version)
197   `(lambda* (#:key outputs #:allow-other-keys)
198      (let ((libdir (string-append (assoc-ref outputs "out")
199                                   "/lib/ardour" ,major-version)))
200        (substitute* "wscript"
201          (("linker_flags = \\[\\]")
202           (string-append "linker_flags = [\""
203                          "-Wl,-rpath="
204                          libdir ":"
205                          libdir "/backends" ":"
206                          libdir "/engines" ":"
207                          libdir "/panners" ":"
208                          libdir "/surfaces" ":"
209                          libdir "/vamp" "\"]"))))
210      #t))
212 (define-public ardour
213   (package
214     (name "ardour")
215     (version "5.12")
216     (source (origin
217               (method git-fetch)
218               (uri (git-reference
219                     (url "https://git.ardour.org/ardour/ardour.git")
220                     (commit version)))
221               (snippet
222                ;; Ardour expects this file to exist at build time.  The revision
223                ;; is the output of
224                ;;    git describe HEAD | sed 's/^[A-Za-z]*+//'
225                `(call-with-output-file
226                     "libs/ardour/revision.cc"
227                   (lambda (port)
228                     (format port ,(string-append "#include \"ardour/revision.h\"
229 namespace ARDOUR { const char* revision = \"" version "\" ; }"))
230                     #t)))
231               (sha256
232                (base32
233                 "0mla5lm51ryikc2rrk53max2m7a5ds6i1ai921l2h95wrha45nkr"))
234               (file-name (string-append name "-" version))))
235     (build-system waf-build-system)
236     (arguments
237      `(#:configure-flags '("--cxx11"          ; required by gtkmm
238                            "--no-phone-home"  ; don't contact ardour.org
239                            "--freedesktop"    ; build .desktop file
240                            "--test")          ; build unit tests
241        #:phases
242        (modify-phases %standard-phases
243          (add-after 'unpack 'set-rpath-in-LDFLAGS
244           ,(ardour-rpath-phase (version-major version)))
245          (add-after 'install 'install-freedesktop-files
246            (lambda* (#:key outputs #:allow-other-keys)
247              (let* ((out   (assoc-ref outputs "out"))
248                     (share (string-append out "/share"))
249                     (ver   ,(version-major version)))
250                (for-each
251                  (lambda (size)
252                    (let ((dir (string-append share "/icons/hicolor/"
253                                              size "x" size "/apps")))
254                      (mkdir-p dir)
255                      (copy-file
256                        (string-append "gtk2_ardour/resources/Ardour-icon_"
257                                       size "px.png")
258                        (string-append dir "/ardour" ver ".png"))))
259                  '("16" "22" "32" "48" "256"))
260                (install-file (string-append "build/gtk2_ardour/ardour"
261                                             ver ".desktop")
262                              (string-append share "/applications/"))
263                (install-file (string-append "build/gtk2_ardour/ardour"
264                                             ver ".appdata.xml")
265                              (string-append share "/appdata/")))
266              #t)))
267        #:test-target "test"
268        #:python ,python-2))
269     (inputs
270      `(("alsa-lib" ,alsa-lib)
271        ("atkmm" ,atkmm)
272        ("aubio" ,aubio)
273        ("boost" ,boost)
274        ("cairomm" ,cairomm)
275        ("curl" ,curl)
276        ("eudev" ,eudev)
277        ("fftw" ,fftw)
278        ("fftwf" ,fftwf)
279        ("flac" ,flac)
280        ("glibmm" ,glibmm)
281        ("gtkmm" ,gtkmm-2)
282        ("jack" ,jack-1)
283        ("libarchive" ,libarchive)
284        ("libart-lgpl" ,libart-lgpl)
285        ("libgnomecanvasmm" ,libgnomecanvasmm)
286        ("liblo" ,liblo)
287        ("libogg" ,libogg)
288        ("libsamplerate" ,libsamplerate)
289        ("libsndfile" ,libsndfile)
290        ("libusb" ,libusb)
291        ("libvorbis" ,libvorbis)
292        ("libxml2" ,libxml2)
293        ("lilv" ,lilv)
294        ("lrdf" ,lrdf)
295        ("lv2" ,lv2)
296        ("pangomm" ,pangomm)
297        ("python-rdflib" ,python-rdflib)
298        ("readline" ,readline)
299        ("redland" ,redland)
300        ("rubberband" ,rubberband)
301        ("serd" ,serd)
302        ("sord" ,sord)
303        ("sratom" ,sratom)
304        ("suil" ,suil)
305        ("taglib" ,taglib)
306        ("vamp" ,vamp)))
307     (native-inputs
308      `(("cppunit" ,cppunit)
309        ("gettext" ,gettext-minimal)
310        ("itstool" ,itstool)
311        ("perl" ,perl)
312        ("pkg-config" ,pkg-config)))
313     (home-page "http://ardour.org")
314     (synopsis "Digital audio workstation")
315     (description
316      "Ardour is a multi-channel digital audio workstation, allowing users to
317 record, edit, mix and master audio and MIDI projects.  It is targeted at audio
318 engineers, musicians, soundtrack editors and composers.")
319     (license license:gpl2+)))
321 (define-public audacity
322   (package
323     (name "audacity")
324     (version "2.2.2")
325     (source
326      (origin
327        (method git-fetch)
328        (uri (git-reference
329              (url "https://github.com/audacity/audacity.git")
330              (commit (string-append "Audacity-" version))))
331        (file-name (git-file-name name version))
332        (sha256
333         (base32
334          "10maxmjxbmjybj7n4m7a9bbm7g8xxw8f8vbsf7c9ih5j2gr15ihs"))
335        (patches (search-patches "audacity-build-with-system-portaudio.patch"))
336        (modules '((guix build utils)))
337        (snippet
338         ;; Remove bundled libraries.
339         '(begin
340            (for-each
341             (lambda (dir)
342               (delete-file-recursively (string-append "lib-src/" dir)))
343             '("expat" "ffmpeg" "libflac" "libid3tag" "libmad" "libogg"
344               "libsndfile" "libsoxr" "libvamp" "libvorbis" "lv2"
345               "portaudio-v19" "portmidi" "soundtouch" "twolame"
346               ;; FIXME: these libraries have not been packaged yet:
347               ;; "libnyquist"
348               ;; "libscorealign"
349               ;; "libwidgetextra"
350               ;; "portburn"
351               ;; "portsmf"
352               ;; "portmixer"
354               ;; FIXME: we have this library, but it differs in that the Slide
355               ;; class does not have a member "getInverseStretchedTime".
356               ;; "sbsms"
357               ))
358            #t))))
359     (build-system glib-or-gtk-build-system)
360     (inputs
361      `(("wxwidgets" ,wxwidgets)
362        ("gtk+" ,gtk+)
363        ("alsa-lib" ,alsa-lib)
364        ("jack" ,jack-1)
365        ("expat" ,expat)
366        ("ffmpeg" ,ffmpeg)
367        ("lame" ,lame)
368        ("flac" ,flac)
369        ("libid3tag" ,libid3tag)
370        ("libmad" ,libmad)
371        ;;("libsbsms" ,libsbsms)         ;bundled version is modified
372        ("libsndfile" ,libsndfile)
373        ("soundtouch" ,soundtouch)
374        ("soxr" ,soxr)                   ;replaces libsamplerate
375        ("twolame" ,twolame)
376        ("vamp" ,vamp)
377        ("libvorbis" ,libvorbis)
378        ("lv2" ,lv2)
379        ("lilv" ,lilv)                   ;for lv2
380        ("suil" ,suil)                   ;for lv2
381        ("portaudio" ,portaudio)
382        ("portmidi" ,portmidi)))
383     (native-inputs
384      `(("autoconf" ,autoconf)
385        ("automake" ,automake)
386        ("gettext" ,gettext-minimal)     ;for msgfmt
387        ("libtool" ,libtool)
388        ("pkg-config" ,pkg-config)
389        ("python" ,python-2)
390        ("which" ,which)))
391     (arguments
392      `(#:configure-flags
393        (let ((libid3tag (assoc-ref %build-inputs "libid3tag"))
394              (libmad (assoc-ref %build-inputs "libmad"))
395              (portmidi (assoc-ref %build-inputs "portmidi")))
396          (list
397           ;; Loading FFmpeg dynamically is problematic.
398           "--disable-dynamic-loading"
399           ;; SSE instructions are available on Intel systems only.
400           ,@(if (any (cute string-prefix? <> (or (%current-target-system)
401                                                  (%current-system)))
402                     '("x64_64" "i686"))
403               '()
404               '("--enable-sse=no"))
405           ;; portmidi, libid3tag and libmad provide no .pc files, so
406           ;; pkg-config fails to find them.  Force their inclusion.
407           (string-append "ID3TAG_CFLAGS=-I" libid3tag "/include")
408           (string-append "ID3TAG_LIBS=-L" libid3tag "/lib -lid3tag -lz")
409           (string-append "LIBMAD_CFLAGS=-I" libmad "/include")
410           (string-append "LIBMAD_LIBS=-L" libmad "/lib -lmad")
411           (string-append "PORTMIDI_CFLAGS=-I" portmidi "/include")
412           (string-append "PORTMIDI_LIBS=-L" portmidi "/lib -lportmidi")
413           "EXPAT_USE_SYSTEM=yes"
414           "FFMPEG_USE_SYSTEM=yes"
415           "LAME_USE_SYSTEM=yes"
416           "LIBFLAC_USE_SYSTEM=yes"
417           "LIBID3TAG_USE_SYSTEM=yes"
418           "LIBMAD_USE_SYSTEM=yes"
419           "USE_LOCAL_LIBNYQUIST="      ;not packaged yet
420           ;;"LIBSBSMS_USE_SYSTEM=yes"  ;bundled version is patched
421           "LIBSNDFILE_USE_SYSTEM=yes"
422           "LIBSOUNDTOUCH_USE_SYSTEM=yes"
423           "LIBSOXR_USE_SYSTEM=yes"
424           "LIBTWOLAME_USE_SYSTEM=yes"
425           "LIBVAMP_USE_SYSTEM=yes"
426           "LIBVORBIS_USE_SYSTEM=yes"
427           "LV2_USE_SYSTEM=yes"
428           "PORTAUDIO_USE_SYSTEM=yes"))
429        #:phases
430        (modify-phases %standard-phases
431          (add-after 'unpack 'fix-sbsms-check
432            (lambda _
433              ;; This check is wrong: there is no 2.2.0 release; not even the
434              ;; bundled sources match this release string.
435              (substitute* '("m4/audacity_checklib_libsbsms.m4"
436                             "configure")
437                (("sbsms >= 2.2.0") "sbsms >= 2.0.0"))
438              #t))
439          (add-after 'unpack 'use-upstream-headers
440            (lambda* (#:key inputs #:allow-other-keys)
441              (substitute* '("src/NoteTrack.cpp"
442                             "src/AudioIO.cpp"
443                             "src/AudioIO.h")
444                (("../lib-src/portmidi/pm_common/portmidi.h") "portmidi.h")
445                (("../lib-src/portmidi/porttime/porttime.h") "porttime.h"))
446              (substitute* "src/prefs/MidiIOPrefs.cpp"
447                (("../../lib-src/portmidi/pm_common/portmidi.h") "portmidi.h"))
448              #t)))
449        ;; The test suite is not "well exercised" according to the developers,
450        ;; and fails with various errors.  See
451        ;; <http://sourceforge.net/p/audacity/mailman/message/33524292/>.
452        #:tests? #f))
453     (home-page "https://www.audacityteam.org/")
454     (synopsis "Software for recording and editing sounds")
455     (description
456      "Audacity is a multi-track audio editor designed for recording, playing
457 and editing digital audio.  It features digital effects and spectrum analysis
458 tools.")
459     (license license:gpl2+)))
461 (define-public autotalent
462   (package
463     (name "autotalent")
464     (version "0.2")
465     (source (origin
466               (method url-fetch)
467               (uri (string-append "http://tombaran.info/autotalent-"
468                                   version ".tar.gz"))
469               (sha256
470                (base32
471                 "1n04qm66f14195ly6gsy3ra7v2j7zad5n19d8dwfmh0qs6h9hphh"))))
472     (build-system gnu-build-system)
473     (arguments
474      `(#:tests? #f ; no check target
475        #:phases
476        (modify-phases %standard-phases
477          ;; no configure script
478          (delete 'configure)
479          (add-before 'install 'prepare-target-directory
480            (lambda* (#:key outputs #:allow-other-keys)
481              (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
482              #t))
483          (add-after 'unpack 'override-target-directory
484            (lambda* (#:key outputs #:allow-other-keys)
485              (substitute* "Makefile"
486                (("/usr/lib64/ladspa")
487                 (string-append (assoc-ref outputs "out") "/lib/ladspa")))
488              #t)))))
489     (inputs
490      `(("ladspa" ,ladspa)))
491     (home-page "http://tombaran.info/autotalent.html")
492     (synopsis "Pitch-correction LADSPA audio plugin")
493     (description
494      "Autotalent is a LADSPA plugin for real-time pitch-correction.  Among its
495 controls are allowable notes, strength of correction, LFO for vibrato and
496 formant warp.")
497     ;; All code except the FFT routine is licensed under GPLv2+.
498     ;; The FFT routine is under BSD-3.
499     (license license:gpl2+)))
501 (define-public azr3
502   (package
503     (name "azr3")
504     (version "1.2.3")
505     (source (origin
506               (method url-fetch)
507               (uri (string-append "mirror://savannah/ll-plugins/azr3-jack-"
508                                   version
509                                   ".tar.bz2"))
510               (sha256
511                (base32
512                 "18mdw6nc0vgj6k9rsy0x8w64wvzld0frqshrxxbxfj9qi9843vlc"))
513               (patches (search-patches "azr3.patch"))))
514     (build-system gnu-build-system)
515     (arguments
516      `(#:tests? #f ; no check target
517        #:make-flags
518        (list "LV2PEG=ttl2c"
519              "CXXFLAGS=-std=gnu++11"
520              "CFLAGS=-std=gnu++11"
521              (string-append "prefix=" %output)
522              (string-append "pkgdatadir=" %output "/share/azr3-jack"))
523        #:phases
524        (modify-phases %standard-phases
525          (add-before 'install 'fix-timestamp
526            (lambda _
527              (let ((early-1980 315619200)) ; 1980-01-02 UTC
528                (utime "azr3.1" early-1980 early-1980))
529              #t)))))
530     (inputs
531      `(("gtkmm" ,gtkmm-2)
532        ("lvtk" ,lvtk)
533        ("jack" ,jack-1)
534        ("lash" ,lash)))
535     (native-inputs
536      `(("pkg-config" ,pkg-config)))
537     (home-page "http://ll-plugins.nongnu.org/azr3/")
538     (synopsis "Tonewheel organ synthesizer")
539     (description
540      "AZR-3 is a port of the free VST plugin AZR-3.  It is a tonewheel organ
541 with drawbars, distortion and rotating speakers.  The organ has three
542 sections, two polyphonic sections with nine drawbars each and one monophonic
543 bass section with five drawbars.  A standalone JACK application and LV2
544 plugins are provided.")
545     (license license:gpl2)))
547 (define-public calf
548   (package
549     (name "calf")
550     (version "0.90.2")
551     (source (origin
552               (method url-fetch)
553               (uri (string-append "https://calf-studio-gear.org/files/calf-"
554                                   version ".tar.gz"))
555               (sha256
556                (base32
557                 "0bn4j1klw2yfxz8clbmasaydifq25rdfsv0n6iisxrzcj1lx7sgh"))))
558     (build-system gnu-build-system)
559     (inputs
560      `(("fluidsynth" ,fluidsynth)
561        ("expat" ,expat)
562        ("glib" ,glib)
563        ("gtk" ,gtk+-2)
564        ("cairo" ,cairo)
565        ("lash" ,lash)
566        ("jack" ,jack-1)
567        ("lv2" ,lv2)
568        ("ladspa" ,ladspa)
569        ("fftw" ,fftw)))
570     (native-inputs
571      `(("pkg-config" ,pkg-config)))
572     (native-search-paths
573      (list (search-path-specification
574             (variable "LV2_PATH")
575             (files '("lib/lv2")))))
576     (home-page "http://calf.sourceforge.net/")
577     (synopsis "Audio plug-in pack for LV2 and JACK environments")
578     (description
579      "Calf Studio Gear is an audio plug-in pack for LV2 and JACK environments.
580 The suite contains lots of effects (delay, modulation, signal processing,
581 filters, equalizers, dynamics, distortion and mastering effects),
582 instruments (SF2 player, organ simulator and a monophonic synthesizer) and
583 tools (analyzer, mono/stereo tools, crossovers).")
584     ;; calfjackhost is released under GPLv2+
585     ;; The plugins are released under LGPLv2.1+
586     (license (list license:lgpl2.1+ license:gpl2+))))
588 (define-public caps-plugins-lv2
589   (package
590     (name "caps-plugins-lv2")
591     (version "0.9.24") ; version that has been ported.
592     (source
593      (origin
594        ;; The Github project hasn't tagged a release.
595        (method git-fetch)
596        (uri (git-reference
597              ;; Actually https://github.com/moddevices/caps-lv2.git, but it's
598              ;; missing fixes for newer glibc, so using the origin of a pull
599              ;; request regarding this issue:
600              (url "https://github.com/jujudusud/caps-lv2.git")
601              (commit "9c9478b7fbd8f9714f552ebe2a6866398b0babfb")))
602        (file-name (git-file-name name version))
603        (sha256
604         (base32
605          "1idfnazin3cca41zw1a8vwgnxjnkrap7bxxjamjqvgpmvydgcam1"))))
606     (build-system gnu-build-system)
607     (arguments
608      `(#:tests? #f ; no check target
609        #:phases
610        (modify-phases %standard-phases
611          ;; no configure script
612          (delete 'configure)
613          (add-after 'unpack 'override-target-directory
614            (lambda* (#:key outputs #:allow-other-keys)
615              (substitute* (find-files "plugins" "Makefile")
616                (("/usr/local")(assoc-ref outputs "out")))
617              #t)))))
618     (inputs
619      `(("lv2" ,lv2)))
620     ;; home-page of the original LADSPA version: http://quitte.de/dsp/caps.html
621     (home-page "https://github.com/moddevices/caps-lv2")
622     (synopsis "LV2 port of the CAPS audio plugin colection")
623     (description
624      "LV2 port of CAPS, a collection of audio plugins comprising basic virtual
625 guitar amplification and a small range of classic effects, signal processors and
626 generators of mostly elementary and occasionally exotic nature.")
627     (license license:gpl3+)))
629 (define-public infamous-plugins
630   (package
631     (name "infamous-plugins")
632     (version "0.2.04")
633     (source (origin
634               (method git-fetch)
635               (uri (git-reference
636                     (url "https://github.com/ssj71/infamousPlugins.git")
637                     (commit (string-append "v" version))))
638               (file-name (git-file-name name version))
639               (sha256
640                (base32
641                 "0hmqk80w4qxq09iag7b7srf2g0wigkyhzq0ywxvhz2iz0hq9k0dh"))))
642     (build-system cmake-build-system)
643     (arguments
644      `(#:tests? #f                      ; there are no tests
645        #:phases
646        (modify-phases %standard-phases
647          (add-after 'unpack 'remove-compiler-flags
648            (lambda _
649              (substitute* (find-files "." "CMakeLists.txt")
650                (("-msse2 -mfpmath=sse") ""))
651              #t)))))
652     (inputs
653      `(("cairo" ,cairo)
654        ("fftwf" ,fftwf)
655        ("lv2" ,lv2)
656        ("ntk" ,ntk)
657        ("zita-resampler" ,zita-resampler)))
658     (native-inputs
659      `(("pkg-config" ,pkg-config)))
660     (home-page "https://ssj71.github.io/infamousPlugins")
661     (synopsis "LV2 plugins for live use")
662     (description
663      "The infamous plugins are a collection of LV2 audio plugins for live
664 performances.  The plugins include a cellular automaton synthesizer, an
665 envelope follower, distortion effects, tape effects and more.")
666     (license license:gpl2+)))
668 (define-public swh-plugins-lv2
669   (package
670     (name "swh-plugins-lv2")
671     (version "1.0.16")
672     (source (origin
673               (method git-fetch)
674               (uri (git-reference
675                     (url "https://github.com/swh/lv2.git")
676                     (commit (string-append "v" version))))
677               (file-name (git-file-name name version))
678               (sha256
679                (base32
680                 "0y7nnww864mm4k6ayy2lhcws3wlbhb2gkyjbrwk921fvc18qk9mz"))))
681     (build-system gnu-build-system)
682     (arguments
683      `(#:tests? #f ; no check target
684        #:make-flags (list "CC=gcc"
685                           (string-append "PREFIX="
686                                          (assoc-ref %outputs "out")))
687        #:phases
688        (modify-phases %standard-phases
689          ;; no configure script
690          (delete 'configure)
691          (add-after 'unpack 'patch-makefile-and-enter-directory
692            ;; The default install target doesn't install, but the
693            ;; "install-system" target does.
694            (lambda _
695              (substitute* "Makefile"
696                (("install:") "install: install-system"))
697              #t)))))
698     (inputs
699      `(("lv2" ,lv2)
700        ("fftwf" ,fftwf)))
701     (native-inputs
702      `(("libxslt" ,libxslt)
703        ("pkg-config" ,pkg-config)))
704     (home-page "http://plugin.org.uk")
705     (synopsis "SWH plugins in LV2 format")
706     (description
707      "Swh-plugins-lv2 is a collection of audio plugins in LV2 format.  Plugin
708 classes include: dynamics (compressor, limiter), time (delay, chorus,
709 flanger), ringmodulator, distortion, filters, pitchshift, oscillators,
710 emulation (valve, tape), bit fiddling (decimator, pointer-cast), etc.")
711     (license license:gpl3+)))
713 (define-public csound
714   (package
715     (name "csound")
716     (version "6.12.2")
717     (source (origin
718               (method git-fetch)
719               (uri (git-reference
720                     (url "https://github.com/csound/csound.git")
721                     (commit version)))
722               (file-name (git-file-name name version))
723               (sha256
724                (base32
725                 "01krxcf0alw9k7p5sv0s707600an4sl7lhw3bymbwgqrj0v2p9z2"))))
726     (build-system cmake-build-system)
727     (inputs
728      `(("alsa-lib" ,alsa-lib)
729        ("boost" ,boost)
730        ("pulseaudio" ,pulseaudio)
731        ("libsndfile" ,libsndfile)
732        ("liblo" ,liblo)
733        ("ladspa" ,ladspa)
734        ("jack" ,jack-1)
735        ("gettext" ,gettext-minimal)))
736     (native-inputs
737      `(("bison" ,bison)
738        ("flex" ,flex)
739        ("zlib" ,zlib)))
740     (home-page "https://csound.com/")
741     (synopsis "Sound and music computing system")
742     (description
743      "Csound is a user-programmable and user-extensible sound processing
744 language and software synthesizer.")
745     (license license:lgpl2.1+)))
747 (define-public clalsadrv
748   (package
749     (name "clalsadrv")
750     (version "2.0.0")
751     (source (origin
752               (method url-fetch)
753               (uri (string-append
754                     "http://kokkinizita.linuxaudio.org"
755                     "/linuxaudio/downloads/clalsadrv-"
756                     version ".tar.bz2"))
757               (sha256
758                (base32
759                 "0bsacx3l9065gk8g4137qmz2ij7s9x06aldvacinzlcslw7bd1kq"))))
760     (build-system gnu-build-system)
761     (arguments
762      `(#:tests? #f ; no "check" target
763        #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
764        #:phases
765        (modify-phases %standard-phases
766          (add-after 'unpack 'patch-makefile-and-enter-directory
767            (lambda _
768              (substitute* "libs/Makefile"
769                (("/sbin/ldconfig") "true")
770                (("^LIBDIR =.*") "LIBDIR = lib\n"))
771              (chdir "libs")
772              #t))
773          (add-after 'install 'install-symlink
774            (lambda _
775              (symlink "libclalsadrv.so"
776                       (string-append (assoc-ref %outputs "out")
777                                      "/lib/libclalsadrv.so.2"))
778              #t))
779          ;; no configure script
780          (delete 'configure))))
781     (inputs
782      `(("alsa-lib" ,alsa-lib)
783        ("fftw" ,fftw)))
784     (home-page "https://kokkinizita.linuxaudio.org")
785     (synopsis "C++ wrapper around the ALSA API")
786     (description
787      "clalsadrv is a C++ wrapper around the ALSA API simplifying access to
788 ALSA PCM devices.")
789     (license license:gpl2+)))
791 (define-public amb-plugins
792   (package
793     (name "amb-plugins")
794     (version "0.8.1")
795     (source (origin
796               (method url-fetch)
797               (uri (string-append
798                     "http://kokkinizita.linuxaudio.org"
799                     "/linuxaudio/downloads/AMB-plugins-"
800                     version ".tar.bz2"))
801               (sha256
802                (base32
803                 "0x4blm4visjqj0ndqr0cg776v3b7lvplpc8cgi9n51llhavn0jpl"))))
804     (build-system gnu-build-system)
805     (arguments
806      `(#:tests? #f ; no "check" target
807        #:phases
808        (modify-phases %standard-phases
809          ;; no configure script
810          (delete 'configure)
811          (add-before 'install 'prepare-target-directory
812            (lambda* (#:key outputs #:allow-other-keys)
813              (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
814              #t))
815          (add-after 'unpack 'override-target-directory-and-tool-paths
816            (lambda* (#:key outputs #:allow-other-keys)
817              (substitute* "Makefile"
818                (("/usr/lib/ladspa")
819                 (string-append (assoc-ref outputs "out") "/lib/ladspa"))
820                (("/usr/bin/install") (which "install"))
821                (("/bin/rm") "#"))
822              #t)))))
823     (home-page "https://kokkinizita.linuxaudio.org")
824     (synopsis "LADSPA ambisonics plugins")
825     (description
826      "The AMB plugins are a set of LADSPA ambisonics plugins, mainly to be
827 used within Ardour.  Features include: mono and stereo to B-format panning,
828 horizontal rotator, square, hexagon and cube decoders.")
829     (license license:gpl2+)))
831 (define-public mcp-plugins
832   (package
833     (name "mcp-plugins")
834     (version "0.4.0")
835     (source (origin
836               (method url-fetch)
837               (uri (string-append
838                     "http://kokkinizita.linuxaudio.org"
839                     "/linuxaudio/downloads/MCP-plugins-"
840                     version ".tar.bz2"))
841               (sha256
842                (base32
843                 "06a9r1l85jmg7l1cvc3788mk8ra0xagjfy1rmhw3b80y4n0vlnvc"))))
844     (build-system gnu-build-system)
845     (arguments
846      `(#:tests? #f ; no "check" target
847        #:phases
848        (modify-phases %standard-phases
849          ;; no configure script
850          (delete 'configure)
851          (add-before 'install 'prepare-target-directory
852            (lambda* (#:key outputs #:allow-other-keys)
853              (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
854              #t))
855          (add-after 'unpack 'override-target-directory
856            (lambda* (#:key outputs #:allow-other-keys)
857              (substitute* "Makefile"
858                (("/usr") (assoc-ref outputs "out")))
859              #t)))))
860     (home-page "https://kokkinizita.linuxaudio.org")
861     (synopsis "Chorus, phaser, and vintage high-pass and low-pass filters")
862     (description
863      "This package provides various LADSPA plugins.  @code{cs_chorus} and
864 @code{cs_phaser} provide chorus and phaser effects, respectively;
865 @code{mvclpf24} provides four implementations of the low-pass filter used in
866 vintage Moog synthesizers; @code{mvchpf24} is based on the voltage-controlled
867 high-pass filter by Robert Moog.  The filters attempt to accurately emulate
868 the non-linear circuit elements of their original analog counterparts.")
869     (license license:gpl2+)))
871 (define-public rev-plugins
872   (package
873     (name "rev-plugins")
874     (version "0.7.1")
875     (source (origin
876               (method url-fetch)
877               (uri (string-append
878                     "http://kokkinizita.linuxaudio.org"
879                     "/linuxaudio/downloads/REV-plugins-"
880                     version ".tar.bz2"))
881               (sha256
882                (base32
883                 "1ikpinxm00pkfi259bnkzhsy3miagrjgdihaaf5x4v7zac29j3g7"))))
884     (build-system gnu-build-system)
885     (arguments
886      `(#:tests? #f ; no "check" target
887        #:phases
888        (modify-phases %standard-phases
889          ;; no configure script
890          (delete 'configure)
891          (add-before 'install 'prepare-target-directory
892            (lambda* (#:key outputs #:allow-other-keys)
893              (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
894              #t))
895          (add-after 'unpack 'override-target-directory
896            (lambda* (#:key outputs #:allow-other-keys)
897              (substitute* "Makefile"
898                (("/usr") (assoc-ref outputs "out")))
899              #t)))))
900     (home-page "https://kokkinizita.linuxaudio.org")
901     (synopsis "LADSPA reverb plugin")
902     (description
903      "This package provides a stereo reverb LADSPA plugin based on the
904 well-known greverb.")
905     (license license:gpl2+)))
907 (define-public fil-plugins
908   (package
909     (name "fil-plugins")
910     (version "0.3.0")
911     (source (origin
912               (method url-fetch)
913               (uri (string-append
914                     "http://kokkinizita.linuxaudio.org"
915                     "/linuxaudio/downloads/FIL-plugins-"
916                     version ".tar.bz2"))
917               (sha256
918                (base32
919                 "1scfv9j7jrp50r565haa4rvxn1vk2ss86xssl5qgcr8r45qz42qw"))))
920     (build-system gnu-build-system)
921     (arguments
922      `(#:tests? #f ; no "check" target
923        #:phases
924        (modify-phases %standard-phases
925          ;; no configure script
926          (delete 'configure)
927          (add-before 'install 'prepare-target-directory
928            (lambda* (#:key outputs #:allow-other-keys)
929              (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
930              #t))
931          (add-after 'unpack 'override-target-directory
932            (lambda* (#:key outputs #:allow-other-keys)
933              (substitute* "Makefile"
934                (("/usr") (assoc-ref outputs "out")))
935              #t)))))
936     (home-page "https://kokkinizita.linuxaudio.org")
937     (synopsis "LADSPA four-band parametric equalizer plugin")
938     (description
939      "This package provides a LADSPA plugin for a four-band parametric
940 equalizer.  Each section has an active/bypass switch, frequency, bandwidth and
941 gain controls.  There is also a global bypass switch and gain control.
943 The 2nd order resonant filters are implemented using a Mitra-Regalia style
944 lattice filter, which is stable even while parameters are being changed.
946 All switches and controls are internally smoothed, so they can be used @code{live}
947 without any clicks or zipper noises.  This makes this plugin suitable for use
948 in systems that allow automation of plugin control ports, such as Ardour, or
949 for stage use.")
950     (license license:gpl2+)))
952 (define-public ste-plugins
953   (package
954     (name "ste-plugins")
955     (version "0.0.2")
956     (source (origin
957               (method url-fetch)
958               (uri (string-append
959                     "http://kokkinizita.linuxaudio.org"
960                     "/linuxaudio/downloads/STE-plugins-"
961                     version ".tar.bz2"))
962               (sha256
963                (base32
964                 "0s3c9w5xihs87cnd1lh9xgj3maabjdyh6bl766qp5lhkg3ax8zy6"))))
965     (build-system gnu-build-system)
966     (arguments
967      `(#:tests? #f ; no "check" target
968        #:phases
969        (modify-phases %standard-phases
970          ;; no configure script
971          (delete 'configure)
972          (add-before 'install 'prepare-target-directory
973            (lambda* (#:key outputs #:allow-other-keys)
974              (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
975              #t))
976          (add-after 'unpack 'override-target-directory
977            (lambda* (#:key outputs #:allow-other-keys)
978              (substitute* "Makefile"
979                (("/usr") (assoc-ref outputs "out")))
980              #t)))))
981     (home-page "https://kokkinizita.linuxaudio.org")
982     (synopsis "LADSPA stereo width plugin")
983     (description
984      "This package provides a LADSPA plugin to manipulate the stereo width of
985 audio signals.")
986     (license license:gpl2+)))
988 (define-public vco-plugins
989   (package
990     (name "vco-plugins")
991     (version "0.3.0")
992     (source (origin
993               (method url-fetch)
994               (uri (string-append
995                     "http://kokkinizita.linuxaudio.org"
996                     "/linuxaudio/downloads/VCO-plugins-"
997                     version ".tar.bz2"))
998               (sha256
999                (base32
1000                 "1xzqdg3b07r7zww05y9bb737l9dxvfkv28m3fyak1aazaci3rsgl"))))
1001     (build-system gnu-build-system)
1002     (arguments
1003      `(#:tests? #f ; no "check" target
1004        #:phases
1005        (modify-phases %standard-phases
1006          ;; no configure script
1007          (delete 'configure)
1008          (add-before 'install 'prepare-target-directory
1009            (lambda* (#:key outputs #:allow-other-keys)
1010              (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1011              #t))
1012          (add-after 'unpack 'override-target-directory
1013            (lambda* (#:key outputs #:allow-other-keys)
1014              (substitute* "Makefile"
1015                (("/usr") (assoc-ref outputs "out"))
1016                (("/bin/cp") (which "cp")))
1017              #t)))))
1018     (home-page "https://kokkinizita.linuxaudio.org")
1019     (synopsis "LADSPA plugin for synthesizer oscillators")
1020     (description
1021      "The @code{blvco} LADSPA plugin provides three anti-aliased oscillators:
1023 @enumerate
1024 @item Pulse-VCO, a dirac pulse oscillator with flat amplitude spectrum
1025 @item Saw-VCO, a sawtooth oscillator with 1/F amplitude spectrum
1026 @item Rec-VCO, a square / rectange oscillator
1027 @end enumerate\n
1029 All oscillators are low-pass filtered to provide waveforms similar to the
1030 output of analog synthesizers such as the Moog Voyager.")
1031     (license license:gpl2+)))
1033 (define-public wah-plugins
1034   (package
1035     (name "wah-plugins")
1036     (version "0.1.0")
1037     (source (origin
1038               (method url-fetch)
1039               (uri (string-append
1040                     "http://kokkinizita.linuxaudio.org"
1041                     "/linuxaudio/downloads/WAH-plugins-"
1042                     version ".tar.bz2"))
1043               (sha256
1044                (base32
1045                 "1wkbjarxdhjixkh7d5abralj11dj2xxg644fz3ycd7qyfgfvjfgd"))))
1046     (build-system gnu-build-system)
1047     (arguments
1048      `(#:tests? #f ; no "check" target
1049        #:phases
1050        (modify-phases %standard-phases
1051          ;; no configure script
1052          (delete 'configure)
1053          (add-before 'install 'prepare-target-directory
1054            (lambda* (#:key outputs #:allow-other-keys)
1055              (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1056              #t))
1057          (add-after 'unpack 'override-target-directory
1058            (lambda* (#:key outputs #:allow-other-keys)
1059              (substitute* "Makefile"
1060                (("/usr") (assoc-ref outputs "out")))
1061              #t)))))
1062     (home-page "https://kokkinizita.linuxaudio.org")
1063     (synopsis "LADSPA Autowah effect plugin")
1064     (description
1065      "This package provides a LADSPA plugin for a Wah effect with envelope
1066 follower.")
1067     (license license:gpl2+)))
1069 (define-public g2reverb
1070   (package
1071     (name "g2reverb")
1072     (version "0.7.1")
1073     (source (origin
1074               (method url-fetch)
1075               (uri (string-append
1076                     "http://kokkinizita.linuxaudio.org"
1077                     "/linuxaudio/downloads/g2reverb-"
1078                     version ".tar.bz2"))
1079               (sha256
1080                (base32
1081                 "18wb8vj1kky5glr76s34awbi8qzplsmf3wjbd7a12hfv4j0bkwrj"))))
1082     (build-system gnu-build-system)
1083     (arguments
1084      `(#:tests? #f ; no "check" target
1085        #:phases
1086        (modify-phases %standard-phases
1087          ;; no configure script
1088          (delete 'configure)
1089          (add-before 'install 'prepare-target-directory
1090            (lambda* (#:key outputs #:allow-other-keys)
1091              (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1092              #t))
1093          (add-after 'unpack 'override-target-directory
1094            (lambda* (#:key outputs #:allow-other-keys)
1095              (substitute* "Makefile"
1096                (("/usr") (assoc-ref outputs "out")))
1097              #t)))))
1098     (home-page "https://kokkinizita.linuxaudio.org")
1099     (synopsis "LADSPA stereo reverb plugin")
1100     (description
1101      "This package provides a LADSPA plugin for a stereo reverb effect.")
1102     (license license:gpl2+)))
1104 (define-public fluidsynth
1105   (package
1106     (name "fluidsynth")
1107     (version "2.0.5")
1108     (source (origin
1109               (method git-fetch)
1110               (uri (git-reference
1111                     (url "https://github.com/FluidSynth/fluidsynth.git")
1112                     (commit (string-append "v" version))))
1113               (file-name (string-append name "-" version "-checkout"))
1114               (sha256
1115                (base32
1116                 "0rv0apxbj0cgm8f8sqf5xr6kdi4q58ph92ip6cg716ha0ca5lr8y"))))
1117     (build-system cmake-build-system)
1118     (arguments
1119      '(#:tests? #f                      ; no check target
1120        #:phases
1121        (modify-phases %standard-phases
1122          (add-after 'unpack 'fix-libdir
1123            (lambda _
1124              ;; Install libraries to /lib, not /lib64.
1125              (substitute* "CMakeLists.txt"
1126                (("LIB_SUFFIX \\$\\{_init_lib_suffix\\}")
1127                 "LIB_SUFFIX \"\""))
1128              #t)))))
1129     (inputs
1130      `(("libsndfile" ,libsndfile)
1131        ("alsa-lib" ,alsa-lib)
1132        ("jack" ,jack-1)
1133        ("ladspa" ,ladspa)
1134        ("lash" ,lash)
1135        ("readline" ,readline)
1136        ("glib" ,glib)))
1137     (native-inputs
1138      `(("pkg-config" ,pkg-config)))
1139     (home-page "http://www.fluidsynth.org/")
1140     (synopsis "SoundFont synthesizer")
1141     (description
1142      "FluidSynth is a real-time software synthesizer based on the SoundFont 2
1143 specifications.  FluidSynth reads and handles MIDI events from the MIDI input
1144 device.  It is the software analogue of a MIDI synthesizer.  FluidSynth can
1145 also play midifiles using a Soundfont.")
1146     (license license:lgpl2.1+)))
1148 ;; gzdoom@3.3.0 and lmms@1.1.3 requires this version.  Remove once no longer
1149 ;; needed.
1150 (define-public fluidsynth-1
1151   (package
1152     (inherit fluidsynth)
1153     (version "1.1.11")
1154     (source (origin
1155               (inherit (package-source fluidsynth))
1156               (uri (git-reference
1157                     (url "https://github.com/FluidSynth/fluidsynth")
1158                     (commit (string-append "v" version))))
1159               (file-name (git-file-name "fluidsynth" version))
1160               (sha256
1161                (base32
1162                 "0n75jq3xgq46hfmjkaaxz3gic77shs4fzajq40c8gk043i84xbdh"))))))
1164 (define-public faad2
1165   (package
1166     (name "faad2")
1167     (version "2.7")
1168     (source (origin
1169               (method url-fetch)
1170               (uri (string-append "mirror://sourceforge/faac/faad2-src/faad2-"
1171                                   version "/faad2-" version ".zip"))
1172               (sha256
1173                (base32
1174                 "16f3l16c00sg0wkrkm3vzv0gy3g97x309vw788igs0cap2x1ak3z"))))
1175     (build-system gnu-build-system)
1176     (native-inputs
1177      `(("autoconf" ,autoconf)
1178        ("automake" ,automake)
1179        ("libtool" ,libtool)
1180        ("unzip" ,unzip)))
1181     (arguments
1182      '(#:phases
1183        (modify-phases %standard-phases
1184          (replace 'bootstrap
1185            (lambda _
1186              (substitute* "bootstrap" (("\r\n") "\n"))
1187              (invoke "sh" "bootstrap"))))))
1188     (home-page "http://www.audiocoding.com/faad2.html")
1189     (synopsis "MPEG-4 and MPEG-2 AAC decoder")
1190     (description
1191      "FAAD2 is an MPEG-4 and MPEG-2 AAC decoder supporting LC, Main, LTP, SBR,
1192 PS, and DAB+.")
1193     (license license:gpl2)))
1195 (define-public faust
1196   (package
1197     (name "faust")
1198     (version "0.9.90")
1199     (source (origin
1200               (method git-fetch)
1201               (uri (git-reference
1202                     (url "https://github.com/grame-cncm/faust.git")
1203                     (commit (string-append "v"
1204                                            (string-map (lambda (c)
1205                                                          (if (char=? c #\.) #\- c))
1206                                                        version)))))
1207               (file-name (string-append "faust-" version "-checkout"))
1208               (sha256
1209                (base32
1210                 "0qc6iwjd3i80jdyjc186c6ywipmjzl8wlsp4050pbr56q4rlkd4z"))))
1211     (build-system gnu-build-system)
1212     (arguments
1213      `(#:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
1214        #:tests? #f
1215        #:phases
1216        (modify-phases %standard-phases
1217          ;; no "configure" script
1218          (delete 'configure)
1219          ;; Files appear under $out/share/faust that are read-only.  The
1220          ;; install phase tries to overwrite them and fails, so we change
1221          ;; the permissions first.
1222          (add-before 'install 'fix-permissions
1223            (lambda _
1224              (for-each (lambda (file)
1225                          (chmod file #o644))
1226                        (find-files "architecture/max-msp" ".*"))
1227              #t)))))
1228     (native-inputs
1229      `(("unzip" ,unzip)))
1230     (home-page "http://faust.grame.fr/")
1231     (synopsis "Signal processing language")
1232     (description
1233      "Faust is a programming language for realtime audio signal processing.")
1234     (license license:gpl2+)))
1236 (define-public faust-2
1237   (package
1238     (inherit faust)
1239     (version "2.5.23")
1240     (source (origin
1241               (method url-fetch)
1242               (uri (string-append "https://github.com/grame-cncm/faust/"
1243                                   "releases/download/" version
1244                                   "/faust-" version ".tar.gz"))
1245               (sha256
1246                (base32
1247                 "1yz5jnr76hh7rmxkpdi7gyrw1wp4gyqfpq8zyl97qdi5ga5gjznq"))))
1248     (build-system gnu-build-system)
1249     (arguments
1250      (substitute-keyword-arguments (package-arguments faust)
1251        ((#:make-flags flags)
1252         `(list (string-append "prefix=" (assoc-ref %outputs "out"))
1253                "world"))))
1254     (native-inputs
1255      `(("llvm" ,llvm-3.8)
1256        ("which" ,which)
1257        ("xxd" ,xxd)
1258        ("ctags" ,emacs-minimal)  ; for ctags
1259        ("pkg-config" ,pkg-config)))
1260     (inputs
1261      `(("libsndfile" ,libsndfile)
1262        ("libmicrohttpd" ,libmicrohttpd)
1263        ("ncurses" ,ncurses)
1264        ("openssl" ,openssl)
1265        ("zlib" ,zlib)))))
1267 (define-public freepats
1268   (package
1269     (name "freepats")
1270     (version "20060219")
1271     (source (origin
1272               (method url-fetch)
1273               (uri (string-append "http://freepats.zenvoid.org/freepats-"
1274                                   version ".tar.bz2"))
1275               (sha256
1276                (base32
1277                 "12iw36rd94zirll96cd5k0va7p5hxmf2shvjlhzihcmjaw8flq82"))))
1278     (build-system trivial-build-system)
1279     (arguments
1280      `(#:modules ((guix build utils))
1281        #:builder (begin
1282                    (use-modules (guix build utils))
1283                    (let ((out (string-append %output "/share/freepats")))
1284                      (setenv "PATH" (string-append
1285                                      (assoc-ref %build-inputs "bzip2") "/bin:"
1286                                      (assoc-ref %build-inputs "tar") "/bin"))
1287                      (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
1288                      (chdir "freepats")
1289                      ;; Use absolute pattern references
1290                      (substitute* "freepats.cfg"
1291                        (("Tone_000") (string-append out "/Tone_000"))
1292                        (("Drum_000") (string-append out "/Drum_000")))
1293                      (mkdir-p out)
1294                      (copy-recursively "." out)
1295                      #t))))
1296     (native-inputs
1297      `(("tar" ,tar)
1298        ("bzip2" ,bzip2)))
1299     (home-page "http://freepats.zenvoid.org")
1300     (synopsis "GUS compatible patches for MIDI players")
1301     (description
1302      "FreePats is a project to create a free and open set of GUS compatible
1303 patches that can be used with softsynths such as Timidity and WildMidi.")
1304     ;; GPLv2+ with exception for compositions using these patches.
1305     (license license:gpl2+)))
1307 (define-public guitarix
1308   (package
1309     (name "guitarix")
1310     (version "0.38.1")
1311     (source (origin
1312              (method url-fetch)
1313              (uri (string-append
1314                    "mirror://sourceforge/guitarix/guitarix/guitarix2-"
1315                    version ".tar.xz"))
1316              (sha256
1317               (base32
1318                "0bw7xnrx062nwb1bfj9x660h7069ncmz77szcs8icpqxrvhs7z80"))))
1319     (build-system waf-build-system)
1320     (arguments
1321      `(#:tests? #f ; no "check" target
1322        #:python ,python-2
1323        #:configure-flags
1324        (list
1325         ;; Add the output lib directory to the RUNPATH.
1326         (string-append "--ldflags=-Wl,-rpath=" %output "/lib")
1327         "--cxxflags=-std=c++11")
1328        #:phases
1329        (modify-phases %standard-phases
1330          (add-after 'unpack 'fix-boost-includes
1331            (lambda _
1332              (substitute* "src/headers/gx_internal_plugins.h"
1333                (("namespace gx_jack" m)
1334                 (string-append "#include <boost/noncopyable.hpp>\n" m)))
1335              (substitute* '("src/headers/gx_system.h"
1336                             "src/headers/gx_parameter.h"
1337                             "src/headers/gx_json.h")
1338                (("namespace gx_system" m)
1339                 (string-append "#include <boost/noncopyable.hpp>\n" m)))
1340              #t)))))
1341     (inputs
1342      `(("libsndfile" ,libsndfile)
1343        ("boost" ,boost)
1344        ("curl" ,curl)
1345        ("avahi" ,avahi)
1346        ("eigen" ,eigen)
1347        ("lv2" ,lv2)
1348        ("lilv" ,lilv)
1349        ("ladspa" ,ladspa)
1350        ("jack" ,jack-1)
1351        ("gtkmm" ,gtkmm-2)
1352        ("gtk+" ,gtk+-2)
1353        ("fftwf" ,fftwf)
1354        ("lrdf" ,lrdf)
1355        ("zita-resampler" ,zita-resampler)
1356        ("zita-convolver" ,zita-convolver)))
1357     (native-inputs
1358      `(("gperf" ,gperf)
1359        ("faust" ,faust)
1360        ("intltool" ,intltool)
1361        ("gettext" ,gettext-minimal)
1362        ("pkg-config" ,pkg-config)))
1363     (native-search-paths
1364      (list (search-path-specification
1365             (variable "LV2_PATH")
1366             (files '("lib/lv2")))))
1367     (home-page "http://guitarix.org/")
1368     (synopsis "Virtual guitar amplifier")
1369     (description "Guitarix is a virtual guitar amplifier running JACK.
1370 Guitarix takes the signal from your guitar as a mono-signal from your sound
1371 card.  The input is processed by a main amp and a rack-section.  Both can be
1372 routed separately and deliver a processed stereo-signal via JACK.  You may
1373 fill the rack with effects from more than 25 built-in modules including stuff
1374 from a simple noise gate to modulation effects like flanger, phaser or
1375 auto-wah.")
1376     (license license:gpl2+)))
1378 (define-public guitarix-lv2
1379   (package (inherit guitarix)
1380     (name "guitarix-lv2")
1381     (arguments
1382      (substitute-keyword-arguments (package-arguments guitarix)
1383        ((#:configure-flags flags)
1384         `(cons "--no-standalone" ,flags))))))
1386 (define-public rakarrack
1387   (package
1388     (name "rakarrack")
1389     (version "0.6.1")
1390     (source (origin
1391               (method url-fetch)
1392               (uri (string-append "mirror://sourceforge/rakarrack/rakarrack/"
1393                                   "rakarrack-" version "/rakarrack-"
1394                                   version ".tar.bz2"))
1395               (sha256
1396                (base32
1397                 "1rpf63pdn54c4yg13k7cb1w1c7zsvl97c4qxcpz41c8l91xd55kn"))
1398               (modules '((guix build utils)))
1399               (snippet
1400                '(begin
1401                   (substitute* '("src/process.C"
1402                                  "src/global.h")
1403                     (("#include <Fl/") "#include <FL/"))
1404                   #t))))
1405     (build-system gnu-build-system)
1406     (inputs
1407      `(("alsa-utils" ,alsa-utils)
1408        ("fltk" ,fltk)
1409        ("libx11" ,libx11)
1410        ("libxext" ,libxext)
1411        ("libxfixes" ,libxfixes)
1412        ("libxft" ,libxft)
1413        ("libxrender" ,libxrender)
1414        ("libxpm" ,libxpm)
1415        ("fontconfig" ,fontconfig)
1416        ("freetype" ,freetype)
1417        ("jack" ,jack-1)
1418        ("alsa-lib" ,alsa-lib)
1419        ("libsndfile" ,libsndfile)
1420        ("libsamplerate" ,libsamplerate)
1421        ("zlib" ,zlib)))
1422     (home-page "http://rakarrack.sourceforge.net/")
1423     (synopsis "Audio effects processor")
1424     (description
1425      "Rakarrack is a richly featured multi-effects processor emulating a
1426 guitar effects pedalboard.  Effects include compressor, expander, noise gate,
1427 equalizers, exciter, flangers, chorus, various delay and reverb effects,
1428 distortion modules and many more.  Most of the effects engine is built from
1429 modules found in the excellent software synthesizer ZynAddSubFX.  Presets and
1430 user interface are optimized for guitar, but Rakarrack processes signals in
1431 stereo while it does not apply internal band-limiting filtering, and thus is
1432 well suited to all musical instruments and vocals.")
1433     ;; The code is explicitly licensed under the GPL version 2 only.
1434     (license license:gpl2)))
1436 (define-public ir
1437   (package
1438     (name "ir")
1439     (version "1.3.2")
1440     (source (origin
1441              (method url-fetch)
1442              ;; The original home-page is gone. Download the tarball from an
1443              ;; archive mirror instead.
1444              (uri (list (string-append
1445                          "https://web.archive.org/web/20150803095032/"
1446                          "http://factorial.hu/system/files/ir.lv2-"
1447                          version ".tar.gz")
1448                         (string-append
1449                          "https://mirrors.kernel.org/gentoo/distfiles/ir.lv2-"
1450                          version ".tar.gz")))
1451              (sha256
1452               (base32
1453                "1jh2z01l9m4ar7yz0n911df07dygc7n4cl59p7qdjbh0nvkm747g"))))
1454     (build-system gnu-build-system)
1455     (arguments
1456      `(#:tests? #f                              ; no tests
1457        #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
1458        #:phases (modify-phases %standard-phases
1459                   (delete 'configure))))        ; no configure script
1460     (inputs
1461      `(("libsndfile" ,libsndfile)
1462        ("libsamplerate" ,libsamplerate)
1463        ("lv2" ,lv2)
1464        ("glib" ,glib)
1465        ("gtk+" ,gtk+-2)
1466        ("zita-convolver" ,zita-convolver)))
1467     (native-inputs
1468      `(("pkg-config" ,pkg-config)))
1469     (native-search-paths
1470      (list (search-path-specification
1471             (variable "LV2_PATH")
1472             (files '("lib/lv2")))))
1473     ;; Link to an archived copy of the home-page since the original is gone.
1474     (home-page (string-append "https://web.archive.org/web/20150803095032/"
1475                               "http://factorial.hu/plugins/lv2/ir"))
1476     (synopsis "LV2 convolution reverb")
1477     (description
1478      "IR is a low-latency, real-time, high performance signal convolver
1479 especially for creating reverb effects.  It supports impulse responses with 1,
1480 2 or 4 channels, in any soundfile format supported by libsndfile.")
1481     (license license:gpl2+)))
1483 (define-public jack-1
1484   (package
1485     (name "jack")
1486     (version "0.125.0")
1487     (source (origin
1488              (method url-fetch)
1489              (uri (string-append
1490                    "http://jackaudio.org/downloads/jack-audio-connection-kit-"
1491                    version
1492                    ".tar.gz"))
1493              (sha256
1494               (base32
1495                "0i6l25dmfk2ji2lrakqq9icnwjxklgcjzzk65dmsff91z2zva5rm"))))
1496     (build-system gnu-build-system)
1497     (arguments
1498      `(#:phases (modify-phases %standard-phases
1499                   (add-after 'unpack 'patch-configure
1500                     (lambda _
1501                       (substitute* "configure"
1502                         ;; Install to <out/lib> regardless of platform.
1503                         (("libnn=lib64") "libnn=lib"))
1504                       #t)))))
1505     (inputs
1506      `(("alsa-lib" ,alsa-lib)
1507        ("readline" ,readline)))
1508     ;; uuid.h is included in the JACK type headers
1509     ;; db.h is included in the libjack metadata headers
1510     (propagated-inputs
1511      `(("libuuid" ,util-linux)
1512        ("bdb" ,bdb)))
1513     (native-inputs
1514      `(("pkg-config" ,pkg-config)))
1515     (home-page "http://jackaudio.org/")
1516     (synopsis "JACK audio connection kit")
1517     (description
1518      "JACK is a low-latency audio server.  It can connect a number of
1519 different applications to an audio device, as well as allowing them to share
1520 audio between themselves.  JACK is different from other audio server efforts
1521 in that it has been designed from the ground up to be suitable for
1522 professional audio work.  This means that it focuses on two key areas:
1523 synchronous execution of all clients, and low latency operation.")
1524     ;; Most files are licensed under the GPL. However, the libjack/ tree is
1525     ;; licensed under the LGPL in order to allow for proprietary usage.
1526     (license (list license:gpl2+ license:lgpl2.1+))))
1528 ;; Packages depending on JACK should always prefer jack-1.  Both jack-1 and
1529 ;; jack-2 implement the same API.  JACK2 is provided primarily as a client
1530 ;; program for users who might benefit from the D-BUS features.
1531 (define-public jack-2
1532   (package (inherit jack-1)
1533     (name "jack2")
1534     (version "1.9.12")
1535     (source (origin
1536              (method url-fetch)
1537              (uri (string-append "https://github.com/jackaudio/jack2/releases/"
1538                                  "download/v" version "/jack2-"
1539                                  version ".tar.gz"))
1540              (file-name (string-append name "-" version ".tar.gz"))
1541              (sha256
1542               (base32
1543                "0crf4y9a5j9miw8r5ji4l3w5w0y2frrf7xyfsfdgacnw6vwy5vyy"))))
1544     (build-system waf-build-system)
1545     (arguments
1546      `(#:python ,python-2
1547        #:tests? #f  ; no check target
1548        #:configure-flags '("--dbus"
1549                            "--alsa")
1550        #:phases
1551        (modify-phases %standard-phases
1552          (add-before
1553           'configure 'set-linkflags
1554           (lambda _
1555             ;; Add $libdir to the RUNPATH of all the binaries.
1556             (substitute* "wscript"
1557               ((".*CFLAGS.*-Wall.*" m)
1558                (string-append m
1559                               "    conf.env.append_unique('LINKFLAGS',"
1560                               "'-Wl,-rpath=" %output "/lib')\n")))
1561             #t))
1562          (add-after 'install 'wrap-python-scripts
1563           (lambda* (#:key inputs outputs #:allow-other-keys)
1564             ;; Make sure 'jack_control' runs with the correct PYTHONPATH.
1565             (let* ((out (assoc-ref outputs "out"))
1566                    (path (getenv "PYTHONPATH")))
1567               (wrap-program (string-append out "/bin/jack_control")
1568                 `("PYTHONPATH" ":" prefix (,path))))
1569             #t)))))
1570     (inputs
1571      `(("alsa-lib" ,alsa-lib)
1572        ("dbus" ,dbus)
1573        ("expat" ,expat)
1574        ("libsamplerate" ,libsamplerate)
1575        ("opus" ,opus)
1576        ("python2-dbus" ,python2-dbus)
1577        ("readline" ,readline)))
1578     (native-inputs
1579      `(("pkg-config" ,pkg-config)))
1580     ;; Most files are under GPLv2+, but some headers are under LGPLv2.1+
1581     (license (list license:gpl2+ license:lgpl2.1+))))
1583 (define-public jalv
1584   (package
1585     (name "jalv")
1586     (version "1.6.0")
1587     (source (origin
1588               (method url-fetch)
1589               (uri (string-append "https://download.drobilla.net/jalv-"
1590                                   version ".tar.bz2"))
1591               (sha256
1592                (base32
1593                 "1x2wpzzx2cgvz3dgdcgsj8dr0w3zsasy62mvl199bsdj5fbjaili"))))
1594     (build-system waf-build-system)
1595     (arguments
1596      `(#:tests? #f ; no check target
1597        #:python ,python-2
1598        #:phases
1599        (modify-phases %standard-phases
1600          (add-before
1601           'configure 'set-flags
1602           (lambda _
1603             ;; Compile with C++11, required by gtkmm.
1604             (setenv "CXXFLAGS" "-std=c++11")
1605             #t)))))
1606     (inputs
1607      `(("lv2" ,lv2)
1608        ("lilv" ,lilv)
1609        ("suil" ,suil)
1610        ("gtk" ,gtk+)
1611        ("gtkmm" ,gtkmm)
1612        ("jack" ,jack-1)))
1613     (native-inputs
1614      `(("pkg-config" ,pkg-config)))
1615     (home-page "https://drobilla.net/software/jalv/")
1616     (synopsis "Simple LV2 host for JACK")
1617     (description
1618      "Jalv is a simple but fully featured LV2 host for JACK.  It runs LV2
1619 plugins and exposes their ports as JACK ports, essentially making any LV2
1620 plugin function as a JACK application.")
1621     (license license:isc)))
1623 (define-public ladspa
1624   (package
1625     (name "ladspa")
1626     (version "1.13")
1627     (source
1628      (origin
1629        (method url-fetch)
1630        ;; Since the official link is dead,
1631        ;; we download the tarball from Debian or Internet Archive.
1632        (uri (list (string-append "http://http.debian.net"
1633                                  "/debian/pool/main/l/ladspa-sdk/ladspa-sdk_"
1634                                  version ".orig.tar.gz")
1635                   (string-append "https://web.archive.org/web/20140717172251/"
1636                                  "http://www.ladspa.org/download/ladspa_sdk_"
1637                                  version ".tgz")))
1638        (sha256
1639         (base32
1640          "0srh5n2l63354bc0srcrv58rzjkn4gv8qjqzg8dnq3rs4m7kzvdm"))))
1641     (build-system gnu-build-system)
1642     (arguments
1643      `(#:tests? #f  ; the "test" target is a listening test only
1644        #:phases
1645        (modify-phases %standard-phases
1646          (replace 'configure
1647            (lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
1648              (chdir "src")
1649              (let ((out (assoc-ref outputs "out")))
1650                (substitute* "makefile"
1651                  (("/usr/lib/ladspa/") (string-append out "/lib/ladspa/"))
1652                  (("/usr/include/")    (string-append out "/include/"))
1653                  (("/usr/bin/")        (string-append out "/bin/"))
1654                  (("-mkdirhier")       "mkdir -p")
1655                  (("^CC.*")            "CC = gcc\n")
1656                  (("^CPP.*")           "CPP = g++\n")))
1657              #t))
1658          (delete 'build))))
1659     ;; Since the home page is gone, we provide a link to the archived version.
1660     (home-page
1661      "https://web.archive.org/web/20140729190945/http://www.ladspa.org/")
1662     (synopsis "Linux Audio Developer's Simple Plugin API (LADSPA)")
1663     (description
1664      "LADSPA is a standard that allows software audio processors and effects
1665 to be plugged into a wide range of audio synthesis and recording packages.")
1666     (license license:lgpl2.1+)))
1668 (define-public lash
1669   (package
1670     (name "lash")
1671     (version "0.6.0-rc2")
1672     (source (origin
1673               (method url-fetch)
1674               ;; The tilde is not permitted in the builder name, but is used
1675               ;; in the tarball.
1676               (uri (string-append
1677                     "mirror://savannah/lash/lash-"
1678                     (string-join (string-split version #\-) "~")
1679                     ".tar.bz2"))
1680               (file-name (string-append name "-" version ".tar.bz2"))
1681               (sha256
1682                (base32
1683                 "12z1vx3krrzsfccpah9xjs68900xvr7bw92wx8np5871i2yv47iw"))))
1684     (build-system gnu-build-system)
1685     (arguments
1686      '(#:phases
1687        (modify-phases %standard-phases
1688          ;; lashd embeds an ancient version of sigsegv so we just skip it
1689          (add-after 'unpack 'skip-lashd
1690            (lambda _
1691              (substitute* '("Makefile.am" "Makefile.in")
1692                (("lashd ") ""))
1693              #t)))
1694        #:configure-flags '("--disable-static")))
1695     (inputs
1696      `(("bdb" ,bdb)
1697        ("gtk" ,gtk+-2)
1698        ("jack" ,jack-1)
1699        ("readline" ,readline)
1700        ("python" ,python-2)))
1701     ;; According to pkg-config, packages depending on lash also need to have
1702     ;; at least the following packages declared as inputs.
1703     (propagated-inputs
1704      `(("alsa-lib" ,alsa-lib)
1705        ("dbus" ,dbus)
1706        ("libxml2" ,libxml2)))
1707     (native-inputs
1708      `(("pkg-config" ,pkg-config)))
1709     (home-page "https://www.nongnu.org/lash/")
1710     (synopsis "Audio application session manager")
1711     (description
1712      "LASH is a session management system for audio applications.  It allows
1713 you to save and restore audio sessions consisting of multiple interconneced
1714 applications, restoring program state (i.e. loaded patches) and the
1715 connections between them.")
1716     (license license:gpl2+)))
1718 (define-public libbs2b
1719   (package
1720     (name "libbs2b")
1721     (version "3.1.0")
1722     (source (origin
1723               (method url-fetch)
1724               (uri (string-append "mirror://sourceforge/bs2b/libbs2b/" version
1725                                   "/libbs2b-" version ".tar.lzma"))
1726               (sha256
1727                (base32
1728                 "1mcc4gjkmphczjybnsrip3gq1f974knzys7x49bv197xk3fn8wdr"))))
1729     (build-system gnu-build-system)
1730     (native-inputs `(("pkg-config" ,pkg-config)))
1731     (inputs `(("libsndfile" ,libsndfile)))
1732     (home-page "https://sourceforge.net/projects/bs2b/")
1733     (synopsis "Bauer stereophonic-to-binaural DSP")
1734     (description
1735      "The Bauer stereophonic-to-binaural DSP (bs2b) library and plugins is
1736 designed to improve headphone listening of stereo audio records.  Recommended
1737 for headphone prolonged listening to disable superstereo fatigue without
1738 essential distortions.")
1739     (license license:expat)))
1741 (define-public liblo
1742   (package
1743     (name "liblo")
1744     (version "0.30")
1745     (source (origin
1746              (method url-fetch)
1747              (uri (string-append "mirror://sourceforge/liblo/liblo/" version
1748                                  "/liblo-" version ".tar.gz"))
1749              (sha256
1750               (base32
1751                "06wdjzxjdshr6hyl4c94yvg3jixiylap8yjs8brdfpm297gck9rh"))))
1752     (build-system gnu-build-system)
1753     (arguments
1754      `(;; liblo test FAILED
1755        ;; liblo server error 19 in setsockopt(IP_ADD_MEMBERSHIP): No such device
1756        #:tests? #f))
1757     (home-page "http://liblo.sourceforge.net")
1758     (synopsis "Implementation of the Open Sound Control protocol")
1759     (description
1760      "liblo is a lightweight library that provides an easy to use
1761 implementation of the Open Sound Control (@dfn{OSC}) protocol.")
1762     (license license:lgpl2.1+)))
1764 (define-public python-pyaudio
1765   (package
1766     (name "python-pyaudio")
1767     (version "0.2.11")
1768     (source
1769      (origin
1770        (method url-fetch)
1771        (uri (pypi-uri "PyAudio" version))
1772        (sha256
1773         (base32
1774          "0x7vdsigm7xgvyg3shd3lj113m8zqj2pxmrgdyj66kmnw0qdxgwk"))))
1775     (build-system python-build-system)
1776     (inputs
1777      `(("portaudio" ,portaudio)))
1778     (home-page "https://people.csail.mit.edu/hubert/pyaudio/")
1779     (synopsis "Bindings for PortAudio v19")
1780     (description "This package provides bindings for PortAudio v19, the
1781 cross-platform audio input/output stream library.")
1782     (license license:expat)))
1784 (define-public python2-pyaudio
1785   (package-with-python2 python-pyaudio))
1787 (define-public python-pyliblo
1788   (package
1789     (name "python-pyliblo")
1790     (version "0.10.0")
1791     (source (origin
1792              (method url-fetch)
1793              (uri (string-append "http://das.nasophon.de/download/pyliblo-"
1794                                  version ".tar.gz"))
1795              (sha256
1796               (base32
1797                "13vry6xhxm7adnbyj28w1kpwrh0kf7nw83cz1yq74wl21faz2rzw"))))
1798     (build-system python-build-system)
1799     (arguments `(#:tests? #f)) ;no tests
1800     (native-inputs
1801      `(("python-cython" ,python-cython)))
1802     (inputs
1803      `(("liblo" ,liblo)))
1804     (home-page "http://das.nasophon.de/pyliblo/")
1805     (synopsis "Python bindings for liblo")
1806     (description
1807      "Pyliblo is a Python wrapper for the liblo Open Sound Control (OSC)
1808 library.  It supports almost the complete functionality of liblo, allowing you
1809 to send and receive OSC messages using a nice and simple Python API.  Also
1810 included are the command line utilities @code{send_osc} and @code{dump_osc}.")
1811     (license license:lgpl2.1+)))
1813 (define-public python2-pyliblo
1814   (package-with-python2 python-pyliblo))
1816 (define-public lilv
1817   (package
1818     (name "lilv")
1819     (version "0.24.4")
1820     (source (origin
1821              (method url-fetch)
1822              (uri (string-append "https://download.drobilla.net/lilv-"
1823                                  version ".tar.bz2"))
1824              (sha256
1825               (base32
1826                "0f24cd7wkk5l969857g2ydz2kjjrkvvddg1g87xzzs78lsvq8fy3"))))
1827     (build-system waf-build-system)
1828     (arguments
1829      `(#:tests? #f                      ; no check target
1830        #:phases
1831        (modify-phases %standard-phases
1832          (add-before
1833           'configure 'set-ldflags
1834           (lambda* (#:key outputs #:allow-other-keys)
1835             (setenv "LDFLAGS"
1836                     (string-append "-Wl,-rpath="
1837                                    (assoc-ref outputs "out") "/lib"))
1838             #t)))))
1839     ;; Required by lilv-0.pc.
1840     (propagated-inputs
1841      `(("lv2" ,lv2)
1842        ("serd" ,serd)
1843        ("sord" ,sord)
1844        ("sratom" ,sratom)))
1845     (native-inputs
1846      `(("pkg-config" ,pkg-config)))
1847     (home-page "https://drobilla.net/software/lilv/")
1848     (synopsis "Library to simplify use of LV2 plugins in applications")
1849     (description
1850      "Lilv is a C library to make the use of LV2 plugins as simple as possible
1851 for applications.  Lilv is the successor to SLV2, rewritten to be
1852 significantly faster and have minimal dependencies.")
1853     (license license:isc)))
1855 (define-public lv2
1856   (package
1857     (name "lv2")
1858     (version "1.16.0")
1859     (source (origin
1860              (method url-fetch)
1861              (uri (string-append "http://lv2plug.in/spec/lv2-"
1862                                  version ".tar.bz2"))
1863              (sha256
1864               (base32
1865                "1ppippbpdpv13ibs06b0bixnazwfhiw0d0ja6hx42jnkgdyp5hyy"))))
1866     (build-system waf-build-system)
1867     (arguments
1868      `(#:tests? #f  ; no check target
1869        #:configure-flags '("--no-plugins")))
1870     (inputs
1871      ;; Leaving off cairo and gtk+-2.0 which are needed for example plugins
1872      `(("libsndfile" ,libsndfile)))
1873     (native-inputs
1874      `(("pkg-config" ,pkg-config)))
1875     (home-page "http://lv2plug.in/")
1876     (synopsis "LV2 audio plugin specification")
1877     (description
1878      "LV2 is an open specification for audio plugins and host applications.
1879 At its core, LV2 is a simple stable interface, accompanied by extensions which
1880 add functionality to support the needs of increasingly powerful audio
1881 software.")
1882     (license license:isc)))
1884 (define-public lv2-mda-piano
1885   (package
1886     (name "lv2-mda-piano")
1887     (version "0.0.2")
1888     (source (origin
1889               (method git-fetch)
1890               (uri (git-reference
1891                     (url "http://git.elephly.net/software/lv2-mdametapiano.git")
1892                     (commit version)))
1893               (file-name (git-file-name name version))
1894               (sha256
1895                (base32
1896                 "07lywf6lpfpndg3i9w752mmlg2hgn1bwp23h8b0mdj6awh67abqd"))))
1897     (build-system gnu-build-system)
1898     (arguments
1899      `(#:make-flags (list
1900                      "TYPE=mdaPiano"
1901                      (string-append "PREFIX=" (assoc-ref %outputs "out")))
1902        #:tests? #f ; no check target
1903        #:phases (modify-phases %standard-phases (delete 'configure))))
1904     (inputs
1905      `(("lv2" ,lv2)
1906        ("lvtk" ,lvtk)))
1907     (native-inputs
1908      `(("pkg-config" ,pkg-config)))
1909     (native-search-paths
1910      (list (search-path-specification
1911             (variable "LV2_PATH")
1912             (files '("lib/lv2")))))
1913     (home-page "http://elephly.net/lv2/mdapiano.html")
1914     (synopsis "LV2 port of the mda Piano plugin")
1915     (description "An LV2 port of the mda Piano VSTi.")
1916     (license license:gpl3+)))
1918 (define-public lv2-mda-epiano
1919   (package (inherit lv2-mda-piano)
1920     (name "lv2-mda-epiano")
1921     (arguments
1922      `(#:make-flags (list
1923                      "TYPE=mdaEPiano"
1924                      (string-append "PREFIX=" (assoc-ref %outputs "out")))
1925        #:tests? #f ; no check target
1926        #:phases (modify-phases %standard-phases (delete 'configure))))
1927     (home-page "http://elephly.net/lv2/mdaepiano.html")
1928     (synopsis "LV2 port of the mda EPiano plugin")
1929     (description "An LV2 port of the mda EPiano VSTi.")))
1931 (define-public lvtk
1932   (package
1933     (name "lvtk")
1934     (version "1.2.0")
1935     (source (origin
1936              (method git-fetch)
1937              (uri (git-reference
1938                    (url "https://github.com/lvtk/lvtk.git")
1939                    (commit version)))
1940              (file-name (git-file-name name version))
1941              (sha256
1942               (base32
1943                "1b01zvzl70ana6l1kn8fgyr7msnn3c7x61cgw7fdpp50322352p8"))))
1944     (build-system waf-build-system)
1945     (arguments
1946      `(#:tests? #f  ; no check target
1947        #:python ,python-2
1948        #:configure-flags
1949        (list (string-append "--boost-includes="
1950                             (assoc-ref %build-inputs "boost")
1951                             "/include"))
1952        #:phases (modify-phases %standard-phases
1953                   (add-before
1954                    'configure 'set-flags
1955                    (lambda* (#:key inputs #:allow-other-keys)
1956                      ;; See e.g. https://github.com/lvtk/lvtk/issues/21
1957                      (setenv "LDFLAGS"
1958                              (string-append
1959                               "-L" (assoc-ref inputs "boost") "/lib "
1960                               "-lboost_system"))
1961                      ;; Needed for gtkmm
1962                      (substitute* '("src/wscript_build"
1963                                     "examples/wscript_build")
1964                        (("cxxflags.*= \\[" line)
1965                         (string-append line "\"-std=c++11\", ")))
1966                      #t)))))
1967     (inputs
1968      `(("boost" ,boost)
1969        ("gtkmm" ,gtkmm-2)
1970        ("lv2" ,lv2)))
1971     (native-inputs
1972      `(("pkg-config" ,pkg-config)))
1973     (home-page "https://github.com/lvtk/lvtk")
1974     (synopsis "C++ libraries for LV2 plugins")
1975     (description
1976      "The LV2 Toolkit (LVTK) contains libraries that wrap the LV2 C API and
1977 extensions into easy to use C++ classes.  It is the successor of
1978 lv2-c++-tools.")
1979     (license license:gpl3+)))
1981 (define-public openal
1982   (package
1983     (name "openal")
1984     (version "1.19.1")
1985     (source (origin
1986               (method url-fetch)
1987               (uri (string-append
1988                     "http://openal-soft.org/openal-releases/openal-soft-"
1989                     version ".tar.bz2"))
1990               (sha256
1991                (base32
1992                 "1sdjhkz2gd6lbnwphi1b6aw3br4wv2lik5vnqh6mxfc8a7zqfbsw"))))
1993     (build-system cmake-build-system)
1994     (arguments
1995      `(#:tests? #f  ; no check target
1996        #:phases
1997        (modify-phases %standard-phases
1998          (add-after
1999           'unpack 'use-full-library-paths
2000           (lambda* (#:key inputs #:allow-other-keys)
2001             (substitute* "Alc/backends/pulseaudio.c"
2002               (("#define PALIB \"libpulse\\.so\\.0\"")
2003                (string-append "#define PALIB \""
2004                               (assoc-ref inputs "pulseaudio")
2005                               "/lib/libpulse.so.0"
2006                               "\"")))
2007             (substitute* "Alc/backends/alsa.c"
2008               (("LoadLib\\(\"libasound\\.so\\.2\"\\)")
2009                (string-append "LoadLib(\""
2010                               (assoc-ref inputs "alsa-lib")
2011                               "/lib/libasound.so.2"
2012                               "\")")))
2013             #t)))))
2014     (inputs
2015      `(("alsa-lib" ,alsa-lib)
2016        ("pulseaudio" ,pulseaudio)))
2017     (synopsis "3D audio API")
2018     (description
2019      "OpenAL provides capabilities for playing audio in a virtual 3D
2020 environment.  Distance attenuation, doppler shift, and directional sound
2021 emitters are among the features handled by the API.  More advanced effects,
2022 including air absorption, occlusion, and environmental reverb, are available
2023 through the EFX extension.  It also facilitates streaming audio, multi-channel
2024 buffers, and audio capture.")
2025     (home-page "http://openal-soft.org/")
2026     (license license:lgpl2.0+)))
2028 (define-public freealut
2029   (package
2030     (name "freealut")
2031     (version "1.1.0")
2032     (source (origin
2033               (method url-fetch)
2034               ;; Upstream url is unclear, many systems use Fedora, there is also
2035               ;; https://github.com/vancegroup/freealut though the status of it
2036               ;; (official? unofficial?) is not clear.
2037               (uri (string-append
2038                     "https://pkgs.fedoraproject.org/repo/pkgs/" name "/" name "-"
2039                     version ".tar.gz" "/e089b28a0267faabdb6c079ee173664a/" name
2040                     "-" version ".tar.gz"))
2041               (sha256
2042                (base32
2043                 "0kzlil6112x2429nw6mycmif8y6bxr2cwjcvp18vh6s7g63ymlb0"))))
2044     (build-system cmake-build-system)
2045     (arguments
2046      `(#:tests? #f))  ; no check target
2047     (inputs
2048      `(("openal" ,openal)))
2049     (synopsis "Free implementation of OpenAL's ALUT standard")
2050     (description "freealut is the OpenAL Utility Toolkit.")
2051     (home-page "http://kcat.strangesoft.net/openal.html")
2052     (license license:lgpl2.0)))
2054 (define-public patchage
2055   (package
2056     (name "patchage")
2057     (version "1.0.0")
2058     (source (origin
2059               (method url-fetch)
2060               (uri (string-append "https://download.drobilla.net/patchage-"
2061                                   version
2062                                   ".tar.bz2"))
2063               (sha256
2064                (base32
2065                 "1agdpwwi42176l4mxj0c4fsvdiv1ig56bfnnx0msckxmy57df8bb"))))
2066     (build-system waf-build-system)
2067     (arguments
2068      `(#:tests? #f ; no check target
2069        #:python ,python-2))
2070     (inputs
2071      `(("alsa-lib" ,alsa-lib)
2072        ("boost" ,boost)
2073        ("jack" ,jack-1)
2074        ("ganv" ,ganv)
2075        ("glibmm" ,glibmm)
2076        ("gtkmm" ,gtkmm-2)
2077        ("dbus-glib" ,dbus-glib)))
2078     (native-inputs
2079      `(("pkg-config" ,pkg-config)))
2080     (home-page "https://drobilla.net/software/patchage/")
2081     (synopsis "Modular patch bay for audio and MIDI systems")
2082     (description
2083      "Patchage is a modular patch bay for audio and MIDI systems based on JACK
2084 and ALSA.")
2085     (license license:gpl3+)))
2087 (define-public pcaudiolib
2088   (package
2089     (name "pcaudiolib")
2090     (version "1.1")
2091     (home-page "https://github.com/espeak-ng/pcaudiolib")
2092     (source (origin
2093               (method git-fetch)
2094               (uri (git-reference (url home-page) (commit version)))
2095               (file-name (git-file-name name version))
2096               (sha256
2097                (base32
2098                 "0c55hlqqh0m7bcb3nlgv1s4a22s5bgczr1cakjh3767rjb10khi0"))))
2099     (build-system gnu-build-system)
2100     (arguments
2101      `(#:configure-flags '("--disable-static")))
2102     (native-inputs
2103      `(("autoconf" ,autoconf)
2104        ("automake" ,automake)
2105        ("libtool" ,libtool)
2106        ("pkg-config" ,pkg-config)
2107        ("which" ,which)))
2108     (inputs
2109      `(("alsa-lib" ,alsa-lib)
2110        ("pulseaudio" ,pulseaudio)))
2111     (synopsis "Portable C audio library")
2112     (description
2113      "The Portable C Audio Library (pcaudiolib) provides a C@tie{}API to
2114 different audio devices such as ALSA or PulseAudio.")
2115     (license (list license:gpl3+
2116                    ;; The bundled TPCircularBuffer uses a custom license.
2117                    (license:non-copyleft
2118                     "file://src/TPCircularBuffer/README.markdown")))))
2120 (define-public qjackctl
2121   (package
2122     (name "qjackctl")
2123     (version "0.5.7")
2124     (source (origin
2125               (method url-fetch)
2126               (uri (string-append "mirror://sourceforge/qjackctl/qjackctl/"
2127                                   version "/qjackctl-" version ".tar.gz"))
2128               (sha256
2129                (base32
2130                 "1g6a5j74p45yisl28bw4fcc9nr6b710ikk459p4mp6djh9gs8v95"))))
2131     (build-system gnu-build-system)
2132     (arguments
2133      '(#:tests? #f))                    ; no check target
2134     (inputs
2135      `(("jack" ,jack-1)
2136        ("alsa-lib" ,alsa-lib)
2137        ("qtbase" ,qtbase)
2138        ("qtx11extras" ,qtx11extras)))
2139     (native-inputs
2140      `(("pkg-config" ,pkg-config)
2141        ("qttools" ,qttools)))
2142     (home-page "https://qjackctl.sourceforge.io/")
2143     (synopsis "Jack server control application")
2144     (description "Control a Jack server.  Allows you to plug various sources
2145 into various outputs and to start, stop and configure jackd")
2146     (license license:gpl2+)))
2148 (define-public qjackrcd
2149   (package
2150     (name "qjackrcd")
2151     (version "1.2.2")
2152     (source (origin
2153               (method git-fetch)
2154               (uri (git-reference
2155                     (url "https://github.com/orouits/qjackrcd.git")
2156                     (commit (string-append "v" version))))
2157               (file-name (git-file-name name version))
2158               (sha256
2159                (base32
2160                 "1l5iq2mkqd4gn9yr8xbh9qlpp1clcflazychl4vhdbz0bzq4c6al"))))
2161     (build-system gnu-build-system)
2162     (arguments
2163      `(#:phases
2164        (modify-phases %standard-phases
2165          (replace 'configure
2166            (lambda* (#:key outputs #:allow-other-keys)
2167              (invoke "qmake"
2168                      (string-append "PREFIX="
2169                                     (assoc-ref outputs "out"))))))))
2170     (native-inputs
2171      `(("qtbase" ,qtbase))) ; for qmake
2172     (inputs
2173      `(("jack" ,jack-1)
2174        ("libsndfile" ,libsndfile)
2175        ("qtbase" ,qtbase)))
2176     (home-page "https://sourceforge.net/projects/qjackrcd/")
2177     (synopsis "Stereo audio recorder for JACK")
2178     (description "QJackRcd is a simple graphical stereo recorder for JACK
2179 supporting silence processing for automatic pause, file splitting, and
2180 background file post-processing.")
2181     (license license:gpl2+)))
2183 (define-public supercollider
2184   (package
2185     (name "supercollider")
2186     (version "3.10.2")
2187     (source (origin
2188               (method url-fetch)
2189               (uri (string-append
2190                     "https://github.com/supercollider/supercollider"
2191                     "/releases/download/Version-" version
2192                     "/SuperCollider-" version "-Source-linux.tar.bz2"))
2193               (sha256
2194                (base32
2195                 "0ynz1ydcpsd5h57h1n4a7avm6p1cif5a8rkmz4qpr46pr8z9p6iq"))))
2196     (build-system cmake-build-system)
2197     (arguments
2198      `(#:configure-flags '("-DSYSTEM_BOOST=on" "-DSYSTEM_YAMLCPP=on"
2199                            "-DSC_QT=off"
2200                            "-DSC_EL=off") ;scel is packaged individually as
2201                                           ;emacs-scel.
2202        #:modules ((guix build utils)
2203                   (guix build cmake-build-system)
2204                   (ice-9 ftw))
2205        #:phases
2206        (modify-phases %standard-phases
2207          (add-after 'unpack 'fix-build-with-boost-1.68
2208            (lambda _
2209              (substitute* "server/supernova/utilities/time_tag.hpp"
2210                (("(time_duration offset = .+ microseconds\\().*" _ m)
2211                 (string-append m "static_cast<long>(get_nanoseconds()/1000));\n")))
2212              #t))
2213          (add-after 'unpack 'rm-bundled-libs
2214            (lambda _
2215              ;; The build system doesn't allow us to unbundle the following
2216              ;; libraries.  hidapi is also heavily patched and upstream not
2217              ;; actively maintained.
2218              (let ((keep-dirs '("nova-simd" "nova-tt" "hidapi" "TLSF-2.4.6"
2219                                 "oscpack_1_1_0" "." "..")))
2220                (with-directory-excursion "./external_libraries"
2221                  (for-each
2222                   delete-file-recursively
2223                   (scandir "."
2224                            (lambda (x)
2225                              (and (eq? (stat:type (stat x)) 'directory)
2226                                   (not (member (basename x) keep-dirs))))))))
2227              #t))
2228          ;; Some tests are broken (see:
2229          ;; https://github.com/supercollider/supercollider/issues/3555 and
2230          ;; https://github.com/supercollider/supercollider/issues/1736
2231          (add-after 'rm-bundled-libs 'disable-broken-tests
2232            (lambda _
2233              (substitute* "testsuite/server/supernova/CMakeLists.txt"
2234                (("server_test.cpp")
2235                 "")
2236                (("perf_counter_test.cpp")
2237                 ""))
2238              (delete-file "testsuite/server/supernova/server_test.cpp")
2239              (delete-file "testsuite/server/supernova/perf_counter_test.cpp")
2240              (substitute* "testsuite/CMakeLists.txt"
2241                (("add_subdirectory\\(sclang\\)")
2242                 ""))
2243              (delete-file "testsuite/sclang/CMakeLists.txt")
2244              #t)))))
2245     (native-inputs
2246      `(("pkg-config" ,pkg-config)))
2247     (inputs
2248      `(("jack" ,jack-1)
2249        ("libsndfile" ,libsndfile)
2250        ("fftw" ,fftw)
2251        ("libxt" ,libxt)
2252        ("readline" ,readline)           ;readline support for sclang's CLI
2253        ("alsa" ,alsa-lib)               ;for sclang's MIDI interface
2254        ("eudev" ,eudev)                 ;for user interactions with devices
2255        ("avahi" ,avahi)                 ;zeroconf service discovery support
2256        ("icu4c" ,icu4c)
2257        ("boost" ,boost)
2258        ("boost-sync" ,boost-sync)
2259        ("yaml-cpp" ,yaml-cpp)))
2260     (home-page "https://github.com/supercollider/supercollider")
2261     (synopsis "Synthesis engine and programming language")
2262     (description "SuperCollider is a synthesis engine (@code{scsynth} or
2263 @code{supernova}) and programming language (@code{sclang}).  It can be used
2264 for experimenting with sound synthesis and algorithmic composition.
2266 SuperCollider requires jackd to be installed in your user profile and your
2267 user must be allowed to access the realtime features of the kernel.  Search
2268 for \"realtime\" in the index of the Guix manual to learn how to achieve this
2269 using Guix System.")
2270     (license license:gpl2+)))
2272 (define-public raul
2273   (package
2274     (name "raul")
2275     (version "0.8.0")
2276     (source (origin
2277               (method url-fetch)
2278               (uri (string-append "https://download.drobilla.net/raul-"
2279                                   version ".tar.bz2"))
2280               (sha256
2281                (base32
2282                 "09ms40xc1x6qli6lxkwn5ibqh62nl9w7dq0b6jh1q2zvnrxwsd8b"))))
2283     (build-system waf-build-system)
2284     (arguments
2285      `(#:python ,python-2
2286        #:tests? #f)) ; no check target
2287     (inputs
2288      `(("glib" ,glib)
2289        ("boost" ,boost)))
2290     (native-inputs
2291      `(("pkg-config" ,pkg-config)))
2292     (home-page "https://drobilla.net/software/raul/")
2293     (synopsis "Real-time audio utility library")
2294     (description
2295      "Raul (Real-time Audio Utility Library) is a C++ utility library primarily
2296 aimed at audio/musical applications.")
2297     (license license:gpl2+)))
2299 (define-public raul-devel
2300   (let ((commit "4db870b2b20b0a608ec0283139056b836c5b1624")
2301         (revision "1"))
2302     (package (inherit raul)
2303       (name "raul")
2304       (version (string-append "0.8.9-" revision "."
2305                               (string-take commit 9)))
2306       (source (origin
2307                 (method git-fetch)
2308                 (uri (git-reference
2309                       (url "https://git.drobilla.net/raul.git")
2310                       (commit commit)))
2311                 (file-name (string-append name "-" version "-checkout"))
2312                 (sha256
2313                  (base32
2314                   "04fajrass3ymr72flx5js5vxc601ccrmx8ny8scp0rw7j0igyjdr")))))))
2316 (define-public rubberband
2317   (package
2318     (name "rubberband")
2319     (version "1.8.2")
2320     (source (origin
2321               (method url-fetch)
2322               (uri
2323                (string-append "https://bitbucket.org/breakfastquay/rubberband/get/v"
2324                               version
2325                               ".tar.bz2"))
2326               (file-name (string-append name "-" version ".tar.bz2"))
2327               (sha256
2328                (base32
2329                 "0462fmjnfqpv2qi0s6ny42drqarkr0xy9lw8frjmfgzyzl5n9294"))))
2330     (build-system gnu-build-system)
2331     (arguments
2332      `(#:tests? #f                      ; no check target
2333        #:phases
2334        (modify-phases %standard-phases
2335          (add-after 'unpack 'skip-jni-installation
2336            ;; ‘make install’ unconditionally installs librubberband-jni.so,
2337            ;; which is never built by ‘make all’.  Skip it.
2338            (lambda _
2339              (substitute* "Makefile.in"
2340                ((".*cp -f \\$\\(JNI_TARGET\\).*") ""))
2341              #t)))))
2342     (inputs
2343      `(("ladspa" ,ladspa)
2344        ("libsamplerate" ,libsamplerate)
2345        ("vamp" ,vamp)))
2346     (native-inputs
2347      `(("pkg-config" ,pkg-config)))
2348     (home-page "https://breakfastquay.com/rubberband/")
2349     (synopsis "Audio time-stretching and pitch-shifting library")
2350     (description
2351      "Rubber Band is a library and utility program that permits changing the
2352 tempo and pitch of an audio recording independently of one another.")
2353     (license license:gpl2+)))
2355 (define-public rtmidi
2356   (package
2357     (name "rtmidi")
2358     (version "2.1.0")
2359     (source (origin
2360               (method git-fetch)
2361               (uri (git-reference
2362                     (url "https://github.com/powertab/rtmidi.git")
2363                     (commit version)))
2364               (file-name (git-file-name name version))
2365               (sha256
2366                (base32
2367                 "106v177y3nrjv2l1yskch4phpqd8h97b67zj0jiq9pc3c69jr1ay"))))
2368     (build-system gnu-build-system)
2369     (arguments
2370      `(#:tests? #f ;no "check" target
2371        #:phases
2372        (modify-phases %standard-phases
2373          (add-before 'build 'fix-makefile
2374            (lambda _
2375              (substitute* "Makefile"
2376                (("/bin/ln") "ln")
2377                (("RtMidi.h RtError.h") "RtMidi.h"))
2378              #t))
2379          (add-before 'install 'make-target-dirs
2380            (lambda _
2381              (let ((out (assoc-ref %outputs "out")))
2382                (mkdir-p (string-append out "/bin"))
2383                (mkdir (string-append out "/lib"))
2384                (mkdir (string-append out "/include")))
2385              #t)))))
2386     (inputs
2387      `(("jack" ,jack-1)
2388        ("alsa-lib" ,alsa-lib)))
2389     (native-inputs
2390      `(("autoconf" ,autoconf)
2391        ("automake" ,automake)
2392        ("libtool" ,libtool)
2393        ("pkg-config" ,pkg-config)))
2394     (home-page "https://github.com/powertab/rtmidi")
2395     (synopsis "Cross-platform MIDI library for C++")
2396     (description
2397      "RtMidi is a set of C++ classes (RtMidiIn, RtMidiOut, and API specific
2398 classes) that provide a common cross-platform API for realtime MIDI
2399 input/output.")
2400     (license license:expat)))
2402 (define-public sratom
2403   (package
2404     (name "sratom")
2405     (version "0.6.2")
2406     (source (origin
2407              (method url-fetch)
2408              (uri (string-append "https://download.drobilla.net/sratom-"
2409                                  version ".tar.bz2"))
2410              (sha256
2411               (base32
2412                "0lz883ravxjf7r9wwbx2gx9m8vhyiavxrl9jdxfppjxnsralll8a"))))
2413     (build-system waf-build-system)
2414     (arguments `(#:tests? #f)) ; no check target
2415     (inputs
2416      `(("lv2" ,lv2)
2417        ("serd" ,serd)
2418        ("sord" ,sord)))
2419     (native-inputs
2420      `(("pkg-config" ,pkg-config)))
2421     (home-page "https://drobilla.net/software/sratom/")
2422     (synopsis "Library for serialising LV2 atoms to/from RDF")
2423     (description
2424      "Sratom is a library for serialising LV2 atoms to/from RDF, particularly
2425 the Turtle syntax.")
2426     (license license:isc)))
2428 (define-public suil
2429   (package
2430     (name "suil")
2431     (version "0.10.2")
2432     (source (origin
2433              (method url-fetch)
2434              (uri (string-append "https://download.drobilla.net/suil-"
2435                                  version ".tar.bz2"))
2436              (sha256
2437               (base32
2438                "00d43m0nai63ajb7rkm9v084jcih206y17ib3160zcvzc885ji4z"))))
2439     (build-system waf-build-system)
2440     (arguments
2441      `(#:tests? #f        ; no check target
2442        #:configure-flags
2443        '("CXXFLAGS=-std=gnu++11")))
2444     (inputs
2445      `(("lv2" ,lv2)
2446        ("gtk+" ,gtk+-2)
2447        ("gtk+" ,gtk+)
2448        ("qt" ,qtbase)))
2449     (native-inputs
2450      `(("pkg-config" ,pkg-config)))
2451     (home-page "https://drobilla.net/software/suil/")
2452     (synopsis "Library for loading and wrapping LV2 plugin UIs")
2453     (description
2454      "Suil is a lightweight C library for loading and wrapping LV2 plugin UIs.
2456 Suil makes it possible to load a UI of a toolkit in a host using another
2457 toolkit.  The API is designed such that hosts do not need to explicitly
2458 support specific toolkits – if Suil supports a particular toolkit, then UIs in
2459 that toolkit will work in all hosts that use Suil automatically.
2461 Suil currently supports every combination of Gtk, Qt, and X11.")
2462     (license license:isc)))
2464 (define-public timidity++
2465   (package
2466     (name "timidity++")
2467     (version "2.14.0")
2468     (source (origin
2469               (method url-fetch)
2470               (uri (string-append "mirror://sourceforge/timidity/TiMidity++"
2471                                   "/TiMidity++-" version
2472                                   "/TiMidity++-" version ".tar.bz2"))
2473               (sha256
2474                (base32
2475                 "0xk41w4qbk23z1fvqdyfblbz10mmxsllw0svxzjw5sa9y11vczzr"))))
2476     (build-system gnu-build-system)
2477     (arguments
2478      '(#:configure-flags
2479        (list "--enable-audio=alsa,flac,jack,ao,vorbis,speex"
2480              "--enable-ncurses"
2481              "--enable-server"
2482              "--enable-alsaseq"
2483              (string-append "--with-default-path="
2484                             (assoc-ref %outputs "out") "/etc/timidity"))
2485        #:phases
2486        (modify-phases %standard-phases
2487          (add-after 'install 'install-config
2488            (lambda _
2489              (let ((out (string-append (assoc-ref %outputs "out")
2490                                        "/etc/timidity")))
2491                (mkdir-p out)
2492                (call-with-output-file
2493                    (string-append out "/timidity.cfg")
2494                  (lambda (port)
2495                    (format port (string-append "source "
2496                                                (assoc-ref %build-inputs "freepats")
2497                                                "/share/freepats/freepats.cfg")))))
2498              #t)))))
2499     (inputs
2500      `(("alsa-lib" ,alsa-lib)
2501        ("ao" ,ao)
2502        ("flac" ,flac)
2503        ("jack" ,jack-1)
2504        ("libogg" ,libogg)
2505        ("speex" ,speex)
2506        ("ncurses" ,ncurses)
2507        ("freepats" ,freepats)))
2508     (native-inputs
2509      `(("pkg-config" ,pkg-config)))
2510     (home-page "http://timidity.sourceforge.net/")
2511     (synopsis "Software synthesizer for playing MIDI files")
2512     (description
2513      "TiMidity++ is a software synthesizer.  It can play MIDI files by
2514 converting them into PCM waveform data; give it a MIDI data along with digital
2515 instrument data files, then it synthesizes them in real-time, and plays.  It
2516 can not only play sounds, but also can save the generated waveforms into hard
2517 disks as various audio file formats.")
2518     (license license:gpl2+)))
2520 (define-public vamp
2521   (package
2522     (name "vamp")
2523     (version "2.6")
2524     (source (origin
2525               (method url-fetch)
2526               (uri (string-append
2527                     "https://code.soundsoftware.ac.uk"
2528                     "/attachments/download/1520/vamp-plugin-sdk-"
2529                     version ".tar.gz"))
2530               (sha256
2531                (base32
2532                 "0pzq0yy2kdl3jgfc2aqmh5m55nk1ild0hq8mydiiw35c6y0mglyh"))))
2533     (build-system gnu-build-system)
2534     (arguments
2535      `(#:tests? #f                      ; no check target
2536        #:phases
2537        (modify-phases %standard-phases
2538          (add-after 'install 'remove-libvamp-hostsdk.la
2539            (lambda* (#:key outputs #:allow-other-keys)
2540              ;; https://bugs.launchpad.net/ubuntu/+source/vamp-plugin-sdk/+bug/1253656
2541              (for-each delete-file
2542                        (let ((out (assoc-ref outputs "out")))
2543                          (list (string-append out "/lib/libvamp-sdk.la")
2544                                (string-append out "/lib/libvamp-hostsdk.la"))))
2545              #t)))))
2546     (inputs
2547      `(("libsndfile" ,libsndfile)))
2548     (native-inputs
2549      `(("pkg-config" ,pkg-config)))
2550     (home-page "http://vamp-plugins.org")
2551     (synopsis "Modular and extensible audio processing system")
2552     (description
2553      "Vamp is an audio processing plugin system for plugins that extract
2554 descriptive information from audio data — typically referred to as audio
2555 analysis plugins or audio feature extraction plugins.")
2556     (license
2557      (license:x11-style
2558       "https://code.soundsoftware.ac.uk/projects/vamp-plugin-sdk/repository/entry/COPYING"))))
2560 (define-public libsbsms
2561   (package
2562     (name "libsbsms")
2563     (version "2.0.2")
2564     (source
2565      (origin
2566        (method url-fetch)
2567        (uri (string-append "mirror://sourceforge/sbsms/sbsms/" version
2568                            "/libsbsms-" version ".tar.gz"))
2569        (sha256
2570         (base32 "1vmf84iy4dkwxv887grnlsfk43fmhd9gbg26gc2kgcv40sbkvayf"))))
2571     (build-system gnu-build-system)
2572     (native-inputs `(("automake" ,automake)))
2573     (arguments
2574      `(#:configure-flags
2575        ;; Disable the use of SSE unless on x86_64.
2576        ,(if (not (string-prefix? "x86_64" (or (%current-target-system)
2577                                               (%current-system))))
2578             ''("--disable-sse")
2579             ''())
2580        #:phases
2581        (modify-phases %standard-phases
2582          (add-after
2583           'unpack 'fix-ar-lib-path
2584           (lambda* (#:key inputs #:allow-other-keys)
2585             ;; Originally a symlink to '/usr/local/share/automake-1.12/ar-lib'.
2586             (delete-file "ar-lib")
2587             (symlink
2588              (string-append (assoc-ref inputs "automake") "/share/automake-"
2589                             ,(package-version automake) "/ar-lib")
2590              "ar-lib")
2591             #t)))))
2592     (home-page "http://sbsms.sourceforge.net/")
2593     (synopsis "Library for time stretching and pitch scaling of audio")
2594     (description
2595      "SBSMS (Subband Sinusoidal Modeling Synthesis) is software for time
2596 stretching and pitch scaling of audio.  This package contains the library.")
2597     ;; There is no explicit declaration of a license, but a COPYING file
2598     ;; containing gpl2.
2599     (license license:gpl2)))
2601 (define-public wavpack
2602   (package
2603     (name "wavpack")
2604     (version "5.1.0")
2605     (source (origin
2606               (method url-fetch)
2607               (uri (string-append "http://www.wavpack.com/"
2608                                   name "-" version ".tar.bz2"))
2609               (patches (search-patches "wavpack-CVE-2018-6767.patch"
2610                                        "wavpack-CVE-2018-7253.patch"
2611                                        "wavpack-CVE-2018-7254.patch"))
2612               (sha256
2613                (base32
2614                 "0i19c6krc0p9krwrqy9s5xahaafigqzxcn31piidmlaqadyn4f8r"))))
2615     (build-system gnu-build-system)
2616     (home-page "http://www.wavpack.com/")
2617     (synopsis "Hybrid lossless audio codec")
2618     (description
2619      "WavPack is an audio compression format with lossless, lossy and hybrid
2620 compression modes.  This package contains command-line programs and library to
2621 encode and decode wavpack files.")
2622     (license license:bsd-3)))
2624 (define-public libmodplug
2625   (package
2626     (name "libmodplug")
2627     (version "0.8.9.0")
2628     (source (origin
2629               (method url-fetch)
2630               (uri (string-append
2631                     "mirror://sourceforge/modplug-xmms/"
2632                     name "/" version "/" name "-" version ".tar.gz"))
2633               (sha256
2634                (base32
2635                 "1pnri98a603xk47smnxr551svbmgbzcw018mq1k6srbrq6kaaz25"))))
2636     (build-system gnu-build-system)
2637     (home-page "http://modplug-xmms.sourceforge.net/")
2638     (synopsis "Mod file playing library")
2639     (description
2640      "Libmodplug renders mod music files as raw audio data, for playing or
2641 conversion.  mod, .s3m, .it, .xm, and a number of lesser-known formats are
2642 supported.  Optional features include high-quality resampling, bass expansion,
2643 surround and reverb.")
2644     (license license:public-domain)))
2646 (define-public libxmp
2647   (package
2648     (name "libxmp")
2649     (version "4.4.1")
2650     (source (origin
2651               (method url-fetch)
2652               (uri (string-append "mirror://sourceforge/xmp/libxmp/" version "/"
2653                                   name "-" version ".tar.gz"))
2654               (sha256
2655                (base32
2656                 "1kycz4jsyvmf7ny9227b497wc7y5ligydi6fvvldmkf8hk63ad9m"))))
2657     (build-system gnu-build-system)
2658     (home-page "http://xmp.sourceforge.net/")
2659     (synopsis "Module player library")
2660     (description
2661      "Libxmp is a library that renders module files to PCM data.  It supports
2662 over 90 mainstream and obscure module formats including Protracker (MOD),
2663 Scream Tracker 3 (S3M), Fast Tracker II (XM), and Impulse Tracker (IT).")
2664     (license license:lgpl2.1+)))
2666 (define-public xmp
2667   (package
2668     (name "xmp")
2669     (version "4.1.0")
2670     (source (origin
2671               (method url-fetch)
2672               (uri (string-append "mirror://sourceforge/xmp/xmp/" version "/"
2673                                   name "-" version ".tar.gz"))
2674               (sha256
2675                (base32
2676                 "17i8fc7x7yn3z1x963xp9iv108gxfakxmdgmpv3mlm438w3n3g8x"))))
2677     (build-system gnu-build-system)
2678     (native-inputs
2679      `(("pkg-config" ,pkg-config)))
2680     (inputs
2681      `(("libxmp" ,libxmp)
2682        ("pulseaudio" ,pulseaudio)))
2683     (home-page "http://xmp.sourceforge.net/")
2684     (synopsis "Extended module player")
2685     (description
2686      "Xmp is a portable module player that plays over 90 mainstream and
2687 obscure module formats, including Protracker MOD, Fasttracker II XM, Scream
2688 Tracker 3 S3M and Impulse Tracker IT files.")
2689     (license license:gpl2+)))
2691 (define-public soundtouch
2692   (package
2693     (name "soundtouch")
2694     (version "2.1.1")
2695     (source
2696      (origin
2697        (method git-fetch)
2698        (uri (git-reference
2699              (url "https://gitlab.com/soundtouch/soundtouch.git")
2700              (commit version)))
2701        (file-name (git-file-name name version))
2702        (sha256
2703         (base32 "0p6jzgfgqw061702dmd2b6r4arz48ac3mmx2qkvvzf8s5jjzykdh"))))
2704     (build-system gnu-build-system)
2705     (native-inputs
2706      `(("autoconf" ,autoconf)
2707        ("automake" ,automake)
2708        ("libtool" ,libtool)
2709        ("file" ,file)))
2710     (home-page "http://www.surina.net/soundtouch/")
2711     (synopsis
2712      "Audio processing library for changing tempo, pitch and playback rate")
2713     (description
2714      "SoundTouch is an audio processing library for changing the tempo, pitch
2715 and playback rates of audio streams or audio files.  It is intended for
2716 application developers writing sound processing tools that require tempo/pitch
2717 control functionality, or just for playing around with the sound effects.")
2718     (license license:lgpl2.1+)))
2720 (define-public sox
2721   (package
2722     (name "sox")
2723     (version "14.4.2")
2724     (source (origin
2725               (method url-fetch)
2726               (uri (string-append "mirror://sourceforge/sox/sox/" version "/"
2727                                   name "-" version ".tar.bz2"))
2728               (sha256
2729                (base32
2730                 "170lx90r1nlnb2j6lg00524iwvqy72p48vii4xc5prrh8dnrb9l1"))))
2731     (build-system gnu-build-system)
2732     (arguments
2733      '(#:configure-flags
2734        ;; The upstream asks to identify the distribution to diagnose SoX
2735        ;; bug reports.
2736        '("--with-distro=Guix System Distribution")))
2737     (native-inputs
2738      `(("pkg-config" ,pkg-config)))
2739     (inputs
2740      `(("alsa-lib" ,alsa-lib)
2741        ("ao" ,ao)
2742        ("flac" ,flac)
2743        ("lame" ,lame)
2744        ("libid3tag" ,libid3tag)
2745        ("libltdl" ,libltdl)
2746        ("libmad" ,libmad)
2747        ("libpng" ,libpng)
2748        ("libvorbis" ,libvorbis)
2749        ("pulseaudio" ,pulseaudio)))
2750     (home-page "http://sox.sourceforge.net")
2751     (synopsis "Sound processing utility")
2752     (description
2753      "SoX (Sound eXchange) is a command line utility that can convert
2754 various formats of computer audio files to other formats.  It can also
2755 apply various effects to these sound files, and, as an added bonus, SoX
2756 can play and record audio files.")
2757     ;; sox.c is distributed under GPL, while the files that make up
2758     ;; libsox are licensed under LGPL.
2759     (license (list license:gpl2+ license:lgpl2.1+))))
2761 (define-public soxr
2762   (package
2763     (name "soxr")
2764     (version "0.1.3")
2765     (source
2766      (origin
2767        (method url-fetch)
2768        (uri
2769         (string-append "mirror://sourceforge/soxr/soxr-" version
2770                        "-Source.tar.xz"))
2771        (sha256
2772         (base32 "12aql6svkplxq5fjycar18863hcq84c5kx8g6f4rj0lcvigw24di"))))
2773     (build-system cmake-build-system)
2774     (arguments '(#:tests? #f))          ;no 'check' target
2775     (home-page "https://sourceforge.net/p/soxr/wiki/Home/")
2776     (synopsis "One-dimensional sample-rate conversion library")
2777     (description
2778      "The SoX Resampler library (libsoxr) performs one-dimensional sample-rate
2779 conversion.  It may be used, for example, to resample PCM-encoded audio.")
2780     (license license:lgpl2.1+)))
2782 (define-public twolame
2783   (package
2784     (name "twolame")
2785     (version "0.3.13")
2786     (source
2787      (origin
2788        (method url-fetch)
2789        (uri (string-append "mirror://sourceforge/twolame/twolame/" version
2790                            "/twolame-" version ".tar.gz"))
2791        (sha256
2792         (base32 "0ahiqqng5pidwhj1wzph4vxxgxxgcfa3gl0gywipzx2ii7s35wwq"))
2793        (modules '((guix build utils)))
2794        ;; The tests break with Perl 5.24:
2795        ;; https://github.com/njh/twolame/issues/21
2796        ;; TODO: Remove this snippet when upgrading twolame.
2797        (snippet
2798         '(begin
2799            (substitute* "tests/test.pl" (("\\(@_\\)") "($_[0])"))
2800            #t))))
2801     (build-system gnu-build-system)
2802     (inputs
2803      `(("libsndfile" ,libsndfile)))
2804     (native-inputs
2805      `(("perl" ,perl)
2806        ("which" ,which)))               ;used in tests/test.pl
2807     (home-page "http://www.twolame.org/")
2808     (synopsis "MPEG Audio Layer 2 (MP2) encoder")
2809     (description
2810      "TwoLAME is an optimised MPEG Audio Layer 2 (MP2) encoder based on
2811 tooLAME by Mike Cheng, which in turn is based upon the ISO dist10 code and
2812 portions of LAME.")
2813     (license license:lgpl2.1+)))
2815 (define-public portaudio
2816   (package
2817     (name "portaudio")
2818     (version "190600.20161030")
2819     (source
2820      (origin
2821        (method url-fetch)
2822        (uri (string-append
2823              "http://www.portaudio.com/archives/pa_stable_v"
2824              (string-map (lambda (c) (if (char=? c #\.) #\_ c)) version)
2825              ".tgz"))
2826        (sha256
2827         (base32 "04qmin6nj144b8qb9kkd9a52xfvm0qdgm8bg8jbl7s3frmyiv8pm"))
2828        (patches (search-patches "portaudio-audacity-compat.patch"))))
2829     (build-system gnu-build-system)
2830     (inputs
2831      ;; TODO: Add ASIHPI.
2832      `(("alsa-lib" ,alsa-lib)
2833        ("jack" ,jack-1)))
2834     ;; Autoreconf is necessary because the audacity-compat patch modifies .in
2835     ;; files.
2836     (native-inputs
2837      `(("autoconf" ,autoconf)
2838        ("automake" ,automake)
2839        ("libtool" ,libtool)
2840        ("pkg-config" ,pkg-config)))
2841     (arguments
2842      '(#:tests? #f                    ;no 'check' target
2843        #:configure-flags '("--with-pic")
2844        #:phases
2845        (modify-phases %standard-phases
2846          ;; This is needed for linking the static libraries
2847          (add-after 'unpack 'build-only-position-independent-code
2848            (lambda _
2849              (substitute* "configure.in"
2850                (("AC_PROG_LIBTOOL" m)
2851                 (string-append m "\nAM_PROG_AR\nLT_INIT([pic-only])")))
2852              (delete-file "configure")
2853              #t))
2854          ;; Some headers are not installed by default, but are needed by
2855          ;; packages like Kaldi.
2856          (add-after 'install 'install-missing-headers
2857            (lambda* (#:key outputs #:allow-other-keys)
2858              (install-file "src/common/pa_ringbuffer.h"
2859                            (string-append (assoc-ref outputs "out") "/include"))
2860              #t)))))
2861     (home-page "http://www.portaudio.com/")
2862     (synopsis "Audio I/O library")
2863     (description
2864      "PortAudio is a portable C/C++ audio I/O library providing a simple API
2865 to record and/or play sound using a callback function or a blocking read/write
2866 interface.")
2867     (license license:expat)))
2869 (define-public qsynth
2870   (package
2871     (name "qsynth")
2872     (version "0.5.6")
2873     (source
2874      (origin
2875        (method url-fetch)
2876        (uri (string-append "mirror://sourceforge/qsynth/qsynth/" version
2877                            "/qsynth-" version ".tar.gz"))
2878        (sha256
2879         (base32 "0h4hhja8qbyzd6v24flw9wr4mwl03nplryx1gyrppn7sg13l1sx6"))))
2880     (build-system gnu-build-system)
2881     (arguments
2882      `(#:tests? #f                      ; no "check" phase
2883        #:configure-flags
2884        '("CXXFLAGS=-std=gnu++11")))
2885     (native-inputs
2886      `(("qttools" ,qttools)
2887        ("pkg-config" ,pkg-config)))
2888     (inputs
2889      `(("fluidsynth" ,fluidsynth)
2890        ("qtbase" ,qtbase)
2891        ("qtx11extras" ,qtx11extras)))
2892     (home-page "http://qsynth.sourceforge.net")
2893     (synopsis "Graphical user interface for FluidSynth")
2894     (description
2895      "Qsynth is a GUI front-end application for the FluidSynth SoundFont
2896 synthesizer written in C++.")
2897     (license license:gpl2+)))
2899 (define-public rsound
2900   (package
2901     (name "rsound")
2902     (version "1.1")
2903     (source
2904      (origin
2905        (method git-fetch)
2906        (uri (git-reference
2907              (url "https://github.com/Themaister/RSound.git")
2908              (commit (string-append "v" version))))
2909        (file-name (git-file-name name version))
2910        (sha256
2911         (base32 "0gspmr3klwnq98h17p5hc6ifygya4p80g4g8r7a1qavm3mv19waf"))))
2912     (build-system gnu-build-system)
2913     (inputs
2914      `(("alsa-lib" ,alsa-lib)
2915        ("jack" ,jack-1)
2916        ("ao" ,ao)
2917        ("libsamplerate" ,libsamplerate)
2918        ("openal" ,openal)
2919        ("portaudio" ,portaudio)
2920        ("pulseaudio" ,pulseaudio)))
2921     (arguments
2922      '(#:phases
2923        (modify-phases %standard-phases
2924          (replace 'configure
2925            (lambda* (#:key outputs #:allow-other-keys)
2926              (setenv "CC" "gcc")
2927              (invoke "./configure"
2928                      (string-append "--prefix=" (assoc-ref outputs "out"))))))
2929        ;; No 'check' target.
2930        #:tests? #f))
2931     (home-page "http://themaister.net/rsound.html")
2932     (synopsis "Networked audio system")
2933     (description
2934      "RSound allows you to send audio from an application and transfer it
2935 directly to a different computer on your LAN network.  It is an audio daemon
2936 with a much different focus than most other audio daemons.")
2937     (license license:gpl3+)))
2939 (define-public xjackfreak
2940   (package
2941     (name "xjackfreak")
2942     (version "1.0")
2943     (source (origin
2944               (method git-fetch)
2945               (uri (git-reference
2946                     (url "https://github.com/johnhldavis/xjackfreak.git")
2947                     (commit (string-append "v" version))))
2948               (file-name (git-file-name name version))
2949               (sha256
2950                (base32
2951                 "18c546qidbrj0f5wfiq5llii2192xpln0ab3r4vpr7i3wybxqjfz"))))
2952     (build-system gnu-build-system)
2953     (arguments
2954      `(#:make-flags
2955        (list (string-append "docdir=" (assoc-ref %outputs "out")
2956                             "/share/doc/xjackfreak"))))
2957     (inputs
2958      `(("jack" ,jack-1)
2959        ("libx11" ,libx11)
2960        ("libxt" ,libxt)
2961        ("libxext" ,libxext)))
2962     (native-inputs
2963      `(("pkg-config" ,pkg-config)))
2964     (home-page "https://github.com/johnhldavis/xjackfreak")
2965     (synopsis "JACK audio frequency analyzer and display")
2966     (description
2967      "XJackFreak is an audio analysis and equalizing tool for the Jack Audio
2968 Connection Kit.  It can display the FFT of any input, modify it and output the
2969 result.")
2970     (license license:gpl3+)))
2972 (define-public zita-convolver
2973   (package
2974     (name "zita-convolver")
2975     (version "3.1.0")
2976     (source (origin
2977               (method url-fetch)
2978               (uri (string-append
2979                     "http://kokkinizita.linuxaudio.org"
2980                     "/linuxaudio/downloads/zita-convolver-"
2981                     version ".tar.bz2"))
2982               (snippet
2983                ;; Don't optimize for a specific processor architecture.
2984                '(begin
2985                   (substitute* "libs/Makefile"
2986                     (("^CXXFLAGS \\+= -march=native") ""))
2987                   #t))
2988               (modules '((guix build utils)))
2989               (sha256
2990                (base32
2991                 "14qrnczhp5mbwhky64il7kxc4hl1mmh495v60va7i2qnhasr6zmz"))))
2992     (build-system gnu-build-system)
2993     (arguments
2994      `(#:tests? #f ; no "check" target
2995        #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
2996        #:phases
2997        (modify-phases %standard-phases
2998          (add-after 'unpack 'patch-makefile-and-enter-directory
2999            (lambda _
3000              (substitute* "libs/Makefile"
3001                (("ldconfig") "true")
3002                (("^LIBDIR =.*") "LIBDIR = lib\n"))
3003              (chdir "libs")
3004              #t))
3005          (add-after 'install 'install-symlink
3006            (lambda _
3007              (symlink "libzita-convolver.so"
3008                       (string-append (assoc-ref %outputs "out")
3009                                      "/lib/libzita-convolver.so.3"))
3010              #t))
3011          ;; no configure script
3012          (delete 'configure))))
3013     (inputs `(("fftwf" ,fftwf)))
3014     (home-page "https://kokkinizita.linuxaudio.org")
3015     (synopsis "Fast, partitioned convolution engine library")
3016     (description
3017      "Zita convolver is a C++ library providing a real-time convolution
3018 engine.")
3019     (license license:gpl3+)))
3021 (define-public zita-resampler
3022   (package
3023     (name "zita-resampler")
3024     (version "1.3.0")
3025     (source (origin
3026               (method url-fetch)
3027               (uri (string-append
3028                     "http://kokkinizita.linuxaudio.org"
3029                     "/linuxaudio/downloads/zita-resampler-"
3030                     version ".tar.bz2"))
3031               (snippet
3032                ;; Don't optimize for a specific processor architecture.
3033                '(begin
3034                   (substitute* '("apps/Makefile" "libs/Makefile")
3035                     (("^CXXFLAGS \\+= -march=native") ""))
3036                   #t))
3037               (modules '((guix build utils)))
3038               (sha256
3039                (base32
3040                 "0r9ary5sc3y8vba5pad581ha7mgsrlyai83w7w4x2fmhfy64q0wq"))))
3041     (build-system gnu-build-system)
3042     (arguments
3043      `(#:tests? #f ; no "check" target
3044        #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
3045        #:phases
3046        (modify-phases %standard-phases
3047          (add-after
3048           'unpack 'patch-makefile-and-enter-directory
3049           (lambda _
3050             (substitute* "libs/Makefile"
3051               (("ldconfig") "true")
3052               (("^LIBDIR =.*") "LIBDIR = lib\n"))
3053             (chdir "libs")
3054             #t))
3055          (add-after
3056           'install 'install-symlink
3057           (lambda _
3058             (symlink "libzita-resampler.so"
3059                      (string-append (assoc-ref %outputs "out")
3060                                     "/lib/libzita-resampler.so.1"))
3061             #t))
3062          ;; no configure script
3063          (delete 'configure))))
3064     (home-page "https://kokkinizita.linuxaudio.org/linuxaudio/zita-resampler/resampler.html")
3065     (synopsis "C++ library for resampling audio signals")
3066     (description
3067      "Libzita-resampler is a C++ library for resampling audio signals.  It is
3068 designed to be used within a real-time processing context, to be fast, and to
3069 provide high-quality sample rate conversion.")
3070     (license license:gpl3+)))
3072 (define-public zita-alsa-pcmi
3073   (package
3074     (name "zita-alsa-pcmi")
3075     (version "0.2.0")
3076     (source (origin
3077               (method url-fetch)
3078               (uri (string-append
3079                     "http://kokkinizita.linuxaudio.org"
3080                     "/linuxaudio/downloads/zita-alsa-pcmi-"
3081                     version ".tar.bz2"))
3082               (sha256
3083                (base32
3084                 "1rgv332g82rrrlm4vdam6p2pyrisxbi7b3izfaa0pcjglafsy7j9"))))
3085     (build-system gnu-build-system)
3086     (arguments
3087      `(#:tests? #f ; no "check" target
3088        #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
3089        #:phases
3090        (modify-phases %standard-phases
3091          (add-after 'unpack 'patch-makefile-and-enter-directory
3092            (lambda _
3093              (substitute* "libs/Makefile"
3094                (("ldconfig") "true")
3095                (("^LIBDIR =.*") "LIBDIR = lib\n"))
3096              (chdir "libs")
3097              #t))
3098          (add-after 'install 'install-symlink
3099            (lambda _
3100              (symlink "libzita-alsa-pcmi.so"
3101                       (string-append (assoc-ref %outputs "out")
3102                                      "/lib/libzita-alsa-pcmi.so.0"))
3103              #t))
3104           ;; no configure script
3105           (delete 'configure))))
3106     (inputs
3107      `(("alsa-lib" ,alsa-lib)
3108        ("fftw" ,fftw)))
3109     (home-page "https://kokkinizita.linuxaudio.org")
3110     (synopsis "C++ wrapper around the ALSA API")
3111     (description
3112      "Zita-alsa-pcmi is a C++ wrapper around the ALSA API.  It provides easy
3113 access to ALSA PCM devices, taking care of the many functions required to
3114 open, initialise and use a hw: device in mmap mode, and providing floating
3115 point audio data.")
3116     (license license:gpl3+)))
3118 (define-public cuetools
3119   (package
3120     (name "cuetools")
3121     (version "1.4.1")
3122     (source (origin
3123              (method git-fetch)
3124              (uri (git-reference
3125                    (url "https://github.com/svend/cuetools.git")
3126                    (commit version)))
3127              (file-name (git-file-name name version))
3128              (sha256
3129               (base32
3130                "02ksv1ahf1v4cr2xbclsfv5x17m9ivzbssb5r8xjm97yh8a7spa3"))))
3131     (build-system gnu-build-system)
3132     ;; The source checkout is not bootstrapped.
3133     (native-inputs
3134      `(("autoconf" ,autoconf)
3135        ("automake" ,automake)
3136        ("flex" ,flex)
3137        ("bison" ,bison)))
3138     (synopsis "Cue and toc file parsers and utilities")
3139     (description "Cuetools is a set of programs that are useful for manipulating
3140 and using CUE sheet (cue) files and Table of Contents (toc) files.  CUE and TOC
3141 files are a way to represent the layout of a data or audio CD in a
3142 machine-readable ASCII format.")
3143     (home-page "https://github.com/svend/cuetools")
3144     (license license:gpl2+)))
3146 (define-public shntool
3147   (package
3148     (name "shntool")
3149     (version "3.0.10")
3150     (source (origin
3151              (method url-fetch)
3152              (uri (string-append "http://etree.org/shnutils/shntool/dist/src/"
3153                                  "shntool-" version ".tar.gz"))
3154              (sha256
3155               (base32
3156                "00i1rbjaaws3drkhiczaign3lnbhr161b7rbnjr8z83w8yn2wc3l"))))
3157     (build-system gnu-build-system)
3158     (synopsis "WAVE audio data processing tool")
3159     (description "shntool is a multi-purpose WAVE data processing and reporting
3160 utility.  File formats are abstracted from its core, so it can process any file
3161 that contains WAVE data, compressed or not---provided there exists a format
3162 module to handle that particular file type.  It can also generate CUE files, and
3163 use them split WAVE data into multiple files.")
3164     (home-page "http://etree.org/shnutils/shntool/")
3165     ;; 'install-sh' bears the x11 license
3166     (license (list license:gpl2+ license:x11))))
3168 (define-public dcadec
3169   (package
3170     (name "dcadec")
3171     (version "0.2.0")
3172     (source (origin
3173               (method git-fetch)
3174               (uri (git-reference
3175                     (url "https://github.com/foo86/dcadec.git")
3176                     (commit (string-append "v" version))))
3177               (file-name (git-file-name name version))
3178               (sha256
3179                (base32
3180                 "07nd0ajizrp1w02bsyfcv18431r8m8rq8gjfmz9wmckpg7cxj2hs"))))
3181     (build-system gnu-build-system)
3182     (arguments
3183      ;; Test files are missing: https://github.com/foo86/dcadec/issues/53
3184      '(#:tests? #f
3185        #:make-flags
3186        (list "CC=gcc"
3187              ;; Build shared library.
3188              "CONFIG_SHARED=1"
3189              (string-append "PREFIX=" (assoc-ref %outputs "out"))
3190              ;; Set proper runpath.
3191              (string-append "LDFLAGS=-Wl,-rpath="
3192                             (assoc-ref %outputs "out")
3193                             "/lib"))
3194        #:phases
3195        (modify-phases %standard-phases
3196          ;; No configure script, just a hand-written Makefile.
3197          (delete 'configure))))
3198     (synopsis "DTS Coherent Acoustics decoder")
3199     (description "Dcadec is a DTS Coherent Acoustics surround sound decoder
3200 with support for HD extensions.")
3201     (home-page "https://github.com/foo86/dcadec")
3202     (license license:lgpl2.1+)))
3204 (define-public bs1770gain
3205   (package
3206     (name "bs1770gain")
3207     (version "0.5.2")
3208     (source
3209      (origin
3210        (method url-fetch)
3211        (uri (string-append "mirror://sourceforge/bs1770gain/bs1770gain/"
3212                            version "/bs1770gain-" version ".tar.gz"))
3213        (sha256
3214         (base32
3215          "1p6yz5q7czyf9ard65sp4kawdlkg40cfscr3b24znymmhs3p7rbk"))
3216        (modules '((guix build utils)))
3217        (snippet
3218         '(begin
3219            ;; XXX
3220            (substitute* "bs1770gain/bs1770gain.c"
3221              (("\"N.*\"") "\"\""))
3222            (substitute* "configure"
3223              (("URL=.*$")
3224               "https://manpages.debian.org/sid/bs1770gain/bs1770gain.1.en.html\n"))))))
3225     (build-system gnu-build-system)
3226     (inputs `(("ffmpeg" ,ffmpeg)
3227               ("sox" ,sox)))
3228     (home-page "https://manpages.debian.org/sid/bs1770gain/bs1770gain.1.en.html")
3229     (synopsis "Tool to adjust loudness of media files")
3230     (description
3231      "BS1770GAIN is a loudness scanner compliant with ITU-R BS.1770 and its
3232 flavors EBU R128, ATSC A/85, and ReplayGain 2.0.  It helps normalizing the
3233 loudness of audio and video files to the same level.")
3234     (license license:gpl2+)))
3236 (define-public filteraudio
3237   (let ((revision "1")
3238         (commit "2fc669581e2a0ff87fba8de85861b49133306094"))
3239     (package
3240       (name "filteraudio")
3241       (version (string-append "0.0.0-" revision "."
3242                               (string-take commit 7)))
3243       (source
3244        (origin
3245          (method git-fetch)
3246          (uri (git-reference
3247                (url "https://github.com/irungentoo/filter_audio.git")
3248                (commit commit)))
3249          (file-name (string-append name "-" version "-checkout"))
3250          (sha256
3251           (base32
3252            "0hbb290n3wb23f2k692a6bhc23nnqmxqi9sc9j15pnya8wifw64g"))))
3253       (build-system gnu-build-system)
3254       (arguments
3255        '(#:make-flags (list (string-append "PREFIX=" %output)
3256                             "CC=gcc")
3257          #:tests? #f ; No tests
3258          #:phases
3259          (modify-phases %standard-phases
3260            ;; No configure script
3261            (delete 'configure))))
3262       (synopsis "Lightweight audio filtering library")
3263       (description "An easy to use audio filtering library made from webrtc
3264 code, used in @code{libtoxcore}.")
3265       (home-page "https://github.com/irungentoo/filter_audio")
3266       (license license:bsd-3))))
3268 (define-public gsm
3269   (package
3270     (name "gsm")
3271     (version "1.0.18")
3272     (source
3273      (origin
3274        (method url-fetch)
3275        (uri
3276         (string-append "http://www.quut.com/" name "/" name
3277                        "-" version ".tar.gz"))
3278        (sha256
3279         (base32
3280          "041amvpz8cvxykl3pwqldrzxligmmzcg8ncdnxbg32rlqf3q1xh4"))))
3281     (build-system gnu-build-system)
3282     (arguments
3283      `(#:test-target "tst"
3284        #:phases
3285        (modify-phases %standard-phases
3286          (add-before 'install 'pre-install
3287            (lambda _
3288              (let ((out (assoc-ref %outputs "out")))
3289                (substitute* "Makefile"
3290                  (("INSTALL_ROOT\t=")
3291                   (string-append "INSTALL_ROOT\t=\t" out)))
3292                (mkdir-p (string-append out "/inc"))
3293                (mkdir-p (string-append out "/man"))
3294                (mkdir-p (string-append out "/man/man1"))
3295                (mkdir-p (string-append out "/man/man3"))
3296                (mkdir-p (string-append out "/bin"))
3297                (mkdir-p (string-append out "/lib")))
3298              #t))
3299          (add-after 'install 'post-install
3300            (lambda _
3301              (let ((out (assoc-ref %outputs "out")))
3302                (rename-file (string-append out "/inc")
3303                             (string-append out "/include"))
3304                (mkdir-p (string-append out "/include/gsm"))
3305                (copy-recursively "inc"
3306                                  (string-append out "/include/gsm")))
3307              #t))
3308          (delete 'configure))))         ; no configure script
3309     (synopsis "GSM 06.10 lossy speech compression library")
3310     (description "This C library provides an encoder and a decoder for the GSM
3311 06.10 RPE-LTP lossy speech compression algorithm.")
3312     (home-page "http://quut.com/gsm/")
3313     (license (license:non-copyleft "file://COPYRIGHT"))))
3315 (define-public python-pyalsaaudio
3316   (package
3317     (name "python-pyalsaaudio")
3318     (version "0.8.4")
3319     (source (origin
3320               (method url-fetch)
3321               (uri (pypi-uri "pyalsaaudio" version))
3322               (sha256
3323                (base32
3324                 "1180ypn9596rq4b7y7dyv627j1q0fqilmkkrckclnzsdakdgis44"))))
3325     (build-system python-build-system)
3326     (arguments
3327      `(#:tests? #f))                   ; tests require access to ALSA devices.
3328     (inputs
3329      `(("alsa-lib" ,alsa-lib)))
3330     (home-page "http://larsimmisch.github.io/pyalsaaudio/")
3331     (synopsis "ALSA wrappers for Python")
3332     (description
3333      "This package contains wrappers for accessing the ALSA API from Python.
3334 It is currently fairly complete for PCM devices, and has some support for
3335 mixers.")
3336     (license license:psfl)))
3338 (define-public python2-pyalsaaudio
3339   (package-with-python2 python-pyalsaaudio))
3341 (define-public bluez-alsa
3342   (package
3343     (name "bluez-alsa")
3344     (version "1.2.0")
3345     (source (origin
3346               ;; The tarballs are mere snapshots and don't contain a
3347               ;; bootstrapped build system.
3348               (method git-fetch)
3349               (uri (git-reference
3350                     (url "https://github.com/Arkq/bluez-alsa.git")
3351                     (commit (string-append "v" version))))
3352               (file-name (string-append name "-" version "-checkout"))
3353               (sha256
3354                (base32
3355                 "1qinf41wl2ihx54zmmhanycihwjkn7dn1cicq6pp4rqbiv79b95x"))))
3356     (build-system gnu-build-system)
3357     (native-inputs
3358      `(("autoconf" ,autoconf)
3359        ("automake" ,automake)
3360        ("libtool" ,libtool)
3361        ("pkg-config" ,pkg-config)))
3362     (inputs
3363      `(("alsa-lib" ,alsa-lib)
3364        ("bluez" ,bluez)
3365        ("glib" ,glib)
3366        ("libbsd" ,libbsd)
3367        ("ncurses" ,ncurses)
3368        ("ortp" ,ortp)
3369        ("sbc" ,sbc)))
3370     (home-page "https://github.com/Arkq/bluez-alsa")
3371     (synopsis "Bluetooth ALSA backend")
3372     (description "This project is a rebirth of a direct integration between
3373 Bluez and ALSA.  Since Bluez >= 5, the build-in integration has been removed
3374 in favor of 3rd party audio applications.  From now on, Bluez acts as a
3375 middleware between an audio application, which implements Bluetooth audio
3376 profile, and a Bluetooth audio device.  BlueALSA registers all known Bluetooth
3377 audio profiles in Bluez, so in theory every Bluetooth device (with audio
3378 capabilities) can be connected.  In order to access the audio stream, one has
3379 to connect to the ALSA PCM device called @code{bluealsa}.  The device is based
3380 on the ALSA software PCM plugin.")
3381     (license license:expat)))
3383 (define-public snd
3384   (package
3385     (name "snd")
3386     (version "19.3")
3387     (source (origin
3388               (method url-fetch)
3389               (uri (string-append "ftp://ccrma-ftp.stanford.edu/pub/Lisp/"
3390                                   "snd-" version ".tar.gz"))
3391               (sha256
3392                (base32
3393                 "16j3fqyw361wdsr1076f0p3va2y7wdzq1lvr4ijz1ajmbxdlc723"))))
3394     (build-system glib-or-gtk-build-system)
3395     (arguments
3396      `(#:tests? #f                      ; no tests
3397        #:out-of-source? #f              ; for the 'install-doc' phase
3398        #:configure-flags
3399        (let* ((out (assoc-ref %outputs "out"))
3400               (docdir (string-append out "/share/doc/snd")))
3401          (list "--with-alsa" "--with-jack" "--with-gmp"
3402                (string-append "--with-doc-dir=" docdir)))
3403        #:phases
3404        (modify-phases %standard-phases
3405          (add-after 'install 'install-doc
3406            (lambda* (#:key outputs #:allow-other-keys)
3407              (let* ((out (assoc-ref outputs "out"))
3408                     (doc (string-append out "/share/doc/"
3409                                         ,name "-" ,version)))
3410                (for-each
3411                 (lambda (f)
3412                   (install-file f doc))
3413                 (find-files "." "\\.html$|COPYING"))
3414                (copy-recursively "pix" (string-append doc "/pix"))
3415                #t))))))
3416     (native-inputs
3417      `(("pkg-config" ,pkg-config)))
3418     (inputs
3419      `(("alsa-lib" ,alsa-lib)
3420        ("fftw" ,fftw)
3421        ("flac" ,flac)
3422        ("gmp" ,gmp)
3423        ("gsl" ,gsl)
3424        ("gtk+" ,gtk+)
3425        ("jack" ,jack-1)
3426        ("libsamplerate" ,libsamplerate)
3427        ("mpc" ,mpc)
3428        ("mpfr" ,mpfr)
3429        ("mpg123" ,mpg123)
3430        ("speex" ,speex)
3431        ("timidity++" ,timidity++)
3432        ("vorbis-tools" ,vorbis-tools)
3433        ("wavpack" ,wavpack)))
3434     (synopsis "Sound editor")
3435     (home-page "https://ccrma.stanford.edu/software/snd/")
3436     (description
3437      "Snd is a sound editor modelled loosely after Emacs.  It can be
3438 customized and extended using either the s7 Scheme implementation (included in
3439 the Snd sources), Ruby, or Forth.")
3440     (license (license:non-copyleft "file://COPYING"))))
3442 (define-public noise-repellent
3443   (package
3444     (name "noise-repellent")
3445     (version "0.1.4")
3446     (source (origin
3447               (method git-fetch)
3448               (uri (git-reference
3449                     (url "https://github.com/lucianodato/noise-repellent.git")
3450                     (commit version)))
3451               (file-name (string-append name "-" version "-checkout"))
3452               (sha256
3453                (base32
3454                 "0rd3dlmk3vivjmcr6x2x860y0j1d49c2j95j6ny50v184mwvn11j"))))
3455     (build-system gnu-build-system)
3456     (arguments
3457      `(#:make-flags
3458        (list "CC=gcc"
3459              (string-append "PREFIX=" (assoc-ref %outputs "out")))
3460        #:tests? #f ; there are none
3461        #:phases
3462        (modify-phases %standard-phases
3463          (delete 'configure))))
3464     (inputs
3465      `(("lv2" ,lv2)
3466        ("fftwf" ,fftwf)))
3467     (native-inputs
3468      `(("pkg-config" ,pkg-config)))
3469     (home-page "https://github.com/lucianodato/noise-repellent")
3470     (synopsis "LV2 plugin for broadband noise reduction")
3471     (description "Noise Repellent is an LV2 plugin to reduce noise.  It has
3472 the following features:
3474 @enumerate
3475 @item Spectral gating and spectral subtraction suppression rule
3476 @item Adaptive and manual noise thresholds estimation
3477 @item Adjustable noise floor
3478 @item Adjustable offset of thresholds to perform over-subtraction
3479 @item Time smoothing and a masking estimation to reduce artifacts
3480 @item Basic onset detector to avoid transients suppression
3481 @item Whitening of the noise floor to mask artifacts and to recover higher
3482   frequencies
3483 @item Option to listen to the residual signal
3484 @item Soft bypass
3485 @item Noise profile saved with the session
3486 @end enumerate
3488     (license license:lgpl3+)))
3490 (define-public cli-visualizer
3491   (package
3492     (name "cli-visualizer")
3493     (version "1.6")
3494     (source
3495      (origin
3496        (method git-fetch)
3497        (uri (git-reference
3498              (url "https://github.com/dpayne/cli-visualizer.git")
3499              (commit version)))
3500        (file-name (git-file-name name version))
3501        (sha256
3502         (base32
3503          "0mirp8bk398di5xyq95iprmdyvplfghxqmrfj7jdnpy554vx7ppc"))))
3504     (build-system gnu-build-system)
3505     (native-inputs
3506      `(("which" ,which)))
3507     (inputs
3508      `(("fftw" ,fftw)
3509        ("googletest" ,googletest)
3510        ("ncurses" ,ncurses)
3511        ("pulseaudio" ,pulseaudio)))
3512     (arguments
3513      '(#:test-target "test"
3514        #:make-flags
3515        (list (string-append "PREFIX=" %output "/bin/") "ENABLE_PULSE=1")
3516        #:phases
3517        (modify-phases %standard-phases
3518          (add-after 'unpack 'remove-sudo
3519            (lambda _
3520              (substitute* "install.sh" (("sudo") ""))
3521              #t))
3522          (add-before 'check 'set-check-environment
3523            (lambda _
3524              (setenv "CXX" "g++")
3525              (setenv "CC" "gcc")
3526              #t))
3527          (add-before 'install 'make-prefix
3528            (lambda _
3529              (mkdir-p (string-append (assoc-ref %outputs "out") "/bin"))
3530              #t))
3531          (add-after 'install 'data
3532            (lambda _
3533              (for-each (lambda (file)
3534                          (install-file file
3535                                        (string-append (assoc-ref %outputs "out")
3536                                                       "/share/doc")))
3537                        (find-files "examples"))
3538              #t)))))
3539     (home-page "https://github.com/dpayne/cli-visualizer/")
3540     (synopsis "Command-line audio visualizer")
3541     (description "@code{cli-visualizer} displays fast-Fourier
3542 transforms (FFTs) of the sound being played, as well as other graphical
3543 representations.")
3544     (license license:expat)))
3546 (define-public cava
3547   (package
3548     (name "cava")
3549     (version "0.6.1")
3550     (source (origin
3551               (method git-fetch)
3552               (uri (git-reference
3553                     (url "https://github.com/karlstav/cava.git")
3554                     (commit version)))
3555               (file-name (git-file-name name version))
3556               (sha256
3557                (base32
3558                 "1kvhqgijs29909w3sq9m0bslx2zxxn4b3i07kdz4hb0dqkppxpjy"))))
3559     (build-system gnu-build-system)
3560     (native-inputs
3561      `(("autoconf" ,autoconf)
3562        ("automake" ,automake)
3563        ("libtool" ,libtool)))
3564     (inputs
3565      `(("fftw" ,fftw)
3566        ("ncurses" ,ncurses)
3567        ("pulseaudio" ,pulseaudio)))
3568     (arguments
3569      `(#:configure-flags
3570        (list (string-append "PREFIX=" %output)
3571              (string-append "FONT_DIR=" %output "/usr/share/consolefonts"))
3572        #:make-flags
3573        (let ((lib (string-append %output "/lib")))
3574          (list (string-append "cava_LDFLAGS = -L" lib " -Wl,-rpath " lib)))
3575        #:phases
3576        (modify-phases %standard-phases
3577          (replace 'bootstrap
3578            (lambda* (#:key outputs #:allow-other-keys)
3579              (setenv "HOME" (getcwd))
3580              (invoke "sh" "autogen.sh")))
3581          (add-before 'build 'make-cava-ldflags
3582            (lambda* (#:key outputs #:allow-other-keys)
3583              (mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
3584              #t))
3585          (add-after 'install 'data
3586            (lambda* (#:key outputs #:allow-other-keys)
3587              (for-each (lambda (file)
3588                          (install-file file
3589                                        (string-append (assoc-ref outputs "out")
3590                                                       "/share/doc/examples")))
3591                        (find-files "example_files"))
3592              #t)))))
3593     (home-page "https://karlstav.github.io/cava/")
3594     (synopsis "Console audio visualizer for ALSA, MPD, and PulseAudio")
3595     (description "C.A.V.A. is a bar audio spectrum visualizer for the terminal
3596 using ALSA, MPD, PulseAudio, or a FIFO buffer as its input.")
3597     (license license:expat)))
3599 (define-public fluid-3
3600   (let ((commit "871c8ce2002e8b3c198f532fdb4fbcce7914f951"))
3601     (package
3602       (name "fluid-3")
3603       (version "2.1")
3604       (source
3605        (origin
3606          (method url-fetch)
3607          ;; Only one file is required, but the release bundles the whole
3608          ;; software which is 50MiB as tar and 200MiB unpacked. The website
3609          ;; directly links the soundfont release to the github file download.
3610          (uri (string-append "https://github.com/musescore/MuseScore/raw/"
3611                              commit "/share/sound/FluidR3Mono_GM.sf3"))
3612          (file-name (string-append name "-" version ".sf3"))
3613          (sha256
3614           (base32
3615            "1hjfg5i15bw9279007xs92zsggjgn4s4k9pc00s851l3kvc6dkfg"))))
3616       (build-system trivial-build-system)
3617       (arguments
3618        `(#:modules ((guix build utils))
3619          #:builder
3620          (begin
3621            (use-modules (guix build utils))
3622            (let ((file (assoc-ref %build-inputs "source"))
3623                  (out (string-append %output "/share/soundfonts")))
3624              (mkdir-p out)
3625              (copy-file file (string-append out "/FluidR3Mono_GM.sf3"))
3626              #t))))
3627       (home-page  "https://github.com/musescore/MuseScore/tree/master/share/sound")
3628       (synopsis "Pro-quality GM soundfont")
3629       (description "Fluid-3 is Frank Wen's pro-quality GM soundfont.")
3630       (license license:expat))))
3632 (define-public libfdk
3633   (let ((commit "2326faaf8f2cdf2c3a9108ccdaf1d7551aec543e")
3634         (revision "0"))
3635     (package
3636       (name "libfdk")
3637       ;; The latest upstream revision, with many bug fixes.
3638       (version (git-version "0.1.6" revision commit))
3639       (source
3640         (origin
3641           (method git-fetch)
3642           (uri (git-reference
3643                  (url "https://github.com/mstorsjo/fdk-aac")
3644                  (commit commit)))
3645           (file-name (git-file-name name version))
3646           (sha256
3647            (base32
3648             "0yy6ndd9d61bwl283vl1r5kva2a4acc0f4r9g0sza156f2abr9ws"))))
3649       (build-system gnu-build-system)
3650       (native-inputs
3651        `(("autoconf" ,autoconf)
3652          ("automake" ,automake)
3653          ("libtool" ,libtool)))
3654       (home-page "https://github.com/mstorsjo/fdk-aac")
3655       (synopsis "Fraunhofer FDK AAC library")
3656       (description "FDK is a library for encoding and decoding Advanced Audio
3657 Coding (AAC) format audio, developed by Fraunhofer IIS, and included as part of
3658 Android.  It supports several Audio Object Types including MPEG-2 and MPEG-4 AAC
3659 LC, HE-AAC (AAC LC + SBR), HE-AACv2 (LC + SBR + PS) as well AAC-LD (low delay)
3660 and AAC-ELD (enhanced low delay) for real-time communication.  The encoding
3661 library supports sample rates up to 96 kHz and up to eight channels (7.1
3662 surround).")
3663       (license (license:fsf-free "https://github.com/mstorsjo/fdk-aac/blob/master/NOTICE"
3664                                  "https://www.gnu.org/licenses/license-list.html#fdk")))))
3666 (define-public libopenshot-audio
3667   (package
3668     (name "libopenshot-audio")
3669     (version "0.1.8")
3670     (source (origin
3671               (method git-fetch)
3672               (uri (git-reference
3673                     (url "https://github.com/OpenShot/libopenshot-audio")
3674                     (commit (string-append "v" version))))
3675               (file-name (git-file-name name version))
3676               (sha256
3677                (base32
3678                 "1fvp6nmf30xzkmcznakh8dv5vn9d7nq051pqcqv638hsfppkmcrl"))))
3679     (build-system cmake-build-system)
3680     (inputs
3681      `(("alsa-lib" ,alsa-lib)
3682        ;; The following are for JUCE GUI components:
3683        ("libx11" ,libx11)
3684        ("freetype" ,freetype)
3685        ("libxrandr" ,libxrandr)
3686        ("libxinerama" ,libxinerama)
3687        ("libxcursor" ,libxcursor)))
3688     (arguments
3689      `(#:tests? #f                      ;there are no tests
3690        #:configure-flags
3691        (list (string-append "-DCMAKE_CXX_FLAGS=-I"
3692                             (assoc-ref %build-inputs "freetype")
3693                             "/include/freetype2"))))
3694     (home-page "https://openshot.org")
3695     (synopsis "Audio editing and playback for OpenShot")
3696     (description "OpenShot Audio Library (libopenshot-audio) allows
3697 high-quality editing and playback of audio, and is based on the JUCE
3698 library.")
3699     (license license:lgpl3+)))
3701 (define-public faudio
3702   (package
3703     (name "faudio")
3704     (version "19.05")
3705     (source
3706      (origin
3707        (method git-fetch)
3708        (uri (git-reference
3709              (url "https://github.com/FNA-XNA/FAudio.git")
3710              (commit version)))
3711        (file-name (string-append name "-" version "-checkout"))
3712        (sha256
3713         (base32 "1dja2ykixk1ycqda116cg9fy4qg364dqj88amfln0r9pnsj2kbxk"))))
3714     (arguments
3715      '(#:tests? #f                      ; No tests.
3716        #:configure-flags '("-DFFMPEG=ON")))
3717     (build-system cmake-build-system)
3718     (native-inputs `(("pkg-config" ,pkg-config)))
3719     (inputs `(("ffmpeg" ,ffmpeg)
3720               ("sdl2" ,sdl2)))
3721     (home-page "https://github.com/FNA-XNA/FAudio")
3722     (synopsis "XAudio reimplementation")
3723     (description "FAudio is an XAudio reimplementation that focuses solely on
3724 developing fully accurate DirectX Audio runtime libraries.")
3725     (license license:zlib)))