1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2015, 2016, 2017, 2018 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 Efraim Flashner <efraim@flashner.co.il>
8 ;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com>
9 ;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
10 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
11 ;;; Copyright © 2016, 2017, 2018 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 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 <brendan.tildesley@openmailbox.org>
22 ;;; This file is part of GNU Guix.
24 ;;; GNU Guix is free software; you can redistribute it and/or modify it
25 ;;; under the terms of the GNU General Public License as published by
26 ;;; the Free Software Foundation; either version 3 of the License, or (at
27 ;;; your option) any later version.
29 ;;; GNU Guix is distributed in the hope that it will be useful, but
30 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
31 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
32 ;;; GNU General Public License for more details.
34 ;;; You should have received a copy of the GNU General Public License
35 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
37 (define-module (gnu packages audio)
38 #:use-module (guix packages)
39 #:use-module (guix download)
40 #:use-module (guix git-download)
41 #:use-module (guix utils)
42 #:use-module ((guix licenses) #:prefix license:)
43 #:use-module (guix build-system gnu)
44 #:use-module (guix build-system waf)
45 #:use-module (guix build-system trivial)
46 #:use-module (guix build-system cmake)
47 #:use-module (guix build-system python)
48 #:use-module (guix build-system glib-or-gtk)
49 #:use-module (gnu packages)
50 #:use-module (gnu packages algebra)
51 #:use-module (gnu packages autotools)
52 #:use-module (gnu packages avahi)
53 #:use-module (gnu packages boost)
54 #:use-module (gnu packages backup)
55 #:use-module (gnu packages base)
56 #:use-module (gnu packages bison)
57 #:use-module (gnu packages check)
58 #:use-module (gnu packages compression)
59 #:use-module (gnu packages curl)
60 #:use-module (gnu packages databases)
61 #:use-module (gnu packages emacs)
62 #:use-module (gnu packages file)
63 #:use-module (gnu packages flex)
64 #:use-module (gnu packages fltk)
65 #:use-module (gnu packages fontutils)
66 #:use-module (gnu packages gettext)
67 #:use-module (gnu packages glib)
68 #:use-module (gnu packages gtk)
69 #:use-module (gnu packages gnome)
70 #:use-module (gnu packages gnunet) ; libmicrohttpd
71 #:use-module (gnu packages gperf)
72 #:use-module (gnu packages icu4c)
73 #:use-module (gnu packages image)
74 #:use-module (gnu packages ncurses)
75 #:use-module (gnu packages qt)
76 #:use-module (gnu packages libbsd)
77 #:use-module (gnu packages linux)
78 #:use-module (gnu packages libusb)
79 #:use-module (gnu packages llvm)
80 #:use-module (gnu packages mp3) ;taglib
81 #:use-module (gnu packages perl)
82 #:use-module (gnu packages pkg-config)
83 #:use-module (gnu packages pulseaudio) ;libsndfile, libsamplerate
84 #:use-module (gnu packages python)
85 #:use-module (gnu packages rdf)
86 #:use-module (gnu packages readline)
87 #:use-module (gnu packages serialization)
88 #:use-module (gnu packages telephony)
89 #:use-module (gnu packages tls)
90 #:use-module (gnu packages video)
91 #:use-module (gnu packages vim) ;xxd
92 #:use-module (gnu packages webkit)
93 #:use-module (gnu packages wxwidgets)
94 #:use-module (gnu packages xiph)
95 #:use-module (gnu packages xml)
96 #:use-module (gnu packages xorg)
97 #:use-module (gnu packages maths)
98 #:use-module (gnu packages multiprecision)
99 #:use-module (gnu packages music)
100 #:use-module (srfi srfi-1)
101 #:use-module (srfi srfi-26))
103 (define-public alsa-modular-synth
105 (name "alsa-modular-synth")
109 (uri (string-append "mirror://sourceforge/alsamodular/alsamodular"
110 "/" version "/ams-" version ".tar.bz2"))
113 "1azbrhpfk4nnybr7kgmc7w6al6xnzppg853vas8gmkh185kk11l0"))))
114 (build-system gnu-build-system)
118 "CXXFLAGS=-std=gnu++11")
120 (modify-phases %standard-phases
121 ;; Insert an extra space between linker flags.
122 (add-before 'configure 'add-missing-space
124 (substitute* "configure"
125 (("LIBS\\+=\\$LIBSsave") "LIBS+=\" $LIBSsave\"")
126 (("CFLAGS\\+=\\$CFLAGSsave") "CFLAGS+=\" $CFLAGSsave\""))
129 `(("alsa-lib" ,alsa-lib)
130 ;; We cannot use zita-alsa-pcmi (the successor of clalsadrv) due to
131 ;; license incompatibility.
132 ("clalsadrv" ,clalsadrv)
138 ("qttools" ,qttools)))
140 `(("pkg-config" ,pkg-config)))
141 (home-page "http://alsamodular.sourceforge.net/")
142 (synopsis "Realtime modular synthesizer and effect processor")
144 "AlsaModularSynth is a digital implementation of a classical analog
145 modular synthesizer system. It uses virtual control voltages to control the
146 parameters of the modules. The control voltages which control the frequency
147 e.g. of the VCO (Voltage Controlled Oscillator) and VCF (Voltage Controlled
148 Filter) modules follow the convention of 1V / Octave.")
149 (license license:gpl2)))
158 "https://aubio.org/pub/aubio-" version ".tar.bz2"))
161 "1yvwskahx1bf3x2fvi6cwah1ay11iarh79fjlqz8s887y3hkpixx"))))
162 (build-system waf-build-system)
164 `(#:tests? #f ; no check target
167 (string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") "/lib")
171 "--enable-samplerate"
172 ;; TODO: enable compilation with avcodec once available.
177 ("libsndfile" ,libsndfile)
178 ("libsamplerate" ,libsamplerate)
181 `(("pkg-config" ,pkg-config)))
182 (home-page "https://aubio.org/")
183 (synopsis "Library for audio labelling")
185 "aubio is a tool designed for the extraction of annotations from audio
186 signals. Its features include segmenting a sound file before each of its
187 attacks, performing pitch detection, tapping the beat and producing MIDI
188 streams from live audio.")
189 (license license:gpl3+)))
191 (define (ardour-rpath-phase major-version)
192 `(lambda* (#:key outputs #:allow-other-keys)
193 (let ((libdir (string-append (assoc-ref outputs "out")
194 "/lib/ardour" ,major-version)))
195 (substitute* "wscript"
196 (("linker_flags = \\[\\]")
197 (string-append "linker_flags = [\""
200 libdir "/backends" ":"
201 libdir "/engines" ":"
202 libdir "/panners" ":"
203 libdir "/surfaces" ":"
204 libdir "/vamp" "\"]"))))
207 (define-public ardour
214 (url "https://git.ardour.org/ardour/ardour.git")
217 ;; Ardour expects this file to exist at build time. The revision
219 ;; git describe HEAD | sed 's/^[A-Za-z]*+//'
220 `(call-with-output-file
221 "libs/ardour/revision.cc"
223 (format port ,(string-append "#include \"ardour/revision.h\"
224 namespace ARDOUR { const char* revision = \"" version "\" ; }"))
228 "0mla5lm51ryikc2rrk53max2m7a5ds6i1ai921l2h95wrha45nkr"))
229 (file-name (string-append name "-" version))))
230 (build-system waf-build-system)
232 `(#:configure-flags '("--cxx11" ; required by gtkmm
233 "--no-phone-home" ; don't contact ardour.org
234 "--freedesktop" ; build .desktop file
235 "--test") ; build unit tests
237 (modify-phases %standard-phases
238 (add-after 'unpack 'set-rpath-in-LDFLAGS
239 ,(ardour-rpath-phase (version-major version)))
240 (add-after 'install 'install-freedesktop-files
241 (lambda* (#:key outputs #:allow-other-keys)
242 (let* ((out (assoc-ref outputs "out"))
243 (share (string-append out "/share"))
244 (ver ,(version-major version)))
247 (let ((dir (string-append share "/icons/hicolor/"
248 size "x" size "/apps")))
251 (string-append "gtk2_ardour/resources/Ardour-icon_"
253 (string-append dir "/ardour" ver ".png"))))
254 '("16" "22" "32" "48" "256"))
255 (install-file (string-append "build/gtk2_ardour/ardour"
257 (string-append share "/applications/"))
258 (install-file (string-append "build/gtk2_ardour/ardour"
260 (string-append share "/appdata/")))
265 `(("alsa-lib" ,alsa-lib)
278 ("libarchive" ,libarchive)
279 ("libart-lgpl" ,libart-lgpl)
280 ("libgnomecanvasmm" ,libgnomecanvasmm)
283 ("libsamplerate" ,libsamplerate)
284 ("libsndfile" ,libsndfile)
286 ("libvorbis" ,libvorbis)
292 ("python-rdflib" ,python-rdflib)
293 ("readline" ,readline)
295 ("rubberband" ,rubberband)
303 `(("cppunit" ,cppunit)
304 ("gettext" ,gettext-minimal)
307 ("pkg-config" ,pkg-config)))
308 (home-page "http://ardour.org")
309 (synopsis "Digital audio workstation")
311 "Ardour is a multi-channel digital audio workstation, allowing users to
312 record, edit, mix and master audio and MIDI projects. It is targeted at audio
313 engineers, musicians, soundtrack editors and composers.")
314 (license license:gpl2+)))
316 (define-public audacity
324 (url "https://github.com/audacity/audacity.git")
325 (commit (string-append "Audacity-" version))))
326 (file-name (git-file-name name version))
329 "10maxmjxbmjybj7n4m7a9bbm7g8xxw8f8vbsf7c9ih5j2gr15ihs"))
330 (patches (search-patches "audacity-build-with-system-portaudio.patch"))
331 (modules '((guix build utils)))
333 ;; Remove bundled libraries.
337 (delete-file-recursively (string-append "lib-src/" dir)))
338 '("expat" "ffmpeg" "libflac" "libid3tag" "libmad" "libogg"
339 "libsndfile" "libsoxr" "libvamp" "libvorbis" "lv2"
340 "portaudio-v19" "portmidi" "soundtouch" "twolame"
341 ;; FIXME: these libraries have not been packaged yet:
349 ;; FIXME: we have this library, but it differs in that the Slide
350 ;; class does not have a member "getInverseStretchedTime".
354 (build-system glib-or-gtk-build-system)
356 `(("wxwidgets" ,wxwidgets)
358 ("alsa-lib" ,alsa-lib)
364 ("libid3tag" ,libid3tag)
366 ;;("libsbsms" ,libsbsms) ;bundled version is modified
367 ("libsndfile" ,libsndfile)
368 ("soundtouch" ,soundtouch)
369 ("soxr" ,soxr) ;replaces libsamplerate
372 ("libvorbis" ,libvorbis)
374 ("lilv" ,lilv) ;for lv2
375 ("suil" ,suil) ;for lv2
376 ("portaudio" ,portaudio)
377 ("portmidi" ,portmidi)))
379 `(("autoconf" ,autoconf)
380 ("automake" ,automake)
381 ("gettext" ,gettext-minimal) ;for msgfmt
383 ("pkg-config" ,pkg-config)
388 (let ((libid3tag (assoc-ref %build-inputs "libid3tag"))
389 (libmad (assoc-ref %build-inputs "libmad"))
390 (portmidi (assoc-ref %build-inputs "portmidi")))
392 ;; Loading FFmpeg dynamically is problematic.
393 "--disable-dynamic-loading"
394 ;; SSE instructions are available on Intel systems only.
395 ,@(if (any (cute string-prefix? <> (or (%current-target-system)
399 '("--enable-sse=no"))
400 ;; portmidi, libid3tag and libmad provide no .pc files, so
401 ;; pkg-config fails to find them. Force their inclusion.
402 (string-append "ID3TAG_CFLAGS=-I" libid3tag "/include")
403 (string-append "ID3TAG_LIBS=-L" libid3tag "/lib -lid3tag -lz")
404 (string-append "LIBMAD_CFLAGS=-I" libmad "/include")
405 (string-append "LIBMAD_LIBS=-L" libmad "/lib -lmad")
406 (string-append "PORTMIDI_CFLAGS=-I" portmidi "/include")
407 (string-append "PORTMIDI_LIBS=-L" portmidi "/lib -lportmidi")
408 "EXPAT_USE_SYSTEM=yes"
409 "FFMPEG_USE_SYSTEM=yes"
410 "LAME_USE_SYSTEM=yes"
411 "LIBFLAC_USE_SYSTEM=yes"
412 "LIBID3TAG_USE_SYSTEM=yes"
413 "LIBMAD_USE_SYSTEM=yes"
414 "USE_LOCAL_LIBNYQUIST=" ;not packaged yet
415 ;;"LIBSBSMS_USE_SYSTEM=yes" ;bundled version is patched
416 "LIBSNDFILE_USE_SYSTEM=yes"
417 "LIBSOUNDTOUCH_USE_SYSTEM=yes"
418 "LIBSOXR_USE_SYSTEM=yes"
419 "LIBTWOLAME_USE_SYSTEM=yes"
420 "LIBVAMP_USE_SYSTEM=yes"
421 "LIBVORBIS_USE_SYSTEM=yes"
423 "PORTAUDIO_USE_SYSTEM=yes"))
425 (modify-phases %standard-phases
426 (add-after 'unpack 'fix-sbsms-check
428 ;; This check is wrong: there is no 2.2.0 release; not even the
429 ;; bundled sources match this release string.
430 (substitute* '("m4/audacity_checklib_libsbsms.m4"
432 (("sbsms >= 2.2.0") "sbsms >= 2.0.0"))
434 (add-after 'unpack 'use-upstream-headers
435 (lambda* (#:key inputs #:allow-other-keys)
436 (substitute* '("src/NoteTrack.cpp"
439 (("../lib-src/portmidi/pm_common/portmidi.h") "portmidi.h")
440 (("../lib-src/portmidi/porttime/porttime.h") "porttime.h"))
441 (substitute* "src/prefs/MidiIOPrefs.cpp"
442 (("../../lib-src/portmidi/pm_common/portmidi.h") "portmidi.h"))
444 ;; The test suite is not "well exercised" according to the developers,
445 ;; and fails with various errors. See
446 ;; <http://sourceforge.net/p/audacity/mailman/message/33524292/>.
448 (home-page "https://www.audacityteam.org/")
449 (synopsis "Software for recording and editing sounds")
451 "Audacity is a multi-track audio editor designed for recording, playing
452 and editing digital audio. It features digital effects and spectrum analysis
454 (license license:gpl2+)))
456 (define-public autotalent
462 (uri (string-append "http://tombaran.info/autotalent-"
466 "1n04qm66f14195ly6gsy3ra7v2j7zad5n19d8dwfmh0qs6h9hphh"))))
467 (build-system gnu-build-system)
469 `(#:tests? #f ; no check target
471 (modify-phases %standard-phases
472 ;; no configure script
474 (add-before 'install 'prepare-target-directory
475 (lambda* (#:key outputs #:allow-other-keys)
476 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
478 (add-after 'unpack 'override-target-directory
479 (lambda* (#:key outputs #:allow-other-keys)
480 (substitute* "Makefile"
481 (("/usr/lib64/ladspa")
482 (string-append (assoc-ref outputs "out") "/lib/ladspa")))
485 `(("ladspa" ,ladspa)))
486 (home-page "http://tombaran.info/autotalent.html")
487 (synopsis "Pitch-correction LADSPA audio plugin")
489 "Autotalent is a LADSPA plugin for real-time pitch-correction. Among its
490 controls are allowable notes, strength of correction, LFO for vibrato and
492 ;; All code except the FFT routine is licensed under GPLv2+.
493 ;; The FFT routine is under BSD-3.
494 (license license:gpl2+)))
502 (uri (string-append "mirror://savannah/ll-plugins/azr3-jack-"
507 "18mdw6nc0vgj6k9rsy0x8w64wvzld0frqshrxxbxfj9qi9843vlc"))
508 (patches (search-patches "azr3.patch"))))
509 (build-system gnu-build-system)
511 `(#:tests? #f ; no check target
514 "CXXFLAGS=-std=gnu++11"
515 "CFLAGS=-std=gnu++11"
516 (string-append "prefix=" %output)
517 (string-append "pkgdatadir=" %output "/share/azr3-jack"))
519 (modify-phases %standard-phases
520 (add-before 'install 'fix-timestamp
522 (let ((early-1980 315619200)) ; 1980-01-02 UTC
523 (utime "azr3.1" early-1980 early-1980))
531 `(("pkg-config" ,pkg-config)))
532 (home-page "http://ll-plugins.nongnu.org/azr3/")
533 (synopsis "Tonewheel organ synthesizer")
535 "AZR-3 is a port of the free VST plugin AZR-3. It is a tonewheel organ
536 with drawbars, distortion and rotating speakers. The organ has three
537 sections, two polyphonic sections with nine drawbars each and one monophonic
538 bass section with five drawbars. A standalone JACK application and LV2
539 plugins are provided.")
540 (license license:gpl2)))
548 (uri (string-append "https://calf-studio-gear.org/files/calf-"
552 "0znwx5gidr5n503gya9n8gagr8cfym6cwlbiv2r6iksji7jc4fpb"))))
553 (build-system gnu-build-system)
555 `(("fluidsynth" ,fluidsynth)
566 `(("pkg-config" ,pkg-config)))
568 (list (search-path-specification
569 (variable "LV2_PATH")
570 (files '("lib/lv2")))))
571 (home-page "http://calf.sourceforge.net/")
572 (synopsis "Audio plug-in pack for LV2 and JACK environments")
574 "Calf Studio Gear is an audio plug-in pack for LV2 and JACK environments.
575 The suite contains lots of effects (delay, modulation, signal processing,
576 filters, equalizers, dynamics, distortion and mastering effects),
577 instruments (SF2 player, organ simulator and a monophonic synthesizer) and
578 tools (analyzer, mono/stereo tools, crossovers).")
579 ;; calfjackhost is released under GPLv2+
580 ;; The plugins are released under LGPLv2.1+
581 (license (list license:lgpl2.1+ license:gpl2+))))
583 (define-public caps-plugins-lv2
585 (name "caps-plugins-lv2")
586 (version "0.9.24") ; version that has been ported.
589 ;; The Github project hasn't tagged a release.
592 ;; Actually https://github.com/moddevices/caps-lv2.git, but it's
593 ;; missing fixes for newer glibc, so using the origin of a pull
594 ;; request regarding this issue:
595 (url "https://github.com/jujudusud/caps-lv2.git")
596 (commit "9c9478b7fbd8f9714f552ebe2a6866398b0babfb")))
597 (file-name (git-file-name name version))
600 "1idfnazin3cca41zw1a8vwgnxjnkrap7bxxjamjqvgpmvydgcam1"))))
601 (build-system gnu-build-system)
603 `(#:tests? #f ; no check target
605 (modify-phases %standard-phases
606 ;; no configure script
608 (add-after 'unpack 'override-target-directory
609 (lambda* (#:key outputs #:allow-other-keys)
610 (substitute* (find-files "plugins" "Makefile")
611 (("/usr/local")(assoc-ref outputs "out")))
615 ;; home-page of the original LADSPA version: http://quitte.de/dsp/caps.html
616 (home-page "https://github.com/moddevices/caps-lv2")
617 (synopsis "LV2 port of the CAPS audio plugin colection")
619 "LV2 port of CAPS, a collection of audio plugins comprising basic virtual
620 guitar amplification and a small range of classic effects, signal processors and
621 generators of mostly elementary and occasionally exotic nature.")
622 (license license:gpl3+)))
624 (define-public espeak
630 (uri (string-append "mirror://sourceforge/espeak/espeak/"
631 "espeak-" (version-major+minor version)
632 "/espeak-" version "-source.zip"))
635 "0n86gwh9pw0jqqpdz7mxggllfr8k0r7pc67ayy7w5z6z79kig6mz"))
636 (modules '((guix build utils)))
638 ;; remove prebuilt binaries
640 (delete-file-recursively "linux_32bit")
642 (build-system gnu-build-system)
644 `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
645 (string-append "DATADIR="
646 (assoc-ref %outputs "out")
647 "/share/espeak-data")
648 (string-append "LDFLAGS=-Wl,-rpath="
649 (assoc-ref %outputs "out")
652 #:tests? #f ; no check target
654 (modify-phases %standard-phases
658 ;; We use version 19 of the PortAudio library, so we must copy the
659 ;; corresponding file to be sure that espeak compiles correctly.
660 (copy-file "portaudio19.h" "portaudio.h")
661 (substitute* "Makefile"
665 `(("portaudio" ,portaudio)
666 ("pulseaudio" ,pulseaudio)))
667 (native-inputs `(("unzip" ,unzip)))
668 (home-page "http://espeak.sourceforge.net/")
669 (synopsis "Software speech synthesizer")
670 (description "eSpeak is a software speech synthesizer for English and
671 other languages. eSpeak uses a \"formant synthesis\" method. This allows many
672 languages to be provided in a small size. The speech is clear, and can be used
673 at high speeds, but is not as natural or smooth as larger synthesizers which are
674 based on human speech recordings.")
675 (license license:gpl3+)))
677 (define-public infamous-plugins
679 (name "infamous-plugins")
684 (url "https://github.com/ssj71/infamousPlugins.git")
685 (commit (string-append "v" version))))
686 (file-name (git-file-name name version))
689 "0hmqk80w4qxq09iag7b7srf2g0wigkyhzq0ywxvhz2iz0hq9k0dh"))))
690 (build-system cmake-build-system)
692 `(#:tests? #f ; there are no tests
694 (modify-phases %standard-phases
695 (add-after 'unpack 'remove-compiler-flags
697 (substitute* (find-files "." "CMakeLists.txt")
698 (("-msse2 -mfpmath=sse") ""))
705 ("zita-resampler" ,zita-resampler)))
707 `(("pkg-config" ,pkg-config)))
708 (home-page "https://ssj71.github.io/infamousPlugins")
709 (synopsis "LV2 plugins for live use")
711 "The infamous plugins are a collection of LV2 audio plugins for live
712 performances. The plugins include a cellular automaton synthesizer, an
713 envelope follower, distortion effects, tape effects and more.")
714 (license license:gpl2+)))
716 (define-public swh-plugins-lv2
718 (name "swh-plugins-lv2")
723 (url "https://github.com/swh/lv2.git")
724 (commit (string-append "v" version))))
725 (file-name (git-file-name name version))
728 "0y7nnww864mm4k6ayy2lhcws3wlbhb2gkyjbrwk921fvc18qk9mz"))))
729 (build-system gnu-build-system)
731 `(#:tests? #f ; no check target
732 #:make-flags (list "CC=gcc"
733 (string-append "PREFIX="
734 (assoc-ref %outputs "out")))
736 (modify-phases %standard-phases
737 ;; no configure script
739 (add-after 'unpack 'patch-makefile-and-enter-directory
740 ;; The default install target doesn't install, but the
741 ;; "install-system" target does.
743 (substitute* "Makefile"
744 (("install:") "install: install-system"))
750 `(("libxslt" ,libxslt)
751 ("pkg-config" ,pkg-config)))
752 (home-page "http://plugin.org.uk")
753 (synopsis "SWH plugins in LV2 format")
755 "Swh-plugins-lv2 is a collection of audio plugins in LV2 format. Plugin
756 classes include: dynamics (compressor, limiter), time (delay, chorus,
757 flanger), ringmodulator, distortion, filters, pitchshift, oscillators,
758 emulation (valve, tape), bit fiddling (decimator, pointer-cast), etc.")
759 (license license:gpl3+)))
761 (define-public csound
768 (url "https://github.com/csound/csound.git")
770 (file-name (git-file-name name version))
773 "1hlkrnv3gghx4v382nl6v6k2k1dzm5ddk35m5g3q6pzc959726s7"))))
774 (build-system cmake-build-system)
776 `(("alsa-lib" ,alsa-lib)
778 ("pulseaudio" ,pulseaudio)
779 ("libsndfile" ,libsndfile)
783 ("gettext" ,gettext-minimal)))
788 (home-page "https://csound.com/")
789 (synopsis "Sound and music computing system")
791 "Csound is a user-programmable and user-extensible sound processing
792 language and software synthesizer.")
793 (license license:lgpl2.1+)))
795 (define-public clalsadrv
802 "http://kokkinizita.linuxaudio.org"
803 "/linuxaudio/downloads/clalsadrv-"
807 "0bsacx3l9065gk8g4137qmz2ij7s9x06aldvacinzlcslw7bd1kq"))))
808 (build-system gnu-build-system)
810 `(#:tests? #f ; no "check" target
811 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
813 (modify-phases %standard-phases
814 (add-after 'unpack 'patch-makefile-and-enter-directory
816 (substitute* "libs/Makefile"
817 (("/sbin/ldconfig") "true")
818 (("^LIBDIR =.*") "LIBDIR = lib\n"))
821 (add-after 'install 'install-symlink
823 (symlink "libclalsadrv.so"
824 (string-append (assoc-ref %outputs "out")
825 "/lib/libclalsadrv.so.2"))
827 ;; no configure script
828 (delete 'configure))))
830 `(("alsa-lib" ,alsa-lib)
832 (home-page "https://kokkinizita.linuxaudio.org")
833 (synopsis "C++ wrapper around the ALSA API")
835 "clalsadrv is a C++ wrapper around the ALSA API simplifying access to
837 (license license:gpl2+)))
839 (define-public amb-plugins
846 "http://kokkinizita.linuxaudio.org"
847 "/linuxaudio/downloads/AMB-plugins-"
851 "0x4blm4visjqj0ndqr0cg776v3b7lvplpc8cgi9n51llhavn0jpl"))))
852 (build-system gnu-build-system)
854 `(#:tests? #f ; no "check" target
856 (modify-phases %standard-phases
857 ;; no configure script
859 (add-before 'install 'prepare-target-directory
860 (lambda* (#:key outputs #:allow-other-keys)
861 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
863 (add-after 'unpack 'override-target-directory-and-tool-paths
864 (lambda* (#:key outputs #:allow-other-keys)
865 (substitute* "Makefile"
867 (string-append (assoc-ref outputs "out") "/lib/ladspa"))
868 (("/usr/bin/install") (which "install"))
871 (home-page "https://kokkinizita.linuxaudio.org")
872 (synopsis "LADSPA ambisonics plugins")
874 "The AMB plugins are a set of LADSPA ambisonics plugins, mainly to be
875 used within Ardour. Features include: mono and stereo to B-format panning,
876 horizontal rotator, square, hexagon and cube decoders.")
877 (license license:gpl2+)))
879 (define-public mcp-plugins
886 "http://kokkinizita.linuxaudio.org"
887 "/linuxaudio/downloads/MCP-plugins-"
891 "06a9r1l85jmg7l1cvc3788mk8ra0xagjfy1rmhw3b80y4n0vlnvc"))))
892 (build-system gnu-build-system)
894 `(#:tests? #f ; no "check" target
896 (modify-phases %standard-phases
897 ;; no configure script
899 (add-before 'install 'prepare-target-directory
900 (lambda* (#:key outputs #:allow-other-keys)
901 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
903 (add-after 'unpack 'override-target-directory
904 (lambda* (#:key outputs #:allow-other-keys)
905 (substitute* "Makefile"
906 (("/usr") (assoc-ref outputs "out")))
908 (home-page "https://kokkinizita.linuxaudio.org")
909 (synopsis "Chorus, phaser, and vintage high-pass and low-pass filters")
911 "This package provides various LADSPA plugins. @code{cs_chorus} and
912 @code{cs_phaser} provide chorus and phaser effects, respectively;
913 @code{mvclpf24} provides four implementations of the low-pass filter used in
914 vintage Moog synthesizers; @code{mvchpf24} is based on the voltage-controlled
915 high-pass filter by Robert Moog. The filters attempt to accurately emulate
916 the non-linear circuit elements of their original analog counterparts.")
917 (license license:gpl2+)))
919 (define-public rev-plugins
926 "http://kokkinizita.linuxaudio.org"
927 "/linuxaudio/downloads/REV-plugins-"
931 "1ikpinxm00pkfi259bnkzhsy3miagrjgdihaaf5x4v7zac29j3g7"))))
932 (build-system gnu-build-system)
934 `(#:tests? #f ; no "check" target
936 (modify-phases %standard-phases
937 ;; no configure script
939 (add-before 'install 'prepare-target-directory
940 (lambda* (#:key outputs #:allow-other-keys)
941 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
943 (add-after 'unpack 'override-target-directory
944 (lambda* (#:key outputs #:allow-other-keys)
945 (substitute* "Makefile"
946 (("/usr") (assoc-ref outputs "out")))
948 (home-page "https://kokkinizita.linuxaudio.org")
949 (synopsis "LADSPA reverb plugin")
951 "This package provides a stereo reverb LADSPA plugin based on the
952 well-known greverb.")
953 (license license:gpl2+)))
955 (define-public fil-plugins
962 "http://kokkinizita.linuxaudio.org"
963 "/linuxaudio/downloads/FIL-plugins-"
967 "1scfv9j7jrp50r565haa4rvxn1vk2ss86xssl5qgcr8r45qz42qw"))))
968 (build-system gnu-build-system)
970 `(#:tests? #f ; no "check" target
972 (modify-phases %standard-phases
973 ;; no configure script
975 (add-before 'install 'prepare-target-directory
976 (lambda* (#:key outputs #:allow-other-keys)
977 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
979 (add-after 'unpack 'override-target-directory
980 (lambda* (#:key outputs #:allow-other-keys)
981 (substitute* "Makefile"
982 (("/usr") (assoc-ref outputs "out")))
984 (home-page "https://kokkinizita.linuxaudio.org")
985 (synopsis "LADSPA four-band parametric equalizer plugin")
987 "This package provides a LADSPA plugin for a four-band parametric
988 equalizer. Each section has an active/bypass switch, frequency, bandwidth and
989 gain controls. There is also a global bypass switch and gain control.
991 The 2nd order resonant filters are implemented using a Mitra-Regalia style
992 lattice filter, which is stable even while parameters are being changed.
994 All switches and controls are internally smoothed, so they can be used 'live'
995 without any clicks or zipper noises. This makes this plugin suitable for use
996 in systems that allow automation of plugin control ports, such as Ardour, or
998 (license license:gpl2+)))
1000 (define-public ste-plugins
1002 (name "ste-plugins")
1007 "http://kokkinizita.linuxaudio.org"
1008 "/linuxaudio/downloads/STE-plugins-"
1009 version ".tar.bz2"))
1012 "0s3c9w5xihs87cnd1lh9xgj3maabjdyh6bl766qp5lhkg3ax8zy6"))))
1013 (build-system gnu-build-system)
1015 `(#:tests? #f ; no "check" target
1017 (modify-phases %standard-phases
1018 ;; no configure script
1020 (add-before 'install 'prepare-target-directory
1021 (lambda* (#:key outputs #:allow-other-keys)
1022 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1024 (add-after 'unpack 'override-target-directory
1025 (lambda* (#:key outputs #:allow-other-keys)
1026 (substitute* "Makefile"
1027 (("/usr") (assoc-ref outputs "out")))
1029 (home-page "https://kokkinizita.linuxaudio.org")
1030 (synopsis "LADSPA stereo width plugin")
1032 "This package provides a LADSPA plugin to manipulate the stereo width of
1034 (license license:gpl2+)))
1036 (define-public vco-plugins
1038 (name "vco-plugins")
1043 "http://kokkinizita.linuxaudio.org"
1044 "/linuxaudio/downloads/VCO-plugins-"
1045 version ".tar.bz2"))
1048 "1xzqdg3b07r7zww05y9bb737l9dxvfkv28m3fyak1aazaci3rsgl"))))
1049 (build-system gnu-build-system)
1051 `(#:tests? #f ; no "check" target
1053 (modify-phases %standard-phases
1054 ;; no configure script
1056 (add-before 'install 'prepare-target-directory
1057 (lambda* (#:key outputs #:allow-other-keys)
1058 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1060 (add-after 'unpack 'override-target-directory
1061 (lambda* (#:key outputs #:allow-other-keys)
1062 (substitute* "Makefile"
1063 (("/usr") (assoc-ref outputs "out"))
1064 (("/bin/cp") (which "cp")))
1066 (home-page "https://kokkinizita.linuxaudio.org")
1067 (synopsis "LADSPA plugin for synthesizer oscillators")
1069 "The @code{blvco} LADSPA plugin provides three anti-aliased oscillators:
1072 @item Pulse-VCO, a dirac pulse oscillator with flat amplitude spectrum
1073 @item Saw-VCO, a sawtooth oscillator with 1/F amplitude spectrum
1074 @item Rec-VCO, a square / rectange oscillator
1077 All oscillators are low-pass filtered to provide waveforms similar to the
1078 output of analog synthesizers such as the Moog Voyager.")
1079 (license license:gpl2+)))
1081 (define-public wah-plugins
1083 (name "wah-plugins")
1088 "http://kokkinizita.linuxaudio.org"
1089 "/linuxaudio/downloads/WAH-plugins-"
1090 version ".tar.bz2"))
1093 "1wkbjarxdhjixkh7d5abralj11dj2xxg644fz3ycd7qyfgfvjfgd"))))
1094 (build-system gnu-build-system)
1096 `(#:tests? #f ; no "check" target
1098 (modify-phases %standard-phases
1099 ;; no configure script
1101 (add-before 'install 'prepare-target-directory
1102 (lambda* (#:key outputs #:allow-other-keys)
1103 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1105 (add-after 'unpack 'override-target-directory
1106 (lambda* (#:key outputs #:allow-other-keys)
1107 (substitute* "Makefile"
1108 (("/usr") (assoc-ref outputs "out")))
1110 (home-page "https://kokkinizita.linuxaudio.org")
1111 (synopsis "LADSPA Autowah effect plugin")
1113 "This package provides a LADSPA plugin for a Wah effect with envelope
1115 (license license:gpl2+)))
1117 (define-public g2reverb
1124 "http://kokkinizita.linuxaudio.org"
1125 "/linuxaudio/downloads/g2reverb-"
1126 version ".tar.bz2"))
1129 "18wb8vj1kky5glr76s34awbi8qzplsmf3wjbd7a12hfv4j0bkwrj"))))
1130 (build-system gnu-build-system)
1132 `(#:tests? #f ; no "check" target
1134 (modify-phases %standard-phases
1135 ;; no configure script
1137 (add-before 'install 'prepare-target-directory
1138 (lambda* (#:key outputs #:allow-other-keys)
1139 (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
1141 (add-after 'unpack 'override-target-directory
1142 (lambda* (#:key outputs #:allow-other-keys)
1143 (substitute* "Makefile"
1144 (("/usr") (assoc-ref outputs "out")))
1146 (home-page "https://kokkinizita.linuxaudio.org")
1147 (synopsis "LADSPA stereo reverb plugin")
1149 "This package provides a LADSPA plugin for a stereo reverb effect.")
1150 (license license:gpl2+)))
1152 (define-public fluidsynth
1159 (url "https://github.com/FluidSynth/fluidsynth.git")
1160 (commit (string-append "v" version))))
1161 (file-name (string-append name "-" version "-checkout"))
1164 "00f6bhw4ddrinb5flvg5y53rcvnf4km23a6nbvnswmpq13568v78"))))
1165 (build-system cmake-build-system)
1167 '(#:tests? #f ; no check target
1169 (modify-phases %standard-phases
1170 (add-after 'unpack 'fix-libdir
1172 ;; Install libraries to /lib, not /lib64.
1173 (substitute* "CMakeLists.txt"
1174 (("LIB_SUFFIX \\$\\{_init_lib_suffix\\}")
1178 `(("libsndfile" ,libsndfile)
1179 ("alsa-lib" ,alsa-lib)
1183 ("readline" ,readline)
1186 `(("pkg-config" ,pkg-config)))
1187 (home-page "http://www.fluidsynth.org/")
1188 (synopsis "SoundFont synthesizer")
1190 "FluidSynth is a real-time software synthesizer based on the SoundFont 2
1191 specifications. FluidSynth reads and handles MIDI events from the MIDI input
1192 device. It is the software analogue of a MIDI synthesizer. FluidSynth can
1193 also play midifiles using a Soundfont.")
1194 (license license:lgpl2.1+)))
1196 ;; gzdoom@3.3.0 and lmms@1.1.3 requires this version. Remove once no longer
1198 (define-public fluidsynth-1
1200 (inherit fluidsynth)
1203 (inherit (package-source fluidsynth))
1205 (url "https://github.com/FluidSynth/fluidsynth")
1206 (commit (string-append "v" version))))
1207 (file-name (git-file-name "fluidsynth" version))
1210 "0n75jq3xgq46hfmjkaaxz3gic77shs4fzajq40c8gk043i84xbdh"))))))
1212 (define-public faad2
1218 (uri (string-append "mirror://sourceforge/faac/faad2-src/faad2-"
1219 version "/faad2-" version ".zip"))
1222 "16f3l16c00sg0wkrkm3vzv0gy3g97x309vw788igs0cap2x1ak3z"))))
1223 (build-system gnu-build-system)
1225 `(("autoconf" ,autoconf)
1226 ("automake" ,automake)
1227 ("libtool" ,libtool)
1231 (modify-phases %standard-phases
1234 (substitute* "bootstrap" (("\r\n") "\n"))
1235 (invoke "sh" "bootstrap"))))))
1236 (home-page "http://www.audiocoding.com/faad2.html")
1237 (synopsis "MPEG-4 and MPEG-2 AAC decoder")
1239 "FAAD2 is an MPEG-4 and MPEG-2 AAC decoder supporting LC, Main, LTP, SBR,
1241 (license license:gpl2)))
1243 (define-public faust
1250 (url "https://github.com/grame-cncm/faust.git")
1251 (commit (string-append "v"
1252 (string-map (lambda (c)
1253 (if (char=? c #\.) #\- c))
1255 (file-name (string-append "faust-" version "-checkout"))
1258 "0qc6iwjd3i80jdyjc186c6ywipmjzl8wlsp4050pbr56q4rlkd4z"))))
1259 (build-system gnu-build-system)
1261 `(#:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
1264 (modify-phases %standard-phases
1265 ;; no "configure" script
1267 ;; Files appear under $out/share/faust that are read-only. The
1268 ;; install phase tries to overwrite them and fails, so we change
1269 ;; the permissions first.
1270 (add-before 'install 'fix-permissions
1272 (for-each (lambda (file)
1274 (find-files "architecture/max-msp" ".*"))
1277 `(("unzip" ,unzip)))
1278 (home-page "http://faust.grame.fr/")
1279 (synopsis "Signal processing language")
1281 "Faust is a programming language for realtime audio signal processing.")
1282 (license license:gpl2+)))
1284 (define-public faust-2
1290 (uri (string-append "https://github.com/grame-cncm/faust/"
1291 "releases/download/" version
1292 "/faust-" version ".tar.gz"))
1295 "1yz5jnr76hh7rmxkpdi7gyrw1wp4gyqfpq8zyl97qdi5ga5gjznq"))))
1296 (build-system gnu-build-system)
1298 (substitute-keyword-arguments (package-arguments faust)
1299 ((#:make-flags flags)
1300 `(list (string-append "prefix=" (assoc-ref %outputs "out"))
1303 `(("llvm" ,llvm-3.8)
1306 ("ctags" ,emacs-minimal) ; for ctags
1307 ("pkg-config" ,pkg-config)))
1309 `(("libsndfile" ,libsndfile)
1310 ("libmicrohttpd" ,libmicrohttpd)
1311 ("ncurses" ,ncurses)
1312 ("openssl" ,openssl)
1315 (define-public freepats
1318 (version "20060219")
1321 (uri (string-append "http://freepats.zenvoid.org/freepats-"
1322 version ".tar.bz2"))
1325 "12iw36rd94zirll96cd5k0va7p5hxmf2shvjlhzihcmjaw8flq82"))))
1326 (build-system trivial-build-system)
1328 `(#:modules ((guix build utils))
1330 (use-modules (guix build utils))
1331 (let ((out (string-append %output "/share/freepats")))
1332 (setenv "PATH" (string-append
1333 (assoc-ref %build-inputs "bzip2") "/bin:"
1334 (assoc-ref %build-inputs "tar") "/bin"))
1335 (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
1337 ;; Use absolute pattern references
1338 (substitute* "freepats.cfg"
1339 (("Tone_000") (string-append out "/Tone_000"))
1340 (("Drum_000") (string-append out "/Drum_000")))
1342 (copy-recursively "." out)
1347 (home-page "http://freepats.zenvoid.org")
1348 (synopsis "GUS compatible patches for MIDI players")
1350 "FreePats is a project to create a free and open set of GUS compatible
1351 patches that can be used with softsynths such as Timidity and WildMidi.")
1352 ;; GPLv2+ with exception for compositions using these patches.
1353 (license license:gpl2+)))
1355 (define-public guitarix
1362 "mirror://sourceforge/guitarix/guitarix/guitarix2-"
1366 "1wfm8wrwrnqpb4ihy75n7l9i6vml536jlq9pdx2pblbc4ba3paac"))))
1367 (build-system waf-build-system)
1369 `(#:tests? #f ; no "check" target
1373 ;; Add the output lib directory to the RUNPATH.
1374 (string-append "--ldflags=-Wl,-rpath=" %output "/lib")
1375 "--cxxflags=-std=c++11")))
1377 `(("libsndfile" ,libsndfile)
1390 ("zita-resampler" ,zita-resampler)
1391 ("zita-convolver" ,zita-convolver)))
1395 ("intltool" ,intltool)
1396 ("gettext" ,gettext-minimal)
1397 ("pkg-config" ,pkg-config)))
1398 (native-search-paths
1399 (list (search-path-specification
1400 (variable "LV2_PATH")
1401 (files '("lib/lv2")))))
1402 (home-page "http://guitarix.org/")
1403 (synopsis "Virtual guitar amplifier")
1404 (description "Guitarix is a virtual guitar amplifier running JACK.
1405 Guitarix takes the signal from your guitar as a mono-signal from your sound
1406 card. The input is processed by a main amp and a rack-section. Both can be
1407 routed separately and deliver a processed stereo-signal via JACK. You may
1408 fill the rack with effects from more than 25 built-in modules including stuff
1409 from a simple noise gate to modulation effects like flanger, phaser or
1411 (license license:gpl2+)))
1413 (define-public guitarix-lv2
1414 (package (inherit guitarix)
1415 (name "guitarix-lv2")
1417 (substitute-keyword-arguments (package-arguments guitarix)
1418 ((#:configure-flags flags)
1419 `(cons "--no-standalone" ,flags))))))
1421 (define-public rakarrack
1427 (uri (string-append "mirror://sourceforge/rakarrack/rakarrack/"
1428 "rakarrack-" version "/rakarrack-"
1429 version ".tar.bz2"))
1432 "1rpf63pdn54c4yg13k7cb1w1c7zsvl97c4qxcpz41c8l91xd55kn"))
1433 (modules '((guix build utils)))
1436 (substitute* '("src/process.C"
1438 (("#include <Fl/") "#include <FL/"))
1440 (build-system gnu-build-system)
1442 `(("alsa-utils" ,alsa-utils)
1445 ("libxext" ,libxext)
1446 ("libxfixes" ,libxfixes)
1448 ("libxrender" ,libxrender)
1450 ("fontconfig" ,fontconfig)
1451 ("freetype" ,freetype)
1453 ("alsa-lib" ,alsa-lib)
1454 ("libsndfile" ,libsndfile)
1455 ("libsamplerate" ,libsamplerate)
1457 (home-page "http://rakarrack.sourceforge.net/")
1458 (synopsis "Audio effects processor")
1460 "Rakarrack is a richly featured multi-effects processor emulating a
1461 guitar effects pedalboard. Effects include compressor, expander, noise gate,
1462 equalizers, exciter, flangers, chorus, various delay and reverb effects,
1463 distortion modules and many more. Most of the effects engine is built from
1464 modules found in the excellent software synthesizer ZynAddSubFX. Presets and
1465 user interface are optimized for guitar, but Rakarrack processes signals in
1466 stereo while it does not apply internal band-limiting filtering, and thus is
1467 well suited to all musical instruments and vocals.")
1468 ;; The code is explicitly licensed under the GPL version 2 only.
1469 (license license:gpl2)))
1477 ;; The original home-page is gone. Download the tarball from an
1478 ;; archive mirror instead.
1479 (uri (list (string-append
1480 "https://web.archive.org/web/20150803095032/"
1481 "http://factorial.hu/system/files/ir.lv2-"
1484 "https://mirrors.kernel.org/gentoo/distfiles/ir.lv2-"
1485 version ".tar.gz")))
1488 "1jh2z01l9m4ar7yz0n911df07dygc7n4cl59p7qdjbh0nvkm747g"))))
1489 (build-system gnu-build-system)
1491 `(#:tests? #f ; no tests
1492 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
1493 #:phases (modify-phases %standard-phases
1494 (delete 'configure)))) ; no configure script
1496 `(("libsndfile" ,libsndfile)
1497 ("libsamplerate" ,libsamplerate)
1501 ("zita-convolver" ,zita-convolver)))
1503 `(("pkg-config" ,pkg-config)))
1504 (native-search-paths
1505 (list (search-path-specification
1506 (variable "LV2_PATH")
1507 (files '("lib/lv2")))))
1508 ;; Link to an archived copy of the home-page since the original is gone.
1509 (home-page (string-append "https://web.archive.org/web/20150803095032/"
1510 "http://factorial.hu/plugins/lv2/ir"))
1511 (synopsis "LV2 convolution reverb")
1513 "IR is a low-latency, real-time, high performance signal convolver
1514 especially for creating reverb effects. It supports impulse responses with 1,
1515 2 or 4 channels, in any soundfile format supported by libsndfile.")
1516 (license license:gpl2+)))
1518 (define-public jack-1
1525 "http://jackaudio.org/downloads/jack-audio-connection-kit-"
1530 "0i6l25dmfk2ji2lrakqq9icnwjxklgcjzzk65dmsff91z2zva5rm"))))
1531 (build-system gnu-build-system)
1533 `(#:phases (modify-phases %standard-phases
1534 (add-after 'unpack 'patch-configure
1536 (substitute* "configure"
1537 ;; Install to <out/lib> regardless of platform.
1538 (("libnn=lib64") "libnn=lib"))
1541 `(("alsa-lib" ,alsa-lib)
1542 ("readline" ,readline)))
1543 ;; uuid.h is included in the JACK type headers
1544 ;; db.h is included in the libjack metadata headers
1546 `(("libuuid" ,util-linux)
1549 `(("pkg-config" ,pkg-config)))
1550 (home-page "http://jackaudio.org/")
1551 (synopsis "JACK audio connection kit")
1553 "JACK is a low-latency audio server. It can connect a number of
1554 different applications to an audio device, as well as allowing them to share
1555 audio between themselves. JACK is different from other audio server efforts
1556 in that it has been designed from the ground up to be suitable for
1557 professional audio work. This means that it focuses on two key areas:
1558 synchronous execution of all clients, and low latency operation.")
1559 ;; Most files are licensed under the GPL. However, the libjack/ tree is
1560 ;; licensed under the LGPL in order to allow for proprietary usage.
1561 (license (list license:gpl2+ license:lgpl2.1+))))
1563 ;; Packages depending on JACK should always prefer jack-1. Both jack-1 and
1564 ;; jack-2 implement the same API. JACK2 is provided primarily as a client
1565 ;; program for users who might benefit from the D-BUS features.
1566 (define-public jack-2
1567 (package (inherit jack-1)
1572 (uri (string-append "https://github.com/jackaudio/jack2/releases/"
1573 "download/v" version "/jack2-"
1575 (file-name (string-append name "-" version ".tar.gz"))
1578 "0crf4y9a5j9miw8r5ji4l3w5w0y2frrf7xyfsfdgacnw6vwy5vyy"))))
1579 (build-system waf-build-system)
1581 `(#:python ,python-2
1582 #:tests? #f ; no check target
1583 #:configure-flags '("--dbus"
1586 (modify-phases %standard-phases
1588 'configure 'set-linkflags
1590 ;; Add $libdir to the RUNPATH of all the binaries.
1591 (substitute* "wscript"
1592 ((".*CFLAGS.*-Wall.*" m)
1594 " conf.env.append_unique('LINKFLAGS',"
1595 "'-Wl,-rpath=" %output "/lib')\n")))
1597 (add-after 'install 'wrap-python-scripts
1598 (lambda* (#:key inputs outputs #:allow-other-keys)
1599 ;; Make sure 'jack_control' runs with the correct PYTHONPATH.
1600 (let* ((out (assoc-ref outputs "out"))
1601 (path (getenv "PYTHONPATH")))
1602 (wrap-program (string-append out "/bin/jack_control")
1603 `("PYTHONPATH" ":" prefix (,path))))
1606 `(("alsa-lib" ,alsa-lib)
1609 ("libsamplerate" ,libsamplerate)
1611 ("python2-dbus" ,python2-dbus)
1612 ("readline" ,readline)))
1614 `(("pkg-config" ,pkg-config)))
1615 ;; Most files are under GPLv2+, but some headers are under LGPLv2.1+
1616 (license (list license:gpl2+ license:lgpl2.1+))))
1624 (uri (string-append "https://download.drobilla.net/jalv-"
1625 version ".tar.bz2"))
1628 "1x2wpzzx2cgvz3dgdcgsj8dr0w3zsasy62mvl199bsdj5fbjaili"))))
1629 (build-system waf-build-system)
1631 `(#:tests? #f ; no check target
1634 (modify-phases %standard-phases
1636 'configure 'set-flags
1638 ;; Compile with C++11, required by gtkmm.
1639 (setenv "CXXFLAGS" "-std=c++11")
1649 `(("pkg-config" ,pkg-config)))
1650 (home-page "https://drobilla.net/software/jalv/")
1651 (synopsis "Simple LV2 host for JACK")
1653 "Jalv is a simple but fully featured LV2 host for JACK. It runs LV2
1654 plugins and exposes their ports as JACK ports, essentially making any LV2
1655 plugin function as a JACK application.")
1656 (license license:isc)))
1658 (define-public ladspa
1665 ;; Since the official link is dead,
1666 ;; we download the tarball from Debian or Internet Archive.
1667 (uri (list (string-append "http://http.debian.net"
1668 "/debian/pool/main/l/ladspa-sdk/ladspa-sdk_"
1669 version ".orig.tar.gz")
1670 (string-append "https://web.archive.org/web/20140717172251/"
1671 "http://www.ladspa.org/download/ladspa_sdk_"
1675 "0srh5n2l63354bc0srcrv58rzjkn4gv8qjqzg8dnq3rs4m7kzvdm"))))
1676 (build-system gnu-build-system)
1678 `(#:tests? #f ; the "test" target is a listening test only
1680 (modify-phases %standard-phases
1682 (lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
1684 (let ((out (assoc-ref outputs "out")))
1685 (substitute* "makefile"
1686 (("/usr/lib/ladspa/") (string-append out "/lib/ladspa/"))
1687 (("/usr/include/") (string-append out "/include/"))
1688 (("/usr/bin/") (string-append out "/bin/"))
1689 (("-mkdirhier") "mkdir -p")
1690 (("^CC.*") "CC = gcc\n")
1691 (("^CPP.*") "CPP = g++\n")))
1694 ;; Since the home page is gone, we provide a link to the archived version.
1696 "https://web.archive.org/web/20140729190945/http://www.ladspa.org/")
1697 (synopsis "Linux Audio Developer's Simple Plugin API (LADSPA)")
1699 "LADSPA is a standard that allows software audio processors and effects
1700 to be plugged into a wide range of audio synthesis and recording packages.")
1701 (license license:lgpl2.1+)))
1706 (version "0.6.0-rc2")
1709 ;; The tilde is not permitted in the builder name, but is used
1712 "mirror://savannah/lash/lash-"
1713 (string-join (string-split version #\-) "~")
1715 (file-name (string-append name "-" version ".tar.bz2"))
1718 "12z1vx3krrzsfccpah9xjs68900xvr7bw92wx8np5871i2yv47iw"))))
1719 (build-system gnu-build-system)
1722 (modify-phases %standard-phases
1723 ;; lashd embeds an ancient version of sigsegv so we just skip it
1724 (add-after 'unpack 'skip-lashd
1726 (substitute* '("Makefile.am" "Makefile.in")
1729 #:configure-flags '("--disable-static")))
1734 ("readline" ,readline)
1735 ("python" ,python-2)))
1736 ;; According to pkg-config, packages depending on lash also need to have
1737 ;; at least the following packages declared as inputs.
1739 `(("alsa-lib" ,alsa-lib)
1741 ("libxml2" ,libxml2)))
1743 `(("pkg-config" ,pkg-config)))
1744 (home-page "https://www.nongnu.org/lash/")
1745 (synopsis "Audio application session manager")
1747 "LASH is a session management system for audio applications. It allows
1748 you to save and restore audio sessions consisting of multiple interconneced
1749 applications, restoring program state (i.e. loaded patches) and the
1750 connections between them.")
1751 (license license:gpl2+)))
1753 (define-public libbs2b
1759 (uri (string-append "mirror://sourceforge/bs2b/libbs2b/" version
1760 "/libbs2b-" version ".tar.lzma"))
1763 "1mcc4gjkmphczjybnsrip3gq1f974knzys7x49bv197xk3fn8wdr"))))
1764 (build-system gnu-build-system)
1765 (native-inputs `(("pkg-config" ,pkg-config)))
1766 (inputs `(("libsndfile" ,libsndfile)))
1767 (home-page "https://sourceforge.net/projects/bs2b/")
1768 (synopsis "Bauer stereophonic-to-binaural DSP")
1770 "The Bauer stereophonic-to-binaural DSP (bs2b) library and plugins is
1771 designed to improve headphone listening of stereo audio records. Recommended
1772 for headphone prolonged listening to disable superstereo fatigue without
1773 essential distortions.")
1774 (license license:expat)))
1776 (define-public liblo
1782 (uri (string-append "mirror://sourceforge/liblo/liblo/" version
1783 "/liblo-" version ".tar.gz"))
1786 "0sn0ckc1d0845mhsaa62wf7f9v0c0ykiq796a30ja5096kib9qdc"))))
1787 (build-system gnu-build-system)
1789 `(;; liblo test FAILED
1790 ;; liblo server error 19 in setsockopt(IP_ADD_MEMBERSHIP): No such device
1792 (home-page "http://liblo.sourceforge.net")
1793 (synopsis "Implementation of the Open Sound Control protocol")
1795 "liblo is a lightweight library that provides an easy to use
1796 implementation of the Open Sound Control (@dfn{OSC}) protocol.")
1797 (license license:lgpl2.1+)))
1799 (define-public python-pyaudio
1801 (name "python-pyaudio")
1808 "https://pypi.python.org/packages/ab/42/"
1809 "b4f04721c5c5bfc196ce156b3c768998ef8c0ae3654ed29ea5020c749a6b"
1810 "/PyAudio-" version ".tar.gz"))
1813 "0x7vdsigm7xgvyg3shd3lj113m8zqj2pxmrgdyj66kmnw0qdxgwk"))))
1814 (build-system python-build-system)
1816 `(("portaudio" ,portaudio)))
1817 (home-page "https://people.csail.mit.edu/hubert/pyaudio/")
1818 (synopsis "Bindings for PortAudio v19")
1819 (description "This package provides bindings for PortAudio v19, the
1820 cross-platform audio input/output stream library.")
1821 (license license:expat)))
1823 (define-public python2-pyaudio
1824 (package-with-python2 python-pyaudio))
1826 (define-public python-pyliblo
1828 (name "python-pyliblo")
1832 (uri (string-append "http://das.nasophon.de/download/pyliblo-"
1836 "13vry6xhxm7adnbyj28w1kpwrh0kf7nw83cz1yq74wl21faz2rzw"))))
1837 (build-system python-build-system)
1838 (arguments `(#:tests? #f)) ;no tests
1840 `(("python-cython" ,python-cython)))
1842 `(("liblo" ,liblo)))
1843 (home-page "http://das.nasophon.de/pyliblo/")
1844 (synopsis "Python bindings for liblo")
1846 "Pyliblo is a Python wrapper for the liblo Open Sound Control (OSC)
1847 library. It supports almost the complete functionality of liblo, allowing you
1848 to send and receive OSC messages using a nice and simple Python API. Also
1849 included are the command line utilities @code{send_osc} and @code{dump_osc}.")
1850 (license license:lgpl2.1+)))
1852 (define-public python2-pyliblo
1853 (package-with-python2 python-pyliblo))
1861 (uri (string-append "https://download.drobilla.net/lilv-"
1862 version ".tar.bz2"))
1865 "0f24cd7wkk5l969857g2ydz2kjjrkvvddg1g87xzzs78lsvq8fy3"))))
1866 (build-system waf-build-system)
1868 `(#:tests? #f ; no check target
1870 (modify-phases %standard-phases
1872 'configure 'set-ldflags
1873 (lambda* (#:key outputs #:allow-other-keys)
1875 (string-append "-Wl,-rpath="
1876 (assoc-ref outputs "out") "/lib"))
1878 ;; Required by lilv-0.pc.
1883 ("sratom" ,sratom)))
1885 `(("pkg-config" ,pkg-config)))
1886 (home-page "https://drobilla.net/software/lilv/")
1887 (synopsis "Library to simplify use of LV2 plugins in applications")
1889 "Lilv is a C library to make the use of LV2 plugins as simple as possible
1890 for applications. Lilv is the successor to SLV2, rewritten to be
1891 significantly faster and have minimal dependencies.")
1892 (license license:isc)))
1900 (uri (string-append "http://lv2plug.in/spec/lv2-"
1901 version ".tar.bz2"))
1904 "0chxwys3vnn3nxc9x2vchm74s9sx0vfra6y893byy12ci61jc1dq"))))
1905 (build-system waf-build-system)
1907 `(#:tests? #f ; no check target
1908 ;; XXX: The bundled waf does not work with Python 3.7.
1910 #:configure-flags '("--no-plugins")))
1912 ;; Leaving off cairo and gtk+-2.0 which are needed for example plugins
1913 `(("libsndfile" ,libsndfile)))
1915 `(("pkg-config" ,pkg-config)))
1916 (home-page "http://lv2plug.in/")
1917 (synopsis "LV2 audio plugin specification")
1919 "LV2 is an open specification for audio plugins and host applications.
1920 At its core, LV2 is a simple stable interface, accompanied by extensions which
1921 add functionality to support the needs of increasingly powerful audio
1923 (license license:isc)))
1925 (define-public lv2-devel
1926 (let ((commit "39c7c726cd52b2863fcea356cafe1bcab2ba7f37")
1928 (package (inherit lv2)
1930 (version (string-append "1.15.3-" revision "." (string-take commit 7)))
1934 (url "http://lv2plug.in/git/lv2.git")
1936 (file-name (git-file-name name version))
1939 "1gp2rd99dfmpibvpixrqn115mrhybzf3if3h8bssf6siyi13f29r")))))))
1941 (define-public lv2-mda-piano
1943 (name "lv2-mda-piano")
1948 (url "http://git.elephly.net/software/lv2-mdametapiano.git")
1950 (file-name (git-file-name name version))
1953 "07lywf6lpfpndg3i9w752mmlg2hgn1bwp23h8b0mdj6awh67abqd"))))
1954 (build-system gnu-build-system)
1956 `(#:make-flags (list
1958 (string-append "PREFIX=" (assoc-ref %outputs "out")))
1959 #:tests? #f ; no check target
1960 #:phases (modify-phases %standard-phases (delete 'configure))))
1965 `(("pkg-config" ,pkg-config)))
1966 (native-search-paths
1967 (list (search-path-specification
1968 (variable "LV2_PATH")
1969 (files '("lib/lv2")))))
1970 (home-page "http://elephly.net/lv2/mdapiano.html")
1971 (synopsis "LV2 port of the mda Piano plugin")
1972 (description "An LV2 port of the mda Piano VSTi.")
1973 (license license:gpl3+)))
1975 (define-public lv2-mda-epiano
1976 (package (inherit lv2-mda-piano)
1977 (name "lv2-mda-epiano")
1979 `(#:make-flags (list
1981 (string-append "PREFIX=" (assoc-ref %outputs "out")))
1982 #:tests? #f ; no check target
1983 #:phases (modify-phases %standard-phases (delete 'configure))))
1984 (home-page "http://elephly.net/lv2/mdaepiano.html")
1985 (synopsis "LV2 port of the mda EPiano plugin")
1986 (description "An LV2 port of the mda EPiano VSTi.")))
1995 (url "https://github.com/lvtk/lvtk.git")
1997 (file-name (git-file-name name version))
2000 "1b01zvzl70ana6l1kn8fgyr7msnn3c7x61cgw7fdpp50322352p8"))))
2001 (build-system waf-build-system)
2003 `(#:tests? #f ; no check target
2006 (list (string-append "--boost-includes="
2007 (assoc-ref %build-inputs "boost")
2009 #:phases (modify-phases %standard-phases
2011 'configure 'set-flags
2012 (lambda* (#:key inputs #:allow-other-keys)
2013 ;; See e.g. https://github.com/lvtk/lvtk/issues/21
2016 "-L" (assoc-ref inputs "boost") "/lib "
2019 (substitute* '("src/wscript_build"
2020 "examples/wscript_build")
2021 (("cxxflags.*= \\[" line)
2022 (string-append line "\"-std=c++11\", ")))
2029 `(("pkg-config" ,pkg-config)))
2030 (home-page "https://github.com/lvtk/lvtk")
2031 (synopsis "C++ libraries for LV2 plugins")
2033 "The LV2 Toolkit (LVTK) contains libraries that wrap the LV2 C API and
2034 extensions into easy to use C++ classes. It is the successor of
2036 (license license:gpl3+)))
2038 (define-public openal
2045 "http://openal-soft.org/openal-releases/openal-soft-"
2046 version ".tar.bz2"))
2049 "1sdjhkz2gd6lbnwphi1b6aw3br4wv2lik5vnqh6mxfc8a7zqfbsw"))))
2050 (build-system cmake-build-system)
2052 `(#:tests? #f ; no check target
2054 (modify-phases %standard-phases
2056 'unpack 'use-full-library-paths
2057 (lambda* (#:key inputs #:allow-other-keys)
2058 (substitute* "Alc/backends/pulseaudio.c"
2059 (("#define PALIB \"libpulse\\.so\\.0\"")
2060 (string-append "#define PALIB \""
2061 (assoc-ref inputs "pulseaudio")
2062 "/lib/libpulse.so.0"
2064 (substitute* "Alc/backends/alsa.c"
2065 (("LoadLib\\(\"libasound\\.so\\.2\"\\)")
2066 (string-append "LoadLib(\""
2067 (assoc-ref inputs "alsa-lib")
2068 "/lib/libasound.so.2"
2072 `(("alsa-lib" ,alsa-lib)
2073 ("pulseaudio" ,pulseaudio)))
2074 (synopsis "3D audio API")
2076 "OpenAL provides capabilities for playing audio in a virtual 3D
2077 environment. Distance attenuation, doppler shift, and directional sound
2078 emitters are among the features handled by the API. More advanced effects,
2079 including air absorption, occlusion, and environmental reverb, are available
2080 through the EFX extension. It also facilitates streaming audio, multi-channel
2081 buffers, and audio capture.")
2082 (home-page "http://openal-soft.org/")
2083 (license license:lgpl2.0+)))
2085 (define-public freealut
2091 ;; Upstream url is unclear, many systems use Fedora, there is also
2092 ;; https://github.com/vancegroup/freealut though the status of it
2093 ;; (official? unofficial?) is not clear.
2095 "https://pkgs.fedoraproject.org/repo/pkgs/" name "/" name "-"
2096 version ".tar.gz" "/e089b28a0267faabdb6c079ee173664a/" name
2097 "-" version ".tar.gz"))
2100 "0kzlil6112x2429nw6mycmif8y6bxr2cwjcvp18vh6s7g63ymlb0"))))
2101 (build-system cmake-build-system)
2103 `(#:tests? #f)) ; no check target
2105 `(("openal" ,openal)))
2106 (synopsis "Free implementation of OpenAL's ALUT standard")
2107 (description "freealut is the OpenAL Utility Toolkit.")
2108 (home-page "http://kcat.strangesoft.net/openal.html")
2109 (license license:lgpl2.0)))
2111 (define-public patchage
2117 (uri (string-append "https://download.drobilla.net/patchage-"
2122 "1agdpwwi42176l4mxj0c4fsvdiv1ig56bfnnx0msckxmy57df8bb"))))
2123 (build-system waf-build-system)
2125 `(#:tests? #f ; no check target
2126 #:python ,python-2))
2128 `(("alsa-lib" ,alsa-lib)
2134 ("dbus-glib" ,dbus-glib)))
2136 `(("pkg-config" ,pkg-config)))
2137 (home-page "https://drobilla.net/software/patchage/")
2138 (synopsis "Modular patch bay for audio and MIDI systems")
2140 "Patchage is a modular patch bay for audio and MIDI systems based on JACK
2142 (license license:gpl3+)))
2144 (define-public qjackctl
2150 (uri (string-append "mirror://sourceforge/qjackctl/qjackctl/"
2151 version "/qjackctl-" version ".tar.gz"))
2154 "1rzzqa39a6llr52vjkjr0a86nc776kmr5xs52qqga8ms9697psz5"))))
2155 (build-system gnu-build-system)
2157 '(#:tests? #f)) ; no check target
2160 ("alsa-lib" ,alsa-lib)
2162 ("qtx11extras" ,qtx11extras)))
2164 `(("pkg-config" ,pkg-config)
2165 ("qttools" ,qttools)))
2166 (home-page "https://qjackctl.sourceforge.io/")
2167 (synopsis "Jack server control application")
2168 (description "Control a Jack server. Allows you to plug various sources
2169 into various outputs and to start, stop and configure jackd")
2170 (license license:gpl2+)))
2172 (define-public qjackrcd
2179 (url "https://github.com/orouits/qjackrcd.git")
2180 (commit (string-append "v" version))))
2181 (file-name (git-file-name name version))
2184 "1l5iq2mkqd4gn9yr8xbh9qlpp1clcflazychl4vhdbz0bzq4c6al"))))
2185 (build-system gnu-build-system)
2188 (modify-phases %standard-phases
2190 (lambda* (#:key outputs #:allow-other-keys)
2192 (string-append "PREFIX="
2193 (assoc-ref outputs "out"))))))))
2195 `(("qtbase" ,qtbase))) ; for qmake
2198 ("libsndfile" ,libsndfile)
2199 ("qtbase" ,qtbase)))
2200 (home-page "https://sourceforge.net/projects/qjackrcd/")
2201 (synopsis "Stereo audio recorder for JACK")
2202 (description "QJackRcd is a simple graphical stereo recorder for JACK
2203 supporting silence processing for automatic pause, file splitting, and
2204 background file post-processing.")
2205 (license license:gpl2+)))
2207 (define-public supercollider
2209 (name "supercollider")
2214 "https://github.com/supercollider/supercollider"
2215 "/releases/download/Version-" version
2216 "/SuperCollider-" version "-Source-linux.tar.bz2"))
2219 "16j9psa32czx1p1y2vvq0qf2ib0ngrfc604vx35n2b4llyika84v"))))
2220 (build-system cmake-build-system)
2222 `(#:configure-flags '("-DSYSTEM_BOOST=on" "-DSYSTEM_YAMLCPP=on"
2224 "-DSC_EL=off") ;scel is packaged individually as
2226 #:modules ((guix build utils)
2227 (guix build cmake-build-system)
2230 (modify-phases %standard-phases
2231 (add-after 'unpack 'fix-build-with-boost-1.68
2233 (substitute* "server/supernova/utilities/time_tag.hpp"
2234 (("(time_duration offset = .+ microseconds\\().*" _ m)
2235 (string-append m "static_cast<long>(get_nanoseconds()/1000));\n")))
2237 (add-after 'unpack 'rm-bundled-libs
2239 ;; The build system doesn't allow us to unbundle the following
2240 ;; libraries. hidapi is also heavily patched and upstream not
2241 ;; actively maintained.
2242 (let ((keep-dirs '("nova-simd" "nova-tt" "hidapi" "TLSF-2.4.6"
2243 "oscpack_1_1_0" "." "..")))
2244 (with-directory-excursion "./external_libraries"
2246 delete-file-recursively
2249 (and (eq? (stat:type (stat x)) 'directory)
2250 (not (member (basename x) keep-dirs))))))))
2252 ;; Some tests are broken (see:
2253 ;; https://github.com/supercollider/supercollider/issues/3555 and
2254 ;; https://github.com/supercollider/supercollider/issues/1736
2255 (add-after 'rm-bundled-libs 'disable-broken-tests
2257 (substitute* "testsuite/server/supernova/CMakeLists.txt"
2258 (("server_test.cpp")
2260 (("perf_counter_test.cpp")
2262 (delete-file "testsuite/server/supernova/server_test.cpp")
2263 (delete-file "testsuite/server/supernova/perf_counter_test.cpp")
2264 (substitute* "testsuite/CMakeLists.txt"
2265 (("add_subdirectory\\(sclang\\)")
2267 (delete-file "testsuite/sclang/CMakeLists.txt")
2269 ;; TODO: Remove after version 3.9.2 is released
2270 ;; (see: https://github.com/supercollider/supercollider/pull/3558).
2271 (add-after 'disable-broken-tests 'apply-system-yaml-cpp-fix
2273 ;; cmake: correctly include yaml-cpp (commit f82cec5ae).
2274 (substitute* "editors/sc-ide/CMakeLists.txt"
2275 (("external_libraries/boost\\)$")
2276 "external_libraries/boost)
2277 include_directories(${YAMLCPP_INCLUDE_DIR})")
2279 " ${YAMLCPP_LIBRARY}"))
2280 ;; set YAMLCPP_LIBRARY and YAMLCPP_INCLUDE_DIR if not using
2281 ;; system (commit 031922987).
2282 (substitute* "external_libraries/CMakeLists.txt"
2283 (("set_property\\( TARGET yaml PROPERTY FOLDER 3rdparty \\)")
2284 "set_property( TARGET yaml PROPERTY FOLDER 3rdparty )
2285 set(YAMLCPP_LIBRARY yaml)
2286 set(YAMLCPP_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/\
2287 external_libraries/yaml-cpp/include)"))
2290 `(("pkg-config" ,pkg-config)))
2293 ("libsndfile" ,libsndfile)
2296 ("readline" ,readline) ;readline support for sclang's CLI
2297 ("alsa" ,alsa-lib) ;for sclang's MIDI interface
2298 ("eudev" ,eudev) ;for user interactions with devices
2299 ("avahi" ,avahi) ;zeroconf service discovery support
2301 ("boost" ,boost-cxx14)
2302 ("boost-sync" ,boost-sync)
2303 ("yaml-cpp" ,yaml-cpp)))
2304 (home-page "https://github.com/supercollider/supercollider")
2305 (synopsis "Synthesis engine and programming language")
2306 (description "SuperCollider is a synthesis engine (@code{scsynth} or
2307 @code{supernova}) and programming language (@code{sclang}). It can be used
2308 for experimenting with sound synthesis and algorithmic composition.
2310 SuperCollider requires jackd to be installed in your user profile and your
2311 user must be allowed to access the realtime features of the kernel. Search
2312 for \"realtime\" in the index of the Guix manual to learn how to achieve this
2314 (license license:gpl2+)))
2322 (uri (string-append "https://download.drobilla.net/raul-"
2323 version ".tar.bz2"))
2326 "09ms40xc1x6qli6lxkwn5ibqh62nl9w7dq0b6jh1q2zvnrxwsd8b"))))
2327 (build-system waf-build-system)
2329 `(#:python ,python-2
2330 #:tests? #f)) ; no check target
2335 `(("pkg-config" ,pkg-config)))
2336 (home-page "https://drobilla.net/software/raul/")
2337 (synopsis "Real-time audio utility library")
2339 "Raul (Real-time Audio Utility Library) is a C++ utility library primarily
2340 aimed at audio/musical applications.")
2341 (license license:gpl2+)))
2343 (define-public raul-devel
2344 (let ((commit "4db870b2b20b0a608ec0283139056b836c5b1624")
2346 (package (inherit raul)
2348 (version (string-append "0.8.9-" revision "."
2349 (string-take commit 9)))
2353 (url "https://git.drobilla.net/raul.git")
2355 (file-name (string-append name "-" version "-checkout"))
2358 "04fajrass3ymr72flx5js5vxc601ccrmx8ny8scp0rw7j0igyjdr")))))))
2360 (define-public rubberband
2367 (string-append "https://bitbucket.org/breakfastquay/rubberband/get/v"
2370 (file-name (string-append name "-" version ".tar.bz2"))
2373 "05amrbrxx0da3w7m237q51799r8xgs4ffqabi2qv06hq8dpcj386"))))
2374 (build-system gnu-build-system)
2375 (arguments `(#:tests? #f)) ; no check target
2377 `(("ladspa" ,ladspa)
2378 ("libsamplerate" ,libsamplerate)
2381 `(("pkg-config" ,pkg-config)))
2382 (home-page "https://breakfastquay.com/rubberband/")
2383 (synopsis "Audio time-stretching and pitch-shifting library")
2385 "Rubber Band is a library and utility program that permits changing the
2386 tempo and pitch of an audio recording independently of one another.")
2387 (license license:gpl2+)))
2389 (define-public rtmidi
2396 (url "https://github.com/powertab/rtmidi.git")
2398 (file-name (git-file-name name version))
2401 "106v177y3nrjv2l1yskch4phpqd8h97b67zj0jiq9pc3c69jr1ay"))))
2402 (build-system gnu-build-system)
2404 `(#:tests? #f ;no "check" target
2406 (modify-phases %standard-phases
2407 (add-before 'build 'fix-makefile
2409 (substitute* "Makefile"
2411 (("RtMidi.h RtError.h") "RtMidi.h"))
2413 (add-before 'install 'make-target-dirs
2415 (let ((out (assoc-ref %outputs "out")))
2416 (mkdir-p (string-append out "/bin"))
2417 (mkdir (string-append out "/lib"))
2418 (mkdir (string-append out "/include")))
2422 ("alsa-lib" ,alsa-lib)))
2424 `(("autoconf" ,autoconf)
2425 ("automake" ,automake)
2426 ("libtool" ,libtool)
2427 ("pkg-config" ,pkg-config)))
2428 (home-page "https://github.com/powertab/rtmidi")
2429 (synopsis "Cross-platform MIDI library for C++")
2431 "RtMidi is a set of C++ classes (RtMidiIn, RtMidiOut, and API specific
2432 classes) that provide a common cross-platform API for realtime MIDI
2434 (license license:expat)))
2436 (define-public sratom
2442 (uri (string-append "https://download.drobilla.net/sratom-"
2443 version ".tar.bz2"))
2446 "0lz883ravxjf7r9wwbx2gx9m8vhyiavxrl9jdxfppjxnsralll8a"))))
2447 (build-system waf-build-system)
2448 (arguments `(#:tests? #f)) ; no check target
2454 `(("pkg-config" ,pkg-config)))
2455 (home-page "https://drobilla.net/software/sratom/")
2456 (synopsis "Library for serialising LV2 atoms to/from RDF")
2458 "Sratom is a library for serialising LV2 atoms to/from RDF, particularly
2459 the Turtle syntax.")
2460 (license license:isc)))
2468 (uri (string-append "https://download.drobilla.net/suil-"
2469 version ".tar.bz2"))
2472 "0j489gm3fhnmwmbgw30bvd4byw1vsy4yazdlnji8jzhcz0qwb5cq"))))
2473 (build-system waf-build-system)
2475 `(#:tests? #f ; no check target
2476 #:python ,python-2 ;XXX: The bundled waf does not work with Python 3.7.0.
2478 '("CXXFLAGS=-std=gnu++11")))
2485 `(("pkg-config" ,pkg-config)))
2486 (home-page "https://drobilla.net/software/suil/")
2487 (synopsis "Library for loading and wrapping LV2 plugin UIs")
2489 "Suil is a lightweight C library for loading and wrapping LV2 plugin UIs.
2491 Suil makes it possible to load a UI of a toolkit in a host using another
2492 toolkit. The API is designed such that hosts do not need to explicitly
2493 support specific toolkits – if Suil supports a particular toolkit, then UIs in
2494 that toolkit will work in all hosts that use Suil automatically.
2496 Suil currently supports every combination of Gtk, Qt, and X11.")
2497 (license license:isc)))
2499 (define-public timidity++
2505 (uri (string-append "mirror://sourceforge/timidity/TiMidity++"
2506 "/TiMidity++-" version
2507 "/TiMidity++-" version ".tar.bz2"))
2510 "0xk41w4qbk23z1fvqdyfblbz10mmxsllw0svxzjw5sa9y11vczzr"))))
2511 (build-system gnu-build-system)
2514 (list "--enable-audio=alsa,flac,jack,ao,vorbis,speex"
2518 (string-append "--with-default-path="
2519 (assoc-ref %outputs "out") "/etc/timidity"))
2521 (modify-phases %standard-phases
2522 (add-after 'install 'install-config
2524 (let ((out (string-append (assoc-ref %outputs "out")
2527 (call-with-output-file
2528 (string-append out "/timidity.cfg")
2530 (format port (string-append "source "
2531 (assoc-ref %build-inputs "freepats")
2532 "/share/freepats/freepats.cfg")))))
2535 `(("alsa-lib" ,alsa-lib)
2541 ("ncurses" ,ncurses)
2542 ("freepats" ,freepats)))
2544 `(("pkg-config" ,pkg-config)))
2545 (home-page "http://timidity.sourceforge.net/")
2546 (synopsis "Software synthesizer for playing MIDI files")
2548 "TiMidity++ is a software synthesizer. It can play MIDI files by
2549 converting them into PCM waveform data; give it a MIDI data along with digital
2550 instrument data files, then it synthesizes them in real-time, and plays. It
2551 can not only play sounds, but also can save the generated waveforms into hard
2552 disks as various audio file formats.")
2553 (license license:gpl2+)))
2562 "https://code.soundsoftware.ac.uk"
2563 "/attachments/download/1520/vamp-plugin-sdk-"
2567 "0pzq0yy2kdl3jgfc2aqmh5m55nk1ild0hq8mydiiw35c6y0mglyh"))))
2568 (build-system gnu-build-system)
2570 `(#:tests? #f ; no check target
2572 (modify-phases %standard-phases
2573 (add-after 'install 'remove-libvamp-hostsdk.la
2574 (lambda* (#:key outputs #:allow-other-keys)
2575 ;; https://bugs.launchpad.net/ubuntu/+source/vamp-plugin-sdk/+bug/1253656
2576 (for-each delete-file
2577 (let ((out (assoc-ref outputs "out")))
2578 (list (string-append out "/lib/libvamp-sdk.la")
2579 (string-append out "/lib/libvamp-hostsdk.la"))))
2582 `(("libsndfile" ,libsndfile)))
2584 `(("pkg-config" ,pkg-config)))
2585 (home-page "http://vamp-plugins.org")
2586 (synopsis "Modular and extensible audio processing system")
2588 "Vamp is an audio processing plugin system for plugins that extract
2589 descriptive information from audio data — typically referred to as audio
2590 analysis plugins or audio feature extraction plugins.")
2593 "https://code.soundsoftware.ac.uk/projects/vamp-plugin-sdk/repository/entry/COPYING"))))
2595 (define-public libsbsms
2602 (uri (string-append "mirror://sourceforge/sbsms/sbsms/" version
2603 "/libsbsms-" version ".tar.gz"))
2605 (base32 "1vmf84iy4dkwxv887grnlsfk43fmhd9gbg26gc2kgcv40sbkvayf"))))
2606 (build-system gnu-build-system)
2607 (native-inputs `(("automake" ,automake)))
2610 ;; Disable the use of SSE unless on x86_64.
2611 ,(if (not (string-prefix? "x86_64" (or (%current-target-system)
2612 (%current-system))))
2616 (modify-phases %standard-phases
2618 'unpack 'fix-ar-lib-path
2619 (lambda* (#:key inputs #:allow-other-keys)
2620 ;; Originally a symlink to '/usr/local/share/automake-1.12/ar-lib'.
2621 (delete-file "ar-lib")
2623 (string-append (assoc-ref inputs "automake") "/share/automake-"
2624 ,(package-version automake) "/ar-lib")
2627 (home-page "http://sbsms.sourceforge.net/")
2628 (synopsis "Library for time stretching and pitch scaling of audio")
2630 "SBSMS (Subband Sinusoidal Modeling Synthesis) is software for time
2631 stretching and pitch scaling of audio. This package contains the library.")
2632 ;; There is no explicit declaration of a license, but a COPYING file
2634 (license license:gpl2)))
2636 (define-public wavpack
2642 (uri (string-append "http://www.wavpack.com/"
2643 name "-" version ".tar.bz2"))
2644 (patches (search-patches "wavpack-CVE-2018-6767.patch"
2645 "wavpack-CVE-2018-7253.patch"
2646 "wavpack-CVE-2018-7254.patch"))
2649 "0i19c6krc0p9krwrqy9s5xahaafigqzxcn31piidmlaqadyn4f8r"))))
2650 (build-system gnu-build-system)
2651 (home-page "http://www.wavpack.com/")
2652 (synopsis "Hybrid lossless audio codec")
2654 "WavPack is an audio compression format with lossless, lossy and hybrid
2655 compression modes. This package contains command-line programs and library to
2656 encode and decode wavpack files.")
2657 (license license:bsd-3)))
2659 (define-public libmodplug
2666 "mirror://sourceforge/modplug-xmms/"
2667 name "/" version "/" name "-" version ".tar.gz"))
2670 "1pnri98a603xk47smnxr551svbmgbzcw018mq1k6srbrq6kaaz25"))))
2671 (build-system gnu-build-system)
2672 (home-page "http://modplug-xmms.sourceforge.net/")
2673 (synopsis "Mod file playing library")
2675 "Libmodplug renders mod music files as raw audio data, for playing or
2676 conversion. mod, .s3m, .it, .xm, and a number of lesser-known formats are
2677 supported. Optional features include high-quality resampling, bass expansion,
2678 surround and reverb.")
2679 (license license:public-domain)))
2681 (define-public libxmp
2687 (uri (string-append "mirror://sourceforge/xmp/libxmp/" version "/"
2688 name "-" version ".tar.gz"))
2691 "1kycz4jsyvmf7ny9227b497wc7y5ligydi6fvvldmkf8hk63ad9m"))))
2692 (build-system gnu-build-system)
2693 (home-page "http://xmp.sourceforge.net/")
2694 (synopsis "Module player library")
2696 "Libxmp is a library that renders module files to PCM data. It supports
2697 over 90 mainstream and obscure module formats including Protracker (MOD),
2698 Scream Tracker 3 (S3M), Fast Tracker II (XM), and Impulse Tracker (IT).")
2699 (license license:lgpl2.1+)))
2707 (uri (string-append "mirror://sourceforge/xmp/xmp/" version "/"
2708 name "-" version ".tar.gz"))
2711 "17i8fc7x7yn3z1x963xp9iv108gxfakxmdgmpv3mlm438w3n3g8x"))))
2712 (build-system gnu-build-system)
2714 `(("pkg-config" ,pkg-config)))
2716 `(("libxmp" ,libxmp)
2717 ("pulseaudio" ,pulseaudio)))
2718 (home-page "http://xmp.sourceforge.net/")
2719 (synopsis "Extended module player")
2721 "Xmp is a portable module player that plays over 90 mainstream and
2722 obscure module formats, including Protracker MOD, Fasttracker II XM, Scream
2723 Tracker 3 S3M and Impulse Tracker IT files.")
2724 (license license:gpl2+)))
2726 (define-public soundtouch
2735 "http://www.surina.net/soundtouch/soundtouch-" version ".tar.gz"))
2736 (patches (search-patches "soundtouch-CVE-2018-14044-14045.patch"
2737 "soundtouch-CVE-2018-1000223.patch"))
2740 "09cxr02mfyj2bg731bj0i9hh565x8l9p91aclxs8wpqv8b8zf96j"))))
2741 (build-system gnu-build-system)
2743 `(("autoconf" ,autoconf)
2744 ("automake" ,automake)
2745 ("libtool" ,libtool)
2747 (home-page "http://www.surina.net/soundtouch/")
2749 "Audio processing library for changing tempo, pitch and playback rate")
2751 "SoundTouch is an audio processing library for changing the tempo, pitch
2752 and playback rates of audio streams or audio files. It is intended for
2753 application developers writing sound processing tools that require tempo/pitch
2754 control functionality, or just for playing around with the sound effects.")
2755 (license license:lgpl2.1+)))
2763 (uri (string-append "mirror://sourceforge/sox/sox/" version "/"
2764 name "-" version ".tar.bz2"))
2767 "170lx90r1nlnb2j6lg00524iwvqy72p48vii4xc5prrh8dnrb9l1"))))
2768 (build-system gnu-build-system)
2771 ;; The upstream asks to identify the distribution to diagnose SoX
2773 '("--with-distro=Guix System Distribution")))
2775 `(("pkg-config" ,pkg-config)))
2777 `(("alsa-lib" ,alsa-lib)
2781 ("libid3tag" ,libid3tag)
2782 ("libltdl" ,libltdl)
2785 ("libvorbis" ,libvorbis)
2786 ("pulseaudio" ,pulseaudio)))
2787 (home-page "http://sox.sourceforge.net")
2788 (synopsis "Sound processing utility")
2790 "SoX (Sound eXchange) is a command line utility that can convert
2791 various formats of computer audio files to other formats. It can also
2792 apply various effects to these sound files, and, as an added bonus, SoX
2793 can play and record audio files.")
2794 ;; sox.c is distributed under GPL, while the files that make up
2795 ;; libsox are licensed under LGPL.
2796 (license (list license:gpl2+ license:lgpl2.1+))))
2806 (string-append "mirror://sourceforge/soxr/soxr-" version
2809 (base32 "12aql6svkplxq5fjycar18863hcq84c5kx8g6f4rj0lcvigw24di"))))
2810 (build-system cmake-build-system)
2811 (arguments '(#:tests? #f)) ;no 'check' target
2812 (home-page "https://sourceforge.net/p/soxr/wiki/Home/")
2813 (synopsis "One-dimensional sample-rate conversion library")
2815 "The SoX Resampler library (libsoxr) performs one-dimensional sample-rate
2816 conversion. It may be used, for example, to resample PCM-encoded audio.")
2817 (license license:lgpl2.1+)))
2819 (define-public twolame
2826 (uri (string-append "mirror://sourceforge/twolame/twolame/" version
2827 "/twolame-" version ".tar.gz"))
2829 (base32 "0ahiqqng5pidwhj1wzph4vxxgxxgcfa3gl0gywipzx2ii7s35wwq"))
2830 (modules '((guix build utils)))
2831 ;; The tests break with Perl 5.24:
2832 ;; https://github.com/njh/twolame/issues/21
2833 ;; TODO: Remove this snippet when upgrading twolame.
2836 (substitute* "tests/test.pl" (("\\(@_\\)") "($_[0])"))
2838 (build-system gnu-build-system)
2840 `(("libsndfile" ,libsndfile)))
2843 ("which" ,which))) ;used in tests/test.pl
2844 (home-page "http://www.twolame.org/")
2845 (synopsis "MPEG Audio Layer 2 (MP2) encoder")
2847 "TwoLAME is an optimised MPEG Audio Layer 2 (MP2) encoder based on
2848 tooLAME by Mike Cheng, which in turn is based upon the ISO dist10 code and
2850 (license license:lgpl2.1+)))
2852 (define-public portaudio
2855 (version "190600.20161030")
2860 "http://www.portaudio.com/archives/pa_stable_v"
2861 (string-map (lambda (c) (if (char=? c #\.) #\_ c)) version)
2864 (base32 "04qmin6nj144b8qb9kkd9a52xfvm0qdgm8bg8jbl7s3frmyiv8pm"))
2865 (patches (search-patches "portaudio-audacity-compat.patch"))))
2866 (build-system gnu-build-system)
2868 ;; TODO: Add ASIHPI.
2869 `(("alsa-lib" ,alsa-lib)
2871 ;; Autoreconf is necessary because the audacity-compat patch modifies .in
2874 `(("autoconf" ,autoconf)
2875 ("automake" ,automake)
2876 ("libtool" ,libtool)
2877 ("pkg-config" ,pkg-config)))
2878 (arguments '(#:tests? #f)) ;no 'check' target
2879 (home-page "http://www.portaudio.com/")
2880 (synopsis "Audio I/O library")
2882 "PortAudio is a portable C/C++ audio I/O library providing a simple API
2883 to record and/or play sound using a callback function or a blocking read/write
2885 (license license:expat)))
2887 (define-public qsynth
2894 (uri (string-append "mirror://sourceforge/qsynth/qsynth/" version
2895 "/qsynth-" version ".tar.gz"))
2898 "0kpq5fxr96wnii18ax780w1ivq8ksk892ac0bprn92iz0asfysrd"))))
2899 (build-system gnu-build-system)
2901 `(#:tests? #f ; no "check" phase
2903 '("CXXFLAGS=-std=gnu++11")))
2905 `(("qttools" ,qttools)
2906 ("pkg-config" ,pkg-config)))
2908 `(("fluidsynth" ,fluidsynth)
2910 ("qtx11extras" ,qtx11extras)))
2911 (home-page "http://qsynth.sourceforge.net")
2912 (synopsis "Graphical user interface for FluidSynth")
2914 "Qsynth is a GUI front-end application for the FluidSynth SoundFont
2915 synthesizer written in C++.")
2916 (license license:gpl2+)))
2918 (define-public rsound
2926 (url "https://github.com/Themaister/RSound.git")
2927 (commit (string-append "v" version))))
2928 (file-name (git-file-name name version))
2930 (base32 "0gspmr3klwnq98h17p5hc6ifygya4p80g4g8r7a1qavm3mv19waf"))))
2931 (build-system gnu-build-system)
2933 `(("alsa-lib" ,alsa-lib)
2936 ("libsamplerate" ,libsamplerate)
2938 ("portaudio" ,portaudio)
2939 ("pulseaudio" ,pulseaudio)))
2942 (modify-phases %standard-phases
2944 (lambda* (#:key outputs #:allow-other-keys)
2946 (invoke "./configure"
2947 (string-append "--prefix=" (assoc-ref outputs "out"))))))
2948 ;; No 'check' target.
2950 (home-page "http://themaister.net/rsound.html")
2951 (synopsis "Networked audio system")
2953 "RSound allows you to send audio from an application and transfer it
2954 directly to a different computer on your LAN network. It is an audio daemon
2955 with a much different focus than most other audio daemons.")
2956 (license license:gpl3+)))
2958 (define-public xjackfreak
2965 (url "https://github.com/johnhldavis/xjackfreak.git")
2966 (commit (string-append "v" version))))
2967 (file-name (git-file-name name version))
2970 "18c546qidbrj0f5wfiq5llii2192xpln0ab3r4vpr7i3wybxqjfz"))))
2971 (build-system gnu-build-system)
2974 (list (string-append "docdir=" (assoc-ref %outputs "out")
2975 "/share/doc/xjackfreak"))))
2980 ("libxext" ,libxext)))
2982 `(("pkg-config" ,pkg-config)))
2983 (home-page "https://github.com/johnhldavis/xjackfreak")
2984 (synopsis "JACK audio frequency analyzer and display")
2986 "XJackFreak is an audio analysis and equalizing tool for the Jack Audio
2987 Connection Kit. It can display the FFT of any input, modify it and output the
2989 (license license:gpl3+)))
2991 (define-public zita-convolver
2993 (name "zita-convolver")
2998 "http://kokkinizita.linuxaudio.org"
2999 "/linuxaudio/downloads/zita-convolver-"
3000 version ".tar.bz2"))
3002 ;; Don't optimize for a specific processor architecture.
3004 (substitute* "libs/Makefile"
3005 (("^CXXFLAGS \\+= -march=native") ""))
3007 (modules '((guix build utils)))
3010 "14qrnczhp5mbwhky64il7kxc4hl1mmh495v60va7i2qnhasr6zmz"))))
3011 (build-system gnu-build-system)
3013 `(#:tests? #f ; no "check" target
3014 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
3016 (modify-phases %standard-phases
3017 (add-after 'unpack 'patch-makefile-and-enter-directory
3019 (substitute* "libs/Makefile"
3020 (("ldconfig") "true")
3021 (("^LIBDIR =.*") "LIBDIR = lib\n"))
3024 (add-after 'install 'install-symlink
3026 (symlink "libzita-convolver.so"
3027 (string-append (assoc-ref %outputs "out")
3028 "/lib/libzita-convolver.so.3"))
3030 ;; no configure script
3031 (delete 'configure))))
3032 (inputs `(("fftwf" ,fftwf)))
3033 (home-page "https://kokkinizita.linuxaudio.org")
3034 (synopsis "Fast, partitioned convolution engine library")
3036 "Zita convolver is a C++ library providing a real-time convolution
3038 (license license:gpl3+)))
3040 (define-public zita-resampler
3042 (name "zita-resampler")
3047 "http://kokkinizita.linuxaudio.org"
3048 "/linuxaudio/downloads/zita-resampler-"
3049 version ".tar.bz2"))
3051 ;; Don't optimize for a specific processor architecture.
3053 (substitute* '("apps/Makefile" "libs/Makefile")
3054 (("^CXXFLAGS \\+= -march=native") ""))
3056 (modules '((guix build utils)))
3059 "0r9ary5sc3y8vba5pad581ha7mgsrlyai83w7w4x2fmhfy64q0wq"))))
3060 (build-system gnu-build-system)
3062 `(#:tests? #f ; no "check" target
3063 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
3065 (modify-phases %standard-phases
3067 'unpack 'patch-makefile-and-enter-directory
3069 (substitute* "libs/Makefile"
3070 (("ldconfig") "true")
3071 (("^LIBDIR =.*") "LIBDIR = lib\n"))
3075 'install 'install-symlink
3077 (symlink "libzita-resampler.so"
3078 (string-append (assoc-ref %outputs "out")
3079 "/lib/libzita-resampler.so.1"))
3081 ;; no configure script
3082 (delete 'configure))))
3083 (home-page "https://kokkinizita.linuxaudio.org/linuxaudio/zita-resampler/resampler.html")
3084 (synopsis "C++ library for resampling audio signals")
3086 "Libzita-resampler is a C++ library for resampling audio signals. It is
3087 designed to be used within a real-time processing context, to be fast, and to
3088 provide high-quality sample rate conversion.")
3089 (license license:gpl3+)))
3091 (define-public zita-alsa-pcmi
3093 (name "zita-alsa-pcmi")
3098 "http://kokkinizita.linuxaudio.org"
3099 "/linuxaudio/downloads/zita-alsa-pcmi-"
3100 version ".tar.bz2"))
3103 "1rgv332g82rrrlm4vdam6p2pyrisxbi7b3izfaa0pcjglafsy7j9"))))
3104 (build-system gnu-build-system)
3106 `(#:tests? #f ; no "check" target
3107 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
3109 (modify-phases %standard-phases
3110 (add-after 'unpack 'patch-makefile-and-enter-directory
3112 (substitute* "libs/Makefile"
3113 (("ldconfig") "true")
3114 (("^LIBDIR =.*") "LIBDIR = lib\n"))
3117 (add-after 'install 'install-symlink
3119 (symlink "libzita-alsa-pcmi.so"
3120 (string-append (assoc-ref %outputs "out")
3121 "/lib/libzita-alsa-pcmi.so.0"))
3123 ;; no configure script
3124 (delete 'configure))))
3126 `(("alsa-lib" ,alsa-lib)
3128 (home-page "https://kokkinizita.linuxaudio.org")
3129 (synopsis "C++ wrapper around the ALSA API")
3131 "Zita-alsa-pcmi is a C++ wrapper around the ALSA API. It provides easy
3132 access to ALSA PCM devices, taking care of the many functions required to
3133 open, initialise and use a hw: device in mmap mode, and providing floating
3135 (license license:gpl3+)))
3137 (define-public cuetools
3144 (url "https://github.com/svend/cuetools.git")
3146 (file-name (git-file-name name version))
3149 "02ksv1ahf1v4cr2xbclsfv5x17m9ivzbssb5r8xjm97yh8a7spa3"))))
3150 (build-system gnu-build-system)
3151 ;; The source checkout is not bootstrapped.
3153 `(("autoconf" ,autoconf)
3154 ("automake" ,automake)
3157 (synopsis "Cue and toc file parsers and utilities")
3158 (description "Cuetools is a set of programs that are useful for manipulating
3159 and using CUE sheet (cue) files and Table of Contents (toc) files. CUE and TOC
3160 files are a way to represent the layout of a data or audio CD in a
3161 machine-readable ASCII format.")
3162 (home-page "https://github.com/svend/cuetools")
3163 (license license:gpl2+)))
3165 (define-public shntool
3171 (uri (string-append "http://etree.org/shnutils/shntool/dist/src/"
3172 "shntool-" version ".tar.gz"))
3175 "00i1rbjaaws3drkhiczaign3lnbhr161b7rbnjr8z83w8yn2wc3l"))))
3176 (build-system gnu-build-system)
3177 (synopsis "WAVE audio data processing tool")
3178 (description "shntool is a multi-purpose WAVE data processing and reporting
3179 utility. File formats are abstracted from its core, so it can process any file
3180 that contains WAVE data, compressed or not---provided there exists a format
3181 module to handle that particular file type. It can also generate CUE files, and
3182 use them split WAVE data into multiple files.")
3183 (home-page "http://etree.org/shnutils/shntool/")
3184 ;; 'install-sh' bears the x11 license
3185 (license (list license:gpl2+ license:x11))))
3187 (define-public dcadec
3194 (url "https://github.com/foo86/dcadec.git")
3195 (commit (string-append "v" version))))
3196 (file-name (git-file-name name version))
3199 "07nd0ajizrp1w02bsyfcv18431r8m8rq8gjfmz9wmckpg7cxj2hs"))))
3200 (build-system gnu-build-system)
3202 ;; Test files are missing: https://github.com/foo86/dcadec/issues/53
3206 ;; Build shared library.
3208 (string-append "PREFIX=" (assoc-ref %outputs "out"))
3209 ;; Set proper runpath.
3210 (string-append "LDFLAGS=-Wl,-rpath="
3211 (assoc-ref %outputs "out")
3214 (modify-phases %standard-phases
3215 ;; No configure script, just a hand-written Makefile.
3216 (delete 'configure))))
3217 (synopsis "DTS Coherent Acoustics decoder")
3218 (description "Dcadec is a DTS Coherent Acoustics surround sound decoder
3219 with support for HD extensions.")
3220 (home-page "https://github.com/foo86/dcadec")
3221 (license license:lgpl2.1+)))
3223 (define-public bs1770gain
3230 (uri (string-append "mirror://sourceforge/bs1770gain/bs1770gain/"
3231 version "/bs1770gain-" version ".tar.gz"))
3234 "0r4fbajgfmnwgl63hcm56f1j8m5f135q6j5jkzdvrrhpcj39yx06"))))
3235 (build-system gnu-build-system)
3236 (inputs `(("ffmpeg" ,ffmpeg)
3238 (home-page "http://bs1770gain.sourceforge.net/")
3239 (synopsis "Tool to adjust loudness of media files")
3241 "BS1770GAIN is a loudness scanner compliant with ITU-R BS.1770 and its
3242 flavors EBU R128, ATSC A/85, and ReplayGain 2.0. It helps normalizing the
3243 loudness of audio and video files to the same level.")
3244 (license license:gpl2+)))
3246 (define-public filteraudio
3247 (let ((revision "1")
3248 (commit "2fc669581e2a0ff87fba8de85861b49133306094"))
3250 (name "filteraudio")
3251 (version (string-append "0.0.0-" revision "."
3252 (string-take commit 7)))
3257 (url "https://github.com/irungentoo/filter_audio.git")
3259 (file-name (string-append name "-" version "-checkout"))
3262 "0hbb290n3wb23f2k692a6bhc23nnqmxqi9sc9j15pnya8wifw64g"))))
3263 (build-system gnu-build-system)
3265 '(#:make-flags (list (string-append "PREFIX=" %output)
3267 #:tests? #f ; No tests
3269 (modify-phases %standard-phases
3270 ;; No configure script
3271 (delete 'configure))))
3272 (synopsis "Lightweight audio filtering library")
3273 (description "An easy to use audio filtering library made from webrtc
3274 code, used in @code{libtoxcore}.")
3275 (home-page "https://github.com/irungentoo/filter_audio")
3276 (license license:bsd-3))))
3286 (string-append "http://www.quut.com/" name "/" name
3287 "-" version ".tar.gz"))
3290 "041amvpz8cvxykl3pwqldrzxligmmzcg8ncdnxbg32rlqf3q1xh4"))))
3291 (build-system gnu-build-system)
3293 `(#:test-target "tst"
3295 (modify-phases %standard-phases
3296 (add-before 'install 'pre-install
3298 (let ((out (assoc-ref %outputs "out")))
3299 (substitute* "Makefile"
3300 (("INSTALL_ROOT\t=")
3301 (string-append "INSTALL_ROOT\t=\t" out)))
3302 (mkdir-p (string-append out "/inc"))
3303 (mkdir-p (string-append out "/man"))
3304 (mkdir-p (string-append out "/man/man1"))
3305 (mkdir-p (string-append out "/man/man3"))
3306 (mkdir-p (string-append out "/bin"))
3307 (mkdir-p (string-append out "/lib")))
3309 (add-after 'install 'post-install
3311 (let ((out (assoc-ref %outputs "out")))
3312 (rename-file (string-append out "/inc")
3313 (string-append out "/include"))
3314 (mkdir-p (string-append out "/include/gsm"))
3315 (copy-recursively "inc"
3316 (string-append out "/include/gsm")))
3318 (delete 'configure)))) ; no configure script
3319 (synopsis "GSM 06.10 lossy speech compression library")
3320 (description "This C library provides an encoder and a decoder for the GSM
3321 06.10 RPE-LTP lossy speech compression algorithm.")
3322 (home-page "http://quut.com/gsm/")
3323 (license (license:non-copyleft "file://COPYRIGHT"))))
3325 (define-public python-pyalsaaudio
3327 (name "python-pyalsaaudio")
3331 (uri (pypi-uri "pyalsaaudio" version))
3334 "1180ypn9596rq4b7y7dyv627j1q0fqilmkkrckclnzsdakdgis44"))))
3335 (build-system python-build-system)
3337 `(#:tests? #f)) ; tests require access to ALSA devices.
3339 `(("alsa-lib" ,alsa-lib)))
3340 (home-page "http://larsimmisch.github.io/pyalsaaudio/")
3341 (synopsis "ALSA wrappers for Python")
3343 "This package contains wrappers for accessing the ALSA API from Python.
3344 It is currently fairly complete for PCM devices, and has some support for
3346 (license license:psfl)))
3348 (define-public python2-pyalsaaudio
3349 (package-with-python2 python-pyalsaaudio))
3351 (define-public bluez-alsa
3356 ;; The tarballs are mere snapshots and don't contain a
3357 ;; bootstrapped build system.
3360 (url "https://github.com/Arkq/bluez-alsa.git")
3361 (commit (string-append "v" version))))
3362 (file-name (string-append name "-" version "-checkout"))
3365 "1qinf41wl2ihx54zmmhanycihwjkn7dn1cicq6pp4rqbiv79b95x"))))
3366 (build-system gnu-build-system)
3368 `(("autoconf" ,autoconf)
3369 ("automake" ,automake)
3370 ("libtool" ,libtool)
3371 ("pkg-config" ,pkg-config)))
3373 `(("alsa-lib" ,alsa-lib)
3377 ("ncurses" ,ncurses)
3380 (home-page "https://github.com/Arkq/bluez-alsa")
3381 (synopsis "Bluetooth ALSA backend")
3382 (description "This project is a rebirth of a direct integration between
3383 Bluez and ALSA. Since Bluez >= 5, the build-in integration has been removed
3384 in favor of 3rd party audio applications. From now on, Bluez acts as a
3385 middleware between an audio application, which implements Bluetooth audio
3386 profile, and a Bluetooth audio device. BlueALSA registers all known Bluetooth
3387 audio profiles in Bluez, so in theory every Bluetooth device (with audio
3388 capabilities) can be connected. In order to access the audio stream, one has
3389 to connect to the ALSA PCM device called @code{bluealsa}. The device is based
3390 on the ALSA software PCM plugin.")
3391 (license license:expat)))
3399 (uri (string-append "ftp://ccrma-ftp.stanford.edu/pub/Lisp/"
3400 "snd-" version ".tar.gz"))
3403 "1vm0dy5qlycqkima7y5ajzvazyjybifa803fabjcpncjz08c26vp"))))
3404 (build-system glib-or-gtk-build-system)
3406 `(#:tests? #f ; no tests
3407 #:out-of-source? #f ; for the 'install-doc' phase
3409 (let* ((out (assoc-ref %outputs "out"))
3410 (docdir (string-append out "/share/doc/snd")))
3411 (list "--with-alsa" "--with-jack" "--with-gmp"
3412 (string-append "--with-doc-dir=" docdir)))
3414 (modify-phases %standard-phases
3415 (add-after 'install 'install-doc
3416 (lambda* (#:key outputs #:allow-other-keys)
3417 (let* ((out (assoc-ref outputs "out"))
3418 (doc (string-append out "/share/doc/"
3419 ,name "-" ,version)))
3422 (install-file f doc))
3423 (find-files "." "\\.html$|COPYING"))
3424 (copy-recursively "pix" (string-append doc "/pix"))
3427 `(("pkg-config" ,pkg-config)))
3429 `(("alsa-lib" ,alsa-lib)
3436 ("libsamplerate" ,libsamplerate)
3441 ("timidity++" ,timidity++)
3442 ("vorbis-tools" ,vorbis-tools)
3443 ("wavpack" ,wavpack)))
3444 (synopsis "Sound editor")
3445 (home-page "https://ccrma.stanford.edu/software/snd/")
3447 "Snd is a sound editor modelled loosely after Emacs. It can be
3448 customized and extended using either the s7 Scheme implementation (included in
3449 the Snd sources), Ruby, or Forth.")
3450 (license (license:non-copyleft "file://COPYING"))))
3452 (define-public noise-repellent
3454 (name "noise-repellent")
3459 (url "https://github.com/lucianodato/noise-repellent.git")
3461 (file-name (string-append name "-" version "-checkout"))
3464 "0rd3dlmk3vivjmcr6x2x860y0j1d49c2j95j6ny50v184mwvn11j"))))
3465 (build-system gnu-build-system)
3469 (string-append "PREFIX=" (assoc-ref %outputs "out")))
3470 #:tests? #f ; there are none
3472 (modify-phases %standard-phases
3473 (delete 'configure))))
3478 `(("pkg-config" ,pkg-config)))
3479 (home-page "https://github.com/lucianodato/noise-repellent")
3480 (synopsis "LV2 plugin for broadband noise reduction")
3481 (description "Noise Repellent is an LV2 plugin to reduce noise. It has
3482 the following features:
3485 @item Spectral gating and spectral subtraction suppression rule
3486 @item Adaptive and manual noise thresholds estimation
3487 @item Adjustable noise floor
3488 @item Adjustable offset of thresholds to perform over-subtraction
3489 @item Time smoothing and a masking estimation to reduce artifacts
3490 @item Basic onset detector to avoid transients suppression
3491 @item Whitening of the noise floor to mask artifacts and to recover higher
3493 @item Option to listen to the residual signal
3495 @item Noise profile saved with the session
3498 (license license:lgpl3+)))
3500 (define-public cli-visualizer
3502 (name "cli-visualizer")
3508 (url "https://github.com/dpayne/cli-visualizer.git")
3510 (file-name (git-file-name name version))
3513 "0mirp8bk398di5xyq95iprmdyvplfghxqmrfj7jdnpy554vx7ppc"))))
3514 (build-system gnu-build-system)
3516 `(("which" ,which)))
3519 ("googletest" ,googletest)
3520 ("ncurses" ,ncurses)
3521 ("pulseaudio" ,pulseaudio)))
3523 '(#:test-target "test"
3525 (list (string-append "PREFIX=" %output "/bin/") "ENABLE_PULSE=1")
3527 (modify-phases %standard-phases
3528 (add-after 'unpack 'remove-sudo
3530 (substitute* "install.sh" (("sudo") ""))
3532 (add-before 'check 'set-check-environment
3534 (setenv "CXX" "g++")
3537 (add-before 'install 'make-prefix
3539 (mkdir-p (string-append (assoc-ref %outputs "out") "/bin"))
3541 (add-after 'install 'data
3543 (for-each (lambda (file)
3545 (string-append (assoc-ref %outputs "out")
3547 (find-files "examples"))
3549 (home-page "https://github.com/dpayne/cli-visualizer/")
3550 (synopsis "Command-line audio visualizer")
3551 (description "@code{cli-visualizer} displays fast-Fourier
3552 transforms (FFTs) of the sound being played, as well as other graphical
3554 (license license:expat)))
3563 (url "https://github.com/karlstav/cava.git")
3565 (file-name (git-file-name name version))
3568 "1kvhqgijs29909w3sq9m0bslx2zxxn4b3i07kdz4hb0dqkppxpjy"))))
3569 (build-system gnu-build-system)
3571 `(("autoconf" ,autoconf)
3572 ("automake" ,automake)
3573 ("libtool" ,libtool)))
3576 ("ncurses" ,ncurses)
3577 ("pulseaudio" ,pulseaudio)))
3580 (list (string-append "PREFIX=" %output)
3581 (string-append "FONT_DIR=" %output "/usr/share/consolefonts"))
3583 (let ((lib (string-append %output "/lib")))
3584 (list (string-append "cava_LDFLAGS = -L" lib " -Wl,-rpath " lib)))
3586 (modify-phases %standard-phases
3588 (lambda* (#:key outputs #:allow-other-keys)
3589 (setenv "HOME" (getcwd))
3590 (invoke "sh" "autogen.sh")))
3591 (add-before 'build 'make-cava-ldflags
3592 (lambda* (#:key outputs #:allow-other-keys)
3593 (mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
3595 (add-after 'install 'data
3596 (lambda* (#:key outputs #:allow-other-keys)
3597 (for-each (lambda (file)
3599 (string-append (assoc-ref outputs "out")
3600 "/share/doc/examples")))
3601 (find-files "example_files"))
3603 (home-page "https://karlstav.github.io/cava/")
3604 (synopsis "Console audio visualizer for ALSA, MPD, and PulseAudio")
3605 (description "C.A.V.A. is a bar audio spectrum visualizer for the terminal
3606 using ALSA, MPD, PulseAudio, or a FIFO buffer as its input.")
3607 (license license:expat)))
3609 (define-public fluid-3
3610 (let ((commit "871c8ce2002e8b3c198f532fdb4fbcce7914f951"))
3617 ;; Only one file is required, but the release bundles the whole
3618 ;; software which is 50MiB as tar and 200MiB unpacked. The website
3619 ;; directly links the soundfont release to the github file download.
3620 (uri (string-append "https://github.com/musescore/MuseScore/raw/"
3621 commit "/share/sound/FluidR3Mono_GM.sf3"))
3622 (file-name (string-append name "-" version ".sf3"))
3625 "1hjfg5i15bw9279007xs92zsggjgn4s4k9pc00s851l3kvc6dkfg"))))
3626 (build-system trivial-build-system)
3628 `(#:modules ((guix build utils))
3631 (use-modules (guix build utils))
3632 (let ((file (assoc-ref %build-inputs "source"))
3633 (out (string-append %output "/share/soundfonts")))
3635 (copy-file file (string-append out "/FluidR3Mono_GM.sf3"))
3637 (home-page "https://github.com/musescore/MuseScore/tree/master/share/sound")
3638 (synopsis "Pro-quality GM soundfont")
3639 (description "Fluid-3 is Frank Wen's pro-quality GM soundfont.")
3640 (license license:expat))))
3642 (define-public libfdk
3643 (let ((commit "2326faaf8f2cdf2c3a9108ccdaf1d7551aec543e")
3647 ;; The latest upstream revision, with many bug fixes.
3648 (version (git-version "0.1.6" revision commit))
3653 (url "https://github.com/mstorsjo/fdk-aac")
3655 (file-name (git-file-name name version))
3658 "0yy6ndd9d61bwl283vl1r5kva2a4acc0f4r9g0sza156f2abr9ws"))))
3659 (build-system gnu-build-system)
3661 `(("autoconf" ,autoconf)
3662 ("automake" ,automake)
3663 ("libtool" ,libtool)))
3664 (home-page "https://github.com/mstorsjo/fdk-aac")
3665 (synopsis "Fraunhofer FDK AAC library")
3666 (description "FDK is a library for encoding and decoding Advanced Audio
3667 Coding (AAC) format audio, developed by Fraunhofer IIS, and included as part of
3668 Android. It supports several Audio Object Types including MPEG-2 and MPEG-4 AAC
3669 LC, HE-AAC (AAC LC + SBR), HE-AACv2 (LC + SBR + PS) as well AAC-LD (low delay)
3670 and AAC-ELD (enhanced low delay) for real-time communication. The encoding
3671 library supports sample rates up to 96 kHz and up to eight channels (7.1
3673 (license (license:fsf-free "https://github.com/mstorsjo/fdk-aac/blob/master/NOTICE"
3674 "https://www.gnu.org/licenses/license-list.html#fdk")))))
3676 (define-public libopenshot-audio
3678 (name "libopenshot-audio")
3683 (url "https://github.com/OpenShot/libopenshot-audio")
3684 (commit (string-append "v" version))))
3685 (file-name (git-file-name name version))
3688 "08a8wbi28kwrdz4h0rs1b9vsr28ldfi8g75q54rj676y1vwg3qys"))))
3689 (build-system cmake-build-system)
3691 `(("alsa-lib" ,alsa-lib)
3692 ;; The following are for JUCE GUI components:
3694 ("freetype" ,freetype)
3695 ("libxrandr" ,libxrandr)
3696 ("libxinerama" ,libxinerama)
3697 ("libxcursor" ,libxcursor)))
3699 `(#:tests? #f ;there are no tests
3701 (list (string-append "-DCMAKE_CXX_FLAGS=-I"
3702 (assoc-ref %build-inputs "freetype")
3703 "/include/freetype2"))))
3704 (home-page "https://openshot.org")
3705 (synopsis "Audio editing and playback for OpenShot")
3706 (description "OpenShot Audio Library (libopenshot-audio) allows
3707 high-quality editing and playback of audio, and is based on the JUCE
3709 (license license:lgpl3+)))