X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/e6e09dc9c53df38e48be331a5f930ef6d52454f4..08209b3bd757c708e528db2df20fc3410a040a30:/gnu/packages/music.scm diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index 9119817056..61e34081be 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014 Eric Bavier +;;; Copyright © 2014, 2019 Eric Bavier ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus ;;; Copyright © 2015 Paul van der Walt ;;; Copyright © 2016 Al McElrath @@ -11,17 +11,19 @@ ;;; Copyright © 2017 ng0 ;;; Copyright © 2017 Rodger Fox ;;; Copyright © 2017, 2018, 2019 Nicolas Goaziou -;;; Copyright © 2017, 2018 Pierre Langlois +;;; Copyright © 2017, 2018, 2019 Pierre Langlois ;;; Copyright © 2017 Arun Isaac ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2018 nee ;;; Copyright © 2018 Stefan Reichör ;;; Copyright © 2018 Pierre Neidhardt -;;; Copyright © 2018 Ludovic Courtès +;;; Copyright © 2018, 2019 Ludovic Courtès ;;; Copyright © 2018 Björn Höfling ;;; Copyright © 2019 Gabriel Hondet ;;; Copyright © 2019 Timotej Lazar ;;; Copyright © 2019 Jakob L. Kreuze +;;; Copyright © 2019 raingloom +;;; Copyright © 2019 David Wilson ;;; ;;; This file is part of GNU Guix. ;;; @@ -352,6 +354,7 @@ playing your music.") (inputs `(("alsa-lib" ,alsa-lib) ("ao" ,ao) + ("faad2" ,faad2) ("ffmpeg" ,ffmpeg) ("flac" ,flac) ("jack" ,jack-1) @@ -591,12 +594,17 @@ enable professional yet simple and intuitive pattern-based drum programming.") "prefix=~@*~a~@ libdir=${prefix}/lib~@ includedir=${prefix}/include~@ + + Name: libid3tag~@ + Description:~@ + Version:~@ Libs: -L${libdir} -lid3tag -lz~@ Cflags: -I${includedir}~%" libid3tag))) (setenv "PKG_CONFIG_PATH" (string-append (getenv "PKG_CONFIG_PATH") - ":" (getcwd) "/pkgconfig"))))) + ":" (getcwd) "/pkgconfig")) + #t))) (add-after 'unpack 'patch-makefile (lambda _ (substitute* "Makefile.in" @@ -604,7 +612,8 @@ enable professional yet simple and intuitive pattern-based drum programming.") ;; script with /bin/sh hard-coded. (("/bin/sh") (which "sh")) ;; Don't create 'icon-theme.cache'. - (("gtk-update-icon-cache") "true"))))))) + (("gtk-update-icon-cache") "true")) + #t))))) (home-page "https://wiki.gnome.org/Apps/EasyTAG") (synopsis "Simple application for viewing and editing tags in audio files") (description @@ -775,6 +784,11 @@ audio and video).") #:tests? #f ; no "check" target #:phases (modify-phases %standard-phases + (add-after 'unpack 'be-permissive + (lambda _ + (substitute* "SConstruct" + (("'-Wall'") "'-Wall', '-fpermissive'")) + #t)) (add-after 'unpack 'replace-removed-scons-syntax (lambda _ (substitute* "SConstruct" @@ -1357,7 +1371,7 @@ users to select LV2 plugins and run them with jalv.") (define-public synthv1 (package (name "synthv1") - (version "0.9.8") + (version "0.9.11") (source (origin (method url-fetch) (uri @@ -1365,7 +1379,7 @@ users to select LV2 plugins and run them with jalv.") "/synthv1-" version ".tar.gz")) (sha256 (base32 - "15kabmxp38wqvavs5hr1dqasjjf1j977kzqggxfmzyi3y5fan3hj")))) + "116k2vca9dygvsd684wvxm61p0l1xrrgdph4qrrprlsr6vj0llgm")))) (build-system gnu-build-system) (arguments `(#:tests? #f)) ; there are no tests @@ -1422,7 +1436,7 @@ effects.") (define-public samplv1 (package (name "samplv1") - (version "0.9.8") + (version "0.9.11") (source (origin (method url-fetch) (uri @@ -1430,7 +1444,7 @@ effects.") "/samplv1-" version ".tar.gz")) (sha256 (base32 - "138kd9szgn3b97s7crhsyj8pgwb0bn4l9knd4zliqjgj2f1bs9x0")))) + "17zs8kvvwqv00bm4lxpn09a5hxjlbz7k5mkl3k7jspw7rqn3djf2")))) (build-system gnu-build-system) (arguments `(#:tests? #f)) ; there are no tests @@ -1500,14 +1514,6 @@ special variant of additive synthesis.") (base32 "1882pfcmf3rqg3vd4qflzkppcv158d748i603spqjbxqi8z7x7w0")))) (build-system gnu-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'configure 'set-flags - (lambda _ - ;; Compile with C++11, required by gtkmm. - (setenv "CXXFLAGS" "-std=c++11") - #t))))) (inputs `(("alsa-lib" ,alsa-lib) ("jack" ,jack-1) @@ -1534,7 +1540,7 @@ reverb effects.") (define-public setbfree (package (name "setbfree") - (version "0.8.8") + (version "0.8.9") (source (origin (method git-fetch) (uri (git-reference @@ -1543,7 +1549,7 @@ reverb effects.") (file-name (git-file-name name version)) (sha256 (base32 - "15dr1nyj69wc9jnjq5z8ril90a3c0mcrii4zjyz0z3h7dhia3382")))) + "1lpsa64xvwa9xbbp8zcwxy5w0daffc7fziny2pizabqh7m9xqjl2")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no "check" target @@ -1781,7 +1787,7 @@ export.") (define-public pd (package (name "pd") - (version "0.49-0") + (version "0.50-0") (source (origin (method url-fetch) (uri @@ -1789,10 +1795,10 @@ export.") version ".src.tar.gz")) (sha256 (base32 - "18rzqbpgnnvyslap7k0ly87aw1bbxkb0rk5agpr423ibs9slxq6j")))) + "0hg4n5b55f650qsc0mjx559072dp7vfza7w0pvk6rk2l831cvsps")))) (build-system gnu-build-system) (arguments - `(#:tests? #f ; no "check" target + `(#:tests? #f ; no "check" target #:configure-flags (list "--enable-jack" @@ -1998,14 +2004,14 @@ browser.") (define-public drumstick (package (name "drumstick") - (version "1.1.2") + (version "1.1.3") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/drumstick/" version "/drumstick-" version ".tar.bz2")) (sha256 (base32 - "0kljqyqj7s1i2z52i24x7ail1bywn6dcxxfbad5c59drm8wv94bp")))) + "1n9wvg79yvkygrkc8xd8pgrd3d7hqmr7gh24dccf0px23lla9b3m")))) (build-system cmake-build-system) (arguments `(#:tests? #f ; no test target @@ -2041,6 +2047,52 @@ multiplatform realtime MIDI I/O library is also provided with various output backends, including ALSA, OSS, Network and FluidSynth.") (license license:gpl2+))) +(define-public vmpk + (package + (name "vmpk") + (version "0.7.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/vmpk/vmpk/" + version "/vmpk-" version ".tar.bz2")) + (sha256 + (base32 + "1i3hnvdgz46n4k5v0q4jhgh7nkh0s390ix4nqr69z0q3026yp0p6")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f ; no test target + #:phases + (modify-phases %standard-phases + (add-before 'configure 'fix-docbook + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "cmake_admin/CreateManpages.cmake" + (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl") + (string-append (assoc-ref inputs "docbook-xsl") + "/xml/xsl/docbook-xsl-" + ,(package-version docbook-xsl) + "/manpages/docbook.xsl"))) + #t))))) + (inputs + `(("drumstick" ,drumstick) + ("qtbase" ,qtbase) + ("qtsvg" ,qtsvg) + ("qttools" ,qttools) + ("qtx11extras" ,qtx11extras))) + (native-inputs + `(("libxslt" ,libxslt) ;for xsltproc + ("docbook-xsl" ,docbook-xsl) + ("pkg-config" ,pkg-config))) + (home-page "http://vmpk.sourceforge.net") + (synopsis "Virtual MIDI piano keyboard") + (description + "Virtual MIDI Piano Keyboard is a MIDI events generator and receiver. It +doesn't produce any sound by itself, but can be used to drive a MIDI +synthesizer (either hardware or software, internal or external). You can use +the computer's keyboard to play MIDI notes, and also the mouse. You can use +the Virtual MIDI Piano Keyboard to display the played MIDI notes from another +instrument or MIDI file player.") + (license license:gpl3+))) + (define-public zynaddsubfx (package (name "zynaddsubfx") @@ -2090,7 +2142,7 @@ capabilities, custom envelopes, effects, etc.") (define-public yoshimi (package (name "yoshimi") - (version "1.5.10.2") + (version "1.6.0.1") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/yoshimi/" @@ -2098,10 +2150,10 @@ capabilities, custom envelopes, effects, etc.") "/yoshimi-" version ".tar.bz2")) (sha256 (base32 - "1rr99qkq80s8l2iv3x4ccxan07m15dvmd5s9b10386bfjbwbya01")))) + "140f2k4akj39pny8c7i794q125415gyvmy4rday0il5ncp3glik4")))) (build-system cmake-build-system) (arguments - `(#:tests? #f ; there are no tests + `(#:tests? #f ; there are no tests #:configure-flags (list (string-append "-DCMAKE_INSTALL_DATAROOTDIR=" (assoc-ref %outputs "out") "/share")) @@ -2331,52 +2383,46 @@ follows a traditional multi-track tape recorder control paradigm.") (license license:gpl2+))) (define-public ams-lv2 - ;; Version 1.2.1 built with Python 3.7 raises an error in the waf-script. - ;; Therefore, we take two more commmits than 1.2.1 that introduce an updated - ;; waf-script and fix one error. - (let ((commit "377d166db54a787b48979171c5652d2eb4f1bbb5") - (revision "1")) - (package - (name "ams-lv2") - (version (git-version "1.2.1" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/blablack/ams-lv2.git") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1ndgxcxjxwidg7436k0nb5clxkyi878k1j999sbbd1gk2fm0kcqm")))) - (build-system waf-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'remove-sse-flags - (lambda* (#:key system #:allow-other-keys) - (unless (or (string-prefix? "x86_64" system) - (string-prefix? "i686" system)) - (substitute* "wscript" - (("'-msse', '-mfpmath=sse', ") ""))) - #t))) - #:tests? #f)) ; no tests - (inputs - `(("lv2" ,lv2) - ("lvtk" ,lvtk) - ("gtkmm" ,gtkmm-2) - ("gtk" ,gtk+-2) - ("cairo" ,cairo) - ("fftw" ,fftw))) - (native-inputs - `(("pkg-config" ,pkg-config))) - (home-page "https://objectivewave.wordpress.com/ams-lv2/") - (synopsis "Port of Alsa Modular Synth internal modules into LV2") - (description "This set of LV2 plugins is a port of the internal modules + (package + (name "ams-lv2") + (version "1.2.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/blablack/ams-lv2.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1lz2mvk4gqsyf92yxd3aaldx0d0qi28h4rnnvsaz4ls0ccqm80nk")))) + (build-system waf-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'remove-sse-flags + (lambda* (#:key system #:allow-other-keys) + (unless (or (string-prefix? "x86_64" system) + (string-prefix? "i686" system)) + (substitute* "wscript" + (("'-msse', '-mfpmath=sse', ") ""))) + #t))) + #:tests? #f)) ; no tests + (inputs + `(("cairo" ,cairo) + ("fftw" ,fftw) + ("gtk" ,gtk+-2) + ("gtkmm" ,gtkmm-2) + ("lv2" ,lv2) + ("lvtk" ,lvtk))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "https://github.com/blablack/ams-lv2") + (synopsis "Port of Alsa Modular Synth internal modules into LV2") + (description "This set of LV2 plugins is a port of the internal modules found in Alsa Modular Synth. These plugins are used to create modular synthesizers and contain: VCO, VCF, VCA, LFO, slew limiter, envelopes, sample and hold, etc.") - (license license:gpl2)))) + (license license:gpl2))) (define-public gxtuner (package @@ -2741,7 +2787,7 @@ websites such as Libre.fm.") (add-before 'build 'change-directory (lambda _ (chdir "instantmusic-0.1") #t)) - (add-before 'check 'fix-file-permissions + (add-before 'install 'fix-file-permissions (lambda _ ;; Fix some read-only files that would cause a build failure (for-each (cut chmod <> #o644) @@ -2757,14 +2803,13 @@ Songs can be searched by artist, name or even by a part of the song text.") (define-public beets (package (name "beets") - (version "1.4.7") + (version "1.4.9") (source (origin (method url-fetch) (uri (pypi-uri "beets" version)) - (patches (search-patches "beets-python-3.7-fix.patch")) (sha256 (base32 - "0w3gz69s9gf5ih69d4sddgh7ndj7658m621bp742zldvjakdncrs")))) + "0m40rjimvfgy1dv04p8f8d5dvi2855v4ix99a9xr900cmcn476yj")))) (build-system python-build-system) (arguments `(#:phases @@ -2773,12 +2818,6 @@ Songs can be searched by artist, name or even by a part of the song text.") (lambda _ (setenv "HOME" (string-append (getcwd) "/tmp")) #t)) - (add-after 'unpack 'make-python3.7-compatible - (lambda _ - ;; See . - (substitute* "beets/autotag/hooks.py" - (("re\\._pattern_type") "re.Pattern")) - #t)) (replace 'check (lambda _ (invoke "nosetests" "-v")))))) @@ -2802,7 +2841,7 @@ Songs can be searched by artist, name or even by a part of the song text.") ("python-mutagen" ,python-mutagen) ("python-pyyaml" ,python-pyyaml) ("python-unidecode" ,python-unidecode))) - (home-page "http://beets.io") + (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 @@ -3350,8 +3389,9 @@ slow gear audio effect to produce volume swells.")))) a simulation of an analog Wah pedal with switchless activation.")))) (define-public rkrlv2 - (let ((commit "d8c17d3c976107e5c012970276d7cf0aa059f15b") - (revision "1")) + ;; This commit corresponds to the beta_3 tag + (let ((commit "7edcb4e29a358623bfd57fa2c27e5da60adfcec3") + (revision "2")) (package (name "rkrlv2") (version (git-version "0" revision commit)) @@ -3362,7 +3402,7 @@ a simulation of an analog Wah pedal with switchless activation.")))) (commit commit))) (sha256 (base32 - "035z068rlafb7ibgqf34ck2lm4fab8yzlx41qh061x2xi4hxkvp0")) + "16i4ajrib7kb0abdcn4901g8a4lkwkp2fyqyms38dhqq84slyfjs")) (file-name (git-file-name name version)))) (build-system cmake-build-system) (arguments '(#:tests? #f)) ; there are no tests @@ -3515,8 +3555,7 @@ develop custom plugins for use in other applications without programming.") (build-system gnu-build-system) (arguments `(#:configure-flags - (list "--enable-qt5" - "CXXFLAGS=-std=gnu++11"))) + (list "--enable-qt5"))) (inputs `(("qtbase" ,qtbase) ("alsa-lib" ,alsa-lib) @@ -3547,8 +3586,7 @@ modules running in parallel.") (build-system gnu-build-system) (arguments `(#:configure-flags - (list "--enable-qt5" - "CXXFLAGS=-std=gnu++11"))) + (list "--enable-qt5"))) (inputs `(("qtbase" ,qtbase) ("alsa-lib" ,alsa-lib))) @@ -3577,9 +3615,6 @@ defined as tabs in the main control surface.") "12dphdhnvfk1k0vmagi1v2lhyxjyj1j3cz6ksjw0ydcvid1x8ap2")) (patches (search-patches "seq24-rename-mutex.patch")))) (build-system gnu-build-system) - (arguments - `(#:configure-flags - (list "CXXFLAGS=-std=gnu++11"))) (inputs `(("gtkmm" ,gtkmm-2) ("alsa-lib" ,alsa-lib) @@ -3739,7 +3774,7 @@ audio samples and various soft sythesizers. It can receive input from a MIDI ke (define-public musescore (package (name "musescore") - (version "3.2.3") + (version "3.3") (source (origin (method git-fetch) (uri (git-reference @@ -3748,7 +3783,7 @@ audio samples and various soft sythesizers. It can receive input from a MIDI ke (file-name (git-file-name name version)) (sha256 (base32 - "17wx1wl8ns2k31qvrr888dxnrsa13vazg04zh2sn2q4vzd869a7v")) + "15ckjwvp3xigjkzmp1ddzvlm4d0vlk9i1axyfxg3hr2sia84yxvi")) (modules '((guix build utils))) (snippet ;; Un-bundle OpenSSL and remove unused libraries. @@ -3766,8 +3801,7 @@ audio samples and various soft sythesizers. It can receive input from a MIDI ke (build-system cmake-build-system) (arguments `(#:configure-flags - `("-DBUILD_CRASH_REPORTER=OFF" - "-DBUILD_WEBENGINE=OFF" + `("-DBUILD_WEBENGINE=OFF" "-DDOWNLOAD_SOUNDFONT=OFF" "-DUSE_SYSTEM_FREETYPE=ON") ;; There are tests, but no simple target to run. The command used to @@ -4000,43 +4034,32 @@ notation and includes basic support for digital audio.") (license license:gpl2))) (define-public patchmatrix - ;; There have been no releases for more than a year. - (let ((commit "a0b0b1e791f4574d5abd059cfe1819c71e8b18d5") - (revision "1")) - (package - (name "patchmatrix") - (version (git-version "0.12.0" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/OpenMusicKontrollers/patchmatrix.git") - (commit commit))) - (file-name (string-append "patchmatrix-" version "-checkout")) - (sha256 - (base32 - "0pph4ra7aci3rbpqvvr564pi16vxrk448bmvp8985cd9lbjlrp3m")))) - (build-system meson-build-system) - (arguments - '(#:tests? #f ; no test target - #:phases - (modify-phases %standard-phases - (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable - (lambda* (#:key outputs #:allow-other-keys) - (map make-file-writable - (find-files (assoc-ref outputs "out") ".*\\.gz$")) - #t))))) - (inputs - `(("jack" ,jack-1) - ("lv2" ,lv2) - ("mesa" ,mesa))) - (native-inputs - `(("pkg-config" ,pkg-config))) - (home-page "https://github.com/OpenMusicKontrollers/patchmatrix") - (synopsis "Simple JACK patch bay") - (description "PatchMatrix is a patch bay for the JACK audio connection + (package + (name "patchmatrix") + (version "0.16.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/OpenMusicKontrollers/patchmatrix.git") + (commit version))) + (file-name (git-file-name "patchmatrix" version)) + (sha256 + (base32 + "020vp7zzxxzzjfic57vkpg68dm8hi98ilr1bj88xjsv6i47xmjbn")))) + (build-system meson-build-system) + (arguments '(#:tests? #f)) ; no test target + (inputs + `(("jack" ,jack-1) + ("lv2" ,lv2) + ("mesa" ,mesa))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "https://github.com/OpenMusicKontrollers/patchmatrix") + (synopsis "Simple JACK patch bay") + (description "PatchMatrix is a patch bay for the JACK audio connection kit. It provides a patch bay in flow matrix style for audio, MIDI, CV, and OSC connections.") - (license license:artistic2.0)))) + (license license:artistic2.0))) (define-public sorcer (package @@ -4474,3 +4497,184 @@ discard bad quality ones. controller.") (home-page "https://github.com/charlesfleche/lpd8editor") (license license:expat))) + +(define-public fmit + (package + (name "fmit") + (version "1.2.13") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/gillesdegottex/fmit/") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1qyskam053pvlap1av80rgp12pzhr92rs88vqs6s0ia3ypnixcc6")))) + (build-system gnu-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (delete 'configure) + (add-before 'build 'qmake + (lambda _ + (let ((out (assoc-ref %outputs "out"))) + (invoke "qmake" + "fmit.pro" + (string-append "PREFIX=" out) + (string-append "PREFIXSHORTCUT=" out) + "CONFIG+=acs_qt acs_alsa acs_jack acs_portaudio")))) + (add-after 'install 'wrap-executable + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (wrap-program (string-append out "/bin/fmit") + `("QT_PLUGIN_PATH" ":" prefix + ,(map (lambda (label) + (string-append (assoc-ref inputs label) + "/lib/qt5/plugins")) + '("qtbase" "qtmultimedia" "qtsvg"))) + `("QML2_IMPORT_PATH" ":" prefix + ,(map (lambda (label) + (string-append (assoc-ref inputs label) + "/lib/qt5/qml")) + '("qtmultimedia")))) + #t)))))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("fftw" ,fftw) + ("jack" ,jack-1) + ("portaudio" ,portaudio) + ("qtbase" ,qtbase) + ("qtmultimedia" ,qtmultimedia) + ("qtsvg" ,qtsvg))) + (native-inputs + `(("gettext" ,gnu-gettext) + ("hicolor-icon-theme" ,hicolor-icon-theme) + ("itstool" ,itstool) + ("qttools" ,qttools))) + (synopsis "Musical instrument tuner") + (description "FMIT is a graphical utility for tuning musical instruments, +with error and volume history, and advanced features.") + (home-page "https://gillesdegottex.github.io/fmit/") + ;; Most of the code is under GPL2+, but some abstract or helper classes + ;; 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 + `(("jack" ,jack-1) + ("ncurses" ,ncurses))) + (native-inputs + `(("pkg-config" ,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") + (version "1.3.4") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/pragha-music-player/pragha/" + "releases/download/v" version "/pragha-" version + ".tar.bz2")) + (sha256 + (base32 + "19kbhq99bkimx3aqrdzln0vlr4slkpx6kq66j731jvqyq76nlkp5")))) + (build-system glib-or-gtk-build-system) + (native-inputs + `(("intltool" ,intltool) + ("pkg-config" ,pkg-config))) + (inputs + `(("glib" ,glib) + ("grilo" ,grilo) + ("gstreamer" ,gstreamer) + ("gst-plugins-base" ,gst-plugins-base) + ("gst-plugins-good" ,gst-plugins-good) + ("gtk+" ,gtk+) + ("libcddb" ,libcddb) + ("libcdio" ,libcdio) + ("libcdio-paranoia" ,libcdio-paranoia) + ("libgudev" ,libgudev) + ("libnotify" ,libnotify) + ("libpeas" ,libpeas) + ("libsoup" ,libsoup) + ("sqlite" ,sqlite) + ("taglib" ,taglib))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'install 'wrap-program + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH"))) + (wrap-program (string-append out "/bin/pragha") + `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))) + #t)))))) + (home-page "https://pragha-music-player.github.io") + (synopsis "Music player") + (description "Pragha is a lightweight music player based on Gtk and +sqlite. It is constructed to be fast, light, and simultaneously tries to be +complete without obstructing your daily work.") + (license license:gpl3+))) + +(define-public playerctl + (package + (name "playerctl") + (version "2.0.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/altdesktop/playerctl.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1f3njnpd52djx3dmhh9a8p5a67f0jmr1gbk98icflr2q91149gjz")))) + (build-system meson-build-system) + (arguments + `(#:configure-flags '("-Dintrospection=false" "-Dgtk-doc=false"))) + (inputs `(("python-pygobject" ,python-pygobject))) + (native-inputs + `(("glib:bin" ,glib "bin") + ("pkg-config" ,pkg-config))) + (synopsis "Control MPRIS-supporting media player applications") + (description + "Playerctl is a command-line utility and library for controlling media +players that implement the MPRIS D-Bus Interface Specification. Playerctl +makes it easy to bind player actions, such as play and pause, to media keys. +You can also get metadata about the playing track such as the artist and title +for integration into status line generators or other command-line tools.") + (home-page "https://github.com/altdesktop/playerctl") + (license license:lgpl3+)))