aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/music.scm
diff options
context:
space:
mode:
authorLeo Famulari <leo@famulari.name>2017-01-06 17:14:41 -0500
committerLeo Famulari <leo@famulari.name>2017-01-06 17:14:41 -0500
commit74288230ea8b2310495dc2739f39ceadcc143fd0 (patch)
tree73ba6c7c13d59c5f92b409c94dccfff159e08f4d /gnu/packages/music.scm
parent92e779592d269ca1924f184496eb4ca832997b12 (diff)
parentaa21c764d65068783ae31febee2a92eb3d138a24 (diff)
downloadpatches-74288230ea8b2310495dc2739f39ceadcc143fd0.tar
patches-74288230ea8b2310495dc2739f39ceadcc143fd0.tar.gz
Merge branch 'master' into core-updates
Diffstat (limited to 'gnu/packages/music.scm')
-rw-r--r--gnu/packages/music.scm421
1 files changed, 369 insertions, 52 deletions
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 78ca558b2d..59fd508f62 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -231,6 +231,85 @@ score, keyboard, guitar, drum and controller views.")
many input formats and provides a customisable Vi-style user interface.")
(license license:gpl2+)))
+(define-public denemo
+ (package
+ (name "denemo")
+ (version "2.0.14")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/denemo/denemo-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1a7g38695g7jjypx25qp0dx0asrh72xwdj0mdhmb9pfyzlppq0wh"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ ;; Denemo's documentation says to use this command to run its
+ ;; testsuite.
+ (lambda _
+ (zero? (system* "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 (string-append (assoc-ref inputs "lilypond")
+ "/bin/lilypond")))
+ (substitute* "src/core/prefops.c"
+ (("g_string_new \\(\"lilypond\"\\);")
+ (string-append "g_string_new (\""
+ lilypond
+ "\");"))))
+ #t))
+ (add-after 'install 'correct-filename
+ ;; "graft-derivation/shallow" from the (guix grafts) module runs in
+ ;; the C locale, expecting file names to be ASCII encoded. This
+ ;; phase renames a filename with a Unicode character in it to meet
+ ;; the aforementioned condition.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out")))
+ (chdir (string-append
+ out
+ "/share/denemo/templates/instruments/woodwind"))
+ (rename-file "Clarinet in B♭.denemo"
+ "Clarinet in Bb.denemo"))
+ #t)))))
+ (native-inputs
+ `(("glib:bin", glib "bin") ; for gtester
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ `(("alsa-lib" ,alsa-lib)
+ ("aubio" ,aubio)
+ ("evince" ,evince)
+ ("fftw" ,fftw)
+ ("fluidsynth" ,fluidsynth)
+ ("glib" ,glib)
+ ("gtk+" ,gtk+)
+ ("gtk-doc" ,gtk-doc)
+ ("gtksourceview" ,gtksourceview)
+ ("guile" ,guile-2.0)
+ ("intltool" ,intltool)
+ ("librsvg" ,librsvg)
+ ("libsndfile" ,libsndfile)
+ ("libtool" ,libtool)
+ ("libxml2" ,libxml2)
+ ("lilypond", lilypond)
+ ("portaudio" ,portaudio)
+ ("portmidi" ,portmidi)
+ ("rubberband" ,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 "http://www.denemo.org")
+ (license license:gpl3+)))
+
(define-public hydrogen
(package
(name "hydrogen")
@@ -588,11 +667,12 @@ Guile.")
(define-public non-sequencer
;; The latest tagged release is three years old and uses a custom build
- ;; system, so we take the last commit affecting the "sequencer" directory.
- (let ((commit "1d9bd576f6bf7ea240af5f7a60260592750af0dd"))
+ ;; system, so we take the last commit.
+ (let ((commit "a22f33f486a5c6f75b60e36f66504c036c0f6f8c")
+ (revision "2"))
(package
(name "non-sequencer")
- (version (string-append "1.9.5-" (string-take commit 7)))
+ (version (string-append "1.9.5-" revision "." (string-take commit 7)))
(source (origin
(method git-fetch)
(uri (git-reference
@@ -600,7 +680,7 @@ Guile.")
(commit commit)))
(sha256
(base32
- "0pkkw8q6d55j38xm7r4rwpdv1wy00a44h8c4wrn7vbgpq9nij46y"))
+ "09q5x8i4f8mqnl8w6xnsq5zriy4bzdl4x2vq9n34a433rfrk84bg"))
(file-name (string-append name "-" version "-checkout"))))
(build-system waf-build-system)
(arguments
@@ -638,6 +718,28 @@ Sequencer happens on-line, in real-time. Music can be composed live, while the
transport is rolling.")
(license license:gpl2+))))
+(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
+ `(("jack" ,jack-1)
+ ("liblo" ,liblo)
+ ("ntk" ,ntk)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (home-page "http://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+)))
+
(define-public solfege
(package
(name "solfege")
@@ -1090,7 +1192,6 @@ Laurens Hammond and Don Leslie.")
`(("rapicorn" ,rapicorn)
("guile" ,guile-1.8)
("python" ,python-2)
- ("cython" ,python2-cython)
("libgnomecanvas" ,libgnomecanvas)
("libogg" ,libogg)
("libmad" ,libmad)
@@ -1101,6 +1202,7 @@ Laurens Hammond and Don Leslie.")
(native-inputs
`(("pkg-config" ,pkg-config)
("glib:bin" ,glib "bin")
+ ("cython" ,python2-cython)
("perl" ,perl)
("perl-xml-parser" ,perl-xml-parser)))
(home-page "https://testbit.eu/wiki/Beast_Home")
@@ -1382,10 +1484,10 @@ using a system-independent interface.")
#t)))))
(inputs
`(("portmidi" ,portmidi)
- ("alsa-lib" ,alsa-lib)
- ("python-cython" ,python-cython)))
+ ("alsa-lib" ,alsa-lib)))
(native-inputs
- `(("unzip" ,unzip)))
+ `(("python-cython" ,python-cython)
+ ("unzip" ,unzip)))
(home-page "http://portmedia.sourceforge.net/portmidi/")
(synopsis "Python bindings to PortMidi")
(description
@@ -1405,6 +1507,7 @@ using a system-independent interface.")
(base32
"1rnk8i8dlshzx16n2qxcsqcs7kywgyazzyzw2vy4vp2gsm9vs9ml"))))
(build-system python-build-system)
+ (arguments `(#:tests? #f)) ; no tests included
(inputs
`(("lilypond" ,lilypond)
("portmidi" ,portmidi)
@@ -1474,7 +1577,7 @@ backends, including ALSA, OSS, Network and FluidSynth.")
(define-public zynaddsubfx
(package
(name "zynaddsubfx")
- (version "3.0.0")
+ (version "3.0.1")
(source (origin
(method url-fetch)
(uri (string-append
@@ -1482,7 +1585,7 @@ backends, including ALSA, OSS, Network and FluidSynth.")
version "/zynaddsubfx-" version ".tar.bz2"))
(sha256
(base32
- "0p640hlw28264nzrnd2lm4bi5snas4fvh80p8lpxvph2hjw3sncl"))))
+ "1qijvlbv41lnqaqbp6gh1i42xzf1syviyxz8wr39xbz55cw7y0d8"))))
(build-system cmake-build-system)
(arguments
`(#:phases
@@ -1520,7 +1623,7 @@ capabilities, custom envelopes, effects, etc.")
(define-public yoshimi
(package
(name "yoshimi")
- (version "1.4.1")
+ (version "1.5.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/yoshimi/"
@@ -1528,7 +1631,7 @@ capabilities, custom envelopes, effects, etc.")
"/yoshimi-" version ".tar.bz2"))
(sha256
(base32
- "133sx42wb66g803pcrgdwph40wh94knvab3yfqkgm0001jv4v14y"))))
+ "10s1i18xlmvqfrnr0zn2mj2b28i7p62dlqzzzkmpaapqj1gsgpz5"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ; there are no tests
@@ -1673,6 +1776,48 @@ JACK for audio and ALSA sequencer for MIDI as multimedia infrastructures and
follows a traditional multi-track tape recorder control paradigm.")
(license license:gpl2+)))
+(define-public ams-lv2
+ (package
+ (name "ams-lv2")
+ (version "1.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/blablack/ams-lv2/"
+ "archive/" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1392spswkhfd38fggf584wb3m8aqpg7csfrs9zxnzyvhgmp0fgqk"))))
+ (build-system waf-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* "wscript"
+ (("'-msse', '-mfpmath=sse', ") ""))
+ #t))))
+ #:tests? #f)) ; no tests
+ (inputs
+ `(("lv2" ,lv2)
+ ("lvtk" ,lvtk)
+ ("gtkmm" ,gtkmm-2)
+ ("gtk" ,gtk+-2)
+ ("cairo" ,cairo)
+ ("fftw" ,fftw)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (home-page "https://objectivewave.wordpress.com/ams-lv2/")
+ (synopsis "Port of Alsa Modular Synth internal modules into LV2")
+ (description "This set of LV2 plugins is a port of the internal modules
+found in Alsa Modular Synth. These plugins are used to create modular
+synthesizers and contain: VCO, VCF, VCA, LFO, slew limiter, envelopes, sample
+and hold, etc.")
+ (license license:gpl2)))
+
(define-public gxtuner
(package
(name "gxtuner")
@@ -1744,8 +1889,8 @@ analogue-like user interface.")
#t)))))
(inputs
`(("lilv" ,lilv)
- ("fftw" ,fftw)
- ("fftwf" ,fftwf)
+ ("fftw" ,fftw-with-threads)
+ ("fftwf" ,fftwf-with-threads)
("lv2" ,lv2)
("jack" ,jack-1)
("readline" ,readline)))
@@ -1796,14 +1941,16 @@ event-based scripts for scrobbling, notifications, etc.")
(define-public python-mutagen
(package
(name "python-mutagen")
- (version "1.31")
+ (version "1.35.1")
(source (origin
(method url-fetch)
(uri (pypi-uri "mutagen" version))
(sha256
(base32
- "16fnnhspniac2i7qswxafawsh2x2a803hmc6bn9k1zl5fxq1380a"))))
+ "0klk68c1n3285vvm2xzk8ii7mlqp1dxii04askan0gi1wlpagka9"))))
(build-system python-build-system)
+ (native-inputs
+ `(("python-pytest" ,python-pytest)))
(home-page "https://bitbucket.org/lazka/mutagen")
(synopsis "Read and write audio tags")
(description "Mutagen is a Python module to handle audio metadata. It
@@ -1821,14 +1968,18 @@ streams on an individual packet/page level.")
(define-public python-musicbrainzngs
(package
(name "python-musicbrainzngs")
- (version "0.5")
+ (version "0.6")
(source (origin
(method url-fetch)
(uri (pypi-uri "musicbrainzngs" version))
(sha256
(base32
- "12f48llmdf5rkiqxcb70k2k1dmhm8byq0ifazvlrca8dfnmqh4r8"))))
+ "1dddarpjawryll2wss65xq3v9q8ln8dan7984l5dxzqx88d2dvr8"))))
(build-system python-build-system)
+ (arguments
+ '(;; The tests fail suffer from race conditions:
+ ;; https://github.com/alastair/python-musicbrainzngs/issues/211
+ #:tests? #f))
(home-page "https://python-musicbrainzngs.readthedocs.org/")
(synopsis "Python bindings for MusicBrainz NGS webservice")
(description "Musicbrainzngs implements Python bindings of the MusicBrainz
@@ -1855,7 +2006,6 @@ MusicBrainz database.")
`(;; Python 3 is not supported:
;; https://github.com/echonest/pyechonest/issues/42
#:python ,python-2))
- (native-inputs `(("python2-setuptools" ,python2-setuptools)))
(home-page "https://github.com/echonest/pyechonest")
(synopsis "Python interface to The Echo Nest APIs")
(description "Pyechonest is a Python library for the Echo Nest API. With
@@ -1877,13 +2027,13 @@ detailed track info including timbre, pitch, rhythm and loudness information.
(define-public python-pylast
(package
(name "python-pylast")
- (version "1.5.1")
+ (version "1.6.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "pylast" version))
(sha256
(base32
- "10znd9xr1vs2ix519jkz3ccm90zciaddcdr2w2wrrh2jyy3bc59a"))))
+ "0bml11gfkxqd3i2jxkn5k2xllc4rvxjcyhs8an05gcyy1zp2bwvb"))))
(build-system python-build-system)
(native-inputs
`(("python-coverage" ,python-coverage)
@@ -1898,58 +2048,50 @@ detailed track info including timbre, pitch, rhythm and loudness information.
(synopsis "Python interface to Last.fm and Libre.fm")
(description "A Python interface to Last.fm and other API-compatible
websites such as Libre.fm.")
- (license license:asl2.0)
- (properties `((python2-variant . ,(delay python2-pylast))))))
+ (license license:asl2.0)))
(define-public python2-pylast
- (let ((pylast (package-with-python2
- (strip-python2-variant python-pylast))))
- (package (inherit pylast)
- (native-inputs
- `(("python2-setuptools" ,python2-setuptools)
- ,@(package-native-inputs pylast))))))
+ (package-with-python2 python-pylast))
(define-public beets
(package
(name "beets")
- (version "1.3.19")
+ (version "1.4.2")
(source (origin
(method url-fetch)
(uri (pypi-uri "beets" version))
(sha256
(base32
- "1vi1dh3fr554bnm8y9pjy09hblw18v6cl2jppzwlp72afri1w93b"))))
+ "0sna2hx8sdaa36jnvw5a7m31wzfm717lw2ixh906fsfp43i74k5m"))))
(build-system python-build-system)
(arguments
- `(#:python ,python-2 ; only Python 2 is supported
- #:phases
+ `(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'set-HOME
(lambda _ (setenv "HOME" (string-append (getcwd) "/tmp"))))
(replace 'check
(lambda _ (zero? (system* "nosetests" "-v")))))))
(native-inputs
- `(("python2-beautifulsoup4" ,python2-beautifulsoup4)
- ("python2-flask" ,python2-flask)
- ("python2-setuptools" ,python2-setuptools)
- ("python2-mock" ,python2-mock)
- ("python2-mpd2" ,python2-mpd2)
- ("python2-nose" ,python2-nose)
- ("python2-pathlib" ,python2-pathlib)
- ("python2-pyxdg" ,python2-pyxdg)
- ("python2-pyechonest" ,python2-pyechonest)
- ("python2-pylast" ,python2-pylast)
- ("python2-rarfile" ,python2-rarfile)
- ("python2-responses" ,python2-responses)))
+ `(("python-beautifulsoup4" ,python-beautifulsoup4)
+ ("python-flask" ,python-flask)
+ ("python-mock" ,python-mock)
+ ("python-mpd2" ,python-mpd2)
+ ("python-nose" ,python-nose)
+ ("python-pathlib" ,python-pathlib)
+ ("python-pyxdg" ,python-pyxdg)
+ ("python-pylast" ,python-pylast)
+ ("python-rarfile" ,python-rarfile)
+ ("python-responses" ,python-responses)))
;; TODO: Install optional plugins and dependencies.
(inputs
- `(("python2-enum34" ,python2-enum34)
- ("python2-jellyfish" ,python2-jellyfish)
- ("python2-munkres" ,python2-munkres)
- ("python2-musicbrainzngs" ,python2-musicbrainzngs)
- ("python2-mutagen" ,python2-mutagen)
- ("python2-pyyaml" ,python2-pyyaml)
- ("python2-unidecode" ,python2-unidecode)))
+ `(("python-discogs-client" ,python-discogs-client)
+ ("python-enum34" ,python-enum34)
+ ("python-jellyfish" ,python-jellyfish)
+ ("python-munkres" ,python-munkres)
+ ("python-musicbrainzngs" ,python-musicbrainzngs)
+ ("python-mutagen" ,python-mutagen)
+ ("python-pyyaml" ,python-pyyaml)
+ ("python-unidecode" ,python-unidecode)))
(home-page "http://beets.io")
(synopsis "Music organizer")
(description "The purpose of beets is to get your music collection right
@@ -2421,3 +2563,178 @@ a simulation of an analog Wah pedal with switchless activation."))))
filters, crossovers, simple gain plugins without zipper noise, switch box
plugins, a switch trigger, a toggle switch, and a peakmeter.")
(license license:gpl2+))))
+
+(define-public ingen
+ (let ((commit "fd147d0b888090bfb897505852c1f25dbdf77e18")
+ (revision "1"))
+ (package
+ (name "ingen")
+ (version (string-append "0.0.0-" revision "."
+ (string-take commit 9)))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "http://git.drobilla.net/ingen.git")
+ (commit commit)))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "1qmg79962my82c43vyrv5sxbqci9c7gc2s9bwaaqd0fcf08xcz1z"))))
+ (build-system waf-build-system)
+ (arguments
+ `(#:tests? #f ; no "check" target
+ #:configure-flags (list "--no-webkit")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-wscript
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (substitute* "wscript"
+ ;; FIXME: Our version of lv2specgen.py does not behave as
+ ;; expected. Maybe this requires a development version of
+ ;; LV2.
+ (("lv2specgen.py") "touch ingen.lv2/ingen.html; echo")
+ ;; Add libraries to RUNPATH.
+ (("^(.+)target.*= 'src/ingen/ingen'," line prefix)
+ (string-append prefix
+ "linkflags=[\"-Wl,-rpath="
+ out "/lib" "\"]," line)))
+ (substitute* '("src/wscript"
+ "src/server/wscript")
+ ;; Add libraries to RUNPATH.
+ (("bld.env.PTHREAD_LINKFLAGS" line)
+ (string-append line
+ " + [\"-Wl,-rpath=" out "/lib" "\"]")))
+ (substitute* "src/client/wscript"
+ ;; Add libraries to RUNPATH.
+ (("^(.+)target.*= 'ingen_client'," line prefix)
+ (string-append prefix
+ "linkflags=[\"-Wl,-rpath="
+ out "/lib" "\"]," line)))
+ (substitute* "src/gui/wscript"
+ ;; Add libraries to RUNPATH.
+ (("^(.+)target.* = 'ingen_gui.*" line prefix)
+ (string-append prefix
+ "linkflags=[\"-Wl,-rpath="
+ out "/lib" "\"]," line))))
+ #t)))))
+ (inputs
+ `(("boost" ,boost)
+ ("python-rdflib" ,python-rdflib)
+ ("python" ,python)
+ ("jack" ,jack-1)
+ ("lv2" ,lv2)
+ ("lilv" ,lilv)
+ ("raul" ,raul-devel)
+ ("ganv" ,ganv-devel)
+ ("suil" ,suil)
+ ("serd" ,serd)
+ ("sord" ,sord)
+ ("sratom" ,sratom)
+ ("gtkmm" ,gtkmm-2)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("python-pygments" ,python-pygments)))
+ (home-page "http://drobilla.net/software/ingen")
+ (synopsis "Modular audio processing system")
+ (description "Ingen is a modular audio processing system for JACK and
+LV2 based systems. Ingen is built around LV2 technology and a strict
+separation of engine from user interface. The engine is controlled
+exclusively through a protocol, and can execute as a headless process, with an
+in-process GUI, or as an LV2 plugin. The GUI can run as a program which
+communicates over a Unix or TCP/IP socket, or as an embeddable LV2 GUI which
+communicates via LV2 ports. Any saved Ingen graph can be loaded as an LV2
+plugin on any system where Ingen is installed. This allows users to visually
+develop custom plugins for use in other applications without programming.")
+ (license license:agpl3+))))
+
+(define-public qmidiarp
+ (package
+ (name "qmidiarp")
+ (version "0.6.4")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/qmidiarp/qmidiarp/"
+ version "/qmidiarp-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "1gkfv8ajgf86kbn6j5ilfc1zlz17gdi9yxzywqd6jwff4xlm75hx"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:configure-flags
+ (list "--enable-qt5"
+ "CXXFLAGS=-std=gnu++11")))
+ (inputs
+ `(("qtbase" ,qtbase)
+ ("alsa-lib" ,alsa-lib)
+ ("jack" ,jack-1)
+ ("liblo" ,liblo)
+ ("lv2" ,lv2)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("qttools" ,qttools)))
+ (home-page "http://qmidiarp.sourceforge.net/")
+ (synopsis "MIDI arpeggiator")
+ (description "QMidiArp is an advanced MIDI arpeggiator, programmable step
+sequencer and LFO. It can hold any number of arpeggiator, sequencer, or LFO
+modules running in parallel.")
+ (license license:gpl2+)))
+
+(define-public seq24
+ (package
+ (name "seq24")
+ (version "0.9.3")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://launchpad.net/seq24/trunk/"
+ version "/+download/seq24-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "12dphdhnvfk1k0vmagi1v2lhyxjyj1j3cz6ksjw0ydcvid1x8ap2"))
+ (patches (search-patches "seq24-rename-mutex.patch"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:configure-flags
+ (list "CXXFLAGS=-std=gnu++11")))
+ (inputs
+ `(("gtkmm" ,gtkmm-2)
+ ("alsa-lib" ,alsa-lib)
+ ("jack" ,jack-1)
+ ("lash" ,lash)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (home-page "https://edge.launchpad.net/seq24/")
+ (synopsis "Real-time MIDI sequencer")
+ (description "Seq24 is a real-time MIDI sequencer. It was created to
+provide a very simple interface for editing and playing MIDI loops.")
+ (license license:gpl2+)))
+
+(define-public python-discogs-client
+ (package
+ (name "python-discogs-client")
+ (version "2.2.1")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "discogs-client" version))
+ (sha256
+ (base32
+ "053ld2psh0yj3z0kg6z5bn4y3cr562m727494n0ayhgzbkjbacly"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-oauthlib" ,python-oauthlib)
+ ("python-requests" ,python-requests)))
+ (native-inputs
+ `(("python-six" ,python-six)))
+ (home-page "https://github.com/discogs/discogs_client")
+ (synopsis "Official Python client for the Discogs API")
+ (description "This is the official Discogs API client for Python. It enables
+you to query the Discogs database for information on artists, releases, labels,
+users, Marketplace listings, and more. It also supports OAuth 1.0a
+authorization, which allows you to change user data such as profile information,
+collections and wantlists, inventory, and orders.")
+ (license license:bsd-2)))
+
+(define-public python2-discogs-client
+ (package-with-python2 python-discogs-client))