X-Git-Url: http://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/eb36a550e369d1fb0324af3c501070ae6e3b0462..f8a29a41636fe2de4dfb3f22f9572a2ac3386f8a:/gnu/packages/audio.scm diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 01f809d5e9..37a38bae89 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -37,6 +37,8 @@ ;;; Copyright © 2021 jgart ;;; Copyright © 2021 Aleksandr Vityazev ;;; Copyright © 2022 Arjan Adriaanse +;;; Copyright © 2022 Juliana Sims +;;; Copyright © 2022 Simon Streit ;;; ;;; This file is part of GNU Guix. ;;; @@ -124,6 +126,7 @@ #:use-module (gnu packages web) #:use-module (gnu packages webkit) #:use-module (gnu packages wxwidgets) + #:use-module (gnu packages xdisorg) #:use-module (gnu packages xiph) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) @@ -233,7 +236,7 @@ promoting the market for advanced audio.") ("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.") +softsynth library that can be used with other applications.") (home-page "https://www.mindwerks.net/projects/wildmidi/") (license (list @@ -363,7 +366,12 @@ Linux kernel.") "07857vdkak306d9s5g6fhmjyxk7vijzjhkmqb15s7ihfxx9lx8xb")))) (build-system cmake-build-system) (arguments - '(#:tests? #f)) ; no check target + '(#:tests? #f ;no check target + + ;; XXX: Building with '-fsanitize=undefined' leads to embedded C++ STL + ;; header file names in libgme.so, meaning that libgme retains a + ;; reference to GCC. Disable UBSAN to avoid that. + #:configure-flags '("-DENABLE_UBSAN=OFF"))) (home-page "https://bitbucket.org/mpyne/game-music-emu") (synopsis "Video game music file playback library") (description @@ -467,31 +475,6 @@ 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 "mirror://sourceforge/faac/faac-src" - "/faac-" version "/faac-1_30.tar.gz")) - (sha256 - (base32 "1lmj0dib3mjp84jhxc5ddvydkzzhb0gfrdh3ikcidjlcb378ghxd")))) - (build-system gnu-build-system) - (native-inputs - (list autoconf automake libtool 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") @@ -585,7 +568,7 @@ implementation of Adaptive Multi Rate Narrowband and Wideband liblo qtbase-5)) (native-inputs - (list pkg-config qttools)) + (list pkg-config qttools-5)) (home-page "http://alsamodular.sourceforge.net/") (synopsis "Realtime modular synthesizer and effect processor") (description @@ -873,6 +856,10 @@ engineers, musicians, soundtrack editors and composers.") (lambda* (#:key inputs #:allow-other-keys) (substitute* '("libraries/lib-files/FileNames.cpp") (("\"/usr/include/linux/magic.h\"") "")))) + (add-after 'install 'delete-gratuitous-script + (lambda* (#:key outputs #:allow-other-keys) + (delete-file (string-append (assoc-ref outputs "out") + "/audacity")))) (add-after 'wrap-program 'glib-or-gtk-wrap (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))) ;; The test suite is not "well exercised" according to the developers, @@ -1158,7 +1145,7 @@ envelope follower, distortion effects, tape effects and more.") (define-public snapcast (package (name "snapcast") - (version "0.24.0") + (version "0.26.0") (source (origin (method git-fetch) (uri (git-reference @@ -1167,7 +1154,7 @@ envelope follower, distortion effects, tape effects and more.") (file-name (git-file-name name version)) (sha256 (base32 - "13yz8alplnqwkcns3mcli01qbyy6l3h62xx0v71ygcrz371l4g9g")))) + "091gf3k1xv3k0m0kf2apr9bwiifw2czjcksd3vzwy544sfgrya08")))) (build-system cmake-build-system) (arguments '(#:tests? #f)) ; no included tests @@ -1393,7 +1380,7 @@ object library.") (define-public csound (package (name "csound") - (version "6.14.0") + (version "6.16.2") (source (origin (method git-fetch) @@ -1402,7 +1389,7 @@ object library.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1sr9knfhbm2m0wpkjq2l5n471vnl51wy4p6j4m95zqybimzb4s2j")))) + (base32 "1lgasyk8j4cl9178vci1dph63nks3cgwhf8y1d04z9dc8gg15dyn")))) (build-system cmake-build-system) (native-inputs (list bison flex gettext-minimal zlib)) @@ -1914,10 +1901,44 @@ also play midifiles using a Soundfont.") "Faust is a programming language for realtime audio signal processing.") (license license:gpl2+))) +;; This version is needed to build older synths that require the lv2synth.cpp +;; architecture file, such as sorcer. +(define-public faust-0.9.67 + (package + (inherit faust) + (name "faust") + (version "0.9.67") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/grame-cncm/faust") + (commit (string-append "v" + (string-map (lambda (c) + (if (char=? c #\.) #\- c)) + version))))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0856x666s6ymzk8v15f9gy402dbr8c9v2s40hyfadhraqljmqrm0")) + (snippet + ;; Remove prebuilt library + '(delete-file "architecture/android/libs/armeabi-v7a/libfaust_dsp.so")))) + (build-system gnu-build-system) + (arguments + (list + #:make-flags + #~(list (string-append "prefix=" #$output)) + #:tests? #f + #:phases + '(modify-phases %standard-phases + ;; no "configure" script + (delete 'configure)))) + (native-inputs (list unzip)))) + (define-public faust-2 (package (inherit faust) - (version "2.5.23") + (version "2.41.1") (source (origin (method url-fetch) (uri (string-append "https://github.com/grame-cncm/faust/" @@ -1925,15 +1946,29 @@ also play midifiles using a Soundfont.") "/faust-" version ".tar.gz")) (sha256 (base32 - "1yz5jnr76hh7rmxkpdi7gyrw1wp4gyqfpq8zyl97qdi5ga5gjznq")))) - (build-system gnu-build-system) + "0gk8ifxrbykq7ay0nvjns8fjryhp0wfhv5npgrl8xpgw9wfmw53j")))) + (build-system cmake-build-system) (arguments - (substitute-keyword-arguments (package-arguments faust) - ((#:make-flags flags) - `(list (string-append "prefix=" (assoc-ref %outputs "out")) - "world")))) + `(#:tests? #f ; no tests + #:phases + (modify-phases %standard-phases + ;; The upstream package uses make to run cmake during the build stage. + ;; Here we ignore the Makefile and call cmake directly. + (replace 'configure + (lambda _ + (chdir "build") + (invoke "cmake" "-C" "backends/all.cmake" + (string-append "-DCMAKE_INSTALL_PREFIX=" + (assoc-ref %outputs "out"))))) + ;; The sound2faust tool would be built in the Makefile's "world" target + (add-after 'install 'sound2faust + (lambda _ + (chdir "../tools/sound2faust") + (setenv "PREFIX" (assoc-ref %outputs "out")) + (invoke "make") + (invoke "make" "install")))))) (native-inputs - `(("llvm" ,llvm-3.8) + `(("llvm" ,llvm) ("which" ,which) ("xxd" ,xxd) ("ctags" ,emacs-minimal) ; for ctags @@ -2239,23 +2274,23 @@ synchronous execution of all clients, and low latency operation.") ;; jack-2 implement the same API. JACK2 is provided primarily as a client ;; program for users who might benefit from the D-BUS features. (define-public jack-2 - (package (inherit jack-1) + (package + (inherit jack-1) (name "jack2") - (version "1.9.14") + (version "1.9.21") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/jackaudio/jack2/releases/" - "download/v" version "/jack2-" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0z11hf55a6mi8h50hfz5wry9pshlwl4mzfwgslghdh40cwv342m2")))) + (method git-fetch) + (uri (git-reference + (url "https://github.com/jackaudio/jack2") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0sbrffmdbajvrk7iqvsvrnwnpvmicvbjyq3f52r6ashdsznsz03b")))) (build-system waf-build-system) (arguments - `(#:tests? #f ; no check target - #:configure-flags '("--dbus" - "--alsa") + `(#:tests? #f ; no check target + #:configure-flags '("--dbus" "--alsa") #:phases (modify-phases %standard-phases (add-before 'configure 'set-linkflags @@ -2269,16 +2304,13 @@ synchronous execution of all clients, and low latency operation.") ((".*CFLAGS.*-Wall.*" m) (string-append m " conf.env.append_unique('LINKFLAGS'," - "'-Wl,-rpath=" %output "/lib')\n"))) - #t)) + "'-Wl,-rpath=" %output "/lib')\n"))))) (add-after 'install 'wrap-python-scripts - (lambda* (#:key inputs outputs #:allow-other-keys) + (lambda* (#:key outputs #:allow-other-keys) ;; Make sure 'jack_control' runs with the correct PYTHONPATH. - (let* ((out (assoc-ref outputs "out")) - (path (getenv "GUIX_PYTHONPATH"))) - (wrap-program (string-append out "/bin/jack_control") - `("GUIX_PYTHONPATH" ":" prefix (,path)))) - #t))))) + (wrap-program (search-input-file outputs "bin/jack_control") + `("GUIX_PYTHONPATH" ":" + prefix (,(getenv "GUIX_PYTHONPATH"))))))))) (inputs (list alsa-lib dbus @@ -2751,6 +2783,38 @@ add functionality to support the needs of increasingly powerful audio software.") (license license:isc))) +(define-public ttl2c + (package + (name "ttl2c") + (version "1.0.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/lvtk/ttl2c") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0aybx8i5i0sridi9130a3937xgmfmjkk8m48f9whvhlhbzwy3xbl")))) + (build-system waf-build-system) + (arguments + (list + #:tests? #false ;no check target + #:phases + `(modify-phases %standard-phases + (add-before 'configure 'setup-waf + (lambda* (#:key inputs #:allow-other-keys) + (let ((waf (assoc-ref inputs "python-waf"))) + (copy-file (string-append waf "/bin/waf") "waf"))))))) + (inputs (list boost)) + (native-inputs (list python-waf)) + (home-page "https://github.com/lvtk/ttl2c") + (synopsis "Turtle to C header conversion utility for LV2 plugins") + (description + "This package provides a conversion utility for LV2 Plugin developers to +generate C headers from Turtle files.") + (license license:gpl3+))) + (define-public lv2-mda-piano (package (name "lv2-mda-piano") @@ -2774,7 +2838,7 @@ software.") (inputs (list lv2 lvtk)) (native-inputs - (list pkg-config)) + (list pkg-config ttl2c)) (native-search-paths (list (search-path-specification (variable "LV2_PATH") @@ -2797,14 +2861,14 @@ software.") (synopsis "LV2 port of the mda EPiano plugin") (description "An LV2 port of the mda EPiano VSTi."))) -(define-public lvtk +(define-public lvtk-2 ;; Use the latest commit, as the latest release was made in 2014 and depends ;; on Python 2. (let ((commit "a73feabe772f9650aa071e6a4df660e549ab7c48") (revision "0")) (package (name "lvtk") - (version (git-version "1.2.0" revision commit)) + (version (git-version "2" revision commit)) (source (origin (method git-fetch) (uri (git-reference @@ -2826,6 +2890,49 @@ extensions into easy to use C++ classes. It is the successor of lv2-c++-tools.") (license license:isc)))) +(define-public lvtk-1 + ;; Use the latest commit, as the latest release was made in 2014 and depends + ;; on Python 2. + (let ((commit "23dd99531d88d7821b69f6f0d60516ef322a6729") + (revision "0")) + (package + (name "lvtk") + (version (git-version "1.2.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/lvtk/lvtk") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0iw7skvsn3whw69dhcxbbdns7mssaf6z6iyzxjav53607ibyfr8d")))) + (build-system waf-build-system) + (arguments + (list + #:tests? #false ;no check target + #:configure-flags + #~(list (string-append "--boost-includes=" + #$(this-package-input "boost") + "/include")) + #:phases + `(modify-phases %standard-phases + (add-before 'configure 'setup-waf + (lambda* (#:key inputs #:allow-other-keys) + (let ((waf (assoc-ref inputs "python-waf"))) + (copy-file (string-append waf "/bin/waf") "waf"))))))) + (inputs (list boost gtkmm lv2)) + (native-inputs (list pkg-config python-waf)) + (home-page "https://github.com/lvtk/lvtk") + (synopsis "C++ libraries for LV2 plugins") + (description + "The LV2 Toolkit (LVTK) contains libraries that wrap the LV2 C API and +extensions into easy to use C++ classes. It is the successor of +lv2-c++-tools.") + (license license:isc)))) + +(define-public lvtk lvtk-1) + (define-public openal (package (name "openal") @@ -2961,21 +3068,25 @@ different audio devices such as ALSA or PulseAudio.") (define-public qjackctl (package (name "qjackctl") - (version "0.9.7") + (version "0.9.8") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/qjackctl/qjackctl/" version "/qjackctl-" version ".tar.gz")) (sha256 (base32 - "104hfvr15v8cbkzil8slrqj48y3fl7lx060alj80q1sjh5hl6j2j")))) + "1rvxgxd7bbv7yazcpw3ily0jlra8ms5c0kkf7cybgivahw59zk87")))) (build-system cmake-build-system) (arguments '(#:tests? #f)) ; no check target (inputs - (list jack-1 alsa-lib portaudio qtbase-5 qtx11extras)) + (list alsa-lib + jack-1 + portaudio + qtbase-5 + qtsvg-5)) (native-inputs - (list pkg-config qttools)) + (list pkg-config qttools-5)) (home-page "https://qjackctl.sourceforge.io/") (synopsis "Jack server control application") (description "Control a Jack server. Allows you to plug various sources @@ -3096,7 +3207,7 @@ link REQUIRED)")))))) (string-append ide "/bin")) (delete-file scide))))))) (native-inputs - (list ableton-link pkg-config qttools xorg-server-for-tests)) + (list ableton-link pkg-config qttools-5 xorg-server-for-tests)) (inputs (list jack-1 libsndfile fftw @@ -3110,12 +3221,12 @@ link REQUIRED)")))))) boost-sync yaml-cpp qtbase-5 - qtdeclarative - qtsvg - qtwebchannel - qtwebsockets)) + qtdeclarative-5 + qtsvg-5 + qtwebchannel-5 + qtwebsockets-5)) (propagated-inputs ;to get native-search-path - (list qtwebengine)) + (list qtwebengine-5)) (home-page "https://github.com/supercollider/supercollider") (synopsis "Synthesis engine and programming language") (description "SuperCollider is a synthesis engine (@code{scsynth} or @@ -3213,7 +3324,7 @@ tempo and pitch of an audio recording independently of one another.") (define-public rtmidi (package (name "rtmidi") - (version "4.0.0") + (version "5.0.0") (source (origin (method url-fetch) (uri (string-append "https://www.music.mcgill.ca/~gary/rtmidi" @@ -3221,7 +3332,7 @@ tempo and pitch of an audio recording independently of one another.") (file-name (string-append "rtmidi-" version ".tar.gz")) (sha256 (base32 - "1k962ljpnwyjw9jjiky2372khhri1wqvrj5qsalfpys31xqzw31p")))) + "1ff2yfq3k4l209fr71v3w98fpjjv1chs09vkbmxj03lcikahxns8")))) (build-system gnu-build-system) (inputs (list jack-1 alsa-lib)) @@ -3235,6 +3346,19 @@ classes) that provide a common cross-platform API for realtime MIDI input/output.") (license license:expat))) +(define-public rtmidi-4.0 + (package + (inherit rtmidi) + (version "4.0.0") + (source (origin + (method url-fetch) + (uri (string-append "https://www.music.mcgill.ca/~gary/rtmidi" + "/release/rtmidi-" version ".tar.gz")) + (file-name (string-append "rtmidi-" version ".tar.gz")) + (sha256 + (base32 + "1k962ljpnwyjw9jjiky2372khhri1wqvrj5qsalfpys31xqzw31p")))))) + (define-public sratom (package (name "sratom") @@ -3463,19 +3587,19 @@ stretching and pitch scaling of audio. This package contains the library.") (define-public libkeyfinder (package (name "libkeyfinder") - (version "2.2.6") + (version "2.2.7") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/mixxxdj/libkeyfinder") - (commit (string-append "v" version)))) + (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0s7nqjmv44q5qjynfcs0j6h4a6qcz4mxzandkkdjjbnwv5rxc3zg")))) + (base32 "0nvhdzy0m3bchk3dpnspv2f518p2v9fjcrv36z1sva1pv9a2g35w")))) (build-system cmake-build-system) (native-inputs - (list catch-framework2)) + (list catch2)) (inputs (list fftw)) (home-page "https://mixxxdj.github.io/libkeyfinder/") @@ -3768,7 +3892,7 @@ interface.") (arguments `(#:tests? #f)) ; no "check" phase (native-inputs - (list qttools pkg-config)) + (list qttools-5 pkg-config)) (inputs (list fluidsynth qtbase-5 qtx11extras)) (home-page "https://qsynth.sourceforge.io") @@ -4218,7 +4342,7 @@ code, used in @code{libtoxcore}.") (define-public gsm (package (name "gsm") - (version "1.0.19") + (version "1.0.20") (source (origin (method url-fetch) @@ -4226,8 +4350,7 @@ code, used in @code{libtoxcore}.") (string-append "http://www.quut.com/" name "/" name "-" version ".tar.gz")) (sha256 - (base32 - "1xkha9ss5g5qnfaybi8il0mcvp8knwg9plgh8404vh58d0pna0s9")))) + (base32 "1gwhmqs24c14gc9qr91iqb2jkbr3qqy4dvf27yf8j7mq322w65b3")))) (build-system gnu-build-system) (arguments `(#:test-target "tst" @@ -4240,8 +4363,7 @@ code, used in @code{libtoxcore}.") ;; mediastreamer. (substitute* "Makefile" (("^CCFLAGS.*" all) - (string-append all "CCFLAGS += -fPIC\n"))) - #t)) + (string-append all "CCFLAGS += -fPIC\n"))))) (add-before 'install 'pre-install (lambda _ (let ((out (assoc-ref %outputs "out"))) @@ -4250,8 +4372,7 @@ code, used in @code{libtoxcore}.") (mkdir-p (string-append out "/man/man1")) (mkdir-p (string-append out "/man/man3")) (mkdir-p (string-append out "/bin")) - (mkdir-p (string-append out "/lib"))) - #t)) + (mkdir-p (string-append out "/lib"))))) (add-after 'install 'post-install (lambda _ (let ((out (assoc-ref %outputs "out"))) @@ -4259,8 +4380,7 @@ code, used in @code{libtoxcore}.") (string-append out "/include")) (mkdir-p (string-append out "/include/gsm")) (copy-recursively "inc" - (string-append out "/include/gsm"))) - #t)) + (string-append out "/include/gsm"))))) (delete 'configure)))) ; no configure script (synopsis "GSM 06.10 lossy speech compression library") (description "This C library provides an encoder and a decoder for the GSM @@ -5324,11 +5444,11 @@ Rate} 3600x2250 bit/s vocoder used in various radio systems.") python ;for running tests portaudio ;for portaudio examples qtbase-5 ;for Qt examples - qtdeclarative - qttools)) + qtdeclarative-5 + qttools-5)) (inputs (list jack-1 ;for JACK examples - qtquickcontrols)) ;for Qt examples + qtquickcontrols-5)) ;for Qt examples (propagated-inputs ;; This is because include/ableton/platforms/asio/AsioWrapper.hpp ;; contains '#include '. @@ -5703,3 +5823,59 @@ source and extracts a 24-bit high resolution WAV file. It handles both DST and DSD streams.") (home-page "https://tari.in/www/software/odio-sacd/") (license license:gpl3+))) + +(define-public qpwgraph + (package + (name "qpwgraph") + (version "0.3.5") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.freedesktop.org/rncbc/qpwgraph") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "01f4zabn22dp0yl7szxck6gkbayk1p5iqajfgzls7mdkba7515b6")))) + (build-system cmake-build-system) + (arguments (list #:tests? #f)) ;; no tests + (inputs (list alsa-lib + libxkbcommon + pipewire-0.3 + qtbase + qtsvg)) + (native-inputs (list pkg-config)) + (synopsis "PipeWire graph manager") + (description + "qpwgraph is a graph manager dedicated to PipeWire, using the Qt C++ +framework. It provides a visual interface to audio and video connections +managed by PipeWire.") + (home-page "https://gitlab.freedesktop.org/rncbc/qpwgraph") + (license license:gpl2))) + +(define-public streamripper + (package + (name "streamripper") + (version "1.64.6") + (source + (origin + (method url-fetch) + (uri (string-append "https://sourceforge.net/projects/streamripper" + "/files/streamripper%20(current)/" + version "/streamripper-" version ".tar.gz")) + (sha256 + (base32 "0hnyv3206r0rfprn3k7k6a0j959kagsfyrmyjm3gsf3vkhp5zmy1")) + (modules '((guix build utils))) + (snippet + ;; Delete bundled copy of libmad. + '(delete-file-recursively "libmad-0.15.1b")))) + (build-system gnu-build-system) + (native-inputs (list pkg-config)) + (inputs (list faad2 glib libmad libvorbis)) + (home-page "http://streamripper.sourceforge.net") + (synopsis "Record audio streams to your hard drive") + (description "Streamripper records shoutcast-compatible +streams. For shoutcast style streams it finds the “meta data” or track +separation data, and uses that as a marker for where the track should +be separated.") + (license license:gpl2+)))