diff options
Diffstat (limited to 'gnu/packages/music.scm')
-rw-r--r-- | gnu/packages/music.scm | 623 |
1 files changed, 254 insertions, 369 deletions
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index 25f2495c02..afd7ff40cf 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -13,7 +13,7 @@ ;;; Copyright © 2017–2022 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2017, 2018, 2019, 2021 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net> -;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2017–2022 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 nee <nee.git@hidamari.blue> ;;; Copyright © 2018, 2021 Stefan Reichör <stefan@xsteve.at> ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz> @@ -45,6 +45,9 @@ ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> ;;; Copyright © 2021 Thomas Albers Raviola <thomas@thomaslabs.org> ;;; Copyright © 2022 Sughosha <sughosha@disroot.org> +;;; Copyright © 2022 Remco van 't Veer <remco@remworks.net> +;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2022 Wamm K. D. <jaft.r@outlook.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -153,6 +156,7 @@ #:use-module (gnu packages protobuf) #:use-module (gnu packages pulseaudio) ;libsndfile #:use-module (gnu packages python) + #:use-module (gnu packages python-build) #:use-module (gnu packages python-check) #:use-module (gnu packages python-compression) #:use-module (gnu packages python-web) @@ -176,6 +180,7 @@ #:use-module (gnu packages vim) ;for 'xxd' #:use-module (gnu packages web) #:use-module (gnu packages webkit) + #:use-module (gnu packages wm) #:use-module (gnu packages wxwidgets) #:use-module (gnu packages xdisorg) #:use-module (gnu packages xml) @@ -470,7 +475,7 @@ playing your music.") (define-public strawberry (package (name "strawberry") - (version "1.0.1") + (version "1.0.3") (source (origin (method git-fetch) (uri (git-reference @@ -479,7 +484,7 @@ playing your music.") (file-name (git-file-name name version)) (sha256 (base32 - "077dlj0kjcrj4g1h4w8finzykizaar67ik6yng6c8zjp2i5bam1j")) + "14fr2bm51k4n5byc9pwh3ba6v15s9jmqxigl1y9h00l7cvmfpbn1")) (modules '((guix build utils) (ice-9 regex))) (snippet @@ -705,7 +710,8 @@ background while you work.") (arguments '(#:tests? #f ; no check target #:configure-flags - (list "-DBUILD_SHARED_LIBS=ON" + (list "-DBUILD_ALLEGRO4=OFF" + "-DBUILD_SHARED_LIBS=ON" "-DBUILD_EXAMPLES=OFF"))) (home-page "https://github.com/kode54/dumb") (synopsis "Module audio renderer library") @@ -729,7 +735,7 @@ settings (aliasing, linear interpolation and cubic interpolation).") (arguments (substitute-keyword-arguments (package-arguments dumb) ((#:configure-flags flags) - `(cons "-DBUILD_ALLEGRO4=ON" ,flags)))) + `(cons "-DBUILD_ALLEGRO4=ON" ,(delete "-DBUILD_ALLEGRO4=OFF" flags))))) (inputs (list allegro-4)))) @@ -1271,52 +1277,6 @@ standalone program which is able to download cover art, lyrics, photos, biographies, reviews and more.") (license license:lgpl3+))) -(define-public gtklick - (package - (name "gtklick") - (version "0.6.4") - (source (origin - (method url-fetch) - (uri (string-append "http://das.nasophon.de/download/gtklick-" - version ".tar.gz")) - (sha256 - (base32 - "0dq1km6njnzsqdqyf6wzir9g733z0mc9vmxfg2383k3c2a2di6bp")))) - (build-system python-build-system) - (arguments - `(#:tests? #f ; no tests - #:python ,python-2 - #:phases - (modify-phases %standard-phases - (add-before 'build 'add-sitedirs - ;; .pth files are not automatically interpreted unless the - ;; directories containing them are added as "sites". The directories - ;; are then added to those in the PYTHONPATH. This is required for - ;; the operation of pygtk. - (lambda _ - (substitute* "gtklick/gtklick.py" - (("import pygtk") - "import pygtk, site, sys -for path in [path for path in sys.path if 'site-packages' in path]: site.addsitedir(path)")))) - (add-after 'unpack 'inject-store-path-to-klick - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "gtklick/klick_backend.py" - (("KLICK_PATH = 'klick'") - (string-append "KLICK_PATH = '" - (assoc-ref inputs "klick") - "/bin/klick'"))) - #t))))) - (inputs - (list klick python2-pyliblo python2-pygtk)) - (native-inputs - `(("gettext" ,gettext-minimal))) - (home-page "http://das.nasophon.de/gtklick/") - (synopsis "Simple metronome with an easy-to-use graphical interface") - (description - "Gtklick is a simple metronome with an easy-to-use graphical user -interface. It is implemented as a frontend to @code{klick}.") - (license license:gpl2+))) - (define-public lingot (package (name "lingot") @@ -1749,20 +1709,20 @@ music theorist Paul Nauert's quantization grids or Q-Grids, for short.") (define-public non-sequencer ;; The latest tagged release is three years old and uses a custom build ;; system, so we take the last commit. - (let ((commit "5ae43bb27c42387052a73e5ffc5d33efb9d946a9") - (revision "4")) + (let ((commit "257ec5951e7d4086344d98c99ebbe569f7c31211") + (revision "5")) (package (name "non-sequencer") - (version (string-append "1.9.5-" revision "." (string-take commit 7))) + (version (git-version "1.9.5" revision commit)) (source (origin (method git-fetch) (uri (git-reference - (url "git://git.tuxfamily.org/gitroot/non/non.git") + (url "https://github.com/falkTX/non/") (commit commit))) (sha256 (base32 - "1cljkkyi9dxqpqhx8y6l2ja4zjmlya26m26kqxml8gx08vyvddhx")) - (file-name (string-append name "-" version "-checkout")))) + "0h6ycm3nbb5lvjvhymz5xlj8wqm3z3ggzn4ghmw6xyzd0l7c3m8b")) + (file-name (git-file-name name version)))) (build-system waf-build-system) (arguments `(#:tests? #f ;no "check" target @@ -1773,11 +1733,16 @@ music theorist Paul Nauert's quantization grids or Q-Grids, for short.") (%current-system)))) '("--disable-sse") '())) - #:python ,python-2)) + #: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 jack-1 libsigc++-2 liblo ntk)) (native-inputs - (list pkg-config)) + (list python-waf pkg-config)) (home-page "https://non.tuxfamily.org/wiki/Non%20Sequencer") (synopsis "Pattern-based MIDI sequencer") (description @@ -1788,6 +1753,31 @@ Sequencer happens on-line, in real-time. Music can be composed live, while the transport is rolling.") (license license:gpl2+)))) +(define-public new-session-manager + (package + (name "new-session-manager") + (version "1.6.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jackaudio/new-session-manager") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0ihngqbnc50izfy6x7nhgaah00byk8nl6n5smxbyb8fkhm2s8p21")))) + (build-system meson-build-system) + (native-inputs (list pkg-config)) + (inputs (list fltk jack-2 liblo libx11)) + (home-page "https://new-session-manager.jackaudio.org/") + (synopsis "Music production session management tool") + (description "New Session Manager (NSM) is a tool to assist music +production by grouping standalone programs into sessions. It can be used +create a session, or project, and add programs to it and then use commands to +save, start/stop, hide/show all programs at once, or individually. The +session can be interrupted and easily resumed at a later time.") + (license license:gpl3+))) + (define-public non-session-manager (package (inherit non-sequencer) (name "non-session-manager") @@ -1799,14 +1789,15 @@ transport is rolling.") (inputs (list jack-1 liblo ntk)) (native-inputs - (list pkg-config)) + (list python-waf pkg-config)) (home-page "https://non.tuxfamily.org/nsm/") (synopsis "Audio session management") (description "The Non Session Manager is an API and an implementation for audio session management. NSM clients use a well-specified OSC protocol to communicate with the session management daemon.") - (license license:gpl2+))) + (license license:gpl2+) + (properties `((superseded . ,new-session-manager))))) (define-public non-mixer (package (inherit non-sequencer) @@ -1817,9 +1808,9 @@ communicate with the session management daemon.") `(cons "--project=mixer" (delete "--project=sequencer" ,flags))))) (inputs - (list jack-1 liblo ladspa lrdf ntk)) + (list jack-1 liblo ladspa lrdf ntk lv2 lilv)) (native-inputs - (list pkg-config)) + (list python-waf pkg-config)) (home-page "https://non.tuxfamily.org/wiki/Non%20Mixer") (synopsis "Modular digital audio mixer") (description @@ -1841,7 +1832,7 @@ studio.") (inputs (list jack-1 liblo libsndfile ntk)) (native-inputs - (list pkg-config)) + (list python-waf pkg-config)) (home-page "https://non.tuxfamily.org/wiki/Non%20Timeline") (synopsis "Modular digital audio timeline arranger") (description @@ -2019,74 +2010,85 @@ Key features include: (define-public solfege (package (name "solfege") - (version "3.22.2") + (version "3.23.5pre2") (source (origin - (method url-fetch) - (uri (string-append - "mirror://gnu/solfege/solfege-" - version ".tar.xz")) + (method git-fetch) + (uri (git-reference + (url "https://git.savannah.gnu.org/git/solfege.git") + (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 - "1w25rxdbj907nsx285k9nm480pvy12w3yknfh4n1dfv17cwy072i")))) + "1lmzp4kn0xh58yc8gzriz1i34g5qaa2xxrxzpmr7v9jyk19dqmcm")))) (build-system gnu-build-system) (arguments - `(#:tests? #f ; xmllint attempts to download DTD - #:test-target "test" - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-configuration - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "default.config" - (("/usr/bin/aplay") "aplay") - (("/usr/bin/timidity") "timidity") - (("/usr/bin/mpg123") "mpg123") - (("/usr/bin/ogg123") "ogg123")) - #t)) - (add-before 'build 'patch-python-shebangs - (lambda _ - ;; Two python scripts begin with a Unicode BOM, so patch-shebang - ;; has no effect. - (substitute* '("solfege/parsetree.py" - "solfege/presetup.py") - (("#!/usr/bin/python") (string-append "#!" (which "python")))) - #t)) - (add-before 'build 'add-sitedirs - ;; .pth files are not automatically interpreted unless the - ;; directories containing them are added as "sites". The directories - ;; are then added to those in the PYTHONPATH. This is required for - ;; the operation of pygtk and pygobject. - (lambda _ - (substitute* "run-solfege.py" - (("import os") - "import os, site -for path in [path for path in sys.path if 'site-packages' in path]: site.addsitedir(path)")) - #t)) - (add-before 'build 'adjust-config-file-prefix - (lambda* (#:key outputs #:allow-other-keys) - (substitute* "run-solfege.py" - (("prefix = os.path.*$") - (string-append "prefix = " (assoc-ref outputs "out")))) - #t)) - (add-after 'install 'wrap-program - (lambda* (#:key inputs outputs #:allow-other-keys) - ;; Make sure 'solfege' runs with the correct PYTHONPATH. - (let* ((out (assoc-ref outputs "out")) - (path (getenv "GUIX_PYTHONPATH"))) - (wrap-program (string-append out "/bin/solfege") - `("GUIX_PYTHONPATH" ":" prefix (,path)))) - #t))))) + (list + #:tests? #f ;xmllint attempts to download DTD + #:test-target "test" + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'set-version + (lambda _ + (substitute* "autogen.sh" + (("python3 -c \"import tools.*create_versions_file.*") + (string-append "echo \"version_info = '" + #$version "' > solfege/_version.py\"\n"))) + (substitute* "Makefile.in" + (("\\$\\(PYTHON) -c \"import tools.*create_versions_file.*") + "true\n")) + (substitute* "solfege/buildinfo.py.in" + (("from solfege._version import version_info") + "version_info = {'git_sha': 'N/A'}")))) + (add-after 'unpack 'fix-configuration + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "default.config" + (("/usr/bin/aplay") "aplay") + (("/usr/bin/timidity") "timidity") + (("/usr/bin/mpg123") "mpg123") + (("/usr/bin/ogg123") "ogg123")))) + (add-before 'build 'patch-python-shebangs + (lambda* (#:key inputs #:allow-other-keys) + ;; Two python scripts begin with a Unicode BOM, so patch-shebang + ;; has no effect. + (substitute* '("solfege/parsetree.py" + "solfege/presetup.py") + (("#!/usr/bin/python") + (string-append "#!" search-input-file inputs "bin/python"))))) + (add-before 'build 'add-sitedirs + ;; .pth files are not automatically interpreted unless the + ;; directories containing them are added as "sites". The + ;; directories are then added to those in the PYTHONPATH. This is + ;; required for the operation of pygtk and pygobject. + (lambda _ + (substitute* "run-solfege.py" + (("import os") + "import os, site +for path in [path for path in sys.path if 'site-packages' in path]: site.addsitedir(path)")))) + (add-before 'build 'adjust-config-file-prefix + (lambda _ + (substitute* "run-solfege.py" + (("prefix = os.path.*$") + (string-append "prefix = " #$output))))) + (add-after 'install 'wrap-program + (lambda* (#:key outputs #:allow-other-keys) + ;; Make sure 'solfege' runs with the correct PYTHONPATH. + (let ((path (getenv "GUIX_PYTHONPATH"))) + (wrap-program (search-input-file outputs "bin/solfege") + `("GUIX_PYTHONPATH" ":" prefix (,path))))))))) (inputs - `(("python" ,python-2) - ("pygtk" ,python2-pygtk) - ("gettext" ,gettext-minimal) - ("gtk" ,gtk+) - ("lilypond" ,lilypond))) + (list python-wrapper + python-pygobject + gettext-minimal + gtk+ + lilypond)) (native-inputs - (list pkg-config + (list autoconf + automake + pkg-config txt2man - libxml2 ; for tests + libxml2 ; for tests ghostscript - texinfo-5)) + texinfo)) (home-page "https://www.gnu.org/software/solfege/") (synopsis "Ear training") (description @@ -2279,7 +2281,7 @@ perform creative live mixes with digital music files.") (define-public synthv1 (package (name "synthv1") - (version "0.9.24") + (version "0.9.25") (source (origin (method url-fetch) (uri @@ -2287,7 +2289,7 @@ perform creative live mixes with digital music files.") "/synthv1-" version ".tar.gz")) (sha256 (base32 - "0m9xpl7kq0zlain8598q5cqrh1c7ima2w8jrpq7ds8vh97r7p1bl")))) + "1i16036f9wm52c5pxkllq7ir749jcknbh35i9wcxd5n88p6mzw02")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; there are no tests @@ -2295,7 +2297,7 @@ perform creative live mixes with digital music files.") (list jack-1 lv2 alsa-lib - non-session-manager + new-session-manager liblo qtbase-5)) (native-inputs @@ -2310,7 +2312,7 @@ oscillators and stereo effects.") (define-public drumkv1 (package (name "drumkv1") - (version "0.9.24") + (version "0.9.25") (source (origin (method url-fetch) (uri @@ -2318,7 +2320,7 @@ oscillators and stereo effects.") "/drumkv1-" version ".tar.gz")) (sha256 (base32 - "04k0mkvlz9ka0mlck4g7c86s1rhb9pkhml6j6n9b5hwlbq8a9mxk")))) + "0p50b4k4zldagiwxs0micmdbqib46ysipdj8lkxqdv0pysmd72fc")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; there are no tests @@ -2327,7 +2329,7 @@ oscillators and stereo effects.") lv2 libsndfile alsa-lib - non-session-manager + new-session-manager liblo qtbase-5)) (native-inputs @@ -2342,7 +2344,7 @@ effects.") (define-public samplv1 (package (name "samplv1") - (version "0.9.24") + (version "0.9.25") (source (origin (method url-fetch) (uri @@ -2350,7 +2352,7 @@ effects.") "/samplv1-" version ".tar.gz")) (sha256 (base32 - "1c3ksd02dfqvzc3zk4x282b6gxr1l4ya9c4l04dcn55mrymgn2zz")))) + "0d05b03knrwh1zr4p0kcyn58scy6a392f0xxm78cqf0gikd3bw5c")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; there are no tests @@ -2359,7 +2361,7 @@ effects.") lv2 libsndfile alsa-lib - non-session-manager + new-session-manager liblo qtbase-5)) (native-inputs @@ -2374,7 +2376,7 @@ effects.") (define-public padthv1 (package (name "padthv1") - (version "0.9.24") + (version "0.9.25") (source (origin (method url-fetch) (uri @@ -2382,7 +2384,7 @@ effects.") "/padthv1-" version ".tar.gz")) (sha256 (base32 - "0p3qp2lzhmj8i17bcqzsi0782nz7s90hx3s8vax6bxl4mqxsvnxb")))) + "11fa2794g7dqsiw674wr2m4k0xdw89imqwa8mgms0igskxxbvjka")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; there are no tests @@ -2390,7 +2392,7 @@ effects.") (list jack-1 lv2 alsa-lib - non-session-manager + new-session-manager liblo fftwf qtbase-5)) @@ -2507,48 +2509,6 @@ modification devices that brought world-wide fame to the names and products of Laurens Hammond and Don Leslie.") (license license:gpl2+))) -(define-public beast - (package - (name "beast") - (version "0.10.0") - (source (origin - (method url-fetch) - (uri (string-append "https://testbit.eu/pub/dists/beast/beast-" - version ".tar.xz")) - (sha256 - (base32 - "1jzzmfwssklzw8fvvil04n8csc0zm99fnd9p2xa7c0xchg37lvhn")))) - (build-system gnu-build-system) - (arguments - '(#:parallel-build? #f)) ; Race conditions cause build failures - (inputs - `(("rapicorn" ,rapicorn) - ("guile" ,guile-1.8) - ("python" ,python-2) - ("libgnomecanvas" ,libgnomecanvas) - ("libogg" ,libogg) - ("libmad" ,libmad) - ("flac" ,flac) - ("alsa-lib" ,alsa-lib) - ("libvorbis" ,libvorbis) - ("gettext" ,gettext-minimal))) - (native-inputs - `(("pkg-config" ,pkg-config) - ("glib:bin" ,glib "bin") - ("cython" ,python2-cython) - ("perl" ,perl) - ("perl-xml-parser" ,perl-xml-parser))) - (home-page "https://testbit.eu/wiki/Beast_Home") - (synopsis "Music composition and modular synthesis environment") - (description - "Beast is a music composition and modular synthesis application. It -supports a wide range of standards in the field, such as MIDI, various audio -file formats and LADSPA modules. It allows for multitrack editing, real-time -synthesis, 32bit audio rendering, precise timing down to sample granularity, -on-demand and partial loading of wave files, on the fly decoding, stereo -mixing, FFT scopes, MIDI automation and full scriptability in Scheme.") - (license license:gpl3+))) - (define-public bristol (package (name "bristol") @@ -2605,7 +2565,7 @@ is subjective.") (define-public tuxguitar (package (name "tuxguitar") - (version "1.5.4") + (version "1.5.5") (source (origin (method url-fetch) (uri (string-append @@ -2613,7 +2573,7 @@ is subjective.") version "/tuxguitar-" version "-src.tar.gz")) (sha256 (base32 - "0fjhf56lhlhm84v08917xp4yw8y6d0qajm4qiy1gfp8dm74whwwg")))) + "1613aiq3x48l2nx1zxqh1cif6i5izkixfld8c9wri9nfv405b19f")))) (build-system ant-build-system) (arguments `(#:build-target "build" @@ -2651,8 +2611,7 @@ is subjective.") "TuxGuitar-gm-utils" "TuxGuitar-alsa" "TuxGuitar-midi" - "TuxGuitar-midi-ui")) - #t))) + "TuxGuitar-midi-ui"))))) (add-after 'build 'build-jni (lambda _ (setenv "CC" "gcc") @@ -2711,8 +2670,7 @@ is subjective.") " -Djava.library.path=" out "/lib" " org.herac.tuxguitar.app.TGMainSingleton" " \"$1\" \"$2\""))))) - (chmod (string-append bin "/tuxguitar") #o555) - #t)))))) + (chmod (string-append bin "/tuxguitar") #o555))))))) (inputs (list alsa-lib java-swt)) (home-page "http://tuxguitar.com.ar/") @@ -3324,14 +3282,14 @@ from the command line.") (define-public qtractor (package (name "qtractor") - (version "0.9.25") + (version "0.9.26") (source (origin (method url-fetch) (uri (string-append "https://downloads.sourceforge.net/qtractor/" "qtractor-" version ".tar.gz")) (sha256 (base32 - "0x99yjabznr2pl867j3h9zdsjzkxzxm2c0xk1xwk50gfp8gwg9bh")))) + "02r4dhhbn3dzhqi5cnm2vwimqk10bdlpy233n4a3590qg4krnqkd")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; no "check" target @@ -3445,11 +3403,11 @@ analogue-like user interface.") (define-public mod-host ;; The last release was in 2014 but since then hundreds of commits have ;; been made. - (let ((commit "1726ad06b11323da7e1aaed690ff8aef91f702b5") - (revision "3")) + (let ((commit "cdd30ddbd2cc916be8a0364275071c3d8335b3a7") + (revision "4")) (package (name "mod-host") - (version (string-append "0.10.6-" revision "." (string-take commit 9))) + (version (git-version "0.10.6" revision commit)) (source (origin (method git-fetch) (uri (git-reference @@ -3457,34 +3415,33 @@ analogue-like user interface.") (commit commit))) (sha256 (base32 - "1nrd37c35w6z6ldczgrwmmd9hx1n3zyvcjcgb3mi4cygqdanvspv")) - (file-name (string-append name "-" version "-checkout")))) + "1xnflvcyj071gn9nhv5dynd0v85nq99sz1wn3adlj43l5m4fbx3a")) + (file-name (git-file-name name version)))) (build-system gnu-build-system) (arguments - `(#:tests? #f ; no tests included - #:make-flags - (list (string-append "PREFIX=" (assoc-ref %outputs "out")) - "CC=gcc") - #:phases - (modify-phases %standard-phases - (delete 'configure) - (add-after 'unpack 'fix-jack-installation-directory - (lambda _ - ;; Do not attempt to install files to output of "jack" package. - (substitute* "Makefile" - (("\\$\\(shell pkg-config --variable=libdir jack\\)") - "lib")) - #t))))) + (list + #:tests? #f ; no tests included + #:make-flags + #~(list (string-append "PREFIX=" #$output) "CC=gcc") + #:phases + #~(modify-phases %standard-phases + (delete 'configure) + (add-after 'unpack 'fix-jack-installation-directory + (lambda _ + ;; Do not attempt to install files to output of "jack" package. + (substitute* "Makefile" + (("\\$\\(shell pkg-config --variable=libdir jack\\)") + "lib"))))))) (inputs (list lilv fftw fftwf lv2 - jack-1 + jack-2 readline)) (native-inputs - `(("pkg-config" ,pkg-config) - ("python" ,python-2))) + (list pkg-config + python-wrapper)) (home-page "https://github.com/moddevices/mod-host") (synopsis "LV2 host for Jack controllable via socket or command line") (description "mod-host is an LV2 plugin host for JACK, controllable via @@ -3675,9 +3632,6 @@ MusicBrainz database.") ;; 'musicbrainzngs/compat.py' is ISC licensed. (license (list license:bsd-2 license:isc)))) -(define-public python2-musicbrainzngs - (package-with-python2 python-musicbrainzngs)) - (define-public python-isrcsubmit (package (name "python-isrcsubmit") @@ -3699,39 +3653,6 @@ Standard Recording Code} (ISRCs) from audio CDs and submit them to @url{https://musicbrainz.org/, MusicBrainz}.") (license license:gpl3+))) -(define-public python2-pyechonest - (package - (name "python2-pyechonest") - (version "9.0.0") - (source (origin - (method url-fetch) - (uri (pypi-uri "pyechonest" version)) - (sha256 - (base32 - "1584nira3rkiman9dm81kdshihmkj21s8navndz2l8spnjwb790x")))) - (build-system python-build-system) - (arguments - `(;; Python 3 is not supported: - ;; https://github.com/echonest/pyechonest/issues/42 - #:python ,python-2)) - (home-page "https://github.com/echonest/pyechonest") - (synopsis "Python interface to The Echo Nest APIs") - (description "Pyechonest is a Python library for the Echo Nest API. With -Pyechonest you have Python access to the entire set of API methods including: - -@enumerate -@item artist - search for artists by name, description, or attribute, and get -back detailed information about any artist including audio, similar artists, -blogs, familiarity, hotttnesss, news, reviews, urls and video. -@item song - search songs by artist, title, description, or attribute (tempo, -duration, etc) and get detailed information back about each song, such as -hotttnesss, audio_summary, or tracks. -@item track - upload a track to the Echo Nest and receive summary information -about the track including key, duration, mode, tempo, time signature along with -detailed track info including timbre, pitch, rhythm and loudness information. -@end enumerate\n") - (license license:bsd-3))) - (define-public python-pylast (package (name "python-pylast") @@ -4478,91 +4399,6 @@ filters, crossovers, simple gain plugins without zipper noise, switch box plugins, a switch trigger, a toggle switch, and a peakmeter.") (license license:gpl2+)))) -(define-public ingen - (let ((commit "cc4a4db33f4d126a07a4a498e053c5fb9a883be3") - (revision "2")) - (package - (name "ingen") - (version (string-append "0.0.0-" revision "." - (string-take commit 9))) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://git.drobilla.net/ingen.git") - (commit commit))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "1wg47vjw9djn99gbnsl2bcwj4xhdid61m4wrbn2nlp797flj91ic")))) - (build-system waf-build-system) - (arguments - `(#:python ,python-2 - #:tests? #f ; no "check" target - #:configure-flags (list "--no-webkit") - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-wscript - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (substitute* "wscript" - ;; FIXME: Our version of lv2specgen.py does not behave as - ;; expected. Maybe this requires a development version of - ;; LV2. - (("lv2specgen.py") "touch ingen.lv2/ingen.html; echo") - ;; Add libraries to RUNPATH. - (("^(.+)target.*= 'src/ingen/ingen'," line prefix) - (string-append prefix - "linkflags=[\"-Wl,-rpath=" - out "/lib" "\"]," line))) - (substitute* '("src/wscript" - "src/server/wscript") - ;; Add libraries to RUNPATH. - (("bld.env.PTHREAD_LINKFLAGS" line) - (string-append line - " + [\"-Wl,-rpath=" out "/lib" "\"]"))) - (substitute* "src/client/wscript" - ;; Add libraries to RUNPATH. - (("^(.+)target.*= 'ingen_client'," line prefix) - (string-append prefix - "linkflags=[\"-Wl,-rpath=" - out "/lib" "\"]," line))) - (substitute* "src/gui/wscript" - ;; Add libraries to RUNPATH. - (("^(.+)target.* = 'ingen_gui.*" line prefix) - (string-append prefix - "linkflags=[\"-Wl,-rpath=" - out "/lib" "\"]," line)))) - #t))))) - (inputs - (list boost - python-rdflib - python - jack-1 - lv2 - lilv - raul-devel - ganv - suil - serd - sord - sratom - gtkmm-2)) - (native-inputs - (list pkg-config python-pygments)) - (home-page "https://drobilla.net/software/ingen") - (synopsis "Modular audio processing system") - (description "Ingen is a modular audio processing system for JACK and -LV2 based systems. Ingen is built around LV2 technology and a strict -separation of engine from user interface. The engine is controlled -exclusively through a protocol, and can execute as a headless process, with an -in-process GUI, or as an LV2 plugin. The GUI can run as a program which -communicates over a Unix or TCP/IP socket, or as an embeddable LV2 GUI which -communicates via LV2 ports. Any saved Ingen graph can be loaded as an LV2 -plugin on any system where Ingen is installed. This allows users to visually -develop custom plugins for use in other applications without programming.") - (license license:agpl3+)))) - (define-public qmidiarp (package (name "qmidiarp") @@ -5008,7 +4844,7 @@ studio.") (define-public gsequencer (package (name "gsequencer") - (version "3.14.5") + (version "3.18.2") (source (origin (method git-fetch) @@ -5017,7 +4853,7 @@ studio.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "18pfv4w30nng1p0vgmrnkfm38522iq1x1bj8iz4qfiffiv56dsnz")))) + (base32 "1lkn7rfrjvmds62i69igcgmic2snscgb9f6gdg5nzyfkis1fq5iz")))) (build-system glib-or-gtk-build-system) (arguments `(#:phases @@ -5672,45 +5508,6 @@ with error and volume history, and advanced features.") ;; are under LGPL2.1. (license (list license:gpl2+ license:lgpl2.1)))) -(define-public mloop - (let ((commit "adebff98b0b4dc5872a03acb82e89c77cb29c127") - (revision "0")) - (package - (name "mloop") - (version (git-version "0.0.1" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "http://git.fuzzle.org/mloop") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "175gxvg5slq0bllcx1c381rjlq3xpxww8c3kpiw5i2kfr4m52myz")))) - (build-system waf-build-system) - (arguments - `(#:python ,python-2 - #:tests? #f)) ; no "check" target - (inputs - (list jack-1 ncurses)) - (native-inputs - (list pkg-config)) - (home-page "https://fuzzle.org/~petern/mloop.html") - (synopsis "Live MIDI looper") - (description "mloop is a live MIDI looping system, using jack-midi. -Loops are recorded, optionally with beat quantization, and can then be played -back, either once or looping. A 'note cache' system is implemented to -remember which notes are pressed and their velocities. This allows for a loop -to start off with the currently pressed notes, making seamless loops much -easier to perform. Features include: - -@itemize -@item Quantisation; end a loop on a beat exactly. -@item Delayed recording; wait for a MIDI event before starting a loop record. -@item Adjust tempo; Playback speed of loops can be adjusted on the fly. -@end itemize\n") - (license license:gpl2)))) - (define-public pragha (package (name "pragha") @@ -6881,3 +6678,91 @@ choice.") streaming audio server.") (home-page "https://musikcube.com/") (license license:bsd-3))) + +(define-public quodlibet + (package + (name "quodlibet") + (version "4.5.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/quodlibet/quodlibet") + (commit (string-append "release-" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1i5k93k3bfp7hpcwkbr865mbj9jam3jv2a5k1bazcyp4f5vdrb0v")))) + (build-system python-build-system) + (arguments + (list + #:modules '((guix build python-build-system) + ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:) + (guix build utils)) + #:imported-modules `((guix build python-build-system) + ,@%glib-or-gtk-build-system-modules) + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'pre-check + (lambda _ + (setenv "HOME" (getcwd)))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (if tests? + (invoke "xvfb-run" "pytest" + ;; needs network + "--ignore=tests/test_browsers_iradio.py" + ;; broken upstream + "--disable-warnings" + "--ignore=tests/quality") + (format #t "test suite not run~%")))) + (add-after 'install 'glib-or-gtk-wrap ; ensure icons loaded + (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)) + (add-after 'install 'wrap-extra-paths + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (gi-typelib-path (getenv "GI_TYPELIB_PATH")) + (gst-plugins-path (getenv "GST_PLUGIN_SYSTEM_PATH"))) + (for-each + (lambda (prog) + (wrap-program (string-append out "/bin/" prog) + `("GI_TYPELIB_PATH" ":" = (,gi-typelib-path)) + `("GST_PLUGIN_SYSTEM_PATH" ":" suffix (,gst-plugins-path)))) + '("exfalso" "quodlibet")))))))) + (native-inputs (list xvfb-run gettext-minimal)) + (inputs + (list adwaita-icon-theme + bash-minimal + glib + gsettings-desktop-schemas + gst-plugins-bad + gst-plugins-base + gst-plugins-good + gst-plugins-ugly + gstreamer + gtk+ + gtksourceview ; undo, redo, multiline text fields + hicolor-icon-theme + keybinder-3.0 ; keybindings outside of GNOME + librsvg + libsoup-minimal-2 + python + python-cheetah + python-dbus + python-feedparser + python-gst + python-iniconfig + python-musicbrainzngs + python-mutagen + python-pycairo + python-pygobject + python-pyinotify + python-pytest + python-sgmllib3k + python-toml)) + (home-page "https://github.com/quodlibet/quodlibet") + (synopsis "Music manager and player") + (description "Quod Libet provides several ways to browse and view your +local music library, along with flexible search capabilities. It includes +a tag editor, which can also be invoked as a standalone program, and further +supports streaming audio and feeds (such as podcasts).") + (license license:gpl2+))) |