diff options
Diffstat (limited to 'gnu/packages/music.scm')
-rw-r--r-- | gnu/packages/music.scm | 522 |
1 files changed, 330 insertions, 192 deletions
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index 492103b715..1ce6264094 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -40,6 +40,9 @@ ;;; Copyright © 2021 Frank Pursel <frank.pursel@gmail.com> ;;; Copyright © 2021 Rovanion Luckey <rovanion.luckey@gmail.com> ;;; Copyright © 2021 Justin Veilleux <terramorpha@cock.li> +;;; Copyright © 2021 Felix Gruber <felgru@posteo.net> +;;; Copyright © 2021 Simon Streit <simon@netpanic.org> +;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> ;;; ;;; This file is part of GNU Guix. ;;; @@ -81,6 +84,7 @@ #:use-module (gnu packages apr) #:use-module (gnu packages audio) #:use-module (gnu packages autotools) + #:use-module (gnu packages assembly) #:use-module (gnu packages backup) #:use-module (gnu packages base) ;libbdf #:use-module (gnu packages bash) @@ -143,6 +147,7 @@ #:use-module (gnu packages pulseaudio) ;libsndfile #:use-module (gnu packages python) #:use-module (gnu packages python-check) + #:use-module (gnu packages python-compression) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) @@ -150,6 +155,7 @@ #:use-module (gnu packages readline) #:use-module (gnu packages rsync) #:use-module (gnu packages sdl) + #:use-module (gnu packages serialization) #:use-module (gnu packages sphinx) #:use-module (gnu packages sqlite) #:use-module (gnu packages stb) @@ -175,18 +181,19 @@ (define-public audacious (package (name "audacious") - (version "4.0.5") + (version "4.1") (source (origin (method url-fetch) (uri (string-append "https://distfiles.audacious-media-player.org/" "audacious-" version ".tar.bz2")) (sha256 - (base32 "028zjgz0p7ys15lk2a30m5zcv9xrx3ga50wjsh4m4zxilgkakbji")))) + (base32 "0p734psjjvjcmla2hg5h6a9v1prvy63jj9xm2g2ngs49jy7qan0z")))) (build-system gnu-build-system) (arguments `(#:configure-flags - (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")) + (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib") + "--disable-gtk") #:tests? #f ; no check target #:phases (modify-phases %standard-phases @@ -226,7 +233,7 @@ (uri (string-append "https://distfiles.audacious-media-player.org/" "audacious-plugins-" version ".tar.bz2")) (sha256 - (base32 "0ny5w1agr9jaz5w3wyyxf1ygmzmd1sivaf97lcm4z4w6529520lz")))) + (base32 "0k0xnqmxi5lna034i2cnzvfzrykxmv4fbs1nkrc9sd2ma1igrmns")))) ("gettext" ,gettext-minimal) ("glib:bin" ,glib "bin") ; for gdbus-codegen ("pkg-config" ,pkg-config))) @@ -246,9 +253,9 @@ ("libcddb" ,libcddb) ("libcdio-paranoia" ,libcdio-paranoia) ("libcue" ,libcue) - ("libmodplug" ,libmodplug) ("libnotify" ,libnotify) ("libogg" ,libogg) + ("libopenmpt" ,libopenmpt) ("libsamplerate" ,libsamplerate) ("libsndfile" ,libsndfile) ("libvorbis" ,libvorbis) @@ -547,7 +554,7 @@ It is a fork of Clementine aimed at music collectors and audiophiles.") (define-public cmus (package (name "cmus") - (version "2.8.0") + (version "2.9.1") (source (origin (method git-fetch) (uri (git-reference @@ -556,7 +563,7 @@ It is a fork of Clementine aimed at music collectors and audiophiles.") (file-name (git-file-name name version)) (sha256 (base32 - "1ydnvq13ay8b8mfmmgwi5qsgyf220yi1d01acbnxqn775dghmwar")))) + "0zjkimni2fhv4yskrjrgj6b74f33rfj58zgd7khwrz4z8nf88j0w")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; cmus does not include tests @@ -847,7 +854,7 @@ MusePack, Monkey's Audio, and WavPack files.") (define-public extempore (package (name "extempore") - (version "0.8.6") + (version "0.8.9") (source (origin (method git-fetch) (uri (git-reference @@ -855,7 +862,7 @@ MusePack, Monkey's Audio, and WavPack files.") (commit (string-append "v" version)))) (sha256 (base32 - "182jy23qv115dipny7kglwbn21z55dp253w1ykm0kh8n6vkgs7gp")) + "16i12zl3g1zpx6lhg5pg821xirdf9rxx5m11b68inf83wn6hknhb")) (file-name (git-file-name name version)) (patches (search-patches "extempore-unbundle-external-dependencies.patch")) @@ -864,16 +871,12 @@ MusePack, Monkey's Audio, and WavPack files.") '(begin ;; Remove bundled sources. (map delete-file-recursively - '("src/portaudio" - "src/pcre")) + '("src/pcre")) #t)))) (build-system cmake-build-system) (arguments `(#:configure-flags (list "-DJACK=ON" "-DPACKAGE=ON" - "-DEXTERNAL_SHLIBS_AUDIO=OFF" - "-DEXTERNAL_SHLIBS_GRAPHICS=OFF" - "-DCMAKE_BUILD_TYPE=Release" (string-append "-DEXT_SHARE_DIR=" (assoc-ref %outputs "out") "/share")) @@ -958,7 +961,12 @@ MusePack, Monkey's Audio, and WavPack files.") (("COMMAND extempore" prefix) (string-append prefix " --sharedir " (getcwd) " --mcpu=generic --attr=none"))) - #t))))) + #t)) + (add-after 'unpack 'symlink-assets + (lambda* (#:key inputs #:allow-other-keys) + (let ((assets (assoc-ref inputs "extempore-assets"))) + (symlink assets "assets") + #t)))))) (inputs `(("llvm" ,(package @@ -972,6 +980,19 @@ MusePack, Monkey's Audio, and WavPack files.") (sha256 (base32 "1svdl6fxn8l01ni8mpm0bd5h856ahv3h9sdzgmymr6fayckjvqzs")))))) + ("extempore-assets" + ,(let ((commit "0c9f32c18169b3fbc24bc1ad66283125b54a0c85") + (revision "0") + (version "0.0.0")) + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/extemporelang/extempore-assets") + (commit commit))) + (file-name (git-file-name "extempore-assets" + (git-version version revision commit))) + (sha256 + (base32 "1pxmcbngd9qx8m71d5rfsmf4h31jnsnd3wjh8vb0rwskif22xz8l"))))) ("libffi" ,libffi) ("jack" ,jack-1) ("libsndfile" ,libsndfile) @@ -1517,7 +1538,7 @@ and auto-mapping slices to MIDI note numbers.") ("imagemagick" ,imagemagick) ("netpbm" ,netpbm) ;for pngtopnm ("texlive" ,(texlive-updmap.cfg (list texlive-metapost - texlive-generic-epsf + texlive-epsf texlive-lh texlive-latex-cyrillic))) ("texinfo" ,texinfo) @@ -1538,9 +1559,9 @@ Guile.") ;; more than an hour of silence, so double the max silent time. (properties `((max-silent-time . 7200))))) -(define-public python-abjad +(define-public abjad (package - (name "python-abjad") + (name "abjad") (version "3.3") (source (origin @@ -1556,11 +1577,6 @@ Guile.") (arguments `(#:phases (modify-phases %standard-phases - (add-after 'unpack 'patch-source - (lambda _ - (substitute* "setup.py" - (("uqbar>=0.5.1, <0.5.0") "uqbar>=0.5.0")) - #t)) (replace 'check (lambda* (#:key tests? #:allow-other-keys) (when tests? @@ -1568,25 +1584,166 @@ Guile.") (invoke "python" "-m" "pytest" "tests") #t)))))) (native-inputs - `(("lilypond" ,lilypond) - ("python-black" ,python-black) + `(("python-black" ,python-black) ("python-flake8" ,python-flake8) ("python-iniconfig" ,python-iniconfig) ("python-isort" ,python-isort) ("python-mypy" ,python-mypy) - ("python-ply" ,python-ply) ("python-pytest" ,python-pytest) ("python-pytest-cov" ,python-pytest-cov) ("python-sphinx-autodoc-typehints" ,python-sphinx-autodoc-typehints))) + (inputs + `(("lilypond" ,lilypond))) (propagated-inputs - `(("python-quicktions" ,python-quicktions) + `(("python-ply" ,python-ply) + ("python-quicktions" ,python-quicktions) ("python-roman" ,python-roman) ("python-six" ,python-six) ("python-uqbar" ,python-uqbar))) (home-page "https://abjad.github.io") (synopsis "Python API for building LilyPond files") (description - "This package provides a Python API for building LilyPond files.") + "Abjad helps composers build up complex pieces of music notation in iterative +and incremental ways. Use Abjad to create a symbolic representation of all the notes, +rests, chords, tuplets, beams and slurs in any score. Because Abjad extends the Python +programming language, you can use Abjad to make systematic changes to music as you work. +Because Abjad wraps the LilyPond music notation package, you can use Abjad to control the +typographic detail of symbols on the page.") + (license license:expat))) + +(define-public python-abjad + (deprecated-package "python-abjad" abjad)) + +(define-public abjad-ext-rmakers + (package + (name "abjad-ext-rmakers") + (version "3.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Abjad/abjad-ext-rmakers") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "03nry8lzh3s81yq4lw8y6j63m7zdsl20q7rvx9cfmp3rmbvlaycs")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "python" "-m" "pytest" ".") + #t)))))) + (native-inputs + `(("lilypond" ,lilypond) + ("python-black" ,python-black) + ("python-flake8" ,python-flake8) + ("python-iniconfig" ,python-iniconfig) + ("python-isort" ,python-isort) + ("python-mypy" ,python-mypy) + ("python-pytest" ,python-pytest) + ("python-pytest-cov" ,python-pytest-cov) + ("python-pytest-helpers-namespace" ,python-pytest-helpers-namespace))) + (propagated-inputs + `(("abjad" ,abjad))) + (home-page "https://abjad.github.io") + (synopsis "Abjad rhythm-maker exension package") + (description + "@code{abjad-ext-rmakers} includes a collection of classes for creating and +and manipulating rhythms such as accelerandi, taleas, and more.") + (license license:expat))) + +(define-public abjad-ext-nauert + (package + (name "abjad-ext-nauert") + (version "3.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Abjad/abjad-ext-nauert") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "07vgfjh32vmf652lcl2vrbzr0h6nld00qbgwbf9i1kk3xwhvklc9")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "python" "-m" "pytest" "tests") + #t)))))) + (native-inputs + `(("lilypond" ,lilypond) + ("python-black" ,python-black) + ("python-flake8" ,python-flake8) + ("python-iniconfig" ,python-iniconfig) + ("python-isort" ,python-isort) + ("python-mypy" ,python-mypy) + ("python-pytest" ,python-pytest) + ("python-pytest-cov" ,python-pytest-cov) + ("python-pytest-helpers-namespace" ,python-pytest-helpers-namespace))) + (propagated-inputs + `(("abjad" ,abjad))) + (home-page "https://abjad.github.io") + (synopsis "Abjad quantization extension, based on Paul Nauert's Q-Grids") + (description + "@code{abjad-ext-nauert} provides classes for dealing with composer and +music theorist Paul Nauert's quantization grids or Q-Grids, for short.") + (license license:expat))) + +(define-public abjad-ext-ipython + (package + (name "abjad-ext-ipython") + (version "3.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Abjad/abjad-ext-ipython") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1vv0alpiz0gf5lgjfvlh4km72dvrxfqkwzxl3k4amzci3i0jzbs2")))) + (build-system python-build-system) + (arguments + ;; UnboundLocalError: local variable 'output_path' referenced before assignment + `(#:tests? #f + #:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? inputs outputs #:allow-other-keys) + (when tests? + (setenv "HOME" (getcwd)) + (add-installed-pythonpath inputs outputs) + ;; From 'make jupyter-test' + (invoke "jupyter" "nbconvert" "--to=html" + "--ExecutePreprocessor.enabled=True" "tests/test.ipynb"))))))) + (native-inputs + `(("lilypond" ,lilypond) + ("python-black" ,python-black) + ("python-flake8" ,python-flake8) + ("python-iniconfig" ,python-iniconfig) + ("python-isort" ,python-isort) + ("python-mypy" ,python-mypy) + ("python-pytest" ,python-pytest) + ("python-pytest-cov" ,python-pytest-cov) + ("python-pytest-helpers-namespace" ,python-pytest-helpers-namespace))) + (propagated-inputs + `(("abjad" ,abjad) + ("jupyter" ,jupyter))) + (home-page "https://abjad.github.io") + (synopsis "Abjad IPython Extension") + (description + "@code{abjad-ext-ipython} makes it possible to embed music notation in +@code{jupyter} notebooks.") (license license:expat))) (define-public non-sequencer @@ -1728,7 +1885,7 @@ complete studio.") `(("liblo" ,liblo) ("gtkmm" ,gtkmm) ("alsa-lib" ,alsa-lib) - ("libxmlplusplus" ,libxmlplusplus-2.6))) + ("libxml++" ,libxml++-2))) (native-inputs `(("glib:bin" ,glib "bin") ("pkg-config" ,pkg-config))) @@ -2055,7 +2212,7 @@ users to select LV2 plugins and run them with jalv.") (define-public synthv1 (package (name "synthv1") - (version "0.9.22") + (version "0.9.23") (source (origin (method url-fetch) (uri @@ -2063,7 +2220,7 @@ users to select LV2 plugins and run them with jalv.") "/synthv1-" version ".tar.gz")) (sha256 (base32 - "0cmxbsfhkkyqn97rc47cb7d3bv6bd9r71xp4z85mi2kl3q4k569i")))) + "03lvq84pg0agdn16i7ng6j7lp1ii3inf4pzjypnkywb2km7zcpni")))) (build-system gnu-build-system) (arguments `(#:tests? #f)) ; there are no tests @@ -2087,7 +2244,7 @@ oscillators and stereo effects.") (define-public drumkv1 (package (name "drumkv1") - (version "0.9.22") + (version "0.9.23") (source (origin (method url-fetch) (uri @@ -2095,7 +2252,7 @@ oscillators and stereo effects.") "/drumkv1-" version ".tar.gz")) (sha256 (base32 - "0c13l814f5rhbmpmd4w0a07j1ki5wc092xcgy6p6zj5s03zvcrzy")))) + "1jgsml9wxzwnqyb6wjn9zk94qvxs6c898hyj10sza4d9l6r1rnw0")))) (build-system gnu-build-system) (arguments `(#:tests? #f)) ; there are no tests @@ -2120,7 +2277,7 @@ effects.") (define-public samplv1 (package (name "samplv1") - (version "0.9.22") + (version "0.9.23") (source (origin (method url-fetch) (uri @@ -2128,7 +2285,7 @@ effects.") "/samplv1-" version ".tar.gz")) (sha256 (base32 - "19ajnwzd5w2jlazflh5r9qm4sflkn2s2zc5zh0vlqywxzvb9dp9g")))) + "1bgyz530mpmlabvy592zickrzk4x4rm2i0ixf3z6plgn265km43q")))) (build-system gnu-build-system) (arguments `(#:tests? #f)) ; there are no tests @@ -2153,7 +2310,7 @@ effects.") (define-public padthv1 (package (name "padthv1") - (version "0.9.22") + (version "0.9.23") (source (origin (method url-fetch) (uri @@ -2161,7 +2318,7 @@ effects.") "/padthv1-" version ".tar.gz")) (sha256 (base32 - "1wky9v91qc3j866di8mcjz0pf3n8ah888lxg8dpvp6ryh1cm6i6x")))) + "0222n74kykirkhq4va09hr37rybxs0nxjbmamp38jf94bfz5y8gp")))) (build-system gnu-build-system) (arguments `(#:tests? #f)) ; there are no tests @@ -2729,14 +2886,14 @@ browser.") (define-public drumstick (package (name "drumstick") - (version "2.3.0") + (version "2.3.1") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/drumstick/" version "/drumstick-" version ".tar.bz2")) (sha256 (base32 - "12haksnf91ra5w5dwnlc3rcw4js8wj4hsl6kzyqrx4q4fnpvjahk")))) + "1rs248pkgn6d29nkvw9ab6dvi1vsz220jdmz1ddzr29cpyc0adfh")))) (build-system cmake-build-system) (arguments `(#:tests? #f ; no test target @@ -3126,14 +3283,14 @@ from the command line.") (define-public qtractor (package (name "qtractor") - (version "0.9.22") + (version "0.9.23") (source (origin (method url-fetch) (uri (string-append "https://downloads.sourceforge.net/qtractor/" "qtractor-" version ".tar.gz")) (sha256 (base32 - "0n73xn3205afi9vsy6ianixq36ddp8qv6iaq03ldc6mkkfvn0nc5")))) + "1d2d884x5kfa41skwyh0ihyx5jgc9467617gmfjm379qcgnxq00s")))) (build-system gnu-build-system) (arguments `(#:tests? #f)) ; no "check" target @@ -3423,7 +3580,7 @@ formats, looking up tracks through metadata and audio fingerprints.") `(("python-pytest" ,python-pytest) ("python-hypothesis" ,python-hypothesis) ("python-flake8" ,python-flake8))) - (home-page "https://bitbucket.org/lazka/mutagen") + (home-page "https://mutagen.readthedocs.io/") (synopsis "Read and write audio tags") (description "Mutagen is a Python module to handle audio metadata. It supports ASF, FLAC, M4A, Monkey’s Audio, MP3, Musepack, Ogg FLAC, Ogg Speex, Ogg @@ -3437,20 +3594,18 @@ streams on an individual packet/page level.") (define-public python-mediafile (package (name "python-mediafile") - (version "0.6.0") + (version "0.8.0") (source (origin (method url-fetch) (uri (pypi-uri "mediafile" version)) - (patches (search-patches "python-mediafile-wavpack.patch")) (sha256 (base32 - "0jmsp3f57xj35ayp8b6didk85nxgl3viw34s5px3l5dwgc055yx3")))) + "0ipb001j19s9wvssmrj8wz0nrkbl0k3zr3dgzyp1bd9cjc6vklnp")))) (build-system python-build-system) (propagated-inputs `(("python-mutagen" ,python-mutagen) - ("python-six" ,python-six) - ("python-tox" ,python-tox))) + ("python-six" ,python-six))) (home-page "https://github.com/beetbox/mediafile") (synopsis "Read and write audio file tags") (description @@ -3463,18 +3618,14 @@ of tags.") (define-public python-musicbrainzngs (package (name "python-musicbrainzngs") - (version "0.6") + (version "0.7.1") (source (origin (method url-fetch) (uri (pypi-uri "musicbrainzngs" version)) (sha256 (base32 - "1dddarpjawryll2wss65xq3v9q8ln8dan7984l5dxzqx88d2dvr8")))) + "09z6k07pxncfgfc8clfmmxl2xqbd7h8x8bjzwr95hc0bzl00275b")))) (build-system python-build-system) - (arguments - '(;; The tests fail suffer from race conditions: - ;; https://github.com/alastair/python-musicbrainzngs/issues/211 - #:tests? #f)) (home-page "https://python-musicbrainzngs.readthedocs.org/") (synopsis "Python bindings for MusicBrainz NGS webservice") (description "Musicbrainzngs implements Python bindings of the MusicBrainz @@ -3544,37 +3695,29 @@ detailed track info including timbre, pitch, rhythm and loudness information. (define-public python-pylast (package (name "python-pylast") - (version "2.0.0") + (version "4.2.1") (source (origin (method url-fetch) (uri (pypi-uri "pylast" version)) (sha256 (base32 - "0r9h7g8i8l2mgqjwkda3v6prfbkb2im5kap1az9ppmhjm9i4jkcf")))) + "0pzzhr4mlwpvfhy9gzq86ppz29fmf5z0w3xkl5if1fm59r1afms7")))) (build-system python-build-system) ;; Tests require network access. See ;; https://github.com/pylast/pylast/issues/105 (arguments '(#:tests? #f)) (native-inputs `(("python-coverage" ,python-coverage) - ("python-pycodestyle" ,python-pycodestyle) - ("python-mock" ,python-mock) - ("python-pep8" ,python-pep8) ("python-pytest" ,python-pytest) ("python-flaky" ,python-flaky) - ("python-pyflakes" ,python-pyflakes) - ("python-pyyaml" ,python-pyyaml))) - (propagated-inputs - `(("python-six" ,python-six))) + ("python-pyyaml" ,python-pyyaml) + ("python-setuptools-scm" ,python-setuptools-scm))) (home-page "https://github.com/pylast/pylast") (synopsis "Python interface to Last.fm and Libre.fm") (description "A Python interface to Last.fm and other API-compatible websites such as Libre.fm.") (license license:asl2.0))) -(define-public python2-pylast - (package-with-python2 python-pylast)) - (define-public instantmusic (let ((commit "300891d09c703525215fa5a116b9294af1c923c8") (revision "1")) @@ -3620,34 +3763,27 @@ websites such as Libre.fm.") (define-public beets (package (name "beets") - (version "1.4.9") + (version "1.5.0") (source (origin (method url-fetch) (uri (pypi-uri "beets" version)) - (patches (search-patches "beets-werkzeug-compat.patch")) (sha256 (base32 - "0m40rjimvfgy1dv04p8f8d5dvi2855v4ix99a9xr900cmcn476yj")))) + "0arl4nc3y8iwa331hf6ggai19y8ns9pl03g5d6ac857wq2x7nzw8")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases - ;; Reported upstream: <https://github.com/beetbox/beets/issues/3771>. - ;; Disable the faulty test as the fix is unclear. - (add-after 'unpack 'disable-failing-tests - (lambda _ - (substitute* "test/test_mediafile.py" - (("def test_read_audio_properties") "def _test_read_audio_properties")) - #t)) (add-after 'unpack 'set-HOME (lambda _ (setenv "HOME" (string-append (getcwd) "/tmp")) #t)) (replace 'check - (lambda _ - (invoke "nosetests" "-v"))) - ;; Wrap the executable, so it can find python-gi (aka pygobject) and - ;; gstreamer plugins. + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "pytest" "-v" "test")))) + ;; Wrap the executable, so it can find python-gi (aka + ;; pygobject) and gstreamer plugins. (add-after 'wrap 'wrap-typelib (lambda* (#:key outputs #:allow-other-keys) (let ((prog (string-append (assoc-ref outputs "out") @@ -3659,112 +3795,68 @@ websites such as Libre.fm.") `("GI_TYPELIB_PATH" ":" prefix (,types))) #t)))))) (native-inputs - `(("python-beautifulsoup4" ,python-beautifulsoup4) + `(("gobject-introspection" ,gobject-introspection) ("python-flask" ,python-flask) ("python-mock" ,python-mock) - ("python-mpd2" ,python-mpd2) - ("python-nose" ,python-nose) - ("python-pathlib" ,python-pathlib) - ("python-pyxdg" ,python-pyxdg) - ("python-pylast" ,python-pylast) - ("python-rarfile" ,python-rarfile) + ("python-py7zr" ,python-py7zr) + ("python-pytest" ,python-pytest-6) ("python-responses" ,python-responses))) - ;; TODO: Install optional plugins and dependencies. (inputs - `(("python-discogs-client" ,python-discogs-client) + `(("bash-minimal" ,bash-minimal) + ("gst-plugins-base" ,gst-plugins-base) + ("gst-plugins-good" ,gst-plugins-good) + ("gstreamer" ,gstreamer) + ("python-confuse" ,python-confuse) ("python-jellyfish" ,python-jellyfish) + ("python-mediafile" ,python-mediafile) ("python-munkres" ,python-munkres) ("python-musicbrainzngs" ,python-musicbrainzngs) - ("python-mutagen" ,python-mutagen) - ("python-pyacoustid" ,python-pyacoustid) ("python-pyyaml" ,python-pyyaml) + ("python-six" ,python-six) ("python-unidecode" ,python-unidecode) - ;; For plugin replaygain. - ("python-pygobject" ,python-pygobject) - ("gobject-introspection" ,gobject-introspection) - ("gst-plugins-base" ,gst-plugins-base) - ("gst-plugins-good" ,gst-plugins-good) - ("gstreamer" ,gstreamer))) + ;; Optional dependencies for plugins. Some of these are also required by tests. + ("python-beautifulsoup4" ,python-beautifulsoup4) ; For lyrics. + ("python-discogs-client" ,python-discogs-client) ; For discogs. + ("python-mpd2" ,python-mpd2) ; For mpdstats. + ("python-mutagen" ,python-mutagen) ; For scrub. + ("python-langdetect" ,python-langdetect) ; For lyrics. + ("python-pillow" ,python-pillow) ; For fetchart, embedart, thumbnails. + ("python-pyacoustid" ,python-pyacoustid) ; For chroma. + ("python-pygobject" ,python-pygobject) ; For bpd, replaygain. + ("python-pylast" ,python-pylast) ; For lastgenre, lastimport. + ("python-pyxdg" ,python-pyxdg) ; For thumbnails. + ("python-rarfile" ,python-rarfile) ; For import. + ("python-reflink" ,python-reflink) ; For reflink. + ("python-requests" ,python-requests) + ("python-requests-oauthlib" ,python-requests-oauthlib))) ; For beatport. (home-page "https://beets.io") (synopsis "Music organizer") - (description "The purpose of beets is to get your music collection right - once and for all. It catalogs your collection, automatically improving its - metadata as it goes using the MusicBrainz database. Then it provides a variety - of tools for manipulating and accessing your music.") + (description "The purpose of beets is to get your music collection +right once and for all. It catalogs your collection, automatically +improving its metadata as it goes using the MusicBrainz database. +Then it provides a variety of tools for manipulating and accessing +your music.") (license license:expat))) (define-public beets-next - (let ((commit "04ea754d00e2873ae9aa2d9e07c5cefd790eaee2") - (revision "1")) - (package - (inherit beets) - (name "beets-next") - (version (git-version (package-version beets) revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/beetbox/beets") - (commit commit))) - (file-name (git-file-name "beets" version)) - (sha256 - (base32 - "092a9sss2shhcjmpgbwvscv8brpm5970i5hddkhi81xcff3bg1h4")))) - (arguments - `(#:phases - (modify-phases %standard-phases - ;; XXX: unclear why this fails - (add-after 'unpack 'disable-failing-tests - (lambda _ - (substitute* "test/test_zero.py" - (("def test_album_art") "def _test_album_art")) - #t)) - (add-after 'unpack 'set-HOME - (lambda _ - (setenv "HOME" (string-append (getcwd) "/tmp")) - #t)) - (replace 'check - (lambda _ - ;; Resources must be writable. - (for-each make-file-writable - (find-files "test/rsrc" ".")) - (invoke "nosetests" "-v"))) - ;; Wrap the executable, so it can find python-gi (aka pygobject) and - ;; gstreamer plugins. - (add-after 'wrap 'wrap-typelib - (lambda* (#:key outputs #:allow-other-keys) - (let ((prog (string-append (assoc-ref outputs "out") - "/bin/beet")) - (plugins (getenv "GST_PLUGIN_SYSTEM_PATH")) - (types (getenv "GI_TYPELIB_PATH"))) - (wrap-program prog - `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,plugins)) - `("GI_TYPELIB_PATH" ":" prefix (,types))) - #t)))))) - (inputs - `(("python-confuse" ,python-confuse) - ("python-mediafile" ,python-mediafile) - ("python-reflink" ,python-reflink) - ("python-requests-oauthlib" ,python-requests-oauthlib) - ("opusfile" ,opusfile) - ,@(package-inputs beets)))))) + (deprecated-package "beets-next" beets)) (define-public beets-bandcamp (package (name "beets-bandcamp") - (version "0.1.3") + (version "0.1.4") (source (origin (method url-fetch) (uri (pypi-uri "beets-bandcamp" version)) (sha256 (base32 - "04awg0zdhhg5h510fc1p3qkvr2l1qm6nf85hlr9z8im8a7xlka0i")))) + "0dwbdkrb9c0ppzm5s78h47ndpr88cw1k0z8fgfhkl706wazx2ddg")))) (build-system python-build-system) (arguments '(#:tests? #f)) ; there are no tests (propagated-inputs `(("beets" ,beets) - ("python-isodate" ,python-isodate))) - (inputs - `(("python-beautifulsoup4" ,python-beautifulsoup4) + ("python-isodate" ,python-isodate) + ("python-beautifulsoup4" ,python-beautifulsoup4) ("python-requests" ,python-requests) ("python-six" ,python-six))) (home-page "https://github.com/unrblt/beets-bandcamp") @@ -4529,26 +4621,26 @@ provide a very simple interface for editing and playing MIDI loops.") (define-public python-discogs-client (package (name "python-discogs-client") - (version "2.2.1") + (version "2.3.12") (source (origin (method url-fetch) - (uri (pypi-uri "discogs-client" version)) + (uri (pypi-uri "python3-discogs-client" version)) (sha256 (base32 - "053ld2psh0yj3z0kg6z5bn4y3cr562m727494n0ayhgzbkjbacly")))) + "1zmib0i9jicv9fyphgkcrk418qmpv3l4p38ibl31sh237ki5xqw9")))) (build-system python-build-system) (propagated-inputs - `(("python-oauthlib" ,python-oauthlib) + `(("python-dateutil" ,python-dateutil) + ("python-oauthlib" ,python-oauthlib) ("python-requests" ,python-requests))) - (native-inputs - `(("python-six" ,python-six))) - (home-page "https://github.com/discogs/discogs_client") - (synopsis "Official Python client for the Discogs API") - (description "This is the official Discogs API client for Python. It enables -you to query the Discogs database for information on artists, releases, labels, -users, Marketplace listings, and more. It also supports OAuth 1.0a -authorization, which allows you to change user data such as profile information, -collections and wantlists, inventory, and orders.") + (home-page "https://github.com/joalla/discogs_client") + (synopsis "Python client for the Discogs API") + (description "This is the continuation of the official Discogs API +client for Python. It enables you to query the Discogs database for +information on artists, releases, labels, users, Marketplace listings, +and more. It also supports OAuth 1.0a authorization, which allows you to +change user data such as profile information, collections and wantlists, +inventory, and orders.") (license license:bsd-2))) (define-public python2-discogs-client @@ -4714,7 +4806,7 @@ audio samples and various soft sythesizers. It can receive input from a MIDI ke `(("jack" ,jack-2) ("lv2" ,lv2) ("readline" ,readline) - ("libsndfile" ,libsndfile))) + ("libsndfile" ,libsndfile/fixed))) (home-page "https://github.com/swesterfeld/liquidsfz") (synopsis "Sampler library") (description "The main goal of liquidsfz is to provide an SFZ sampler @@ -4722,6 +4814,51 @@ implementation library that is easy to integrate into other projects. A standalone JACK client and an LV2 plugin is also available.") (license license:lgpl2.1+))) +(define-public sfizz + (package + (name "sfizz") + (version "1.0.0") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/sfztools/sfizz" + "/releases/download/" version + "/sfizz-" version ".tar.gz")) + (sha256 + (base32 + "1pk67xvyqkvhjz2q5hbj5v0mnfvdvvl8vl5bsh6ymwiq3glkd41l")) + (modules '((guix build utils))) + (snippet + ;; TODO: pugixml is bundled, but can only be removed in + ;; versions after 1.0.0. + '(for-each delete-file-recursively + '("external/abseil-cpp" + "external/simde" + "plugins/editor/external/vstgui4" + "plugins/vst"))))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags + (list "-DSFIZZ_LV2_UI=OFF" + "-DSFIZZ_VST=OFF" + "-DSFIZZ_VST2=OFF" + "-DSFIZZ_TESTS=ON" + "-DSFIZZ_USE_SYSTEM_ABSEIL=ON"))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("abseil-cpp" ,abseil-cpp) + ("glib" ,glib) + ("jack" ,jack-2) + ("lv2" ,lv2) + ("libsamplerate" ,libsamplerate) + ("pugixml" ,pugixml) + ("simde" ,simde))) + (home-page "https://sfz.tools/sfizz/") + (synopsis "SFZ parser and synth library") + (description "Sfizz provides an SFZ parser and synth C++ library. It +includes LV2 plugins and a JACK standalone client.") + (license license:bsd-2))) + (define-public musescore (package (name "musescore") @@ -4869,7 +5006,7 @@ studio.") (define-public gsequencer (package (name "gsequencer") - (version "3.8.13") + (version "3.10.18") (source (origin (method git-fetch) @@ -4878,7 +5015,7 @@ studio.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1gwy7fhbxgrd5n6afq1hnxc6p873wsh4qs63yhkkdfzyl7s412z4")))) + (base32 "126kbvdkxy82mmkl19qhp9k6iz5xclar06chbj7lf580x96c899c")))) (build-system glib-or-gtk-build-system) (arguments `(#:phases @@ -4963,14 +5100,15 @@ specification and header.") (define-public rosegarden (package (name "rosegarden") - (version "21.06") + (version "21.06.1") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/rosegarden/rosegarden/" - version "/rosegarden-" version ".tar.bz2")) + (version-major+minor version) "/" + "rosegarden-" version ".tar.bz2")) (sha256 - (base32 "0rhbmygzh62hc3mkq60lh9r28wvfkhzzd5kspl1ll0h1ipjgvr6d")))) + (base32 "0yir279gxc5b298sr0fg9jxgdi75bb1gvvy4mh3pxqjsnp00sxc7")))) (build-system cmake-build-system) (arguments `(#:configure-flags '("-DCMAKE_BUILD_TYPE=Release") @@ -4981,8 +5119,7 @@ specification and header.") (substitute* "CMakeLists.txt" (("BUILD_TESTING OFF") "BUILD_TESTING ON") ;; Make tests work. - ((" -fvisibility=hidden") "")) - #t)) + ((" -fvisibility=hidden") "")))) (add-after 'unpack 'fix-references (lambda* (#:key inputs #:allow-other-keys) (substitute* "src/gui/general/ProjectPackager.cpp" @@ -5000,8 +5137,7 @@ specification and header.") (("\"convert-ly\\>") (string-append "\"" (assoc-ref inputs "lilypond") "/bin/convert-ly")) (("\"lilypond\\>") - (string-append "\"" (assoc-ref inputs "lilypond") "/bin/lilypond"))) - #t)) + (string-append "\"" (assoc-ref inputs "lilypond") "/bin/lilypond"))))) (add-after 'unpack 'make-reproducible (lambda _ ;; Prevent Last-Modified from being written. @@ -5016,16 +5152,14 @@ specification and header.") ;; "qt5_add_resources(rg_SOURCES ../data/data.qrc OPTIONS --format-version 1)") ) ;; Make hashtable traversal order predicable. - (setenv "QT_RCC_TEST" "1") ; important - #t)) + (setenv "QT_RCC_TEST" "1"))) ; important (add-before 'check 'prepare-check (lambda _ (setenv "QT_QPA_PLATFORM" "offscreen") ;; Tests create files in $HOME/.local/share/rosegarden . (mkdir-p "/tmp/foo") (setenv "HOME" "/tmp/foo") - (setenv "XDG_RUNTIME_DIR" "/tmp/foo") - #t))))) + (setenv "XDG_RUNTIME_DIR" "/tmp/foo")))))) (inputs `(("alsa-lib" ,alsa-lib) ("bash" ,bash) @@ -5045,7 +5179,7 @@ specification and header.") ("zlib" ,zlib))) (native-inputs `(("pkg-config" ,pkg-config) - ("qtlinguist" ,qttools))) + ("qttools" ,qttools))) ;for qtlinguist (synopsis "Music composition and editing environment based around a MIDI sequencer") (description "Rosegarden is a music composition and editing environment @@ -5270,6 +5404,10 @@ Recording Code} (ISRC) can be extracted.}") (arguments `(#:phases (modify-phases %standard-phases + (add-after 'unpack 'fix-build + (lambda _ + (substitute* "src/CMakeLists.txt" + (("\\*.inc") "")))) (replace 'check (lambda _ ;; requires network connections @@ -6099,7 +6237,7 @@ Soul Force), MVerb, Nekobi, and ProM.") (define-public avldrums-lv2 (package (name "avldrums-lv2") - (version "0.4.1") + (version "0.4.2") (source (origin (method git-fetch) @@ -6111,7 +6249,7 @@ Soul Force), MVerb, Nekobi, and ProM.") (recursive? #t))) (file-name (git-file-name name version)) (sha256 - (base32 "1vwdp3d8qzd493qa99ddya7iql67bbfxmbcl8hk96lxif2lhmyws")))) + (base32 "14gka5g7va30gm1hn0cas4vvb8s764rfvzcxm67ww86hf54cpnig")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no "check" target @@ -6119,10 +6257,10 @@ Soul Force), MVerb, Nekobi, and ProM.") (list (string-append "PREFIX=" (assoc-ref %outputs "out"))) #:phases (modify-phases %standard-phases + (delete 'configure) ; no configure script (add-before 'build 'set-CC-variable (lambda _ - (setenv "CC" "gcc") #t)) - (delete 'configure)))) + (setenv "CC" "gcc")))))) (inputs `(("cairo" ,cairo) ("dssi" ,dssi) @@ -6332,7 +6470,7 @@ as JACK standalone applications.") (method git-fetch) (uri (git-reference - (url "https://git.zrythm.org/git/zplugins") + (url "https://git.zrythm.org/zrythm/zplugins") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -6690,7 +6828,7 @@ It is provided as an LV2 plugin and as a standalone Jack application.") (substitute* (string-append bin "a2j") (("a2j_control") (string-append bin "a2j_control"))) (wrap-program (string-append bin "a2j_control") - `("PYTHONPATH" prefix (,(getenv "PYTHONPATH")))) + `("PYTHONPATH" prefix (,(getenv "GUIX_PYTHONPATH")))) #t)))))) (build-system meson-build-system) (inputs |