<
aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'nix/libstore/sqlite.hh')
0 files changed, 0 insertions, 0 deletions
ight © 2021, 2022, 2023, 2024 Vinicius Monego <monego@posteo.net> ;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot> ;;; Copyright © 2021 Bonface Munyoki Kilyungi <me@bonfacemunyoki.com> ;;; 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, 2022, 2023 Felix Gruber <felgru@posteo.net> ;;; Copyright © 2021 Simon Streit <simon@netpanic.org> ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> ;;; Copyright © 2021 Thomas Albers Raviola <thomas@thomaslabs.org> ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> ;;; Copyright © 2022, 2023 Sughosha <sughosha@disroot.org> ;;; Copyright © 2022 Remco van 't Veer <remco@remworks.net> ;;; Copyright © 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2022 Wamm K. D. <jaft.r@outlook.com> ;;; Copyright © 2022 Jose G Perez Taveras <josegpt27@gmail.com> ;;; Copyright © 2022 jgart <jgart@dismail.de> ;;; Copyright © 2023 Jonathan Brielmaier <jonathan.brielmaier@web.de> ;;; Copyright © 2023 Antero Mejr <antero@mailbox.org> ;;; Copyright © 2023, 2024 Sharlatan Hellseher <sharlatanus@gmail.com> ;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream> ;;; Copyright © 2023 Zheng Junjie <873216071@qq.com> ;;; Copyright © 2024 Parnikkapore <poomklao@yahoo.com> ;;; Copyright © 2024 hapster <o.rojon@posteo.net> ;;; Copyright © 2024 Nikita Domnitskii <nikita@domnitskii.me> ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu packages music) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system ant) #:use-module (guix build-system cmake) #:use-module (guix build-system emacs) #:use-module (guix build-system glib-or-gtk) #:use-module (guix build-system gnu) #:use-module (guix build-system go) #:use-module (guix build-system meson) #:use-module (guix build-system perl) #:use-module (guix build-system pyproject) #:use-module (guix build-system python) #:use-module (guix build-system qt) #:use-module (guix build-system scons) #:use-module (guix build-system trivial) #:use-module (guix build-system waf) #:use-module (guix download) #:use-module (guix gexp) #:use-module (guix git-download) #:use-module (guix packages) #:use-module (guix utils) #:use-module (gnu packages) #:use-module (gnu packages admin) #:use-module (gnu packages algebra) #:use-module (gnu packages apr) #:use-module (gnu packages assembly) #:use-module (gnu packages audio) #:use-module (gnu packages autotools) #:use-module (gnu packages backup) #:use-module (gnu packages base) ;libbdf #:use-module (gnu packages bash) #:use-module (gnu packages benchmark) #:use-module (gnu packages bison) #:use-module (gnu packages boost) #:use-module (gnu packages build-tools) #:use-module (gnu packages cdrom) #:use-module (gnu packages check) #:use-module (gnu packages cmake) #:use-module (gnu packages code) #:use-module (gnu packages compression) #:use-module (gnu packages cpp) #:use-module (gnu packages crypto) #:use-module (gnu packages curl) #:use-module (gnu packages cyrus-sasl) #:use-module (gnu packages datastructures) #:use-module (gnu packages digest) #:use-module (gnu packages docbook) #:use-module (gnu packages documentation) #:use-module (gnu packages emacs) #:use-module (gnu packages file) #:use-module (gnu packages flex) #:use-module (gnu packages fltk) #:use-module (gnu packages fonts) #:use-module (gnu packages fontutils) #:use-module (gnu packages freedesktop) #:use-module (gnu packages game-development) #:use-module (gnu packages gcc) #:use-module (gnu packages gettext) #:use-module (gnu packages ghostscript) #:use-module (gnu packages gl) #:use-module (gnu packages glib) #:use-module (gnu packages gnome) #:use-module (gnu packages gnunet) #:use-module (gnu packages gnupg) #:use-module (gnu packages golang) #:use-module (gnu packages golang-xyz) #:use-module (gnu packages gpodder) #:use-module (gnu packages graphics) #:use-module (gnu packages graphviz) #:use-module (gnu packages gstreamer) #:use-module (gnu packages gtk) #:use-module (gnu packages guile) #:use-module (gnu packages haskell) #:use-module (gnu packages haskell-xyz) #:use-module (gnu packages icu4c) #:use-module (gnu packages image) #:use-module (gnu packages image-viewers) #:use-module (gnu packages imagemagick) #:use-module (gnu packages java) #:use-module (gnu packages kde-frameworks) #:use-module (gnu packages libevent) #:use-module (gnu packages libffi) #:use-module (gnu packages libusb) #:use-module (gnu packages linux) ; for alsa-utils #:use-module (gnu packages lirc) #:use-module (gnu packages llvm) #:use-module (gnu packages lua) #:use-module (gnu packages man) #:use-module (gnu packages mp3) #:use-module (gnu packages mpd) #:use-module (gnu packages ncurses) #:use-module (gnu packages netpbm) #:use-module (gnu packages networking) #:use-module (gnu packages pcre) #:use-module (gnu packages pdf) #:use-module (gnu packages perl) #:use-module (gnu packages perl-check) #:use-module (gnu packages perl-web) #:use-module (gnu packages php) #:use-module (gnu packages pkg-config) #: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) #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) #:use-module (gnu packages rdf) #:use-module (gnu packages readline) #:use-module (gnu packages rsync) #:use-module (gnu packages ruby) #:use-module (gnu packages scsi) #: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) #:use-module (gnu packages tcl) #:use-module (gnu packages terminals) #:use-module (gnu packages tex) #:use-module (gnu packages texinfo) #:use-module (gnu packages textutils) #:use-module (gnu packages time) #:use-module (gnu packages tls) #:use-module (gnu packages valgrind) #:use-module (gnu packages version-control) #:use-module (gnu packages video) #: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 xiph) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) #:use-module ((srfi srfi-1) #:select (last))) (define-public alsa-scarlett-gui (package (name "alsa-scarlett-gui") (version "0.4.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/geoffreybennett/alsa-scarlett-gui") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "1397z3c232n3zpqmpc77lbwv8z5szsbagawl3l7hiizn152hkgpv")))) (build-system gnu-build-system) (arguments (list #:tests? #false ;there is no check target #:make-flags #~(list (string-append "CC=" #$(cc-for-target)) (string-append "PREFIX=" #$output)) #:phases #~(modify-phases %standard-phases (add-after 'unpack 'chdir (lambda _ (substitute* "src/Makefile" ((" cc -o") (string-append " " #$(cc-for-target) " -o"))) (chdir "src"))) (add-after 'install 'wrap-program (lambda* (#:key inputs #:allow-other-keys) (wrap-program (string-append #$output "/bin/alsa-scarlett-gui") ;; For GtkFileChooserDialog. `("GSETTINGS_SCHEMA_DIR" = (,(string-append #$(this-package-input "gtk") "/share/glib-2.0/schemas")))))) (delete 'configure)))) (inputs (list alsa-lib glib gtk openssl)) (native-inputs (list `(,glib "bin") pkg-config)) (home-page "https://github.com/geoffreybennett/alsa-scarlett-gui") (synopsis "ALSA Scarlett2 control panel") (description "This package provides a Gtk4 GUI for the ALSA controls presented by the Linux kernel Focusrite Scarlett2 USB Protocol Mixer Driver.") (license license:gpl3+))) (define-public audacious (package (name "audacious") (version "4.3.1") (source (origin (method url-fetch) (uri (string-append "https://distfiles.audacious-media-player.org/" "audacious-" version ".tar.bz2")) (sha256 (base32 "0hi0njnw3q7kngmjk837ynagighrbz8a4wpf8bim2nsh85lf5sc5")))) (build-system gnu-build-system) (arguments (list #:configure-flags #~(list (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib") "--disable-gtk") #:tests? #f ; no check target #:phases #~(modify-phases %standard-phases (add-after 'install 'unpack-plugins (lambda* (#:key inputs #:allow-other-keys) (invoke "tar" "xvf" #$(this-package-native-input "audacious-plugins")))) (add-after 'unpack-plugins 'configure-plugins (lambda* (#:key configure-flags outputs #:allow-other-keys) (with-directory-excursion (string-append "audacious-plugins-" #$version) (substitute* "configure" (("/bin/sh") (which "sh"))) (apply invoke "./configure" (append configure-flags ;; audacious-plugins requires audacious to build. (list (string-append "PKG_CONFIG_PATH=" #$output "/lib/pkgconfig:" (getenv "PKG_CONFIG_PATH")) (string-append "--prefix=" #$output))))))) (add-after 'configure-plugins 'build-plugins (lambda _ (with-directory-excursion (string-append "audacious-plugins-" #$version) (invoke "make" "-j" (number->string (parallel-job-count)))))) (add-after 'build-plugins 'install-plugins (lambda _ (with-directory-excursion (string-append "audacious-plugins-" #$version) (invoke "make" "install"))))))) (native-inputs `(("audacious-plugins" ,(origin (method url-fetch) (uri (string-append "https://distfiles.audacious-media-player.org/" "audacious-plugins-" version ".tar.bz2")) (sha256 (base32 "19n8zpayakszm00bakfzagbbqci95dxv4h7j9ml2sfjqmzijdsid")))) ("gettext" ,gettext-minimal) ("glib:bin" ,glib "bin") ; for gdbus-codegen ("pkg-config" ,pkg-config))) (inputs (list dbus qtbase-5 qtmultimedia-5 ;; Plugin dependencies alsa-lib curl faad2 ffmpeg flac fluidsynth lame libbs2b libcddb libcdio-paranoia libcue libnotify libogg libopenmpt libsamplerate libsndfile libvorbis libxcomposite libxml2 libxrender lirc jack-1 mesa mpg123 neon opusfile pulseaudio sdl2 soxr wavpack)) (home-page "https://audacious-media-player.org") (synopsis "Modular and skinnable audio player") (description "Audacious is an audio player descended from XMMS. Drag and drop folders and individual song files, search for artists and albums in your entire music library, or create and edit your own custom playlists. Listen to CD’s or stream music from the Internet. Tweak the sound with the graphical equalizer or experiment with LADSPA effects. Enjoy the modern GTK-themed interface or change things up with Winamp Classic skins. Use the plugins included with Audacious to fetch lyrics for your music, to set an alarm in the morning, and more.") ;; According to COPYING, Audacious and its plugins are licensed ;; under the BSD 2-clause license and libguess is licensed under ;; the BSD 3-clause license. (license (list license:bsd-2 license:bsd-3 ;; Plugin licenses that aren't BSD 2- or 3-clause. license:lgpl2.1 license:gpl2 license:gpl3 license:expat license:isc license:lgpl2.0)))) (define-public aria-maestosa (package (name "aria-maestosa") (version "1.4.13") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/ariamaestosa/ariamaestosa/" version "/AriaSrc-" version ".tar.bz2")) (sha256 (base32 "1cs3z6frx2ch7rm5ammx9p0rxcjrbj1vq14hvcbimpaw39rdsn3d")))) (build-system scons-build-system) (arguments `(#:tests? #f ;no tests #:scons-flags (list (string-append "prefix=" (assoc-ref %outputs "out"))) #:scons ,scons-python2 #:phases (modify-phases %standard-phases (delete 'configure) (add-after 'unpack 'scons-propagate-environment (lambda _ ;; By design, SCons does not, by default, propagate ;; environment variables to subprocesses. See: ;; <http://comments.gmane.org/gmane.linux.distributions.nixos/4969> ;; Here, we modify the SConstruct file to arrange for ;; environment variables to be propagated. (substitute* "SConstruct" (("env = Environment\\(\\)") "env = Environment(ENV=os.environ)") ;; Scons errors out when copying subdirectories from Resources, ;; so we move them instead. (("Copy") "Move") ;; We move the "score" and "Documentation" directories at once, ;; so we have to ignore files contained therein. (("if \".svn\" in file" line) (string-append line " or \"score/\" in file" " or \"Documentation/\" in file"))) #t)) (add-after 'install 'fix-directory-permissions (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) (chmod (string-append out "/share/Aria/Documentation") #o555) (chmod (string-append out "/share/Aria/score") #o555) #t)))))) (inputs (list wxwidgets glib alsa-lib)) (native-inputs (list pkg-config)) (home-page "https://ariamaestosa.sourceforge.net/") (synopsis "MIDI sequencer and editor") (description "Aria Maestosa is a MIDI sequencer and editor. It lets you compose, edit and play MIDI files with a few clicks in a user-friendly interface offering score, keyboard, guitar, drum and controller views.") (license license:gpl3+))) (define-public libgpod (package (name "libgpod") (version "0.8.3") (source (origin (method git-fetch) (uri (git-reference (url "https://git.code.sf.net/p/gtkpod/libgpod") (commit "8dc5015ae036b219c4c9579a156886aa3a722aa5"))) (file-name (git-file-name name version)) (sha256 (base32 "1yzngb7h1mibz4x56w9fh02vx8xi4wyq4fjc3ad0jayv3hxjjkqv")))) (arguments (list #:configure-flags #~(list "--without-hal" "--enable-udev" (string-append "--with-udev-dir=" #$output "/lib/udev") (string-append "--prefix=" #$output)) #:phases #~(modify-phases %standard-phases (add-after 'unpack 'patch-autotools-version-requirement (lambda _ (setenv "ACLOCAL_FLAGS" (string-join (map (lambda (s) (string-append "-I " s)) (string-split (getenv "ACLOCAL_PATH") #\:)) " ")) (substitute* "configure.ac" (("libplist >= 1\\.0") "libplist-2.0 >= 2.2") (("-Werror") "")) ;; patch for plist-2.0 (substitute* "tools/ipod-lockdown.c" (("plist_dict_insert_item") "plist_dict_set_item")) ;; it expects version-suffixed binary (substitute* "gnome-autogen.sh" (("automake-1\\.13") "automake"))))))) (build-system gnu-build-system) (native-inputs (list automake libtool autoconf intltool pkg-config `(,glib "bin") gtk-doc)) (propagated-inputs (list libimobiledevice gdk-pixbuf)) (inputs (list libxml2 sg3-utils sqlite taglib libplist)) (home-page "https://sourceforge.net/projects/gtkpod") (synopsis "Library to access iPod contents") (description "This package provides a library to access iPod contents. It enables iPod support in music players such as Clementine.") (license license:lgpl2.1+))) (define-public clementine (package (name "clementine") (version "1.4.0rc1-450-g2725ef99d") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/clementine-player/Clementine") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "1pcwwi9b2qcfjn748577gqx6d1hgg7cisw2dn43npwafdvvkdb90")) (modules '((guix build utils) (ice-9 regex))) (snippet '(begin (use-modules ((ice-9 regex))) (for-each (lambda (dir) ;; TODO: The following dependencies are still bundled: ;; - "qxt": Appears to be unmaintained upstream. ;; - "qsqlite" ;; - "qtsingleapplication" ;; - "qocoa" ;; - "qtiocompressor" (let ((bundled '("qsqlite" "qtsingleapplication" "qxt" "qocoa" "qtiocompressor"))) (if (not (string-match (string-append ".?*(" (string-join bundled "|") ")") dir)) (delete-file-recursively dir)))) (find-files "3rdparty" (lambda (file stat) (string-match "^3rdparty/[^/]*$" file)) #:directories? #t)))))) (build-system cmake-build-system) (arguments '(#:test-target "clementine_test" #:configure-flags (list ;; Requires unpackaged "projectm" "-DENABLE_VISUALISATIONS=OFF" ;; Otherwise it may try to download a non-free library at run-time. ;; TODO In an origin snippet, remove the code that performs the ;; download. "-DHAVE_SPOTIFY_DOWNLOADER=FALSE" ;; Clementine checks that the taglib version is higher than 1.11, ;; because of https://github.com/taglib/taglib/issues/864. Remove ;; this flag when 1.12 is released. "-DUSE_SYSTEM_TAGLIB=TRUE") #: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/clementine") `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))))))) (native-inputs (list gettext-minimal googletest pkg-config qttools-5)) (inputs (list bash-minimal boost chromaprint fftw glib glu gstreamer gst-plugins-base gst-plugins-good gst-libav libcdio libmygpo-qt libgpod libmtp libxml2 protobuf pulseaudio qtbase-5 qtx11extras sqlite sparsehash taglib)) (home-page "https://clementine-player.org") (synopsis "Music player and library organizer") (description "Clementine is a multiplatform music player. It is inspired by Amarok 1.4, focusing on a fast and easy-to-use interface for searching and playing your music.") (license (list ;; clementine and qtiocompressor are under GPLv3. license:gpl3+ ;; qxt is under CPL1.0. license:cpl1.0 ;; qsqlite and qtsingleapplication are under LGPL2.1+. license:lgpl2.1+ ;; qocoa is under MIT and CC by-sa for the icons. license:cc-by-sa3.0)))) (define-public ctrlr ;; The latest release from 2021 does not have a build system. (let ((commit "8aa00d82127acda42ad9ac9b7b479461e9436aa4") (revision "1")) (package (name "ctrlr") (version (git-version "5.5.9" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/RomanKubiak/ctrlr") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "1lpfkjp9y0wh2kj02isv8ixnxn3wyvrxhkx0rybwzswfiz5kqdlm")))) (build-system cmake-build-system) (arguments (list #:cmake cmake ;needs 3.25 #:tests? #false ;there are none #:phases #~(modify-phases %standard-phases (add-after 'unpack 'pre-configure (lambda _ ;; Override default location of fonts.conf. Without this no ;; fonts will be rendered at all. (substitute* "JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp" (("/usr/share/fonts/fonts.conf") "/run/current-system/profile/etc/fonts/fonts.conf")) ;; Do not build the VST or AU plugins, because these require ;; external proprietary SDKs. (substitute* "CMakeLists.txt" (("juce_set_vst2_sdk_path.*") "") (("FORMATS VST3 VST AU Standalone") "FORMATS Standalone") ;; BFD also need -liberty. (("list\\(APPEND ctrlrLibs \"bfd\"\\)" m) (string-append m " list(APPEND ctrlrLibs \"iberty\")"))))) ;; The install target doesn't install ctrlr but JUCE helpers. (replace 'install (lambda _ (install-file "ctrlr_artefacts/RelWithDebInfo/Standalone/ctrlr" (string-append #$output "/bin"))))))) (inputs (list alsa-lib boost eudev freetype libiberty libx11 webkitgtk-for-gtk3)) (native-inputs (list pkg-config)) (home-page "https://ctrlr.org/") (synopsis "Control any MIDI-enabled hardware") (description "This package provides a tool to control any MIDI-enabled hardware such as synthesizers, drum machines, samplers, or effects. It lets you create custom user interfaces for your MIDI hardware.") (license (list license:gpl2+ license:gpl3 ;JUCE license:bsd-3))))) (define-public qmmp (package (name "qmmp") (version "2.1.9") (source (origin (method url-fetch) (uri (string-append "https://qmmp.ylsoftware.com/files/qmmp/" (version-major+minor version) "/" "qmmp-" version ".tar.bz2")) (sha256 (base32 "0drskhf1lgnzmm6b51fvy25m551lbjikg7jw5dnll7ajicvpm7xm")))) (build-system qt-build-system) (arguments (list #:qtbase qtbase #:tests? #f ; there are no tests #:phases #~(modify-phases %standard-phases (add-after 'unpack 'set-paths (lambda* (#:key inputs #:allow-other-keys) (substitute* "src/plugins/Ui/skinned/skinreader.cpp" (("\"(tar|unzip)\"" _ name) (let ((file (string-append "/bin/" name))) (string-append "\"" (search-input-file inputs file) "\""))))))))) (inputs ;; Missing optional inputs: ;; libsidplay2 ; input plugin ;; projectm ; visualization plugin (list alsa-lib curl enca faad2 ffmpeg flac jack-2 libarchive libbs2b libcddb libcdio-paranoia libgme libmad libshout libsndfile libvorbis libxmp opusfile opus pipewire pulseaudio qtmultimedia qttools soxr taglib tar ; for loading skins unzip ; for loading skins wavpack wildmidi)) (native-inputs (list pkg-config)) (home-page "https://qmmp.ylsoftware.com") (properties `((release-monitoring-url . "https://qmmp.ylsoftware.com/downloads.php"))) (synopsis "Qt-based music player") (description "Music player with support for most common audio formats, and plugins for various additional features such as visualization, effects and online service integration. In addition to a Qt-based interface it supports Winamp/XMMS skins.") (license (list license:gpl2+ ; code license:cc-by-sa4.0)))) ; src/plugins/Ui/skinned/glare (define-public strawberry (package (name "strawberry") (version "1.0.21") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/strawberrymusicplayer/strawberry") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "1ibs7x7i1zz2r13wg238c5bhr1j4x8vl7hvjg01vdl5hfrh2gk1i")) (modules '((guix build utils) (ice-9 regex))) (snippet '(begin (use-modules ((ice-9 regex))) (for-each (lambda (dir) ;; TODO: The following dependencies are still bundled: ;; - "singleapplication" (let ((bundled '("singleapplication"))) (if (not (string-match (string-append ".?*(" (string-join bundled "|") ")") dir)) (delete-file-recursively dir)))) (find-files "3rdparty" (lambda (file stat) (string-match "^3rdparty/[^/]*$" file)) #:directories? #t)))))) (build-system cmake-build-system) (arguments `(#:test-target "run_strawberry_tests" #:phases (modify-phases %standard-phases (add-after 'install 'wrap-program (lambda* (#:key outputs #:allow-other-keys) (wrap-program (search-input-file outputs "bin/strawberry") `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,(getenv "GST_PLUGIN_SYSTEM_PATH")))))) (add-before 'check 'pre-check (lambda* (#:key native-inputs inputs #:allow-other-keys) (system (format #f "~a :1 &" (search-input-file (or native-inputs inputs) "bin/Xvfb"))) (setenv "DISPLAY" ":1") (setenv "HOME" (getcwd))))))) (native-inputs (list bash-minimal gettext-minimal googletest pkg-config qttools xorg-server-for-tests)) (inputs (list alsa-lib boost chromaprint dbus fftw gdk-pixbuf glib gnutls gstreamer gst-plugins-base gst-plugins-good icu4c libcdio libebur128 libmtp protobuf pulseaudio qtbase sqlite taglib)) (home-page "https://www.strawberrymusicplayer.org/") (synopsis "Music player and library organizer") (description "Strawberry is a music player and music collection organizer. It is a fork of Clementine aimed at music collectors and audiophiles.") (license (list ;; strawberry. license:gpl3+ ;; singleapplication license:expat ;; icons. license:cc-by-sa3.0)))) (define-public cmus (package (name "cmus") (version "2.11.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/cmus/cmus") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "1k50z99v2yqshycx6mbk4g5bsaalg5dgzjv3xvwq14abwkw44hli")))) (build-system gnu-build-system) (arguments (list #:tests? #f ; cmus does not include tests #:phases #~(modify-phases %standard-phases (replace 'configure (lambda _ ;; It's an idiosyncratic configure script that doesn't ;; understand --prefix=..; it wants prefix=.. instead. (invoke "./configure" (string-append "prefix=" #$output))))))) ;; TODO: cmus optionally supports the following formats, which haven't yet ;; been added to Guix: ;; ;; - Roar, libroar ;; ;; - DISCID_LIBS, apparently different from cd-discid which is included in ;; Guix. See <http://sourceforge.net/projects/discid/> (native-inputs (list pkg-config)) (inputs (list alsa-lib ao elogind ;for MPRIS support faad2 ffmpeg flac jack-1 libcddb libcdio-paranoia libcue libmad libmodplug libmpcdec libsamplerate libvorbis ncurses opusfile pulseaudio wavpack)) (home-page "https://cmus.github.io/") (synopsis "Small console music player") (description "Cmus is a small and fast console music player. It supports many input formats and provides a customisable Vi-style user interface.") (license license:gpl2+))) (define-public denemo (package (name "denemo") (version "2.6.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/denemo/denemo-" version ".tar.gz")) (sha256 (base32 "0pdmjij2635jbw2a24ivk1y4w0z58jbmq9vnz3qrfzw4d469grab")))) (build-system gnu-build-system) (arguments (list #:phases #~(modify-phases %standard-phases (replace 'check (lambda* (#:key inputs tests? #:allow-other-keys) ;; Tests require to write $HOME. (when tests? (setenv "HOME" (getcwd)) ;; Replace hard-coded diff file name. (substitute* "tests/integration.c" (("/usr/bin/diff") (search-input-file inputs "/bin/diff"))) ;; Denemo's documentation says to use this command to run its ;; test suite. (invoke "make" "-C" "tests" "check")))) (add-before 'build 'set-lilypond ;; This phase sets the default path for lilypond to its current ;; location in the store. (lambda* (#:key inputs #:allow-other-keys) (let* ((lilypond (search-input-file inputs "/bin/lilypond"))) (substitute* "src/core/prefops.c" (("g_string_new \\(\"lilypond\"\\);") (string-append "g_string_new (\"" lilypond "\");"))))))))) (native-inputs (list diffutils `(,glib "bin") ; for gtester gtk-doc/stable intltool libtool pkg-config)) (inputs (list alsa-lib aubio evince fftw fluidsynth glib gtk+ gtksourceview-3 guile-2.0 (librsvg-for-system) libsndfile libxml2 lilypond portaudio portmidi rubberband)) (synopsis "Graphical music notation, front-end to GNU Lilypond") (description "GNU Denemo is a music notation editor that provides a convenient interface to the powerful music engraving program Lilypond. Music can be typed in using the computer keyboard, played in using a MIDI keyboard, or even input via a microphone connected to the sound card. The final product is publication-quality music notation that is continuously generated in the background while you work.") (home-page "https://www.denemo.org") (license license:gpl3+))) (define-public dumb (package (name "dumb") (version "2.0.3") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/kode54/dumb") (commit version))) (sha256 (base32 "1cnq6rb14d4yllr0yi32p9jmcig8avs3f43bvdjrx4r1mpawspi6")) (file-name (git-file-name name version)))) (build-system cmake-build-system) (arguments '(#:tests? #f ; no check target #:configure-flags (list "-DBUILD_ALLEGRO4=OFF" "-DBUILD_SHARED_LIBS=ON" "-DBUILD_EXAMPLES=OFF"))) (home-page "https://github.com/kode54/dumb") (synopsis "Module audio renderer library") (description "DUMB is a tracker library with support for IT, XM, S3M and MOD files. It targets maximum accuracy to the original formats, with low-pass resonant filters for the IT files, accurate timing and pitching, and three resampling quality settings (aliasing, linear interpolation and cubic interpolation).") ;; The DUMB license is a bit peculiar. ;; Clause 8 states that clauses 4, 5 and 6 are null and void, leaving only ;; the first three clauses for genuine consideration. ;; Clauses 1, 2 and 3 are analogous to clauses 1, 2 and 3 of the zlib ;; license, a known free software license. ;; Therefore, the DUMB license may be considered a free software license. (license (license:fsf-free "file://LICENSE")))) (define-public dumb-allegro4 (package (inherit dumb) (name "dumb-allegro4") (arguments (substitute-keyword-arguments (package-arguments dumb) ((#:configure-flags flags) `(cons "-DBUILD_ALLEGRO4=ON" ,(delete "-DBUILD_ALLEGRO4=OFF" flags))))) (inputs (list allegro-4)))) (define-public hydrogen (package (name "hydrogen") (version "1.2.3") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/hydrogen-music/hydrogen") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "0qb16yn3igs95silvngwy5mjwlzsyz5axwbd3lz6pjhwbf81rn7d")))) (build-system cmake-build-system) (arguments `(#:test-target "tests" #:phases (modify-phases %standard-phases (add-after 'unpack 'fix-data-directory (lambda* (#:key outputs #:allow-other-keys) (substitute* "CMakeLists.txt" (("/usr/share/pixmaps") (string-append (assoc-ref outputs "out") "/share/pixmaps")))))))) (native-inputs (list cppunit pkg-config qttools-5)) (inputs (list alsa-lib jack-1 ;; ("ladspa" ,ladspa) ; require LADSPA_PATH to be set libarchive liblo libsndfile lrdf pulseaudio qtbase-5 qtsvg-5 qtxmlpatterns zlib)) (home-page "http://hydrogen-music.org/") (synopsis "Drum machine") (description "Hydrogen is an advanced drum machine for GNU/Linux. Its main goal is to enable professional yet simple and intuitive pattern-based drum programming.") (license license:gpl2+))) (define-public easytag (package (name "easytag") (version "2.4.3") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/easytag/2.4/easytag-" version ".tar.xz")) (sha256 (base32 "1mbxnqrw1fwcgraa1bgik25vdzvf97vma5pzknbwbqq5ly9fwlgw")))) (build-system glib-or-gtk-build-system) (native-inputs `(("desktop-file-utils" ,desktop-file-utils) ("glib" ,glib "bin") ("intltool" ,intltool) ("itstool" ,itstool) ("pkg-config" ,pkg-config) ("xmllint" ,libxml2))) (inputs (list flac gtk+ id3lib libid3tag libvorbis opusfile speex taglib wavpack yelp)) (arguments '(#:phases (modify-phases %standard-phases (add-before 'configure 'configure-libid3tag (lambda* (#:key inputs #:allow-other-keys) ;; libid3tag does not provide a .pc file and EasyTAG's configure ;; script healivy relies on pkg-config. Providing a temporary ;; local .pc file is easier than patching the configure script. (let* ((libid3tag (assoc-ref inputs "libid3tag"))) (mkdir-p "pkgconfig") (with-output-to-file "pkgconfig/id3tag.pc" (lambda _ (format #t "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")) #t))) (add-after 'unpack 'patch-makefile (lambda _ (substitute* "Makefile.in" ;; The Makefile generates a test-desktop-file-validate.sh ;; script with /bin/sh hard-coded. (("/bin/sh") (which "sh")) ;; Don't create 'icon-theme.cache'. (("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 "EasyTAG is an application for viewing and editing tags in audio files. It supports MP3, MP2, MP4/AAC, FLAC, Ogg Opus, Ogg Speex, Ogg Vorbis, MusePack, Monkey's Audio, and WavPack files.") (license license:gpl2+))) (define-public extempore (package (name "extempore") (version "0.8.9") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/digego/extempore") (commit (string-append "v" version)))) (sha256 (base32 "16i12zl3g1zpx6lhg5pg821xirdf9rxx5m11b68inf83wn6hknhb")) (file-name (git-file-name name version)) (patches (search-patches "extempore-unbundle-external-dependencies.patch")) (modules '((guix build utils))) (snippet '(begin ;; Remove bundled sources. (map delete-file-recursively '("src/pcre")) #t)))) (build-system cmake-build-system) (arguments `(#:configure-flags (list "-DJACK=ON" "-DPACKAGE=ON" (string-append "-DEXT_SHARE_DIR=" (assoc-ref %outputs "out") "/share")) #:modules ((ice-9 match) (guix build cmake-build-system) (guix build utils)) #:phases (modify-phases %standard-phases (add-after 'build 'build-aot-libs (lambda _ (for-each (lambda (target) (invoke "make" target)) '("aot_base" "aot_math" "aot_instruments")) #t)) (add-after 'unpack 'patch-install-locations (lambda* (#:key outputs #:allow-other-keys) (substitute* "CMakeLists.txt" (("EXT_SHARE_DIR=\"\\.\"\\)") "EXT_SHARE_DIR=\"${EXT_SHARE_DIR}/extempore\")") (("DESTINATION \"\\.\"\\)") "DESTINATION bin)") (("DESTINATION \"\\.\"\n") "DESTINATION share/extempore\n")) #t)) (add-after 'unpack 'patch-directories (lambda* (#:key outputs #:allow-other-keys) (substitute* "extras/extempore.el" (("\\(runtime-directory \\(concat default-directory \"runtime\"\\)\\)") (string-append "(runtime-directory \"" (assoc-ref outputs "out") "/share/extempore/runtime" "\")"))) #t)) (add-after 'unpack 'link-with-additional-libs (lambda _ ;; The executable must be linked with libffi and zlib. (substitute* "CMakeLists.txt" (("target_link_libraries\\(extempore PRIVATE dl" line) (string-append line " ffi z"))) #t)) ;; FIXME: All examples that are used as tests segfault for some ;; unknown reason. (add-after 'unpack 'disable-broken-tests (lambda _ (substitute* "CMakeLists.txt" (("extempore_add_example_as_test\\(.*") "")) #t)) (add-after 'unpack 'hardcode-external-lib-paths (lambda* (#:key inputs #:allow-other-keys) (use-modules (ice-9 match)) (for-each (match-lambda ((file-name lib pkg-name) (substitute* (string-append "libs/external/" file-name ".xtm") ((lib) (string-append (assoc-ref inputs pkg-name) "/lib/" lib))))) '(("assimp" "libassimp.so" "assimp") ("portmidi" "libportmidi.so" "portmidi") ("sndfile" "libsndfile.so" "libsndfile") ("fft" "libkiss_fft.so" "kiss-fft") ("stb_image" "libstb_image.so" "stb-image") ("nanovg" "libnanovg.so" "nanovg") ("glext" "libGL.so" "mesa") ("glfw3" "libglfw.so" "glfw") ("gl/glcore-directbind" "libGL.so" "mesa") ("gl/glcompat-directbind" "libGL.so" "mesa"))) #t)) (add-after 'unpack 'use-own-llvm (lambda* (#:key inputs #:allow-other-keys) (setenv "EXT_LLVM_DIR" (assoc-ref inputs "llvm")) ;; Our LLVM builds shared libraries, so Extempore should use ;; those. (substitute* "CMakeLists.txt" (("CMAKE_STATIC_LIBRARY") "CMAKE_SHARED_LIBRARY")) #t)) (add-after 'unpack 'fix-aot-compilation (lambda* (#:key outputs #:allow-other-keys) (substitute* "CMakeLists.txt" ;; Extempore needs to be told where the runtime is to be found. ;; While we're at it we disable automatic tuning for a specific ;; CPU to make binary substitution possible. (("COMMAND extempore" prefix) (string-append prefix " --sharedir " (getcwd) " --mcpu=generic --attr=none"))) #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 (inherit llvm-3.8) (name "llvm-for-extempore") (source (origin (method url-fetch) (uri (string-append "http://extempore.moso.com.au/extras/" "llvm-3.8.0.src-patched-for-extempore.tar.xz")) (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) ("glfw" ,glfw) ("apr" ,apr) ("stb-image" ,(let ((revision "1") (commit "152a250a702bf28951bb0220d63bc0c99830c498")) (package (inherit stb-image) (name "stb-image-for-extempore") (version (git-version "0" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/extemporelang/stb") (commit commit))) (sha256 (base32 "0y0aa20pj9311x2ii06zg8xs34idg14hfgldqc5ymizc6cf1qiqv")) (file-name (git-file-name name version)))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ;no tests included (inputs '())))) ("kiss-fft" ,kiss-fft-for-extempore) ("nanovg" ,nanovg-for-extempore) ("portmidi" ,(let ((version "217") (revision "0") (commit "8602f548f71daf5ef638b2f7d224753400cb2158")) (package (inherit portmidi) (name "portmidi-for-extempore") (version (git-version version revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/extemporelang/portmidi") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "1qidzl1s3kzhczzm96rcd2ppn27a97k2axgfh1zhvyf0s52d7m4w")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ;no tests (native-inputs '())))) ("assimp" ,assimp) ("alsa-lib" ,alsa-lib) ("portaudio" ,portaudio) ("mesa" ,mesa) ("pcre" ,pcre) ("zlib" ,zlib))) (native-inputs `(("perl" ,perl) ("emacs" ,emacs-no-x))) ;; Extempore refuses to build on architectures other than x86_64 (supported-systems '("x86_64-linux")) (home-page "https://github.com/digego/extempore") (synopsis "Programming environment for live coding of multimedia") (description "Extempore is a programming language and runtime environment designed with live programming in mind. It supports interactive programming in a REPL style, compiling and binding code just-in-time. Although Extempore has its roots in 'live coding' of audiovisual media art, it is suitable for any task domain where dynamic run-time modifiability and good numerical performance are required. Extempore also has strong timing and concurrency semantics, which are helpful when working in problem spaces where timing is important (such as audio and video).") (license license:bsd-2))) (define-public flacon (package (name "flacon") (version "11.4.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/flacon/flacon") (commit (string-append "v" version)) (recursive? #t))) (file-name (git-file-name name version)) (sha256 (base32 "0yp73yl5x9m2l4whrzj6yx8aqv1915khmlihgp1p12m9m540dql2")))) (build-system cmake-build-system) (arguments ;; The tests fail while attempting to exercise MacOS functionality. (list #:tests? #f)) (native-inputs (list pkg-config)) (inputs (list qtbase-5 qttools-5 taglib uchardet zlib)) (home-page "https://flacon.github.io/") (synopsis "Split audio tracks from an audio CD image to separate tracks") (description "Flacon extracts individual tracks from one big audio file containing an entire CD of music and saves them as separate audio files. To do this, it uses information from the appropriate CUE file. Also, Flacon makes it possible to conveniently revise or specify tags both for all tracks at once or for each tag separately.") (license license:lgpl2.1+))) (define-public fluida-lv2 (package (name "fluida-lv2") (version "0.6") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/brummer10/Fluida.lv2") (commit (string-append "v" version)) (recursive? #t))) ; references specific commit of libxputty (file-name (git-file-name name version)) (sha256 (base32 "1v0bh4wcx79y832qigc3my8ixq0r4ica6z5fg2rg946pkh20x1a2")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no "check" target #:make-flags (list (string-append "INSTALL_DIR=" (assoc-ref %outputs "out") "/lib/lv2") "CC=gcc") #:phases (modify-phases %standard-phases (delete 'configure)))) (inputs (list cairo libx11 lv2 fluidsynth)) (native-inputs (list pkg-config)) (home-page "https://github.com/brummer10/Fluida.lv2") (synopsis "Fluidsynth as an LV2 audio plugin") (description "Fluida is an audio plugin in the LV2 format that acts as a frontend for fluidsynth.") (license license:gpl2+))) (define-public surge-synth (package (name "surge-synth") (version "1.7.1") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/surge-synthesizer/surge") (commit (string-append "release_" version)) (recursive? #t))) ; build system expects modules to be there (file-name (git-file-name name version)) (sha256 (base32 "1jhk8iaqh89dnci4446b47315v2lc8gclraygk8m9jl20zpjxl0l")))) (build-system cmake-build-system) (arguments `(#:tests? #f ; no tests included #:phases (modify-phases %standard-phases (add-after 'unpack 'replace-python (lambda* (#:key inputs outputs #:allow-other-keys) (substitute* "CMakeLists.txt" ((" python ") (string-append " " (assoc-ref inputs "python") "/bin/python3 "))) #t)) (add-after 'unpack 'fix-data-directory-name (lambda* (#:key inputs outputs #:allow-other-keys) (substitute* "src/common/SurgeStorage.cpp" (("/usr") (assoc-ref outputs "out"))) #t)) (replace 'install ; no install target (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((src (assoc-ref inputs "source")) (out (assoc-ref outputs "out")) (share (string-append out "/share")) (lib (string-append out "/lib")) (lv2 (string-append lib "/lv2")) (vst3 (string-append lib "/vst3"))) (mkdir-p lv2) (mkdir-p vst3) ;; Install LV2 plugin. (copy-recursively "surge_products/Surge.lv2" (string-append lv2 "/Surge.lv2")) ;; Install VST3 plugin. (copy-recursively "surge_products/Surge.vst3" (string-append vst3 "/Surge.vst3")) ;; Install data. (copy-recursively (string-append src "/resources/data") (string-append share "/Surge")) #t)))))) (inputs (list cairo libxkbcommon python xcb-util xcb-util-cursor xcb-util-keysyms)) (native-inputs (list pkg-config)) (home-page "https://surge-synthesizer.github.io/") (synopsis "Synthesizer plugin") (description "Surge is a subtractive hybrid digital synthesizer. Each patch contains two @dfn{scenes} which are separate instances of the entire synthesis engine (except effects) that can be used for layering or split patches.") (license license:gpl3+))) (define-public klick (package (name "klick") (version "0.12.2") (source (origin (method url-fetch) (uri (string-append "http://das.nasophon.de/download/klick-" version ".tar.gz")) (sha256 (base32 "0hmcaywnwzjci3pp4xpvbijnnwvibz7gf9xzcdjbdca910y5728j")))) (build-system scons-build-system) (arguments `(#:scons-flags (list (string-append "PREFIX=" %output)) #:scons ,scons-python2 #: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" (("BoolOption") "BoolVariable") (("PathOption") "PathVariable") (("Options") "Variables")) #t))))) (inputs (list boost jack-1 libsndfile libsamplerate liblo rubberband)) (native-inputs (list pkg-config)) (home-page "http://das.nasophon.de/klick/") (synopsis "Metronome for JACK") (description "klick is an advanced command-line based metronome for JACK. It allows you to define complex tempo maps for entire songs or performances.") (license license:gpl2+))) (define-public glyr (package (name "glyr") (version "1.0.10") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/sahib/glyr") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "1miwbqzkhg0v3zysrwh60pj9sv6ci4lzq2vq2hhc6pc6hdyh8xyr")))) (build-system cmake-build-system) (arguments '(#:configure-flags '("-DTEST=true") #:phases (modify-phases %standard-phases (add-after 'unpack 'patch-tests (lambda _ (substitute* "spec/capi/check_api.c" (("fail_unless \\(c != NULL,\"Could not load www.google.de\"\\);") "")) #t)) (replace 'check (lambda* (#:key tests? #:allow-other-keys) (when tests? ;; capi tests (invoke "bin/check_api") ;; (invoke "bin/check_opt") TODO Very dependent on the network (invoke "bin/check_dbc")) ;; TODO Work out how to run the spec/providers Python tests #t))))) (inputs (list glib curl sqlite)) (native-inputs (list pkg-config check)) (home-page "https://github.com/sahib/glyr") (synopsis "Search engine for music related metadata") (description "Glyr comes both in a command-line interface tool (@command{glyrc}) and as a C library (libglyr). The sort of metadata glyr is searching (and downloading) is usually the data you see in your musicplayer. And indeed, originally it was written to serve as internally library for a musicplayer, but has been extended to work as a standalone program which is able to download cover art, lyrics, photos, biographies, reviews and more.") (license license:lgpl3+))) (define-public lingot (package (name "lingot") (version "1.1.1") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/ibancg/lingot") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "04lcjzfhddbyskxr2068z609y6x0s2gjx1wl78w0dkxdi459zrn9")))) (build-system gnu-build-system) (native-inputs (list autoconf automake cunit `(,glib "bin") ; for glib-compile-resources intltool libtool pkg-config)) (inputs (list alsa-lib fftw gtk+ jack-2 json-c pulseaudio)) (home-page "https://lingot.nongnu.org/") (synopsis "Accurate & configurable musical instrument tuner") (description "LINGOT is a musical instrument tuner. It's accurate, easy to use, and highly configurable. Originally conceived to tune electric guitars, it can now be used to tune other instruments. It looks like an analogue tuner, with a gauge indicating the relative shift to a certain note, determined automatically as the closest note to the estimated frequency.") (license license:gpl2+))) (define-public ninjas2 (package (name "ninjas2") (version "0.2.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/clearly-broken-software/ninjas2") (commit (string-append "v" version)) ;; Bundles a specific commit of the DISTRHO plugin framework. (recursive? #t))) (file-name (git-file-name name version)) (sha256 (base32 "1kwp6pmnfar2ip9693gprfbcfscklgri1k1ycimxzlqr61nkd2k9")))) (build-system gnu-build-system) (arguments `(#:tests? #f ;no tests #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")) (string-append "CC=" ,(cc-for-target))) #:phases (modify-phases %standard-phases (delete 'configure) ;no configure target (replace 'install ;no install target (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (bin (string-append out "/bin")) (lv2 (string-append out "/lib/lv2"))) ;; Install LV2. (for-each (lambda (file) (copy-recursively file (string-append lv2 "/" (basename file)))) (find-files "bin" "\\.lv2$" #:directories? #t)) ;; Install executables. (for-each (lambda (file) (install-file file bin)) (find-files "bin" (lambda (name stat) (and (equal? (dirname name) "bin") (not (string-suffix? ".so" name)) (not (string-suffix? ".lv2" name)))))) #t)))))) (inputs (list fftwf jack-1 ; for the standalone JACK application libsamplerate mesa libsndfile)) (native-inputs (list ladspa lv2 pkg-config)) (synopsis "Sample slicer audio plugin") (description "Ninjas 2 is a rewrite of the Ninjas sample slicer audio plugin. Its goal is to be an easy to use sample slicer with quick slicing of samples and auto-mapping slices to MIDI note numbers.") (home-page "https://github.com/clearly-broken-software/ninjas2") (license license:gpl3+))) (define-public lilypond (package (name "lilypond") (version "2.24.4") (source (origin (method url-fetch) (uri (string-append "http://lilypond.org/download/sources/" "v" (version-major+minor version) "/" "lilypond-" version ".tar.gz")) (sha256 (base32 "073qa7m9xkghad4x37rxb9v45vp4vfmsylwnjzhj17y7f4ss0vz9")))) (build-system gnu-build-system) (arguments (list #:tests? #f ;out-test/collated-files.html fails #:out-of-source? #t #:configure-flags #~(list "--disable-documentation" "GUILE_FLAVOR=guile-3.0") #:phases #~(modify-phases %standard-phases (add-after 'unpack 'fix-path-references (lambda* (#:key inputs #:allow-other-keys) (substitute* "scm/backend-library.scm" (("\\(search-executable '\\(\"gs\"\\)\\)") (string-append "\"" (search-input-file inputs "bin/gs") "\"")) (("\"/bin/sh\"") (string-append "\"" (search-input-file inputs "bin/sh") "\"")))))))) (inputs (list extractpdfmark font-dejavu font-tex-gyre fontconfig freetype ghostscript guile-3.0 pango python)) (native-inputs (list bison dblatex/stable flex fontforge gettext-minimal imagemagick netpbm perl pkg-config rsync texinfo texi2html-1.82 (texlive-updmap.cfg (list texlive-cyrillic texlive-epsf texlive-fontinst texlive-lh texlive-lm texlive-metapost texlive-t1utils)) zip)) (home-page "https://lilypond.org") (synopsis "Music typesetting") (description "GNU LilyPond is a music typesetter, which produces high-quality sheet music. Music is input in a text file containing control sequences which are interpreted by LilyPond to produce the final document. It is extendable with Guile.") (license license:gpl3+) ;; On armhf and mips64el, building the documentation sometimes leads to ;; more than an hour of silence, so double the max silent time. (properties `((max-silent-time . 7200))))) (define-public emacs-lilypond-mode (package (name "emacs-lilypond-mode") (version (package-version lilypond)) (source (package-source lilypond)) (build-system emacs-build-system) (arguments (list #:phases #~(modify-phases %standard-phases (add-before 'expand-load-path 'change-working-directory (lambda _ (chdir "elisp")))))) (home-page (package-home-page lilypond)) (synopsis "Major mode for editing GNU LilyPond music scores") (description "This package provides an Emacs major mode for editing GNU LilyPond music scores.") (license (package-license lilypond)))) (define-public music21 (package (name "music21") (version "9.3.0") (source (origin (method url-fetch) (uri (pypi-uri "music21" version)) (sha256 (base32 "0jjgyyzw527h026zr2pphj7ba1pda46mi03j0djc2bh6l9ywdx0c")))) (build-system pyproject-build-system) (arguments `(#:phases (modify-phases %standard-phases (replace 'check (lambda* (#:key tests? inputs outputs #:allow-other-keys) (when tests? (add-installed-pythonpath inputs outputs) ;; See: https://github.com/cuthbertLab/music21/issues/1164 (invoke "python" "-m" "music21.stream.tests"))))))) (native-inputs (list python-hatchling)) (propagated-inputs (list python-chardet python-joblib python-jsonpickle python-matplotlib python-more-itertools python-numpy python-requests python-webcolors)) (home-page "https://web.mit.edu/music21/") (synopsis "Toolkit for Computational Musicology") (description "Music21 is a set of tools for helping scholars and other active listeners answer questions about music quickly and simply.") ;; Software is dual-licensed. (license (list license:bsd-3 license:lgpl3+)))) (define-public abjad (package (name "abjad") (version "3.19") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/Abjad/abjad") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "1cgcnmwzxx2hr21pqm1hbsknpad748yw3gf7jncsb3w1azhjypzm")))) (build-system pyproject-build-system) (inputs (list lilypond)) (native-inputs (list python-pytest python-setuptools python-wheel)) (propagated-inputs (list python-quicktions python-ply python-roman python-uqbar)) (home-page "https://abjad.github.io") (synopsis "Python API for building LilyPond files") (description "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 abjad-ext-rmakers (package (name "abjad-ext-rmakers") (version "3.19") (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 "1y8s55b4mlsigm0xkk6qjpp08c75rv0swvjp0lj3cs6lgqdjxdjl")))) (build-system pyproject-build-system) (native-inputs (list lilypond python-pytest python-setuptools python-wheel)) (propagated-inputs (list abjad)) (home-page "https://abjad.github.io") (synopsis "Abjad rhythm-maker extension 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.19") (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 "0j4pf4h27jm3df0dn2rwkdx6zqcxvr7pqchbaa9rffz7q4hbakmf")))) (build-system pyproject-build-system) (native-inputs (list lilypond python-pytest python-setuptools python-wheel)) (propagated-inputs (list 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 non-sequencer ;; The latest tagged release is three years old and uses a custom build ;; system, so we take the last commit. (let ((commit "257ec5951e7d4086344d98c99ebbe569f7c31211") (revision "5")) (package (name "non-sequencer") (version (git-version "1.9.5" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/falkTX/non/") (commit commit))) (sha256 (base32 "0h6ycm3nbb5lvjvhymz5xlj8wqm3z3ggzn4ghmw6xyzd0l7c3m8b")) (file-name (git-file-name name version)))) (build-system waf-build-system) (arguments `(#:tests? #f ;no "check" target #:configure-flags (list "--project=sequencer" ;; Disable the use of SSE unless on x86_64. ,@(if (not (string-prefix? "x86_64" (or (%current-target-system) (%current-system)))) '("--disable-sse") '())) #: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 python-waf pkg-config)) (home-page "https://non.tuxfamily.org/wiki/Non%20Sequencer") (synopsis "Pattern-based MIDI sequencer") (description "The Non Sequencer is a powerful, lightweight, real-time, pattern-based MIDI sequencer. It utilizes the JACK Audio Connection Kit for MIDI I/O and the NTK GUI toolkit for its user interface. Everything in Non 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") (arguments (substitute-keyword-arguments (package-arguments non-sequencer) ((#:configure-flags flags) `(cons "--project=session-manager" (delete "--project=sequencer" ,flags))))) (inputs (list jack-1 liblo ntk)) (native-inputs (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+) (properties `((superseded . ,new-session-manager))))) (define-public non-mixer (package (inherit non-sequencer) (name "non-mixer") (arguments (substitute-keyword-arguments (package-arguments non-sequencer) ((#:configure-flags flags) `(cons "--project=mixer" (delete "--project=sequencer" ,flags))))) (inputs (list jack-1 liblo ladspa lrdf ntk lv2 lilv)) (native-inputs (list python-waf pkg-config)) (home-page "https://non.tuxfamily.org/wiki/Non%20Mixer") (synopsis "Modular digital audio mixer") (description "The Non Mixer is a powerful, reliable and fast modular digital audio mixer. It utilizes JACK for inter-application audio I/O and the NTK GUI toolkit for a fast and lightweight user interface. Non Mixer can be used alone or in concert with Non Timeline and Non Sequencer to form a complete studio.") (license license:gpl2+))) (define-public non-timeline (package (inherit non-sequencer) (name "non-timeline") (arguments (substitute-keyword-arguments (package-arguments non-sequencer) ((#:configure-flags flags) `(cons "--project=timeline" (delete "--project=sequencer" ,flags))))) (inputs (list jack-1 liblo libsndfile ntk)) (native-inputs (list python-waf pkg-config)) (home-page "https://non.tuxfamily.org/wiki/Non%20Timeline") (synopsis "Modular digital audio timeline arranger") (description "The Non Timeline is a powerful, reliable and fast modular digital audio timeline arranger. It utilizes JACK for inter-application audio I/O and the NTK GUI toolkit for a fast and lightweight user interface. Non Timeline can be used alone or in concert with Non Mixer and Non Sequencer to form a complete studio.") (license license:gpl2+))) (define-public tascam-gtk ;; This commit represents the latest version at the time of this writing. (let ((commit "69fb86f31efcdb27c7854d2a190457aab42b337a") (revision "0")) (package (name "tascam-gtk") (version (git-version "0.4" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/onkelDead/tascam-gtk") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "05fbs5s24nwr6b10jgjhsfi7aj6y65kcickmygl7g84xvsnykdb0")))) (build-system gnu-build-system) (inputs (list liblo gtkmm-3 alsa-lib libxml++-3)) (native-inputs (list `(,glib "bin") pkg-config)) (home-page "https://github.com/onkelDead/tascam-gtk") (synopsis "GTK+ based application to control Tascam US-16x08 DSP mixer") (description "This is a mixer application to control the Tascam US-16x08 audio interface. This device contains about 280 control elements and this mixer application aims to provide comfortable access to the DSP effects the device supports.") (license license:expat)))) (define-public bsequencer (package (name "bsequencer") (version "1.8.10") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/sjaehn/BSEQuencer") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "0w3m7x0619iq8rafcy0bal4gwh9m9h7iq93q7gkpxhv6dq58ix6l")))) (build-system gnu-build-system) (arguments `(#:make-flags (list (string-append "CC=" ,(cc-for-target)) (string-append "PREFIX=" (assoc-ref %outputs "out"))) #:tests? #f ; there are none #:phases (modify-phases %standard-phases (delete 'configure)))) (inputs (list cairo lv2 libx11)) (native-inputs (list pkg-config)) (home-page "https://github.com/sjaehn/BSEQuencer") (synopsis "Multi-channel MIDI step sequencer LV2 plugin") (description "This package provides a multi-channel MIDI step sequencer LV2 plugin with a selectable pattern matrix size.") (license license:gpl3+))) (define-public bchoppr (package (inherit bsequencer) (name "bchoppr") (version "1.12.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/sjaehn/BChoppr") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "1jfp98qa0frmdybrg71fn8wxn1b3ginkbkcg9cz9y83j1m0jqrif")))) (synopsis "Audio stream-chopping LV2 plugin") (description "B.Choppr cuts the audio input stream into a repeated sequence of up to 16 chops. Each chop can be leveled up or down (gating). B.Choppr is the successor of B.Slizr.") (home-page "https://github.com/sjaehn/BChoppr") (license license:gpl3+))) (define-public bshapr (package (inherit bsequencer) (name "bshapr") (version "0.13") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/sjaehn/BShapr") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "1qr3fxqcplgb6iqi2vxc27jghhv6qsidww2by15zb2vs34yh73pl")))) (synopsis "Beat/envelope shaper LV2 plugin") (description "B.Shapr is a beat/envelope shaper LV2 plugin.") (home-page "https://github.com/sjaehn/BShapr") (license license:gpl3+))) (define-public bjumblr (package (inherit bsequencer) (name "bjumblr") (version "1.6.8") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/sjaehn/BJumblr") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "00fgax8aqqggs54pjpagw5pc30kgxaghh8mrzpqwhs06cnchcam9")))) (inputs (list cairo libsndfile lv2)) (synopsis "Pattern-controlled audio stream/sample re-sequencer LV2 plugin") (description "B.Jumblr is a pattern-controlled audio stream / sample re-sequencer LV2 plugin.") (home-page "https://github.com/sjaehn/BJumblr") (license license:gpl3+))) (define-public bschaffl (package (inherit bsequencer) (name "bschaffl") (version "1.4.8") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/sjaehn/BSchaffl") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "1kfc75xhj365fwl8cbvhg5chwz1snzcvf4929flds02ljylc7k6d")))) (inputs `(("cairo" ,cairo) ("fontconfig" ,fontconfig) ("libsndfile" ,libsndfile) ("libx11" ,libx11) ("lv2" ,lv2))) (home-page "https://github.com/sjaehn/BSchaffl") (synopsis "Pattern-controlled MIDI amp & time stretch LV2 plugin") (description "This package provides an LV2 plugin that allows for pattern-controlled MIDI amp & time stretching to produce shuffle / swing effects. Key features include: @enumerate @item MIDI velocity amplification and timing manipulation plugin @item Swing and shuffle rhythms @item Pre-generator dynamics @item Tempo rubato @item Pattern (sliders) or shape-controlled @item MIDI filters @item Smart quantization @end itemize ") (license license:gpl3+))) (define-public solfege (package (name "solfege") (version "3.23.5pre2") (source (origin (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 "1lmzp4kn0xh58yc8gzriz1i34g5qaa2xxrxzpmr7v9jyk19dqmcm")))) (build-system gnu-build-system) (arguments (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 (list bash-minimal python-wrapper python-pygobject gettext-minimal gtk+ lilypond)) (native-inputs (list autoconf automake pkg-config txt2man libxml2 ; for tests ghostscript texinfo)) (home-page "https://www.gnu.org/software/solfege/") (synopsis "Ear training") (description "GNU Solfege is a program for practicing musical ear-training. With it, you can practice your recognition of various musical intervals and chords. It features a statistics overview so you can monitor your progress across several sessions. Solfege is also designed to be extensible so you can easily write your own lessons.") (license license:gpl3+))) (define-public powertabeditor (package (name "powertabeditor") (version "2.0.0-alpha19") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/powertab/powertabeditor") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "1fbrfw1ky57nms47pcfdrrwpa2jmgc8vgc68sz96wkvs49zzm5d1")))) (build-system cmake-build-system) (arguments (list #:phases '(modify-phases %standard-phases (replace 'check (lambda* (#:key tests? #:allow-other-keys) (when tests? (invoke "bin/pte_tests"))))))) (inputs (list alsa-lib boost minizip nlohmann-json pugixml qtbase-5 qttools-5 ;for Qt5LinguistTools rtmidi timidity++ zlib)) (native-inputs (list doctest pkg-config)) (home-page "https://github.com/powertab/powertabeditor") (synopsis "Guitar tablature editor") (description "Power Tab Editor 2.0 is the successor to the famous original Power Tab Editor. It is compatible with Power Tab Editor 1.7 and Guitar Pro.") (license license:gpl3+))) (define-public jalv-select (package (name "jalv-select") (version "1.3") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/brummer10/jalv_select") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "15yanq1wra0hyh6x72ji7pk562iddg476g3vksj495x91zhnl6vm")))) (build-system gnu-build-system) (arguments `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))) #:phases (modify-phases %standard-phases (delete 'configure) (add-after 'unpack 'ignore-PATH (lambda* (#:key inputs #:allow-other-keys) (substitute* "jalv.select.cpp" (("echo \\$PATH.*tr ':'.*xargs ls") (string-append "ls -1 " (assoc-ref inputs "jalv") "/bin")))))))) (inputs (list lilv lv2 jalv gtkmm-2)) (native-inputs (list pkg-config)) (home-page "https://github.com/brummer10/jalv_select") (synopsis "GUI to select LV2 plugins and run them with jalv") (description "The jalv.select package provides a graphical user interface allowing users to select LV2 plugins and run them with jalv.") (license license:public-domain))) (define-public petri-foo (package (name "petri-foo") (version "0.1.87") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/petri-foo/Source" "/petri-foo-" version ".tar.bz2")) (sha256 (base32 "0b25iicgn8c42487fdw32ycfrll1pm2zjgy5djvgw6mfcaa4gizh")) (modules '((guix build utils))) ;; https://github.com/petri-foo/Petri-Foo/pull/43 (snippet '(begin (substitute* "gui/gui.c" (("#include \\\"waveform\\.h\\\"") (string-append "#include \"waveform.h\"" "\n\nGtkRecentManager *recent_manager;"))) (substitute* "gui/gui.h" (("GtkRecentManager \\*recent_manager;") "extern GtkRecentManager *recent_manager;")))))) (build-system cmake-build-system) (arguments (list #:tests? #f)) ;no test target (native-inputs (list pkg-config)) (inputs (list alsa-lib glib jack-1 libgnomecanvas liblo libsamplerate libsndfile libxml2 openssl)) (home-page "https://petri-foo.sourceforge.net/") (synopsis "Audio sampler for JACK") (description "Petri-Foo is a fork of the Specimen sampler project intended to run under a JACK session.") (license license:gpl2))) (define-public mixxx (package (name "mixxx") (version "2.4.2") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/mixxxdj/mixxx") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "1xvmha9q2f1gclb5js09l511v3b5zbp3gnbrz11q681cp924byk1")) (modules '((guix build utils))) (snippet ;; Delete libraries that we already have or don't need. ;; TODO: try to unbundle more (see lib/). `(begin (let ((third-parties '("apple" "hidapi"))) (with-directory-excursion "lib" (map (lambda (third-party) (delete-file-recursively third-party)) third-parties))) #t)))) (build-system qt-build-system) (arguments `(#:phases (modify-phases %standard-phases (add-after 'unpack 'disable-bugged-test ;; This test regularly fails and aborts the build process, hence it ;; was disabled (no impact on functionality). It appears this is a ;; problem for some upstream as well, as indicated by: ;; https://github.com/mixxxdj/mixxx/issues/12887 (featuring a ;; reference to another issue related to the same problem). (lambda _ (substitute* "src/test/soundproxy_test.cpp" (("TEST_F\\(SoundSourceProxyTest, firstSoundTest\\)") "TEST_F(SoundSourceProxyTest, DISABLED_firstSoundTest)")))) (add-after 'install 'wrap-executable (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (faad2 (assoc-ref inputs "faad2"))) (wrap-program (string-append out "/bin/mixxx") `("LD_LIBRARY_PATH" ":" prefix ,(list (string-append faad2 "/lib")))))))))) (native-inputs (list benchmark googletest python-wrapper qttools-5 xorg-server-for-tests)) (inputs (list bash-minimal chromaprint faad2 ffmpeg fftw flac glu hidapi jack-1 lame libdjinterop libebur128 libid3tag libkeyfinder libmad libmp4v2 libmodplug libsndfile libshout ;; XXX: Mixxx complains the libshout-idjc package suffers from bug ;; lp1833225 and refuses to use it. Use the bundle for now. libshout-idjc libusb libvorbis lilv mp3guessenc openssl opusfile portaudio portmidi protobuf qtbase-5 qtdeclarative-5 qtkeychain qtscript qtsvg-5 qtx11extras rubberband soundtouch sqlite taglib upower vamp wavpack c++-gsl)) (home-page "https://mixxx.org/") (synopsis "DJ software to perform live mixes") (description "Mixxx is a DJ software. It integrates the tools DJs need to perform creative live mixes with digital music files.") (license license:gpl2+))) (define-public synthv1 (package (name "synthv1") (version "1.1.0") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/synthv1/synthv1/" version "/synthv1-" version ".tar.gz")) (sha256 (base32 "0szl3p9wgy7cdjb757yrkskr4sqs1gvqq2zk1cm7hvadc8r0pbp3")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; there are no tests (inputs (list jack-1 lv2 alsa-lib new-session-manager liblo qtbase qtsvg)) (native-inputs (list pkg-config qttools)) (home-page "https://synthv1.sourceforge.io") (synopsis "Polyphonic subtractive synthesizer") (description "Synthv1 is an old-school subtractive polyphonic synthesizer with four oscillators and stereo effects.") (license license:gpl2+))) (define-public drumkv1 (package (name "drumkv1") (version "1.1.0") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/drumkv1/drumkv1/" version "/drumkv1-" version ".tar.gz")) (sha256 (base32 "0z1j4218x69nzri0nbcp3sadlwk0ixs5m9fdi4w7zpwy528bgxiz")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; there are no tests (inputs (list jack-1 lv2 libsndfile alsa-lib new-session-manager liblo qtbase qtsvg)) (native-inputs (list pkg-config qttools)) (home-page "https://drumkv1.sourceforge.io") (synopsis "Drum-kit sampler synthesizer with stereo effects") (description "Drumkv1 is an old-school drum-kit sampler synthesizer with stereo effects.") (license license:gpl2+))) (define-public samplv1 (package (name "samplv1") (version "1.1.0") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/samplv1/samplv1/" version "/samplv1-" version ".tar.gz")) (sha256 (base32 "1lfa9q8mkjz6m34w7fvqkd8p62f42wrrcniyv4k4d9f1a4582frd")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; there are no tests (inputs (list jack-1 lv2 libsndfile alsa-lib new-session-manager liblo qtbase qtsvg)) (native-inputs (list pkg-config qttools)) (home-page "https://samplv1.sourceforge.io") (synopsis "Polyphonic sampler synthesizer with stereo effects") (description "Samplv1 is an old-school polyphonic sampler synthesizer with stereo effects.") (license license:gpl2+))) (define-public padthv1 (package (name "padthv1") (version "1.1.0") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/padthv1/padthv1/" version "/padthv1-" version ".tar.gz")) (sha256 (base32 "17jx61bfg9k24mz266icxqbax3x0qvvywxlby16ky6fjp2dqy7x8")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; there are no tests (inputs (list jack-1 lv2 alsa-lib new-session-manager liblo fftwf qtbase qtsvg)) (native-inputs (list pkg-config qttools)) (home-page "https://padthv1.sourceforge.io") (synopsis "Polyphonic additive synthesizer") (description "Padthv1 is an old-school polyphonic additive synthesizer with stereo effects. Padthv1 is based on the PADsynth algorithm by Paul Nasca, as a special variant of additive synthesis.") (license license:gpl2+))) (define-public amsynth (package (name "amsynth") (version "1.13.4") (source (origin (method url-fetch) (uri (string-append "https://github.com/amsynth/amsynth/releases/" "download/release-" version "/amsynth-" version ".tar.gz")) (sha256 (base32 "1yryhwx05v1kzj44kxamgvwc65r65d7vlk4nbkaa6kjy7yy9lrwm")))) (build-system gnu-build-system) (arguments (list #:phases #~(modify-phases %standard-phases (add-after 'unpack 'patch-file-names (lambda* (#:key inputs #:allow-other-keys) (substitute* "src/GUI/editor_pane.c" (("/usr/bin/unzip") (search-input-file inputs "bin/unzip"))) (substitute* "src/GUI/MainMenu.cpp" (("/usr/bin/which") (search-input-file inputs "bin/which")))))))) (inputs (list alsa-lib gtk+-2 jack-1 libsndfile lv2 ;; External commands invoked at run time. unzip which)) (propagated-inputs ;; avoid runtime error: ;; GLib-GIO-ERROR **: 22:14:48.344: Settings schema ;; 'org.gnome.desktop.interface' is not installed (list gsettings-desktop-schemas)) (native-inputs (append (list intltool pkg-config) ;; For generating the documentation. (if (supported-package? pandoc) (list pandoc) '()))) (home-page "https://amsynth.github.io") (synopsis "Analog modeling synthesizer") (description "amsynth is an easy-to-use software synthesizer with a classic subtractive synthesizer topology. Its features include: dual oscillators (sine, saw, square, noise) with hard sync; 12 and 24 dB/oct resonant filters (low-pass, high-pass, band-pass, notch); mono, poly, legato keyboard modes; dual ADSR envelope generators for filter and amplitude; LFO which can modulate the oscillators, filter, and amplitude; distortion and reverb effects.") (license license:gpl2+))) (define-public paulxstretch (package (name "paulxstretch") (version "1.6.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/essej/paulxstretch") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "1pff51imfgmgqzc6mdgwd1v9fci0a8hj85fnkdsvkdzbnxdzvs9r")))) (build-system cmake-build-system) (arguments (list #:tests? #f ;no test suite #:phases #~(modify-phases %standard-phases (add-after 'unpack 'patch-paths (lambda* (#:key inputs #:allow-other-keys) (substitute* "deps/juce/extras/Projucer/Source/ProjectSaving/\ jucer_ProjectExport_CodeBlocks.h" (("/usr/include/freetype2") (search-input-directory inputs "/include/freetype2"))) (substitute* "deps/juce/modules/juce_graphics/native/juce_linux_Fonts.cpp" (("/etc/fonts") (search-input-directory inputs "/etc/fonts"))) (substitute* "deps/juce/modules/juce_gui_basics/native/x11/\ juce_linux_XWindowSystem.cpp" (("/usr/bin/dconf") (search-input-file inputs "/bin/dconf")) (("/usr/bin/gsettings") (search-input-file inputs "/bin/gsettings"))))) (replace 'install (lambda _ (let* ((lib (string-append #$output "/lib")) (share (string-append #$output "/share")) (clap (string-append lib "/clap")) (vst3 (string-append lib "/vst3"))) (with-directory-excursion "PaulXStretch_artefacts/RelWithDebInfo" (install-file "Standalone/paulxstretch" (string-append #$output "/bin")) (install-file "CLAP/PaulXStretch.clap" clap) (mkdir-p vst3) (copy-recursively "VST3" vst3) (install-file (string-append #$source "/linux/paulxstretch.desktop") (string-append share "/applications")) (install-file (string-append #$source "/images/paulxstretch_icon_1024_rounded.png") (string-append share "/pixmaps"))))))))) (home-page "https://sonosaurus.com/paulxstretch/") (native-inputs (list pkg-config)) (inputs (list alsa-lib curl dconf fftwf fontconfig freetype `(,glib "bin") jack-1 libx11 libxcursor libxext libxinerama libxrandr)) (supported-systems '("x86_64-linux")) ;pffft.c uses SIMD code (synopsis "Audio timestretching application and plugin") (description "PaulXStretch is an application/plugin is based on the PaulStretch algorithm (Paul’s Extreme Time Stretch, originally developed by Nasca Octavian Paul), and specifically the PaulXStretch version from Xenakios.") (license license:gpl3+))) (define-public setbfree (package (name "setbfree") (version "0.8.12") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/pantherb/setBfree") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "1lzrrpm57pilvwxpr1qhnx6273md2k96ygxjlhi5gqjdl0nl3z95")))) (build-system gnu-build-system) (arguments (list #:tests? #f ; no "check" target #:make-flags #~(cons* (string-append "PREFIX=" #$output) (string-append "FONTFILE=" #$(this-package-input "font-bitstream-vera") "/share/fonts/truetype/VeraBd.ttf") ;; Disable unsupported optimization flags on non-x86 (let ((system #$(or (%current-target-system) (%current-system)))) (if (or (string-prefix? "x86_64" system) (string-prefix? "i686" system)) '() '("OPTIMIZATIONS=-ffast-math -fomit-frame-pointer -O3")))) #:phases #~(modify-phases %standard-phases (add-before 'build 'set-CC-variable (lambda _ (setenv "CC" #$(cc-for-target)))) (delete 'configure)))) (inputs (list jack-1 lv2 zita-convolver glu ftgl font-bitstream-vera)) (native-inputs (list help2man pkg-config)) (home-page "https://setbfree.org") (synopsis "Tonewheel organ") (description "setBfree is a MIDI-controlled, software synthesizer designed to imitate the sound and properties of the electromechanical organs and sound modification devices that brought world-wide fame to the names and products of Laurens Hammond and Don Leslie.") (license license:gpl2+))) (define-public bristol (package (name "bristol") (version "0.60.11") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/bristol/bristol/" (version-major+minor version) "/bristol-" version ".tar.gz")) (sha256 (base32 "1fi2m4gmvxdi260821y09lxsimq82yv4k5bbgk3kyc3x1nyhn7vx")))) (build-system gnu-build-system) (arguments `(#:phases (modify-phases %standard-phases (add-after 'unpack 'remove-sse-flags (lambda* (#:key system #:allow-other-keys) (when (not (or (string-prefix? "x86_64" system) (string-prefix? "i686" system))) (substitute* "bristol/Makefile.in" (("-msse -mfpmath=sse") ""))))) ;; This is needed to build brighton (add-after 'unpack 'add-fcommon (lambda _ (setenv "CFLAGS" "-fcommon"))) ;; alsa-lib 1.1.x no longer provides iatomic.h. That's okay because ;; bristol actually doesn't use it. (add-after 'unpack 'do-not-use-alsa-iatomic (lambda _ (substitute* "libbristolaudio/audioEngineJack.c" (("#include <alsa/iatomic.h>") "")))) ;; We know that Bristol has been linked with JACK and we don't have ;; ldd, so we can just skip this check. (add-after 'unpack 'do-not-grep-for-jack (lambda _ (substitute* "bin/startBristol.in" (("ldd `which bristol` | grep jack") "echo guix"))))))) (inputs (list alsa-lib jack-2 liblo libx11)) (native-inputs (list pkg-config)) (home-page "https://bristol.sourceforge.net/") (synopsis "Synthesizer emulator") (description "Bristol is an emulation package for a number of different @code{classic} synthesizers including additive and subtractive and a few organs. The application consists of the engine, which is called bristol, and its own GUI library called brighton that represents all the emulations. There are currently more than twenty different emulations; each does sound different although the author maintains that the quality and accuracy of each emulation is subjective.") (license license:gpl3+))) (define-public tuxguitar (package (name "tuxguitar") (version "1.5.5") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/tuxguitar/TuxGuitar/TuxGuitar-" version "/tuxguitar-" version "-src.tar.gz")) (sha256 (base32 "1613aiq3x48l2nx1zxqh1cif6i5izkixfld8c9wri9nfv405b19f")))) (build-system ant-build-system) (arguments `(#:build-target "build" #:jdk ,icedtea-8 #:tests? #f ; no tests #:phases (modify-phases %standard-phases (replace 'build (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((initial-classpath (getenv "CLASSPATH")) (build-dir (lambda (dir) (setenv "CLASSPATH" (string-join (cons initial-classpath (find-files (getcwd) "\\.jar$")) ":")) (with-directory-excursion dir (if (file-exists? "build.xml") ((assoc-ref %standard-phases 'build) #:build-target "build") (begin ;; Generate default build.xml. ((@@ (guix build ant-build-system) default-build.xml) (string-append (string-downcase dir) ".jar") (string-append (assoc-ref outputs "out") "/share/java")) ((assoc-ref %standard-phases 'build)))))))) (map build-dir '("TuxGuitar-lib" "TuxGuitar-editor-utils" "TuxGuitar-ui-toolkit" "TuxGuitar-ui-toolkit-swt" "TuxGuitar-viewer" "TuxGuitar" "TuxGuitar-gm-utils" "TuxGuitar-alsa" "TuxGuitar-midi" "TuxGuitar-midi-ui" "TuxGuitar-compat"))))) (add-after 'build 'build-jni (lambda _ (setenv "CC" "gcc") (setenv "CFLAGS" (string-append "-fpic -I" (getcwd) "/build-scripts/native-modules/common-include")) (invoke "make" "-C" "./TuxGuitar-alsa/jni" "-f" "GNUmakefile"))) (replace 'install (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (bin (string-append out "/bin")) (share (string-append out "/share")) (jni-lib (string-append out "/lib")) (lib (string-append share "/java")) (swt (assoc-ref inputs "java-swt")) (mime (string-append share "/mime/packages")) (app (string-append share "/applications")) (man (string-append share "/man/man1"))) (mkdir-p bin) ;; Install all jars. (for-each (lambda (file) (install-file file lib)) (find-files "." "\\.jar$")) ;; Install jni libraries (for-each (lambda (file) (install-file file jni-lib)) (find-files "." "\\-jni.so$")) ;; Install all resources. (copy-recursively "./TuxGuitar/share" share) ;; Install desktop and mime files (install-file "./misc/tuxguitar.xml" mime) (install-file "./misc/tuxguitar.desktop" app) ;; Install manaual (install-file "./misc/tuxguitar.1" man) ;; Create wrapper. (call-with-output-file (string-append bin "/tuxguitar") (lambda (port) (let ((classpath (string-join (append (find-files lib "\\.jar$") (find-files swt "\\.jar$")) ":"))) (format port (string-append "#!/bin/sh\n" (which "java") " -cp " classpath " -Dtuxguitar.home.path=" out " -Dtuxguitar.share.path=" out "/share" " -Dswt.library.path=" swt "/lib" " -Djava.library.path=" out "/lib" " org.herac.tuxguitar.app.TGMainSingleton" " \"$1\" \"$2\""))))) (chmod (string-append bin "/tuxguitar") #o555))))))) (inputs (list alsa-lib java-swt)) (home-page "http://tuxguitar.com.ar/") (synopsis "Multitrack tablature editor and player") (description "TuxGuitar is a guitar tablature editor with player support through midi. It can display scores and multitrack tabs. TuxGuitar provides various additional features, including autoscrolling while playing, note duration management, bend/slide/vibrato/hammer-on/pull-off effects, support for tuplets, time signature management, tempo management, gp3/gp4/gp5 import and export.") (license license:lgpl2.1+))) (define-public pd (package (name "pd") (version "0.55-0") (source (origin (method url-fetch) (uri (string-append "http://msp.ucsd.edu/Software/pd-" version ".src.tar.gz")) (sha256 (base32 "1gn3mc65v29b9s7qbqmi7y5ka4j7y997fyqrb3s1b5g7drxbwfph")))) (build-system gnu-build-system) (arguments (let ((wish (string-append "wish" (version-major+minor (package-version tk))))) (list #:tests? #f ; no "check" target #:configure-flags #~(list "--disable-oss" "--enable-jack" "--without-local-portaudio" (string-append "--with-wish=" (search-input-file %build-inputs (string-append "/bin/" #$wish)))) #:phases #~(modify-phases %standard-phases (add-before 'configure 'fix-wish-path (lambda _ (substitute* "tcl/pd-gui.tcl" (("exec wish ") (string-append "exec " (which #$wish) " "))))))))) (native-inputs (list autoconf automake libtool gettext-minimal pkg-config)) (inputs (list tk alsa-lib jack-1 portaudio)) (home-page "https://puredata.info") (synopsis "Visual programming language for artistic performances") (description "Pure Data (aka Pd) is a visual programming language. Pd enables musicians, visual artists, performers, researchers, and developers to create software graphically, without writing lines of code. Pd is used to process and generate sound, video, 2D/3D graphics, and interface sensors, input devices, and MIDI. Pd can easily work over local and remote networks to integrate wearable technology, motor systems, lighting rigs, and other equipment. Pd is suitable for learning basic multimedia processing and visual programming methods as well as for realizing complex systems for large-scale projects.") (license license:bsd-3))) (define-public libpd (package (name "libpd") (version "0.11.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/libpd/libpd") (commit version) (recursive? #t))) ; for the 'pure-data' submodule (file-name (string-append name "-" version "-checkout")) (sha256 (base32 "1bcg1d9iyf9n37hwwphmih0c8rd1xcqykil5z1cax6xfs76552nk")))) (build-system gnu-build-system) (arguments '(#:tests? #f ; no tests #:make-flags '("CC=gcc") #:phases (modify-phases %standard-phases (delete 'configure) ; no configure script (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) (invoke "make" "install" (string-append "prefix=" out) ;; XXX: Fix the last 2 lines of 'install' target. "LIBPD_IMPLIB=NO" "LIBPD_DEF=NO"))))))) (home-page "http://libpd.cc/") (synopsis "Pure Data as an embeddable audio synthesis library") (description "Libpd provides Pure Data as an embeddable audio synthesis library. Its main purpose is to liberate raw audio rendering from audio and MIDI drivers.") (license license:bsd-3))) (define-public portmidi (package (name "portmidi") (version "217") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/portmedia/portmidi/" version "/portmidi-src-" version ".zip")) (sha256 (base32 "03rfsk7z6rdahq2ihy5k13qjzgx757f75yqka88v3gc0pn9ais88")) (patches (list (search-patch "portmidi-modular-build.patch"))))) (build-system cmake-build-system) (arguments `(#:tests? #f ; tests cannot be linked #:build-type "Release" ; needed to have PMALSA set #:configure-flags (list "-DPORTMIDI_ENABLE_JAVA=Off" "-DPORTMIDI_ENABLE_TEST=Off") ; tests fail linking #:phases (modify-phases %standard-phases ;; Some packages, e.g., MuseScore, expect "libporttime.so" instead of ;; "libportmidi.so". Distributions get away with it by creating an ;; appropriate symlink. (add-after 'install 'add-porttime (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (lib (string-append out "/lib"))) (with-directory-excursion lib (symlink "libportmidi.so" "libporttime.so"))))) (add-after 'install 'install-pkg-config (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (pkg-config-dir (string-append out "/lib/pkgconfig"))) (mkdir-p pkg-config-dir) (with-output-to-file (string-append pkg-config-dir "/portmidi.pc") (lambda _ (format #t "prefix=~@*~a~@ libdir=${prefix}/lib~@ includedir=${prefix}/include~@ Name: portmidi~@ Description:~@ Version: ~a~@ Libs: -L${libdir} -lportmidi~@ Cflags: -I${includedir}~%" out ,version))))))))) (inputs (list alsa-lib)) (native-inputs (list unzip)) (home-page "https://portmedia.sourceforge.net/portmidi/") (synopsis "Library for MIDI I/O") (description "PortMidi is a library supporting real-time input and output of MIDI data using a system-independent interface.") (license license:expat))) (define-public portmidi-2 (package (name "portmidi") (version "2.0.4") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/PortMidi/portmidi") (commit "b808babecdc5d05205467dab5c1006c5ac0fdfd4"))) (sha256 (base32 "05a3dfpgbpcg08p8a3acjrrd1qy5hvvray2kz2asygy1vf3mx85s")) (file-name (git-file-name name version)))) (build-system cmake-build-system) (arguments `(#:tests? #f ;Tests are interactive and can be found in the #:configure-flags ;pm_tests/ directory of the build tree. (list "-DBUILD_PORTMIDI_TESTS=On") #:phases (modify-phases %standard-phases (add-after 'unpack 'fix-version (lambda _ (substitute* "CMakeLists.txt" (("2.0.3") (version)))))))) (inputs (list alsa-lib)) (native-inputs (list unzip)) (home-page "https://github.com/PortMidi/") (synopsis "Library for MIDI I/O") (description "PortMidi is a library supporting real-time input and output of MIDI data using a system-independent interface.") (license license:expat))) (define-public python-pyportmidi (let ((commit "d9e5ee00b208b09618fa0d4a5bbce3c9c077b386") (revision "0")) (package (name "python-pyportmidi") (version (git-version "0.0.7" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/PortMidi/pm_python") (commit commit))) (sha256 (base32 "1jvp9na8d1hw46w9ybhkimbavfb3ysw7hp30cbk6dj40k5y5vgvz")) (file-name (git-file-name name version)))) (build-system python-build-system) (inputs (list portmidi-2 alsa-lib)) (native-inputs (list python-cython)) (home-page "https://github.com/PortMidi") (synopsis "Python bindings to PortMidi") (description "This package provides Python bindings to the PortMidi library.") (license license:expat)))) (define-public python-pysmf (let ((commit "8a98a557470301f5a471d07d37f334a5b8892602") (revision "1")) (package (name "python-pysmf") (version (git-version "0.1.1" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/mididings/pysmf") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "1ic24k8jr7iwcrj7xaw5b9i22al05rxfpjw39bbjsg7v09kvygcv")))) (build-system pyproject-build-system) (arguments (list #:phases '(modify-phases %standard-phases (add-after 'unpack 'fix-build-system (lambda _ (substitute* "setup.py" (("from subprocess") "import sys; from subprocess"))))))) (inputs (list libsmf glib)) (native-inputs (list pkg-config python-cython python-pytest)) (home-page "https://github.com/mididings/pysmf") (synopsis "Read and write Standard MIDI files") (description "pysmf is a Python extension module for reading and writing Standard MIDI files, based on libsmf.") (license license:bsd-2)))) (define-public frescobaldi (package (name "frescobaldi") (version "3.3.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/frescobaldi/frescobaldi/releases/download/v" version "/frescobaldi-" version ".tar.gz")) (sha256 (base32 "1n60gfnf6x0l1bac088g9adzx0lskbl9knd4y1ynr3y0zcs0kfcz")))) (build-system python-build-system) (arguments (list #:tests? #f ;no tests included #:phases #~(modify-phases %standard-phases (add-before 'build 'generate-translations (lambda _ (invoke "make" "-C" "i18n"))) (add-before 'build 'generate-metadata (lambda _ (invoke "make" "-C" "linux"))) (add-after 'install 'wrap-executable (lambda _ ;; Ensure that icons are found at runtime. (wrap-program (string-append #$output "/bin/frescobaldi") `("QT_PLUGIN_PATH" prefix ,(list (getenv "QT_PLUGIN_PATH"))))))))) (inputs (list bash-minimal lilypond poppler portmidi-2 python-ly python-poppler-qt5 python-pyportmidi python-pyqt python-sip qpageview qtsvg-5)) (home-page "https://www.frescobaldi.org/") (synopsis "LilyPond sheet music text editor") (description "Frescobaldi is a LilyPond sheet music text editor with syntax highlighting and automatic completion. Among other things, it can render scores next to the source, can capture input from MIDI or read MusicXML and ABC files, has a MIDI player for proof-listening, and includes a documentation browser.") (license license:gpl2+))) (define-public drumstick (package (name "drumstick") (version "2.3.1") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/drumstick/" version "/drumstick-" version ".tar.bz2")) (sha256 (base32 "1rs248pkgn6d29nkvw9ab6dvi1vsz220jdmz1ddzr29cpyc0adfh")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; no test target (inputs (list qtbase-5 qtsvg-5 qttools-5 alsa-lib)) (native-inputs (list pkg-config libxslt ; for xsltproc docbook-xsl doxygen graphviz)) ; for dot (home-page "https://drumstick.sourceforge.io/") (synopsis "C++ MIDI library") (description "Drumstick is a set of MIDI libraries using C++/Qt5 idioms and style. It includes a C++ wrapper around the ALSA library sequencer interface. A complementary library provides classes for processing SMF (Standard MIDI files: .MID/.KAR), Cakewalk (.WRK), and Overture (.OVE) file formats. A 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.8.4") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/vmpk/vmpk/" version "/vmpk-" version ".tar.bz2")) (sha256 (base32 "0kh8pns9pla9c47y2nwckjpiihczg6rpg96aignsdsd7vkql69s9")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; no test target (inputs (list drumstick qtbase-5 qtsvg-5 qtx11extras)) (native-inputs (list libxslt ;for xsltproc docbook-xml-4.4 docbook-xsl qttools-5 pkg-config)) (home-page "https://vmpk.sourceforge.io/") (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") (version "3.0.6") (source (origin (method url-fetch)