diff options
Diffstat (limited to 'gnu/packages/audio.scm')
-rw-r--r-- | gnu/packages/audio.scm | 367 |
1 files changed, 265 insertions, 102 deletions
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 05c6354e45..b186c79451 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -8,7 +8,7 @@ ;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org> -;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018, 2020 Oleg Pykhalov <go.wigust@gmail.com> ;;; Copyright © 2018 okapi <okapi@firemail.cc> ;;; Copyright © 2018, 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> @@ -36,6 +36,7 @@ ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> ;;; Copyright © 2021 jgart <jgart@dismail.de> ;;; Copyright © 2021 Aleksandr Vityazev <avityazev@posteo.org> +;;; Copyright © 2022 Arjan Adriaanse <arjan@adriaan.se> ;;; ;;; This file is part of GNU Guix. ;;; @@ -91,6 +92,7 @@ #:use-module (gnu packages libusb) #:use-module (gnu packages linux) #:use-module (gnu packages llvm) + #:use-module (gnu packages machine-learning) #:use-module (gnu packages man) #:use-module (gnu packages maths) #:use-module (gnu packages mp3) ;taglib @@ -103,6 +105,7 @@ #:use-module (gnu packages pkg-config) #:use-module (gnu packages pulseaudio) ;libsndfile, libsamplerate #:use-module (gnu packages python) + #:use-module (gnu packages python-science) #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) #:use-module (gnu packages rdf) @@ -133,6 +136,7 @@ #:use-module (guix build-system waf) #:use-module (guix download) #:use-module (guix git-download) + #:use-module (guix gexp) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix utils) @@ -279,17 +283,17 @@ Coding (AAC) encoder.") (define-public tinyalsa (package (name "tinyalsa") - (version "1.1.1") + (version "2.0.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/tinyalsa/tinyalsa") - (commit version))) + (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0ajyvml5bnzvhiyyrn42gqwgg23ssxkfh09rvsnywhzxhd0xai4h")))) + (base32 "1p9khz3bdpdcrnc9p6w522a0ankdchj4nxd3ki41z9401rxmnljq")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; No target @@ -721,7 +725,7 @@ engineers, musicians, soundtrack editors and composers.") (define-public audacity (package (name "audacity") - (version "2.4.2") + (version "3.1.3") (source (origin (method git-fetch) @@ -731,9 +735,7 @@ engineers, musicians, soundtrack editors and composers.") (file-name (git-file-name name version)) (sha256 (base32 - "0lklcvqkxrr2gkb9gh3422iadzl2rv9v0a8s76rwq43lj2im7546")) - (patches (search-patches "audacity-build-with-system-portaudio.patch" - "audacity-add-include.patch")) + "1689q9apbjf9nnda62shb8j7hm4hxd47mhk4l5h3c728mjjkilmi")) (modules '((guix build utils))) (snippet ;; Remove bundled libraries. @@ -741,13 +743,10 @@ engineers, musicians, soundtrack editors and composers.") (for-each (lambda (dir) (delete-file-recursively (string-append "lib-src/" dir))) - '("expat" "ffmpeg" "lame" "libflac" "libid3tag" "libmad" "libogg" - "libsndfile" "libsoxr" "libvamp" "libvorbis" "lv2" - "portmidi" "soundtouch" "twolame" + '("libsoxr" "libvamp" "lv2" "soundtouch" "sqlite" "twolame" ;; FIXME: these libraries have not been packaged yet: ;; "libnyquist" ;; "libscorealign" - ;; "libwidgetextra" ;; "portburn" ;; "portsmf" ;; "portmixer" @@ -759,26 +758,30 @@ engineers, musicians, soundtrack editors and composers.") #t)))) (build-system cmake-build-system) (inputs - (list wxwidgets + (list wxwidgets-3.1 gtk+ alsa-lib jack-1 expat ffmpeg lame + linux-libre-headers flac libid3tag + libjpeg-turbo libmad ;;("libsbsms" ,libsbsms) ;bundled version is modified libsndfile soundtouch soxr ;replaces libsamplerate + sqlite twolame vamp libvorbis lv2 lilv ;for lv2 suil ;for lv2 + portaudio portmidi)) (native-inputs `(("autoconf" ,autoconf) @@ -791,10 +794,12 @@ engineers, musicians, soundtrack editors and composers.") (arguments `(#:configure-flags (list - ;; Loading FFmpeg dynamically is problematic. - "-Daudacity_use_ffmpeg=linked" - "-Daudacity_use_lame=system" - "-Daudacity_use_portsmf=system") + "-Daudacity_conan_enabled=off" + "-Daudacity_lib_preference=system" + ;; TODO: enable this flag once we've packaged all dependencies + ;; "-Daudacity_obey_system_dependencies=on" + ;; disable crash reports, updates, ..., anything that phones home + "-Daudacity_has_networking=off") #:imported-modules ((guix build glib-or-gtk-build-system) ,@%cmake-build-system-modules) #:modules @@ -803,27 +808,42 @@ engineers, musicians, soundtrack editors and composers.") ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)) #:phases (modify-phases %standard-phases + (add-after 'unpack 'fix-cmake-rpath + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "CMakeLists.txt" + (("\\$ORIGIN/\\.\\./\\$\\{_PKGLIB\\}") + (string-append (assoc-ref outputs "out") "/lib/audacity")) + (("CMAKE_BUILD_WITH_INSTALL_RPATH [A-Z]*") + "CMAKE_BUILD_WITH_INSTALL_RPATH TRUE") + (("CMAKE_INSTALL_RPATH_USE_LINK_PATH [A-Z]*") + "CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE")) + (substitute* "src/CMakeLists.txt" + (("-Wl,--disable-new-dtags") "-Wl,--enable-new-dtags")))) (add-after 'unpack 'comment-out-revision-ident (lambda _ + (substitute* "src/CMakeLists.txt" + (("file\\( TOUCH \".*RevisionIdent\\.h\" \\)" directive) + (string-append "# " directive))) (substitute* "src/AboutDialog.cpp" (("(.*RevisionIdent\\.h.*)" include-line) (string-append "// " include-line))))) (add-after 'unpack 'use-upstream-headers (lambda* (#:key inputs #:allow-other-keys) - (substitute* '("src/NoteTrack.cpp" - "src/AudioIO.cpp" - "src/AudioIO.h" - "src/AudioIOBase.cpp") - (("../lib-src/portmidi/pm_common/portmidi.h") "portmidi.h") - (("../lib-src/portmidi/porttime/porttime.h") "porttime.h")) - (substitute* "src/prefs/MidiIOPrefs.cpp" - (("../../lib-src/portmidi/pm_common/portmidi.h") "portmidi.h")))) + (substitute* '("libraries/lib-files/FileNames.cpp") + (("\"/usr/include/linux/magic.h\"") "<linux/magic.h>")))) (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, - ;; and fails with various errors. See - ;; <http://sourceforge.net/p/audacity/mailman/message/33524292/>. - #:tests? #f)) + ;; The test suite is not "well exercised" according to the developers, + ;; and fails with various errors. See + ;; <http://sourceforge.net/p/audacity/mailman/message/33524292/>. + #:tests? #f)) + (native-search-paths + (list (search-path-specification + (variable "AUDACITY_MODULES_PATH") + (files '("lib/audacity/modules"))) + (search-path-specification + (variable "AUDACITY_PATH") + (files '("share/audacity"))))) (home-page "https://www.audacityteam.org/") (synopsis "Software for recording and editing sounds") (description @@ -1248,10 +1268,8 @@ formats used to store information about DJ record libraries.") "tao-fix-parser-types.patch")) (modules '((guix build utils))) (snippet - '(begin - (substitute* "configure" - (("SHELL=/bin/sh") "")) - #t)))) + '(substitute* "configure" + (("SHELL=/bin/sh") ""))))) (build-system gnu-build-system) (arguments '(#:configure-flags '("TAO_RELEASE=-beta") @@ -1267,8 +1285,7 @@ formats used to store information about DJ record libraries.") (string-append (which "sed") " -f $distdir/")) (("distdir=.*") (string-append "distdir=" - (assoc-ref outputs "out") "/share/tao"))) - #t)) + (assoc-ref outputs "out") "/share/tao"))))) (add-after 'install 'install-extra-files (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -1279,18 +1296,17 @@ formats used to store information about DJ record libraries.") (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)))))) + (find-files "include" "\\.h")))))))) (inputs - `(("audiofile" ,audiofile) - ("libxi" ,libxi) - ("libxmu" ,libxmu) - ("mesa" ,mesa) - ("glut" ,freeglut) - ("flex" ,flex) - ("bison" ,bison) - ("sed" ,sed) - ("grep" ,grep))) + (list audiofile + libxi + libxmu + mesa + freeglut + flex + bison + sed + grep)) (home-page "http://taopm.sourceforge.net/") (synopsis "Sound Synthesis with Physical Models") (description "Tao is a software package for sound synthesis using physical @@ -1301,6 +1317,37 @@ playing instruments and a C++ API for those who would like to use it as an object library.") (license license:gpl2+))) +(define-public tao-synth + (let ((commit "f3aedd81efbc775574e591081b57ae1c08427064") + (revision "1")) + (package + (name "tao-synth") + (version (git-version "0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/lucasw/tao_synth") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1jds2l3cb96b02jxd7lmrjjl9s7mylnrvg6fpw0j8c141bk8vyg3")))) + (build-system cmake-build-system) + (arguments (list #:tests? #false)) ;there are no tests + (inputs + (list glfw freeglut)) + (native-inputs + (list gcc-7)) + (home-page "https://github.com/lucasw/tao_synth") + (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:lgpl2.0+)))) + (define-public csound (package (name "csound") @@ -1722,7 +1769,7 @@ follower.") (define-public fluidsynth (package (name "fluidsynth") - (version "2.1.8") + (version "2.2.4") (source (origin (method git-fetch) (uri (git-reference @@ -1731,7 +1778,7 @@ follower.") (file-name (git-file-name name version)) (sha256 (base32 - "0r944ndn138ak9s3ivgd1wgkwkh6zp7jjnxd30hryczc6kbhkpmr")))) + "1061rdj69503spkd8vmfl3fqvyg4l41k5xcc4gw7niy31hnpnjmn")))) (build-system cmake-build-system) (arguments '(#:tests? #f ; no check target @@ -1742,18 +1789,19 @@ follower.") ;; Install libraries to /lib, not /lib64. (substitute* "CMakeLists.txt" (("LIB_SUFFIX \\$\\{_init_lib_suffix\\}") - "LIB_SUFFIX \"\"")) - #t))))) + "LIB_SUFFIX \"\""))))))) (inputs - (list libsndfile - alsa-lib - jack-1 - ladspa - lash - readline - glib)) + (list ladspa)) (native-inputs (list pkg-config)) + (propagated-inputs + ;; In Libs.private of fluidsynth.pc. + (list alsa-lib + glib + jack-1 + lash + libsndfile + readline)) (home-page "https://www.fluidsynth.org/") (synopsis "SoundFont synthesizer") (description @@ -1763,22 +1811,6 @@ device. It is the software analogue of a MIDI synthesizer. FluidSynth can also play midifiles using a Soundfont.") (license license:lgpl2.1+))) -;; gzdoom@3.3.0 and lmms@1.1.3 requires this version. Remove once no longer -;; needed. -(define-public fluidsynth-1 - (package - (inherit fluidsynth) - (version "1.1.11") - (source (origin - (inherit (package-source fluidsynth)) - (uri (git-reference - (url "https://github.com/FluidSynth/fluidsynth") - (commit (string-append "v" version)))) - (file-name (git-file-name "fluidsynth" version)) - (sha256 - (base32 - "0n75jq3xgq46hfmjkaaxz3gic77shs4fzajq40c8gk043i84xbdh")))))) - (define-public faad2 (package (name "faad2") @@ -1909,7 +1941,7 @@ patches that can be used with softsynths such as Timidity and WildMidi.") (define-public guitarix (package (name "guitarix") - (version "0.41.0") + (version "0.43.1") (source (origin (method url-fetch) (uri (string-append @@ -1917,7 +1949,7 @@ patches that can be used with softsynths such as Timidity and WildMidi.") version ".tar.xz")) (sha256 (base32 - "0qsfbyrrpb3bbdyq68k28mjql7kglxh8nqcw9jvja28x6x9ik5a0")))) + "1bsjlfd7x09p3iiljilyfbns6hpqn9cgp6psl4ccd6i1lwascfrm")))) (build-system waf-build-system) (arguments `(#:tests? #f ; no "check" target @@ -2562,7 +2594,7 @@ files.") (lambda _ (substitute* "requirements.txt" (("==") ">="))))))) (home-page "https://github.com/NFJones/audio-to-midi") - (synopsis "Convert audio to multichannel MIDI.") + (synopsis "Convert audio to multichannel MIDI") (description "@command{audio-to-midi} converts audio files to multichannel MIDI files. It accomplishes this by performing FFTs on all channels of the audio data at user-specified time steps. It then separates the resulting @@ -2854,14 +2886,14 @@ different audio devices such as ALSA or PulseAudio.") (define-public qjackctl (package (name "qjackctl") - (version "0.9.5") + (version "0.9.6") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/qjackctl/qjackctl/" version "/qjackctl-" version ".tar.gz")) (sha256 (base32 - "1g61xwsxsndwlnh4547vl7jfcf4kqlbb4394jq2m8qbbzk51b6rv")))) + "0sqni9ppwadc01fnyqj6lkwy30ql1vccqglv9imd3zdchffjpjir")))) (build-system cmake-build-system) (arguments '(#:tests? #f)) ; no check target @@ -3199,22 +3231,22 @@ the Turtle syntax.") (define-public suil (package (name "suil") - (version "0.10.8") + (version "0.10.10") (source (origin (method url-fetch) (uri (string-append "https://download.drobilla.net/suil-" version ".tar.bz2")) (sha256 (base32 - "0h0ghk1s0lrj4gh12r7390b0ybaw7awnj0vhchyy9ll0gvhqgkci")))) + "1ysbazqlbyxlzyr9zk7dj2mgb6pn0amllj2cd5g1m56wnzk0h3vm")))) (build-system waf-build-system) (arguments `(#:tests? #f)) ;no check target (inputs - `(("lv2" ,lv2) - ("gtk+" ,gtk+-2) - ("gtk+" ,gtk+) - ("qt" ,qtbase-5))) + (list lv2 + gtk+-2 + gtk+ + qtbase-5)) (native-inputs (list pkg-config)) (home-page "https://drobilla.net/software/suil/") @@ -3399,7 +3431,7 @@ stretching and pitch scaling of audio. This package contains the library.") (define-public libkeyfinder (package (name "libkeyfinder") - (version "2.2.5") + (version "2.2.6") (source (origin (method git-fetch) @@ -3408,7 +3440,7 @@ stretching and pitch scaling of audio. This package contains the library.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1623kirmxhmvmhx7f8lbzk0f18w2hrhwlkzl8l4aa906lfqffdp2")))) + (base32 "0s7nqjmv44q5qjynfcs0j6h4a6qcz4mxzandkkdjjbnwv5rxc3zg")))) (build-system cmake-build-system) (native-inputs (list catch-framework2)) @@ -5104,7 +5136,7 @@ edited, converted, compressed and saved.") (define-public lsp-dsp-lib (package (name "lsp-dsp-lib") - (version "0.5.11") + (version "0.5.14") (source (origin (method url-fetch) @@ -5112,23 +5144,23 @@ edited, converted, compressed and saved.") "releases/download/" version "/lsp-dsp-lib-" version "-src.tar.gz")) (sha256 - (base32 "0lkar6r9jfrrqswi8nnndlm5a9kfwqjn92d81gp2yhc3p46xsswz")))) + (base32 "1gcznkyybywbgdi2fhx27i8sckhy6ahvxax72b213g1lr5aaw7bq")))) (build-system gnu-build-system) (arguments - `(#:tests? #f ; no tests - #:make-flags - (list (string-append "CC=" ,(cc-for-target))) - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'omit-static-library - (lambda _ - (substitute* "src/Makefile" - ((".*@.*ARTIFACT_SLIB.*") "") ; don't install it - ((" \\$\\(ARTIFACT_SLIB\\)") "")))) ; don't build it - (replace 'configure - (lambda* (#:key outputs #:allow-other-keys) - (invoke "make" "config" - (string-append "PREFIX=" (assoc-ref outputs "out")))))))) + (list #:tests? #f ; no tests + #:make-flags + #~(list (string-append "CC=" #$(cc-for-target))) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'omit-static-library + (lambda _ + (substitute* "src/Makefile" + ((".*cp \\$\\(ARTIFACT_SLIB\\).*") "") ; don't install it + ((" \\$\\(ARTIFACT_SLIB\\)") "")))) ; don't build it + (replace 'configure + (lambda _ + (invoke "make" "config" + (string-append "PREFIX=" #$output))))))) (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 @@ -5443,6 +5475,78 @@ information such as sample rate, determining whether an audio file is silent, and much more.") (license license:bsd-3)))) +(define-public python-resampy + (package + (name "python-resampy") + (version "0.2.2") + (source + (origin + (method git-fetch) + (uri + (git-reference + ;; PyPi does not include tests. + (url "https://github.com/bmcfee/resampy") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0qmkxl5sbgh0j73n667vyi7ywzh09iaync91yp1j5rrcmwsn0qfs")))) + (build-system python-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (invoke "pytest" "tests"))))))) + (propagated-inputs + (list python-numba python-numpy python-scipy python-six)) + (native-inputs + (list python-pytest python-pytest-cov)) + (home-page "https://github.com/bmcfee/resampy") + (synopsis "Efficient signal resampling") + (description + "@code{python-resampy} implements the band-limited sinc interpolation +method for sampling rate conversion as described by Julius O. Smith at the +@url{https://ccrma.stanford.edu/~jos/resample/, Digital Audio Resampling +Home Page}.") + (license license:isc))) + +(define-public python-librosa + (package + (name "python-librosa") + (version "0.8.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "librosa" version)) + (sha256 + (base32 "1cx6rhcvak0hy6bx84jwzpxmwgi92m82w77279akwjmfd3khagf5")))) + (build-system python-build-system) + (arguments + ;; Tests require internet connection to download MATLAB scripts for + ;; generating the testing data. + `(#:tests? #f)) + (propagated-inputs + (list python-audioread + python-decorator + python-joblib + python-numba + python-numpy + python-packaging + python-pooch + python-resampy + python-scikit-learn + python-scipy + python-soundfile)) + (home-page "https://librosa.org") + (synopsis "Python module for audio and music processing") + (description + "@code{librosa} is a python package for music and audio analysis. It +provides the building blocks necessary to create music information retrieval +systems.") + (license license:isc))) + (define-public mda-lv2 (package (name "mda-lv2") @@ -5474,3 +5578,62 @@ and much more.") "MDA-LV2 is an LV2 port of the MDA plugins. It includes effects and a few instrument plugins.") (license license:gpl3+))) + +(define-public libodiosacd + (package + (name "libodiosacd") + (version "21.8.30") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tari01/libodiosacd") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0iamf7wksbql0qfigdv5ahaax53ms2yligdav8dw6x0ay88x4lhi")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no check target + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-makefile + (lambda _ + (substitute* "Makefile" + (("\\$\\(DESTDIR\\)/usr") + "\\$(DESTDIR)")))) + (delete 'configure)) ; no configure script + #:make-flags + (list (string-append "DESTDIR=" %output)))) + (synopsis "Library for decoding Super Audio CDs (SACD)") + (description + "The Odio SACD shared library is a decoding engine which takes a Super +Audio CD source and extracts a 24-bit high resolution WAV file. It handles +both DST and DSD streams.") + (home-page "https://tari.in/www/software/libodiosacd/") + (license license:gpl3+))) + +(define-public odio-sacd + (package + (name "odio-sacd") + (version "21.1.9") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tari01/odio-sacd") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0314srqk0r4qv292qiaply619l2fw04nkdwvqhj3q1dqzv41g4qk")))) + (inputs (list libodiosacd)) + ;; Build system and arguments for libodiosacd are identical. + (build-system (package-build-system libodiosacd)) + (arguments (package-arguments libodiosacd)) + (synopsis "Rip Super Audio CDs (SACD)") + (description + "Odio SACD is a command-line application which takes a Super Audio CD +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+))) |