X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/27783023993f9272ce422868d14529159c4a5218..66c83960a5cc5736f1c9aea581136f1ca7055335:/gnu/packages/audio.scm diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index c7f55bb07e..45431be2b1 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2015, 2016 Mark H Weaver ;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner ;;; Copyright © 2016, 2017 Alex Griffin -;;; Copyright © 2016 ng0 +;;; Copyright © 2016 Nikita ;;; Copyright © 2016 Lukas Gradl ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice ;;; Copyright © 2018, 2020 Oleg Pykhalov @@ -29,6 +29,10 @@ ;;; Copyright © 2019 Hartmt Goebel ;;; Copyright © 2019 Nicolas Goaziou ;;; Copyright © 2020 Vincent Legoll +;;; Copyright © 2020 Guillaume Le Vaillant +;;; Copyright © 2020 Jonathan Frederickson +;;; Copyright © 2020 Giacomo Leidi +;;; Copyright © 2020 Vinicius Monego ;;; ;;; This file is part of GNU Guix. ;;; @@ -67,6 +71,7 @@ #:use-module (gnu packages fontutils) #:use-module (gnu packages gcc) #:use-module (gnu packages gettext) + #:use-module (gnu packages gl) #:use-module (gnu packages glib) #:use-module (gnu packages gnome) #:use-module (gnu packages gnunet) ; libmicrohttpd @@ -85,6 +90,7 @@ #:use-module (gnu packages multiprecision) #:use-module (gnu packages music) #:use-module (gnu packages ncurses) + #:use-module (gnu packages networking) #:use-module (gnu packages onc-rpc) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) @@ -99,14 +105,17 @@ #:use-module (gnu packages telephony) #:use-module (gnu packages linphone) #:use-module (gnu packages tls) + #:use-module (gnu packages valgrind) #:use-module (gnu packages video) #:use-module (gnu packages vim) ;xxd + #:use-module (gnu packages web) #:use-module (gnu packages webkit) #:use-module (gnu packages wxwidgets) #:use-module (gnu packages xiph) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) #:use-module (guix build-system cmake) + #:use-module (guix build-system copy) #:use-module (guix build-system glib-or-gtk) #:use-module (guix build-system gnu) #:use-module (guix build-system meson) @@ -121,6 +130,308 @@ #:use-module (srfi srfi-1) #:use-module (srfi srfi-26)) +(define-public opensles + (package + (name "opensles") + (version "1.1.0") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/KhronosGroup/OpenSL-ES-Registry.git") + (commit "ea5104bf37bf525c25e6ae2386586048179d0fda"))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0j5bm7h3ahz66f23i9abwc0y10agfkpksnj6y078x2nichq66h4f")) + (patches + (search-patches "opensles-add-license-file.patch")))) + (build-system copy-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'install 'clean + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out"))) + (mkdir-p (string-append out "/etc")) + (mkdir-p (string-append out "/include")) + (mkdir-p (string-append out "/share")) + (rename-file + (string-append out "/api/1.1/OpenSLES_IID.c") + (string-append out "/etc/OpenSLES_IID.c")) + (rename-file + (string-append out "/api/1.1/OpenSLES.h") + (string-append out "/include/OpenSLES.h")) + (rename-file + (string-append out "/api/1.1/OpenSLES_Platform.h") + (string-append out "/include/OpenSLES_Platform.h")) + (rename-file + (string-append out "/api/1.1/README.txt") + (string-append out "/share/README.txt")) + (rename-file + (string-append out "/LICENSE.txt") + (string-append out "/share/LICENSE.txt")) + (for-each delete-file-recursively + (list + (string-append out "/api") + (string-append out "/specs"))) + (for-each delete-file + (list + (string-append out "/CODE_OF_CONDUCT.md") + (string-append out "/index.php") + (string-append out "/README.md")))) + #t))))) + (synopsis "Embedded Audio Acceleration") + (description "OpenSLES is a royalty-free, cross-platform, +hardware-accelerated audio API tuned for embedded systems. It provides a +standardized, high-performance, low-latency method to access audio +functionality for developers of native applications on embedded mobile +multimedia devices, enabling straightforward cross-platform deployment of +hardware and software audio capabilities, reducing implementation effort, and +promoting the market for advanced audio.") + (home-page "https://www.khronos.org/opensles/") + (license (license:non-copyleft "file:///LICENSE.txt")))) + +(define-public wildmidi + (package + (name "wildmidi") + (version "0.4.3") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/Mindwerks/wildmidi.git") + (commit (string-append name "-" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "01f4a9c5xlap5a4pkfnlgkzk5pjlk43zkq6fnw615ghya04g6hrl")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f ; No target + #:configure-flags + (list + "-DWANT_ALSA=ON" + "-DWANT_OSS=ON" + "-DWANT_OPENAL=ON"))) + (inputs + `(("alsa" ,alsa-lib) + ("openal" ,openal))) + (synopsis "Software Synthesizer") + (description "WildMIDI is a simple software midi player which has a core +softsynth library that can be use with other applications.") + (home-page "https://www.mindwerks.net/projects/wildmidi/") + (license + (list + ;; Library. + license:lgpl3+ + ;; Player. + license:gpl3+)))) + +(define-public webrtc-audio-processing + (package + (name "webrtc-audio-processing") + (version "0.3.1") + (source + (origin + (method url-fetch) + (uri + (string-append "http://freedesktop.org/software/pulseaudio/" + name "/" name "-" version ".tar.xz")) + (sha256 + (base32 "1gsx7k77blfy171b6g3m0k0s0072v6jcawhmx1kjs9w5zlwdkzd0")))) + (build-system gnu-build-system) + (synopsis "WebRTC's Audio Processing Library") + (description "WebRTC-Audio-Processing library based on Google's +implementation of WebRTC.") + (home-page + "https://freedesktop.org/software/pulseaudio/webrtc-audio-processing/") + (license (license:non-copyleft "file:///COPYING")))) + +(define-public vo-aacenc + (package + (name "vo-aacenc") + (version "0.1.3") + (source + (origin + (method url-fetch) + (uri + (string-append "https://sourceforge.net/projects/opencore-amr/files/" + name "/" name "-" version ".tar.gz")) + (sha256 + (base32 "0dhghm3c8pqrriwwyj5x9i0yf52fmdfijbgqqkvqvwarldvp86p5")))) + (build-system gnu-build-system) + (synopsis "VisualOn AAC Encoder") + (description "VO-AACENC is the VisualOn implementation of Advanced Audio +Coding (AAC) encoder.") + (home-page "https://sourceforge.net/projects/opencore-amr/") + (license license:asl2.0))) + +(define-public tinyalsa + (package + (name "tinyalsa") + (version "1.1.1") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/tinyalsa/tinyalsa.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0ajyvml5bnzvhiyyrn42gqwgg23ssxkfh09rvsnywhzxhd0xai4h")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; No target + #:phases + (modify-phases %standard-phases + (delete 'configure)) + #:make-flags + (list + (string-append "PREFIX=" (assoc-ref %outputs "out"))))) + (synopsis "ALSA interfacing library") + (description "TinyALSA is a small library to interface with ALSA in the +Linux kernel.") + (home-page "https://github.com/tinyalsa/tinyalsa") + (license (license:non-copyleft "file:///NOTICE")))) + +(define-public libopenmpt + (package + (name "libopenmpt") + (version "0.5.2") + (source + (origin + (method url-fetch) + (uri + (string-append "https://download.openmpt.org/archive/libopenmpt/src/" + "libopenmpt-" version "+release.autotools.tar.gz")) + (sha256 + (base32 "1cwpc4j90dpxa2siia68rg9qwwm2xk6bhxnslfjj364507jy6s4l")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + (list (string-append "--docdir=" (assoc-ref %outputs "out") + "/share/doc/" ,name "-" ,version)) + #:phases + (modify-phases %standard-phases + (add-after 'install 'delete-static-libraries + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (lib (string-append out "/lib"))) + (for-each delete-file (find-files lib "\\.a$")) + #t)))))) + (native-inputs + `(("doxygen" ,doxygen) + ("perl" ,perl) + ("pkg-config" ,pkg-config))) + (inputs + `(("alsa" ,alsa-lib) + ("flac" ,flac) + ("mpg123" ,mpg123) + ("portaudio" ,portaudio) + ("pulseaudio" ,pulseaudio) + ("sdl2" ,sdl2) + ("sndfile" ,libsndfile) + ("vorbis" ,libvorbis) + ("zlib" ,zlib))) + (synopsis "Audio tracking library") + (description "LibOpenMPT is a cross-platform C++ and C module playback +library. It is based on the player code of the Open ModPlug Tracker project.") + (home-page "https://openmpt.org/") + (license (license:non-copyleft "file:///LICENSE")))) + +(define-public libofa + (package + (name "libofa") + (version "0.9.3") + (source + (origin + (method url-fetch) + (uri + (string-append "https://storage.googleapis.com/" + "google-code-archive-downloads/v2/code.google.com/" + "musicip-libofa/" name "-" version ".tar.gz")) + (sha256 + (base32 "184ham039l7lwhfgg0xr2vch2xnw1lwh7sid432mh879adhlc5h2")) + (patches + (search-patches + "libofa-ftbfs-1.diff" + "libofa-curl.diff" + "libofa-ftbfs-2.diff")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("curl" ,curl) + ("expat" ,expat))) + (propagated-inputs + `(("fftw" ,fftw))) + (synopsis "Open Fingerprint Architecture") + (description "LibOFA is an audio fingerprint library, created and provided +by MusicIP.") + (home-page "https://code.google.com/archive/p/musicip-libofa/") + (license license:gpl2+))) + +(define-public faac + (package + (name "faac") + (version "1.30") + (source + (origin + (method url-fetch) + (uri + (string-append "https://sourceforge.net/projects/faac/files/faac-src/" + "faac-1.30/faac-1_30.tar.gz/download")) + (sha256 + (base32 "1lmj0dib3mjp84jhxc5ddvydkzzhb0gfrdh3ikcidjlcb378ghxd")))) + (build-system gnu-build-system) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("pkg-config" ,pkg-config))) + (synopsis "Freeware Advanced Audio Coder") + (description "FAAC is an MPEG-4 and MPEG-2 AAC encoder.") + (home-page "https://www.audiocoding.com/faac.html") + (license + (list + ;; ISO MPEG-4 reference code. + license:gpl2+ + ;; Others. + license:lgpl2.0+)))) + +(define-public libtimidity + (package + (name "libtimidity") + (version "0.2.6") + (source + (origin + (method url-fetch) + (uri + (string-append "https://sourceforge.net/projects/" name "/files/" + name "/" version "/" name "-" version ".tar.gz")) + (sha256 + (base32 "0p2px0m907gi1zpdr0l9adq25jl89j85c11ag9s2g4yc6n1nhgfm")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f)) ; XXX: LibTiMidity could not be initialised + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("ao" ,ao))) + (synopsis "MIDI to WAVE converter library") + (description "LibTiMidity is a MIDI to WAVE converter library that uses +Gravis Ultrasound-compatible patch files to generate digital audio data from +General MIDI files.") + (home-page "http://libtimidity.sourceforge.net/") + (license + ;; This project is dual-licensed. + ;; Either of the following licenses can be exercised. + (list + license:lgpl2.1+ + license:artistic2.0)))) + (define-public vo-amrwbenc (package (name "vo-amrwbenc") @@ -170,7 +481,9 @@ implementation of Adaptive Multi Rate Narrowband and Wideband "/" version "/ams-" version ".tar.bz2")) (sha256 (base32 - "1azbrhpfk4nnybr7kgmc7w6al6xnzppg853vas8gmkh185kk11l0")))) + "1azbrhpfk4nnybr7kgmc7w6al6xnzppg853vas8gmkh185kk11l0")) + (patches + (search-patches "alsa-modular-synth-fix-vocoder.patch")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -178,6 +491,17 @@ implementation of Adaptive Multi Rate Narrowband and Wideband "CXXFLAGS=-std=gnu++11") #:phases (modify-phases %standard-phases + (add-after 'set-paths 'hide-default-gcc + (lambda* (#:key inputs #:allow-other-keys) + (let ((gcc (assoc-ref inputs "gcc"))) + ;; Remove the default GCC from CPLUS_INCLUDE_PATH to prevent + ;; conflicts with the GCC 5 input. + (setenv "CPLUS_INCLUDE_PATH" + (string-join + (delete (string-append gcc "/include/c++") + (string-split (getenv "CPLUS_INCLUDE_PATH") #\:)) + ":")) + #t))) ;; Insert an extra space between linker flags. (add-before 'configure 'add-missing-space (lambda _ @@ -198,7 +522,7 @@ implementation of Adaptive Multi Rate Narrowband and Wideband (native-inputs `(("pkg-config" ,pkg-config) ("qttools" ,qttools) - ("gcc" ,gcc-5))) + ("gcc@5" ,gcc-5))) (home-page "http://alsamodular.sourceforge.net/") (synopsis "Realtime modular synthesizer and effect processor") (description @@ -377,17 +701,17 @@ engineers, musicians, soundtrack editors and composers.") (define-public audacity (package (name "audacity") - (version "2.3.3") + (version "2.4.1") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/audacity/audacity.git") + (url "https://github.com/audacity/audacity") (commit (string-append "Audacity-" version)))) (file-name (git-file-name name version)) (sha256 (base32 - "0707fsnrl4vjalsi21w4blwgz024qhd0w8rdd5j5vpxf5lyk2rbk")) + "1xk0piv72d2xd3p7igr916fhcbrm76fhjr418k1rlqdzzg1hfljn")) (patches (search-patches "audacity-build-with-system-portaudio.patch")) (modules '((guix build utils))) (snippet @@ -455,7 +779,7 @@ engineers, musicians, soundtrack editors and composers.") ;; SSE instructions are available on Intel systems only. ,@(if (any (cute string-prefix? <> (or (%current-target-system) (%current-system))) - '("x64_64" "i686")) + '("x86_64" "i686")) '() '("--enable-sse=no")) ;; portmidi, libid3tag and libmad provide no .pc files, so @@ -700,7 +1024,7 @@ tools (analyzer, mono/stereo tools, crossovers).") ;; Actually https://github.com/moddevices/caps-lv2.git, but it's ;; missing fixes for newer glibc, so using the origin of a pull ;; request regarding this issue: - (url "https://github.com/jujudusud/caps-lv2.git") + (url "https://github.com/jujudusud/caps-lv2") (commit "9c9478b7fbd8f9714f552ebe2a6866398b0babfb"))) (file-name (git-file-name name version)) (sha256 @@ -736,7 +1060,7 @@ generators of mostly elementary and occasionally exotic nature.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/ssj71/infamousPlugins.git") + (url "https://github.com/ssj71/infamousPlugins") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -775,7 +1099,7 @@ envelope follower, distortion effects, tape effects and more.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/swh/ladspa.git") + (url "https://github.com/swh/ladspa") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -805,7 +1129,7 @@ envelope follower, distortion effects, tape effects and more.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/swh/lv2.git") + (url "https://github.com/swh/lv2") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -843,33 +1167,103 @@ flanger), ringmodulator, distortion, filters, pitchshift, oscillators, emulation (valve, tape), bit fiddling (decimator, pointer-cast), etc.") (license license:gpl3+))) -(define-public csound +(define-public tao (package - (name "csound") - (version "6.13.0") + (name "tao") + (version "1.0-beta-10May2006") (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/csound/csound.git") - (commit version))) - (file-name (git-file-name name version)) + (method url-fetch) + (uri (string-append "mirror://sourceforge/taopm/Tao/" + "tao-" version "/" + "tao-" version ".tar.gz")) (sha256 (base32 - "14822ybqyp31z18gky2y9zadr9dkbhabg97y139py73w7v3af1bh")))) - (build-system cmake-build-system) + "156py3g6mmglldfd0j76bn7n242hdwf49diaprjpj7crp8vgf2pz")) + (patches + (search-patches "tao-add-missing-headers.patch" + "tao-fix-parser-types.patch")) + (modules '((guix build utils))) + (snippet + '(begin + (substitute* "configure" + (("SHELL=/bin/sh") "")) + #t)))) + (build-system gnu-build-system) + (arguments + '(#:configure-flags '("TAO_RELEASE=-beta") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-references + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "user-scripts/tao.in" + (("taoparse") + (string-append (assoc-ref outputs "out") "/bin/taoparse")) + (("grep") (which "grep")) + (("sed -f \\$distdir/user-scripts/") + (string-append (which "sed") " -f $distdir/")) + (("distdir=.*") + (string-append "distdir=" + (assoc-ref outputs "out") "/share/tao"))) + #t)) + (add-after 'install 'install-extra-files + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (share (string-append out "/share/tao/")) + (inc (string-append out "/include/tao/"))) + (mkdir-p share) + (mkdir-p inc) + (install-file "user-scripts/error.parse" share) + (copy-recursively "examples" (string-append share "examples")) + (for-each (lambda (file) (install-file file inc)) + (find-files "include" "\\.h")) + #t)))))) (inputs - `(("alsa-lib" ,alsa-lib) - ("boost" ,boost) - ("pulseaudio" ,pulseaudio) - ("libsndfile" ,libsndfile) - ("liblo" ,liblo) - ("ladspa" ,ladspa) - ("jack" ,jack-1) - ("gettext" ,gettext-minimal))) + `(("audiofile" ,audiofile) + ("libxi" ,libxi) + ("libxmu" ,libxmu) + ("mesa" ,mesa) + ("glut" ,freeglut) + ("flex" ,flex) + ("bison" ,bison) + ("sed" ,sed) + ("grep" ,grep))) + (home-page "http://taopm.sourceforge.net/") + (synopsis "Sound Synthesis with Physical Models") + (description "Tao is a software package for sound synthesis using physical +models. It provides a virtual acoustic material constructed from masses and +springs which can be used as the basis for building quite complex virtual +musical instruments. Tao comes with a synthesis language for creating and +playing instruments and a C++ API for those who would like to use it as an +object library.") + (license license:gpl2+))) + +(define-public csound + (package + (name "csound") + (version "6.14.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/csound/csound") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1sr9knfhbm2m0wpkjq2l5n471vnl51wy4p6j4m95zqybimzb4s2j")))) + (build-system cmake-build-system) (native-inputs `(("bison" ,bison) ("flex" ,flex) + ("gettext" ,gettext-minimal) ("zlib" ,zlib))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("boost" ,boost) + ("jack" ,jack-1) + ("ladspa" ,ladspa) + ("liblo" ,liblo) + ("libsndfile" ,libsndfile) + ("pulseaudio" ,pulseaudio))) (home-page "https://csound.com/") (synopsis "Sound and music computing system") (description @@ -1237,16 +1631,16 @@ follower.") (define-public fluidsynth (package (name "fluidsynth") - (version "2.1.1") + (version "2.1.4") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/FluidSynth/fluidsynth.git") + (url "https://github.com/FluidSynth/fluidsynth") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 - "09jq04hrasidf6b5gkk4aba13fq55z3bmn7bq35rdaikz26xiij4")))) + "1r3khwyw57ybg5m4x0rvdzq7hgw2484sd52k6bm19akbw8yicfna")))) (build-system cmake-build-system) (arguments '(#:tests? #f ; no check target @@ -1297,22 +1691,22 @@ also play midifiles using a Soundfont.") (define-public faad2 (package (name "faad2") - (version "2.8.6") - (source (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/faac/faad2-src/faad2-" - (version-major+minor version) ".0/" - "faad2-" version ".tar.gz")) - (sha256 - (base32 - "089zqykqgmmysznvk0bi2pfvdqwclnn540d0zks83sv2pynpfjb5")))) + (version "2.8.8") + (source + (origin + (method url-fetch) + (uri + (string-append "mirror://sourceforge/faac/faad2-src/faad2-" + (version-major+minor version) ".0/" + "faad2-" version ".tar.gz")) + (sha256 + (base32 "0va284hndhn0ynm4lyn219qw4y8wa4agfkqgwlaji7bqp6nkyp4q")))) (build-system gnu-build-system) (home-page "https://www.audiocoding.com/faad2.html") (synopsis "MPEG-4 and MPEG-2 AAC decoder") (description - "FAAD2 is an MPEG-4 and MPEG-2 AAC decoder supporting LC, Main, LTP, SBR, -PS, and DAB+.") - (license license:gpl2))) + "FAAD2 is an MPEG-4 and MPEG-2 AAC decoder supporting LC, Main, LTP, SBR, -PS, and DAB+.") + (license license:gpl2+))) (define-public faust (package @@ -1321,7 +1715,7 @@ PS, and DAB+.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/grame-cncm/faust.git") + (url "https://github.com/grame-cncm/faust") (commit (string-append "v" (string-map (lambda (c) (if (char=? c #\.) #\- c)) @@ -1429,7 +1823,7 @@ patches that can be used with softsynths such as Timidity and WildMidi.") (define-public guitarix (package (name "guitarix") - (version "0.38.1") + (version "0.41.0") (source (origin (method url-fetch) (uri (string-append @@ -1437,28 +1831,14 @@ patches that can be used with softsynths such as Timidity and WildMidi.") version ".tar.xz")) (sha256 (base32 - "0bw7xnrx062nwb1bfj9x660h7069ncmz77szcs8icpqxrvhs7z80")))) + "0qsfbyrrpb3bbdyq68k28mjql7kglxh8nqcw9jvja28x6x9ik5a0")))) (build-system waf-build-system) (arguments `(#:tests? #f ; no "check" target - #:python ,python-2 #:configure-flags (list ;; Add the output lib directory to the RUNPATH. - (string-append "--ldflags=-Wl,-rpath=" %output "/lib")) - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-boost-includes - (lambda _ - (substitute* "src/headers/gx_internal_plugins.h" - (("namespace gx_jack" m) - (string-append "#include \n" m))) - (substitute* '("src/headers/gx_system.h" - "src/headers/gx_parameter.h" - "src/headers/gx_json.h") - (("namespace gx_system" m) - (string-append "#include \n" m))) - #t))))) + (string-append "--ldflags=-Wl,-rpath=" %output "/lib")))) (inputs `(("libsndfile" ,libsndfile) ("boost" ,boost) @@ -1469,8 +1849,8 @@ patches that can be used with softsynths such as Timidity and WildMidi.") ("lilv" ,lilv) ("ladspa" ,ladspa) ("jack" ,jack-1) - ("gtkmm" ,gtkmm-2) - ("gtk+" ,gtk+-2) + ("gtkmm" ,gtkmm) + ("gtk+" ,gtk+) ("fftwf" ,fftwf) ("lrdf" ,lrdf) ("zita-resampler" ,zita-resampler) @@ -1480,7 +1860,8 @@ patches that can be used with softsynths such as Timidity and WildMidi.") ("faust" ,faust) ("intltool" ,intltool) ("gettext" ,gettext-minimal) - ("pkg-config" ,pkg-config))) + ("pkg-config" ,pkg-config) + ("sassc" ,sassc))) (native-search-paths (list (search-path-specification (variable "LV2_PATH") @@ -1601,15 +1982,16 @@ especially for creating reverb effects. It supports impulse responses with 1, (package (name "jack") (version "0.125.0") - (source (origin - (method url-fetch) - (uri (string-append - "http://jackaudio.org/downloads/jack-audio-connection-kit-" - version - ".tar.gz")) - (sha256 - (base32 - "0i6l25dmfk2ji2lrakqq9icnwjxklgcjzzk65dmsff91z2zva5rm")))) + (source + (origin + (method url-fetch) + ;; jackaudio.org/downloads/jack-audio-connection-kit-0.125.0.tar.gz + ;; no longer exists (404). Use an unofficial mirror. + (uri (string-append "https://crux.ster.zone/downloads/" + "jack-audio-connection-kit/" + "jack-audio-connection-kit-" version ".tar.gz")) + (sha256 + (base32 "0i6l25dmfk2ji2lrakqq9icnwjxklgcjzzk65dmsff91z2zva5rm")))) (build-system gnu-build-system) (arguments `(#:phases (modify-phases %standard-phases @@ -1629,7 +2011,7 @@ especially for creating reverb effects. It supports impulse responses with 1, ("bdb" ,bdb))) (native-inputs `(("pkg-config" ,pkg-config))) - (home-page "http://jackaudio.org/") + (home-page "https://jackaudio.org/") (synopsis "JACK audio connection kit") (description "JACK is a low-latency audio server. It can connect a number of @@ -1648,7 +2030,7 @@ synchronous execution of all clients, and low latency operation.") (define-public jack-2 (package (inherit jack-1) (name "jack2") - (version "1.9.13") + (version "1.9.14") (source (origin (method url-fetch) (uri (string-append "https://github.com/jackaudio/jack2/releases/" @@ -1657,7 +2039,7 @@ synchronous execution of all clients, and low latency operation.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1d1d403jn4366mqig6g8ghr8057b3rn7gs26b5p3rkal34j20qw2")))) + "0z11hf55a6mi8h50hfz5wry9pshlwl4mzfwgslghdh40cwv342m2")))) (build-system waf-build-system) (arguments `(#:tests? #f ; no check target @@ -1667,6 +2049,10 @@ synchronous execution of all clients, and low latency operation.") (modify-phases %standard-phases (add-before 'configure 'set-linkflags (lambda _ + ;; Ensure -lstdc++ is the tail of LDFLAGS or the simdtests.cpp + ;; will not link with undefined reference to symbol + ;; '__gxx_personality_v0@@CXXABI_1.3' + (setenv "LDFLAGS" "-lstdc++") ;; Add $libdir to the RUNPATH of all the binaries. (substitute* "wscript" ((".*CFLAGS.*-Wall.*" m) @@ -1853,6 +2239,31 @@ for headphone prolonged listening to disable superstereo fatigue without essential distortions.") (license license:expat))) +(define-public ladspa-bs2b + (package + (name "ladspa-bs2b") + (version "0.9.1") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/bs2b/plugins/LADSPA%20plugin/" + version "/" name "-" version ".tar.gz")) + (sha256 + (base32 + "1b4aipbj1ba5k99gbc7gmgy14sywyrjd8rpyqj5l905j0mjv8jg2")))) + (build-system gnu-build-system) + (native-inputs `(("pkg-config" ,pkg-config))) + (inputs `(("ladspa" ,ladspa) + ("libbs2b" ,libbs2b))) + (home-page "https://sourceforge.net/projects/bs2b/") + (synopsis "Bauer stereophonic-to-binaural DSP - LADSPA plugin") + (description "The Bauer stereophonic-to-binaural DSP (bs2b) library and +plugins is designed to improve headphone listening of stereo audio records. +Recommended for headphone prolonged listening to disable superstereo fatigue +without essential distortions. This package contains a LADSPA plugin for use +with applications that support them (e.g. PulseAudio).") + (license license:gpl2+))) + (define-public liblo (package (name "liblo") @@ -1876,6 +2287,48 @@ essential distortions.") implementation of the Open Sound Control (@dfn{OSC}) protocol.") (license license:lgpl2.1+))) +(define-public rtaudio + (package + (name "rtaudio") + (version "5.1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/thestk/rtaudio") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "156c2dgh6jrsyfn1y89nslvaxm4yifmxridsb708yvkaym02w2l8")))) + (build-system cmake-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("jack" ,jack-1) + ("pulseaudio" ,pulseaudio))) + (synopsis "Common API for real-time audio I/O") + (description + "RtAudio is a set of C++ classes that provides a common API for real-time +audio input/output. It was designed with the following objectives: + +@itemize +@item object-oriented C++ design +@item simple, common API across all supported platforms +@item only one source and one header file for easy inclusion in programming +projects +@item allow simultaneous multi-api support +@item support dynamic connection of devices +@item provide extensive audio device parameter control +@item allow audio device capability probing +@item automatic internal conversion for data format, channel number +compensation, (de)interleaving, and byte-swapping +@end itemize") + (home-page "https://www.music.mcgill.ca/~gary/rtaudio/") + ;; License is expat with a non-binding request to send modifications to + ;; original developer. + (license license:expat))) + (define-public python-pyaudio (package (name "python-pyaudio") @@ -1931,14 +2384,14 @@ included are the command line utilities @code{send_osc} and @code{dump_osc}.") (define-public lilv (package (name "lilv") - (version "0.24.6") + (version "0.24.8") (source (origin (method url-fetch) (uri (string-append "https://download.drobilla.net/lilv-" version ".tar.bz2")) (sha256 (base32 - "1p3hafsxgs5d4za7n66lf5nz74qssfqpmk520cm7iq2njvvlqm2z")))) + "0063i5zgf3d3accwmyx651hw0wh5ik7kji2hvfkcdbl1qia3dp6a")))) (build-system waf-build-system) (arguments `(#:tests? #f ; no check target @@ -1977,24 +2430,24 @@ significantly faster and have minimal dependencies.") (define-public lv2 (package (name "lv2") - (version "1.16.0") + (version "1.18.0") (source (origin (method url-fetch) - (uri (string-append "http://lv2plug.in/spec/lv2-" + (uri (string-append "https://lv2plug.in/spec/lv2-" version ".tar.bz2")) (sha256 (base32 - "1ppippbpdpv13ibs06b0bixnazwfhiw0d0ja6hx42jnkgdyp5hyy")))) + "0gs7401xz23q9vajqr31aa2db8dvssgyh5zrvr4ipa6wig7yb8wh")))) (build-system waf-build-system) (arguments - `(#:tests? #f ; no check target + `(#:tests? #f ; no check target #:configure-flags '("--no-plugins"))) (inputs ;; Leaving off cairo and gtk+-2.0 which are needed for example plugins `(("libsndfile" ,libsndfile))) (native-inputs `(("pkg-config" ,pkg-config))) - (home-page "http://lv2plug.in/") + (home-page "https://lv2plug.in/") (synopsis "LV2 audio plugin specification") (description "LV2 is an open specification for audio plugins and host applications. @@ -2057,7 +2510,7 @@ software.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/lvtk/lvtk.git") + (url "https://github.com/lvtk/lvtk") (commit version))) (file-name (git-file-name name version)) (sha256 @@ -2161,7 +2614,7 @@ buffers, and audio capture.") (define-public patchage (package (name "patchage") - (version "1.0.0") + (version "1.0.2") (source (origin (method url-fetch) (uri (string-append "https://download.drobilla.net/patchage-" @@ -2169,10 +2622,10 @@ buffers, and audio capture.") ".tar.bz2")) (sha256 (base32 - "1agdpwwi42176l4mxj0c4fsvdiv1ig56bfnnx0msckxmy57df8bb")))) + "0dk3fiac10m83mwss3026yz7ygc47c2iw924cwwnh2fyydc9bsy6")))) (build-system waf-build-system) (arguments - `(#:tests? #f ; no check target + `(#:tests? #f ; no check target #:python ,python-2)) (inputs `(("alsa-lib" ,alsa-lib) @@ -2259,7 +2712,7 @@ into various outputs and to start, stop and configure jackd") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/orouits/qjackrcd.git") + (url "https://github.com/orouits/qjackrcd") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -2290,60 +2743,90 @@ background file post-processing.") (define-public supercollider (package (name "supercollider") - (version "3.10.4") + (version "3.11.0") (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/supercollider/supercollider" - "/releases/download/Version-" version - "/SuperCollider-" version "-Source-linux.tar.bz2")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/supercollider/supercollider") + (commit (string-append "Version-" version)) + ;; for nova-simd, nova-tt, hidapi, TLSF, oscpack + (recursive? #t))) + (file-name (git-file-name name version)) (sha256 (base32 - "0x11g3pfw11m6v18qfpfl5w99dbmf73g4z7wvwhrj1a4qv2dn084")))) + "02v911w2kdbg3kfl593lb2ig4sjbfxzv20a0vbcymhfzpvp1x6xp")) + (modules '((guix build utils) + (ice-9 ftw))) + (snippet + ;; The build system doesn't allow us to unbundle the following + ;; libraries. hidapi is also heavily patched and upstream not + ;; actively maintained. + '(let ((keep-dirs '("nova-simd" "nova-tt" "hidapi" + "TLSF-2.4.6" "oscpack_1_1_0" "." ".."))) + (with-directory-excursion "./external_libraries" + (for-each + delete-file-recursively + (scandir "." + (lambda (x) + (and (eq? (stat:type (stat x)) 'directory) + (not (member (basename x) keep-dirs))))))) + ;; To find the Guix provided ableton-link library. + (substitute* "lang/CMakeLists.txt" + (("include\\(\\.\\./external_libraries/link/\ +AbletonLinkConfig\\.cmake\\)") + "find_package(AbletonLink NAMES AbletonLink ableton-link \ +link REQUIRED)")) + #t)))) (build-system cmake-build-system) + (outputs + '("out" ;core language + "ide")) ;qt ide (arguments `(#:configure-flags '("-DSYSTEM_BOOST=on" "-DSYSTEM_YAMLCPP=on" - "-DSC_QT=off" + "-DSC_QT=ON" "-DCMAKE_BUILD_TYPE=Release" + "-DFORTIFY=ON" "-DLIBSCSYNTH=ON" "-DSC_EL=off") ;scel is packaged individually as ;emacs-scel - #:modules ((guix build utils) - (guix build cmake-build-system) - (ice-9 ftw)) #:phases (modify-phases %standard-phases - (add-after 'unpack 'rm-bundled-libs + ;; HOME must be defined otherwise supercollider throws a "ERROR: + ;; Primitive '_FileMkDir' failed." error when generating the doc. + ;; The graphical tests also hang without it. + (add-after 'unpack 'set-home-directory (lambda _ - ;; The build system doesn't allow us to unbundle the following - ;; libraries. hidapi is also heavily patched. - (let ((keep-dirs '("nova-simd" "nova-tt" "hidapi" "TLSF-2.4.6" - "oscpack_1_1_0" "." ".."))) - (with-directory-excursion "./external_libraries" - (for-each - delete-file-recursively - (scandir "." - (lambda (x) - (and (eq? (stat:type (stat x)) 'directory) - (not (member (basename x) keep-dirs)))))))) + (setenv "HOME" (getcwd)) #t)) - ;; Some tests are broken (see: - ;; https://github.com/supercollider/supercollider/issues/3555 and - ;; https://github.com/supercollider/supercollider/issues/1736 - (add-after 'rm-bundled-libs 'disable-broken-tests + (add-after 'unpack 'patch-scclass-dir + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (scclass-dir + (string-append out + "/share/SuperCollider/SCClassLibrary"))) + (substitute* "lang/LangSource/SC_LanguageConfig.cpp" + (((string-append + "SC_Filesystem::instance\\(\\)\\.getDirectory" + "\\(DirName::Resource\\) / CLASS_LIB_DIR_NAME")) + (string-append "Path(\"" scclass-dir "\")"))) + #t))) + (add-before 'build 'prepare-x (lambda _ - (substitute* "testsuite/server/supernova/CMakeLists.txt" - (("server_test.cpp") - "") - (("perf_counter_test.cpp") - "")) - (delete-file "testsuite/server/supernova/server_test.cpp") - (delete-file "testsuite/server/supernova/perf_counter_test.cpp") - (substitute* "testsuite/CMakeLists.txt" - (("add_subdirectory\\(sclang\\)") - "")) - (delete-file "testsuite/sclang/CMakeLists.txt") - #t))))) + (system "Xvfb &") + (setenv "DISPLAY" ":0") + #t)) + (add-before 'install 'install-ide + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (ide (assoc-ref outputs "ide")) + (scide "editors/sc-ide/scide")) + (install-file scide + (string-append ide "/bin")) + (delete-file scide) + #t)))))) (native-inputs - `(("pkg-config" ,pkg-config))) + `(("ableton-link" ,ableton-link) + ("pkg-config" ,pkg-config) + ("qttools" ,qttools) + ("xorg-server" ,xorg-server-for-tests))) (inputs `(("jack" ,jack-1) ("libsndfile" ,libsndfile) @@ -2356,7 +2839,14 @@ background file post-processing.") ("icu4c" ,icu4c) ("boost" ,boost) ("boost-sync" ,boost-sync) - ("yaml-cpp" ,yaml-cpp))) + ("yaml-cpp" ,yaml-cpp) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtsvg" ,qtsvg) + ("qtwebchannel" ,qtwebchannel) + ("qtwebsockets" ,qtwebsockets))) + (propagated-inputs ;to get native-search-path + `(("qtwebengine" ,qtwebengine))) (home-page "https://github.com/supercollider/supercollider") (synopsis "Synthesis engine and programming language") (description "SuperCollider is a synthesis engine (@code{scsynth} or @@ -2430,9 +2920,12 @@ aimed at audio/musical applications.") ("automake" ,automake) ("pkg-config" ,pkg-config) ("libtool" ,libtool))) - (synopsis "Real-time library for sampling rate conversion") - (description "The @command{resample} software package contains free -sampling-rate conversion and filter design utilities.") + (synopsis "Sampling rate conversion and filter design utilities") + (description "This package contains the @command{resample} and +@command{windowfilter} command line utilities. The @command{resample} command +allows changing the sampling rate of a sound file, while the +@command{windowfilter} command allows to design Finite Impulse Response (FIR) +filters using the so-called @emph{window method}.") (home-page "https://ccrma.stanford.edu/~jos/resample/Free_Resampling_Software.html") (license license:lgpl2.1+))) @@ -2706,17 +3199,31 @@ stretching and pitch scaling of audio. This package contains the library.") (define-public wavpack (package (name "wavpack") - (version "5.2.0") - (source (origin - (method url-fetch) - (uri (string-append "http://www.wavpack.com/" - "wavpack-" version ".tar.xz")) - (sha256 - (base32 - "1qvpvfx30kvrkw7y1g6r8xj109wszg1z0qmkfm17wf3flb7v3rbp")))) + (version "5.3.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/dbry/WavPack") + (commit "e4e8d191e8dd74cbdbeaef3232c16a7ef517e68d"))) + (sha256 + (base32 "1zj8svk6giy1abq3940sz32ygz7zldppxl47852zgn5wfm3l2spx")) + (file-name (git-file-name name version)))) (build-system gnu-build-system) (arguments - '(#:configure-flags '("--disable-static"))) + '(#:configure-flags + (list "--disable-static") + #:phases + (modify-phases %standard-phases + (replace 'bootstrap + ;; Running ./autogen.sh would cause premature configuration. + (lambda _ + (invoke "autoreconf" "-vif") + #t))))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool))) (home-page "http://www.wavpack.com/") (synopsis "Hybrid lossless audio codec") (description @@ -3004,7 +3511,7 @@ synthesizer written in C++.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/Themaister/RSound.git") + (url "https://github.com/Themaister/RSound") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -3043,7 +3550,7 @@ with a much different focus than most other audio daemons.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/johnhldavis/xjackfreak.git") + (url "https://github.com/johnhldavis/xjackfreak") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -3123,7 +3630,7 @@ engine.") (define-public zita-resampler (package (name "zita-resampler") - (version "1.3.0") + (version "1.6.2") (source (origin (method url-fetch) (uri (string-append @@ -3133,26 +3640,28 @@ engine.") (snippet ;; Don't optimize for a specific processor architecture. '(begin - (substitute* '("apps/Makefile" "libs/Makefile") + (substitute* '("apps/Makefile" "source/Makefile") (("^CXXFLAGS \\+= -march=native") "")) #t)) (modules '((guix build utils))) (sha256 (base32 - "0r9ary5sc3y8vba5pad581ha7mgsrlyai83w7w4x2fmhfy64q0wq")))) + "1my5k2dh2dkvjp6xjnf9qy6i7s28z13kw1n9pwa4a2cpwbzawfr3")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no "check" target - #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))) + #:make-flags + (list (string-append "PREFIX=" (assoc-ref %outputs "out")) + (string-append "SUFFIX=")) #:phases (modify-phases %standard-phases (add-after 'unpack 'patch-makefile-and-enter-directory (lambda _ - (substitute* "libs/Makefile" + (substitute* "source/Makefile" (("ldconfig") "true") (("^LIBDIR =.*") "LIBDIR = lib\n")) - (chdir "libs") + (chdir "source") #t)) (add-after 'install 'install-symlink @@ -3174,7 +3683,7 @@ provide high-quality sample rate conversion.") (define-public zita-alsa-pcmi (package (name "zita-alsa-pcmi") - (version "0.2.0") + (version "0.3.2") (source (origin (method url-fetch) (uri (string-append @@ -3183,19 +3692,21 @@ provide high-quality sample rate conversion.") version ".tar.bz2")) (sha256 (base32 - "1rgv332g82rrrlm4vdam6p2pyrisxbi7b3izfaa0pcjglafsy7j9")))) + "12d7vdg74yh21w69qi0wg57iz4876j94qbiq09bvscih6xz9y78s")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no "check" target - #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))) + #:make-flags + (list (string-append "PREFIX=" (assoc-ref %outputs "out")) + (string-append "SUFFIX=")) #:phases (modify-phases %standard-phases (add-after 'unpack 'patch-makefile-and-enter-directory (lambda _ - (substitute* "libs/Makefile" + (substitute* "source/Makefile" (("ldconfig") "true") (("^LIBDIR =.*") "LIBDIR = lib\n")) - (chdir "libs") + (chdir "source") #t)) (add-after 'install 'install-symlink (lambda _ @@ -3224,7 +3735,7 @@ point audio data.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/svend/cuetools.git") + (url "https://github.com/svend/cuetools") (commit version))) (file-name (git-file-name name version)) (sha256 @@ -3274,7 +3785,7 @@ use them split WAVE data into multiple files.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/foo86/dcadec.git") + (url "https://github.com/foo86/dcadec") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -3306,17 +3817,18 @@ with support for HD extensions.") (define-public bs1770gain (package (name "bs1770gain") - (version "0.6.7") + (version "0.7.0") + (home-page "https://manpages.debian.org/sid/bs1770gain/bs1770gain.1.en.html") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/bs1770gain/bs1770gain/" version "/bs1770gain-" version ".tar.gz")) (sha256 - (base32 "13hsbqj1dkpz1gbclnjxv50kr7b4gcjai6c1l38g01433h217qjc")) + (base32 "0a2dcaxvxy5m3a5sb1lhplsymvz3ypaiidc5xn9qy01h53zvyvkp")) (modules '((guix build utils))) (snippet - '(begin + `(begin ;; XXX (substitute* (find-files "." "\\.[ch]$") (("^ \\* N..o.*") "")) @@ -3328,12 +3840,11 @@ with support for HD extensions.") "configure.ac" "configure") (("https?://bs1770gain[^/]*/") - "https://manpages.debian.org/sid/bs1770gain/bs1770gain.1.en.html")) + ,home-page)) #t)))) (build-system gnu-build-system) (inputs `(("ffmpeg" ,ffmpeg) ("sox" ,sox))) - (home-page "https://manpages.debian.org/sid/bs1770gain/bs1770gain.1.en.html") (synopsis "Tool to adjust loudness of media files") (description "BS1770GAIN is a loudness scanner compliant with ITU-R BS.1770 and its @@ -3352,7 +3863,7 @@ loudness of audio and video files to the same level.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/irungentoo/filter_audio.git") + (url "https://github.com/irungentoo/filter_audio") (commit commit))) (file-name (string-append name "-" version "-checkout")) (sha256 @@ -3461,7 +3972,7 @@ mixers.") ;; bootstrapped build system. (method git-fetch) (uri (git-reference - (url "https://github.com/Arkq/bluez-alsa.git") + (url "https://github.com/Arkq/bluez-alsa") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -3506,14 +4017,14 @@ on the ALSA software PCM plugin.") (define-public snd (package (name "snd") - (version "19.9") + (version "20.7") (source (origin (method url-fetch) (uri (string-append "ftp://ccrma-ftp.stanford.edu/pub/Lisp/" "snd-" version ".tar.gz")) (sha256 (base32 - "13s8fahpsjygjdrcwmprcrz23ny3klaj2rh2xzdv3bfs69gxvhys")))) + "1kd422krz8ln4m8g3p14wfplcq8lgpzly9297rpbvyc94dc6sdwj")))) (build-system glib-or-gtk-build-system) (arguments `(#:tests? #f ; no tests @@ -3570,7 +4081,7 @@ the Snd sources), Ruby, or Forth.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/lucianodato/noise-repellent.git") + (url "https://github.com/lucianodato/noise-repellent") (commit version))) (file-name (string-append name "-" version "-checkout")) (sha256 @@ -3615,7 +4126,7 @@ the following features: (origin (method git-fetch) (uri (git-reference - (url "https://github.com/dpayne/cli-visualizer.git") + (url "https://github.com/dpayne/cli-visualizer") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -3660,7 +4171,7 @@ representations.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/karlstav/cava.git") + (url "https://github.com/karlstav/cava") (commit version))) (file-name (git-file-name name version)) (sha256 @@ -3813,7 +4324,7 @@ library.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/FNA-XNA/FAudio.git") + (url "https://github.com/FNA-XNA/FAudio") (commit version))) (file-name (git-file-name name version)) (sha256 @@ -3863,15 +4374,15 @@ other Gnaural instances, allowing synchronous sessions between many users.") (define-public darkice (package (name "darkice") - (version "1.3") + (version "1.4") (source (origin (method url-fetch) - (uri (string-append "mirror://sourceforge/darkice/darkice/" - version "/darkice-" version ".tar.gz")) + (uri (string-append "https://github.com/rafael2k/darkice/releases/" + "download/v" version "/darkice-" + version ".tar.gz")) (sha256 - (base32 "1rlxds7ssq7nk2in4s46xws7xy9ylxsqgcz85hxjgh17lsm0y39c")) - (patches - (search-patches "darkice-workaround-fpermissive-error.patch")))) + (base32 + "05yq7lggxygrkd76yiqby3msrgdn082p0qlvmzzv9xbw8hmyra76")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("lame" ,lame) @@ -3918,10 +4429,79 @@ stream to one or more IceCast and/or ShoutCast servers.") (home-page "https://x42.github.io/libltc/") (license license:lgpl3+))) +(define-public ttaenc + (package + (name "ttaenc") + (version "3.4.1") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/tta/" + "tta/ttaenc-src" + "/ttaenc-" version "-src.tgz")) + (sha256 + (base32 + "1iixpr4b89g9g1hwn8ak8k8iflcww3r5f09a117qdidc2nqcijdj")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ;no tests + #:make-flags + (list (string-append "CC=" ,(cc-for-target)) + (string-append "INSDIR=" (assoc-ref %outputs "out") "/bin")) + #:phases + (modify-phases %standard-phases + (delete 'configure) ; no configure + (add-before 'install 'make-bindir + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out"))) + (mkdir-p (string-append out "/bin")) + #t)))))) + (synopsis "TTA lossless audio encoder") + (description + "TTA performs lossless compression on multichannel 8,16 and 24 bits +data of the Wav audio files. Being lossless means that no data- +quality is lost in the compression - when uncompressed, the data will +be identical to the original. The compression ratios of TTA depend on +the type of music file being compressed, but the compression size +will generally range between 30% - 70% of the original. TTA format +supports both of ID3v1/v2 and APEv2 tags.") + (home-page "http://tausoft.org/") + (license license:gpl2+))) + +(define-public libsoundio + (package + (name "libsoundio") + (version "2.0.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/andrewrk/libsoundio") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "12l4rvaypv87vigdrmjz48d4d6sq4gfxf5asvnc4adyabxb73i4x")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f)) ;no tests included + (inputs + `(("alsa-lib" ,alsa-lib) + ("jack" ,jack-1) + ("pulseaudio" ,pulseaudio))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "http://libsound.io") + (synopsis "C library for real-time audio input and output") + (description "@code{libsoundio} is a C library providing audio input and +output. The API is suitable for real-time software such as digital audio +workstations as well as consumer software such as music players.") + (license license:expat))) + (define-public redkite (package (name "redkite") - (version "0.8.0") + (version "1.0.3") (source (origin (method git-fetch) @@ -3930,8 +4510,7 @@ stream to one or more IceCast and/or ShoutCast servers.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 - "1747w1kg8y9jbl11xi018d85dm38xk7843pz26sh0k5fdv87a10q")))) + (base32 "1m2db7c791fi33snkjwnvlxapmf879g5r8azlkx7sr6vp2s0jq2k")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ;no tests included @@ -3951,18 +4530,18 @@ as is the case with audio plugins.") (define-public carla (package (name "carla") - (version "2.0.0") + (version "2.1.1") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/falkTX/Carla.git") + (url "https://github.com/falkTX/Carla") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 - "0fqgncqlr86n38yy7pa118mswfacmfczj7w9xx6c6k0jav3wk29k")))) + "0c3y4a6cgi4bv1mg57i3qn5ia6pqjqlaylvkapj6bmpsw71ig22g")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no "check" target @@ -3993,6 +4572,7 @@ as is the case with audio plugins.") ("file" ,file) ("liblo" ,liblo) ("libsndfile" ,libsndfile) + ("gtk2" ,gtk+-2) ;needed for bridging GTK2 plugins in GTK3 hosts ("gtk+" ,gtk+) ("python-pyliblo" ,python-pyliblo) ("python-pyqt" ,python-pyqt) @@ -4064,7 +4644,7 @@ in the package.") (define-public libaudec (package (name "libaudec") - (version "0.2") + (version "0.2.3") (source (origin (method git-fetch) @@ -4074,14 +4654,14 @@ in the package.") (file-name (git-file-name name version)) (sha256 (base32 - "0lfydvs92b0hr72z71ci3yi356rjzi162pgms8dphgg18bz8dazv")))) + "04hw61db8wscj28qjyiaiafx8xl87njgmvqszxyhs4gmg8xgjip7")))) (build-system meson-build-system) (arguments - `(#:configure-flags `("-Denable_tests=true -Denable_ffmpeg=true"))) + ;; Compile tests. + `(#:configure-flags `("-Dtests=true"))) (inputs `(("libsamplerate" ,libsamplerate) - ("libsndfile" ,libsndfile) - ("ffmpeg" ,ffmpeg))) + ("libsndfile" ,libsndfile))) (native-inputs `(("pkg-config", pkg-config))) (synopsis "Library for reading and resampling audio files") @@ -4094,7 +4674,7 @@ libsamplerate for reading and resampling audio files, based on Robin Gareus' (define-public lv2lint (package (name "lv2lint") - (version "0.4.0") + (version "0.8.0") (source (origin (method git-fetch) @@ -4104,7 +4684,7 @@ libsamplerate for reading and resampling audio files, based on Robin Gareus' (file-name (git-file-name name version)) (sha256 (base32 - "1pspwqpzl2dw1hd9ra9yr53arqbbqjn7d7j0f7p9g3iqa76vblpi")))) + "1jrka0hsn4n1clri7zfkcl3c2vi52144lkpjm81l51ff8rqy8ks1")))) (build-system meson-build-system) (arguments `(#:configure-flags @@ -4189,6 +4769,38 @@ minimum.") (home-page "https://git.zrythm.org/cgit/ztoolkit/") (license license:agpl3+))) +(define-public libinstpatch + (package + (name "libinstpatch") + (version "1.1.5") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/swami/libinstpatch") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0psx4hc5yksfd3k2xqsc7c8lbz2d4yybikyddyd9hlkhq979cmjb")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f)) ;there are no tests + (native-inputs + `(("glib:bin" ,glib "bin") + ("pkg-config" ,pkg-config))) + (inputs + `(("glib" ,glib) + ("libsndfile" ,libsndfile))) + (home-page "http://www.swamiproject.org/") + (synopsis "Instrument file software library") + (description + "libInstPatch is a library for processing digital sample based MIDI +instrument \"patch\" files. The types of files libInstPatch supports are used +for creating instrument sounds for wavetable synthesis. libInstPatch provides +an object framework (based on GObject) to load patch files, which can then be +edited, converted, compressed and saved.") + (license license:lgpl2.1))) + (define-public ztoolkit-rsvg (package (inherit ztoolkit) @@ -4199,3 +4811,169 @@ minimum.") `(("librsvg" ,librsvg) ,@(package-inputs ztoolkit))) (synopsis "ZToolkit with SVG support"))) + +(define-public lsp-dsp-lib + (package + (name "lsp-dsp-lib") + (version "0.5.8") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/sadko4u/lsp-dsp-lib/" + "releases/download/lsp-dsp-lib-" version + "/lsp-dsp-lib-" version "-src.tar.gz")) + (sha256 + (base32 + "07w3d2i0z0xmvi1ngcgs7lc5a0da8jvf7rv4dnjk01md43b7fkh1")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no tests + #:make-flags + (list (string-append "CC=" ,(cc-for-target))) + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (invoke "make" "config" + (string-append "PREFIX=" (assoc-ref outputs "out")))))))) + (home-page "https://github.com/sadko4u/lsp-dsp-lib") + (synopsis "Digital signal processing library") + (description "The LSP DSP library provides a set of functions that perform +SIMD-optimized computing on several hardware architectures. All functions +currently operate on IEEE-754 single-precision floating-point numbers.") + (license license:lgpl3+))) + +(define-public codec2 + (package + (name "codec2") + (version "0.9.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/drowe67/codec2") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1jpvr7bra8srz8jvnlbmhf8andbaavq5v01qjnp2f61za93rzwba")))) + (build-system cmake-build-system) + (native-inputs + `(("bc" ,bc) + ("octave" ,octave) + ("valgrind" ,valgrind))) + (arguments + `(#:tests? #f ; TODO: Fix tests (paths, graphic toolkit, octave modules). + #:phases + (modify-phases %standard-phases + (add-before 'check 'set-test-environment + (lambda _ + (setenv "HOME" "/tmp") + #t))))) + (synopsis "Speech codec") + (description + "Codec 2 is a speech codec designed for communications quality speech +between 700 and 3200 bit/s. The main application is low bandwidth HF/VHF +digital radio.") + (home-page "https://www.rowetel.com/?page_id=452") + (license license:lgpl2.1))) + +(define-public ableton-link + (package + (name "ableton-link") + (version "3.0.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Ableton/link") + (commit (string-append "Link-" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0262vm0v7hmqjhqx5xikh529p3c065p1yld6ymaiz74yq1dnnjir")) + (modules '((guix build utils))) + (patches + (search-patches "ableton-link-system-libraries-debian.patch")) + (snippet + '(begin + ;; Tests assume that CMake's "build" directory is a + ;; sub-directory of the source tree, so we fix it. + (substitute* "ci/run-tests.py" + (("root_dir,") "root_dir, os.pardir,")) + ;; Unbundle dependencies. + (delete-file-recursively "third_party") + (delete-file-recursively "modules") + #t)))) + (build-system cmake-build-system) + (native-inputs + `(("catch" ,catch-framework) + ("python" ,python) ;for running tests + ("portaudio" ,portaudio) ;for portaudio examples + ("qtbase" ,qtbase) ;for Qt examples + ("qtdeclarative" ,qtdeclarative) + ("qttools" ,qttools))) + (inputs + `(("jack" ,jack-1) ;for JACK examples + ("qtquickcontrols" ,qtquickcontrols))) ;for Qt examples + (propagated-inputs + ;; This is because include/ableton/platforms/asio/AsioWrapper.hpp + ;; contains '#include '. + `(("asio" ,asio))) + (arguments + `(#:configure-flags + '("-DLINK_BUILD_QT_EXAMPLES=ON" + "-DLINK_BUILD_JACK=ON") + #:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key inputs #:allow-other-keys) + (let* ((python (string-append (assoc-ref inputs "python") + "/bin/python3")) + (run-tests (string-append "../ableton-link-" + ,version + "-checkout/ci/run-tests.py"))) + (invoke python run-tests "--target" "LinkCoreTest") + (invoke python run-tests "--target" "LinkDiscoveryTest")))) + (add-before 'install 'patch-cmake + (lambda* (#:key inputs #:allow-other-keys) + (let* ((source (string-append "../ableton-link-" + ,version + "-checkout/"))) + (substitute* (string-append source + "cmake_include/AsioStandaloneConfig.cmake") + (((string-append "\\$\\{CMAKE_CURRENT_LIST_DIR\\}/\\.\\./" + "modules/asio-standalone/asio/include")) + (string-append (assoc-ref inputs "asio") + "/include"))) + (substitute* (string-append source "AbletonLinkConfig.cmake") + (("\\$\\{CMAKE_CURRENT_LIST_DIR\\}/include") + "${CMAKE_CURRENT_LIST_DIR}/../../../include") + (("\\$\\{CMAKE_CURRENT_LIST_DIR\\}/include/ableton/Link\\.hpp") + "${CMAKE_CURRENT_LIST_DIR}/../../../include/ableton/Link.hpp")) + #t))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (lib-cmake (string-append out "/lib/cmake/ableton-link")) + (source (string-append "../ableton-link-" ,version "-checkout"))) + (for-each (lambda (test-file) + (delete-file test-file)) + '("bin/LinkDiscoveryTest" "bin/LinkCoreTest")) + (copy-recursively "bin" bin) + (copy-recursively (string-append source "/include/ableton") + (string-append out "/include/ableton")) + (install-file (string-append source "/AbletonLinkConfig.cmake") + lib-cmake) + (install-file (string-append source + "/cmake_include/AsioStandaloneConfig.cmake") + (string-append lib-cmake "/cmake_include")) + #t)))))) + (home-page "https://github.com/Ableton/link") + (synopsis "Synchronize musical beat, tempo, and phase across multiple applications") + (description + "Ableton Link is a C++ library that synchronizes musical beat, tempo, and phase +across multiple applications running on one or more devices. Applications on devices +connected to a local network discover each other automatically and form a musical +session in which each participant can perform independently: anyone can start or stop +while still staying in time.") + (license license:gpl2+)))