gnu: Add python-cookiecutter.
[jackhill/guix/guix.git] / gnu / packages / music.scm
CommitLineData
1b6826d3 1;;; GNU Guix --- Functional package management for GNU
0163b900 2;;; Copyright © 2014, 2019 Eric Bavier <bavier@member.fsf.org>
6ec95a00 3;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
e8069d01 4;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
aa0edd3f 5;;; Copyright © 2016 Al McElrath <hello@yrns.org>
6ff5e9ba 6;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
e42ba3da 7;;; Copyright © 2016, 2018 Leo Famulari <leo@famulari.name>
72385c34 8;;; Copyright © 2016, 2017, 2019 Kei Kebreau <kkebreau@posteo.net>
6d3ef286 9;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net>
23319ed6 10;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
47956fa0 11;;; Copyright © 2017 ng0 <ng0@n0.is>
a42619e5 12;;; Copyright © 2017 Rodger Fox <thylakoid@openmailbox.org>
8204ec8d 13;;; Copyright © 2017, 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
55af6456 14;;; Copyright © 2017, 2018, 2019 Pierre Langlois <pierre.langlois@gmx.com>
bc27eb3b 15;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
4fa37ce2 16;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
6b445c57 17;;; Copyright © 2018 nee <nee.git@hidamari.blue>
b0dea60c 18;;; Copyright © 2018 Stefan Reichör <stefan@xsteve.at>
4715f92e 19;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
4b577961 20;;; Copyright © 2018, 2019 Ludovic Courtès <ludo@gnu.org>
e029d90f 21;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
1331a6c0 22;;; Copyright © 2019 Gabriel Hondet <gabrielhondet@gmail.com>
455e6a31 23;;; Copyright © 2019 Timotej Lazar <timotej.lazar@araneo.si>
4ee2cce3 24;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.lonestar.org>
7fcc2f93 25;;; Copyright © 2019 raingloom <raingloom@protonmail.com>
1c463524 26;;; Copyright © 2019 David Wilson <david@daviwil.com>
1b6826d3
RW
27;;;
28;;; This file is part of GNU Guix.
29;;;
30;;; GNU Guix is free software; you can redistribute it and/or modify it
31;;; under the terms of the GNU General Public License as published by
32;;; the Free Software Foundation; either version 3 of the License, or (at
33;;; your option) any later version.
34;;;
35;;; GNU Guix is distributed in the hope that it will be useful, but
36;;; WITHOUT ANY WARRANTY; without even the implied warranty of
37;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
38;;; GNU General Public License for more details.
39;;;
40;;; You should have received a copy of the GNU General Public License
41;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
42
43(define-module (gnu packages music)
44 #:use-module (guix utils)
45 #:use-module (guix packages)
46 #:use-module (guix download)
8e80244a 47 #:use-module (guix git-download)
1b6826d3
RW
48 #:use-module ((guix licenses) #:prefix license:)
49 #:use-module (guix build-system gnu)
f467c352 50 #:use-module (guix build-system ant)
8b9ec354 51 #:use-module (guix build-system cmake)
2394afa4 52 #:use-module (guix build-system meson)
b0c2c5ab 53 #:use-module (guix build-system perl)
821664f1 54 #:use-module (guix build-system python)
bc27eb3b 55 #:use-module (guix build-system scons)
58301682 56 #:use-module (guix build-system glib-or-gtk)
8e80244a 57 #:use-module (guix build-system waf)
87d1b7b0 58 #:use-module (guix build-system trivial)
5703380b 59 #:use-module (guix build-system go)
1b6826d3 60 #:use-module (gnu packages)
7f559045 61 #:use-module (gnu packages admin)
ddfddb0c 62 #:use-module (gnu packages algebra)
91595624 63 #:use-module (gnu packages apr)
c267cc15 64 #:use-module (gnu packages audio)
2d0fd07b 65 #:use-module (gnu packages autotools)
b7367762 66 #:use-module (gnu packages backup)
8b9ec354 67 #:use-module (gnu packages base) ;libbdf
7bac8196 68 #:use-module (gnu packages bash)
1b6826d3 69 #:use-module (gnu packages bison)
b7367762 70 #:use-module (gnu packages boost)
e8069d01 71 #:use-module (gnu packages cdrom)
8b9ec354
RW
72 #:use-module (gnu packages code)
73 #:use-module (gnu packages check)
a7a7186c 74 #:use-module (gnu packages cmake)
8b9ec354 75 #:use-module (gnu packages compression)
d20b7384 76 #:use-module (gnu packages crypto)
aa0edd3f 77 #:use-module (gnu packages curl)
13416a10 78 #:use-module (gnu packages cyrus-sasl)
d20b7384 79 #:use-module (gnu packages datastructures)
1b6826d3 80 #:use-module (gnu packages docbook)
99828fa7 81 #:use-module (gnu packages documentation)
91595624 82 #:use-module (gnu packages emacs)
13416a10 83 #:use-module (gnu packages file)
1b6826d3 84 #:use-module (gnu packages flex)
8e80244a 85 #:use-module (gnu packages fltk)
1b6826d3
RW
86 #:use-module (gnu packages fonts)
87 #:use-module (gnu packages fontutils)
3bf429af 88 #:use-module (gnu packages freedesktop)
72385c34 89 #:use-module (gnu packages game-development)
6260d1a8 90 #:use-module (gnu packages gcc)
aa0edd3f 91 #:use-module (gnu packages gnupg)
1b6826d3
RW
92 #:use-module (gnu packages gettext)
93 #:use-module (gnu packages ghostscript)
ec8da0e2 94 #:use-module (gnu packages gl)
8e80244a 95 #:use-module (gnu packages glib)
c267cc15 96 #:use-module (gnu packages gnome)
a9f847ad 97 #:use-module (gnu packages gpodder)
770305f4 98 #:use-module (gnu packages graphics)
d20b7384 99 #:use-module (gnu packages gstreamer)
1b6826d3
RW
100 #:use-module (gnu packages gtk)
101 #:use-module (gnu packages guile)
7f559045 102 #:use-module (gnu packages haskell)
c267cc15 103 #:use-module (gnu packages image)
1b6826d3 104 #:use-module (gnu packages imagemagick)
6260d1a8 105 #:use-module (gnu packages java)
91595624 106 #:use-module (gnu packages libffi)
d20b7384 107 #:use-module (gnu packages libusb)
7bac8196
LF
108 #:use-module (gnu packages linux) ; for alsa-utils
109 #:use-module (gnu packages lirc)
91595624 110 #:use-module (gnu packages llvm)
c267cc15
RW
111 #:use-module (gnu packages man)
112 #:use-module (gnu packages mp3)
3bf429af 113 #:use-module (gnu packages mpd)
e8069d01 114 #:use-module (gnu packages ncurses)
1b6826d3 115 #:use-module (gnu packages netpbm)
91595624 116 #:use-module (gnu packages pcre)
821664f1 117 #:use-module (gnu packages pdf)
1b6826d3 118 #:use-module (gnu packages perl)
b2961dda 119 #:use-module (gnu packages perl-web)
1b6826d3 120 #:use-module (gnu packages pkg-config)
d20b7384 121 #:use-module (gnu packages protobuf)
d231bb35 122 #:use-module (gnu packages pulseaudio) ;libsndfile
1b6826d3 123 #:use-module (gnu packages python)
1b2f753d 124 #:use-module (gnu packages python-web)
44d10b1f 125 #:use-module (gnu packages python-xyz)
8b9ec354 126 #:use-module (gnu packages qt)
d231bb35 127 #:use-module (gnu packages rdf)
c493679f 128 #:use-module (gnu packages readline)
1b6826d3 129 #:use-module (gnu packages rsync)
21d18113 130 #:use-module (gnu packages sdl)
cd0322a3 131 #:use-module (gnu packages sqlite)
2d0fd07b 132 #:use-module (gnu packages tcl)
1b6826d3 133 #:use-module (gnu packages texinfo)
8f9ac901 134 #:use-module (gnu packages tex)
4ee2cce3 135 #:use-module (gnu packages time)
13416a10 136 #:use-module (gnu packages tls)
1ea29aa0 137 #:use-module (gnu packages version-control)
e8069d01 138 #:use-module (gnu packages video)
8b9ec354 139 #:use-module (gnu packages web)
c30a66de 140 #:use-module (gnu packages wxwidgets)
c267cc15 141 #:use-module (gnu packages xml)
ddfddb0c 142 #:use-module (gnu packages xorg)
c267cc15 143 #:use-module (gnu packages xiph)
5703380b
PN
144 #:use-module (gnu packages golang)
145 #:use-module (gnu packages lua)
2d0fd07b 146 #:use-module ((srfi srfi-1) #:select (last)))
1b6826d3 147
c30a66de
RW
148(define-public aria-maestosa
149 (package
150 (name "aria-maestosa")
0a151351 151 (version "1.4.13")
c30a66de
RW
152 (source (origin
153 (method url-fetch)
154 (uri (string-append "mirror://sourceforge/ariamaestosa/ariamaestosa/"
155 version "/AriaSrc-" version ".tar.bz2"))
156 (sha256
157 (base32
0a151351 158 "1cs3z6frx2ch7rm5ammx9p0rxcjrbj1vq14hvcbimpaw39rdsn3d"))))
30812446 159 (build-system scons-build-system)
c30a66de
RW
160 (arguments
161 `(#:tests? #f ;no tests
20e42d1e
DM
162 #:scons-flags
163 (list (string-append "prefix=" (assoc-ref %outputs "out")))
30812446 164 #:scons ,scons-python2
c30a66de 165 #:phases
c30a66de
RW
166 (modify-phases %standard-phases
167 (delete 'configure)
168 (add-after 'unpack 'scons-propagate-environment
169 (lambda _
170 ;; By design, SCons does not, by default, propagate
171 ;; environment variables to subprocesses. See:
172 ;; <http://comments.gmane.org/gmane.linux.distributions.nixos/4969>
173 ;; Here, we modify the SConstruct file to arrange for
174 ;; environment variables to be propagated.
175 (substitute* "SConstruct"
176 (("env = Environment\\(\\)")
177 "env = Environment(ENV=os.environ)")
178 ;; Scons errors out when copying subdirectories from Resources,
179 ;; so we move them instead.
180 (("Copy") "Move")
181 ;; We move the "score" and "Documentation" directories at once,
182 ;; so we have to ignore files contained therein.
183 (("if \".svn\" in file" line)
184 (string-append line
185 " or \"score/\" in file"
186 " or \"Documentation/\" in file")))
187 #t))
30812446 188 (add-after 'install 'fix-directory-permissions
c30a66de
RW
189 (lambda* (#:key outputs #:allow-other-keys)
190 (let ((out (assoc-ref outputs "out")))
30812446
DM
191 (chmod (string-append out "/share/Aria/Documentation") #o555)
192 (chmod (string-append out "/share/Aria/score") #o555)
193 #t))))))
c30a66de
RW
194 (inputs
195 `(("wxwidgets" ,wxwidgets)
196 ("glib" ,glib)
197 ("alsa-lib" ,alsa-lib)))
198 (native-inputs
30812446 199 `(("pkg-config" ,pkg-config)))
c30a66de
RW
200 (home-page "http://ariamaestosa.sourceforge.net/")
201 (synopsis "MIDI sequencer and editor")
202 (description
203 "Aria Maestosa is a MIDI sequencer and editor. It lets you compose, edit
204and play MIDI files with a few clicks in a user-friendly interface offering
205score, keyboard, guitar, drum and controller views.")
206 (license license:gpl3+)))
207
d20b7384
PL
208;; We don't use the latest release because it depends on Qt4. Instead we
209;; download the sources from the tip of the "qt5" branch.
210(define-public clementine
8a6d16b8
PL
211 (let ((commit "4619a4c1ab3b17b13d4b2327ad477912917eaf36")
212 (revision "2"))
d20b7384
PL
213 (package
214 (name "clementine")
8a6d16b8 215 (version (git-version "1.3.1" revision commit))
d20b7384
PL
216 (source (origin
217 (method git-fetch)
218 (uri (git-reference
219 (url "https://github.com/clementine-player/Clementine.git")
220 (commit commit)))
8a6d16b8 221 (file-name (git-file-name name version))
d20b7384
PL
222 (sha256
223 (base32
8a6d16b8 224 "1hximk3q0p8nw8is5w7215xgkb7k4flnfyr0pdz9svfwvcm05w1i"))
d20b7384
PL
225 (modules '((guix build utils)))
226 (snippet
6cbee49d
MW
227 '(begin
228 (for-each
d20b7384
PL
229 (lambda (dir)
230 (delete-file-recursively
6cbee49d 231 (string-append "3rdparty/" dir)))
d20b7384 232 (list
6cbee49d
MW
233 ;; TODO: The following dependencies are still bundled:
234 ;; - "qxt": Appears to be unmaintained upstream.
235 ;; - "qsqlite"
236 ;; - "qtsingleapplication"
237 ;; - "qocoa"
238 ;; - "qtiocompressor"
239 ;; - "gmock": The tests crash when using our googletest
240 ;; package instead of the bundled gmock.
241 "SPMediaKeyTap"
242 "fancytabwidget"
243 "google-breakpad"
244 "libmygpo-qt"
245 "libmygpo-qt5"
246 "libprojectm"
247 "qtwin"
248 "sha2" ;; Replaced by openssl.
249 "taglib"
250 "tinysvcmdns"))
251 #t))
af414f34 252 (patches (search-patches "clementine-use-openssl.patch"
7bcc3405
PL
253 "clementine-remove-crypto++-dependency.patch"
254 "clementine-fix-sqlite.patch"))))
d20b7384
PL
255 (build-system cmake-build-system)
256 (arguments
257 '(#:test-target "clementine_test"
258 #:configure-flags
af414f34
PL
259 (list ;; Requires unpackaged "projectm"
260 "-DENABLE_VISUALISATIONS=OFF"
261 ;; Otherwise it may try to download a non-free library at run-time.
262 ;; TODO In an origin snippet, remove the code that performs the
263 ;; download.
264 "-DHAVE_SPOTIFY_DOWNLOADER=FALSE"
265 "-DUSE_SYSTEM_SHA2=TRUE")
d20b7384
PL
266 #:phases
267 (modify-phases %standard-phases
268 (add-after 'install 'wrap-program
269 (lambda* (#:key inputs outputs #:allow-other-keys)
270 (let ((out (assoc-ref outputs "out"))
271 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
272 (wrap-program (string-append out "/bin/clementine")
273 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path)))
274 #t))))))
275 (native-inputs
276 `(("gettext" ,gettext-minimal)
277 ("pkg-config" ,pkg-config)
278 ("qtlinguist" ,qttools)))
279 (inputs
280 `(("boost" ,boost)
281 ("chromaprint" ,chromaprint)
d20b7384
PL
282 ("fftw" ,fftw)
283 ("glib" ,glib)
284 ("glu" ,glu)
285 ("gstreamer" ,gstreamer)
286 ("gst-plugins-base" ,gst-plugins-base)
8473f802
LF
287 ("gst-plugins-good" ,gst-plugins-good)
288 ("gst-libav" ,gst-libav)
d20b7384
PL
289 ("libcdio" ,libcdio)
290 ("libmygpo-qt" ,libmygpo-qt)
d20b7384
PL
291 ;; TODO: Package libgpod.
292 ("libmtp" ,libmtp)
293 ("libxml2" ,libxml2)
294 ("openssl" ,openssl)
295 ("protobuf" ,protobuf)
296 ("pulseaudio" ,pulseaudio)
297 ("qtbase" ,qtbase)
298 ("qtx11extras" ,qtx11extras)
f09e8abc 299 ("sqlite" ,sqlite-with-column-metadata)
d20b7384
PL
300 ("sparsehash" ,sparsehash)
301 ("taglib" ,taglib)))
88491097 302 (home-page "https://clementine-player.org")
d20b7384
PL
303 (synopsis "Music player and library organizer")
304 (description "Clementine is a multiplatform music player. It is inspired
305by Amarok 1.4, focusing on a fast and easy-to-use interface for searching and
306playing your music.")
307 (license (list
308 ;; clementine and qtiocompressor are under GPLv3.
309 license:gpl3+
310 ;; gmock is under BSD-3.
311 license:bsd-3
312 ;; qxt is under CPL1.0.
313 license:cpl1.0
314 ;; qsqlite and qtsingleapplication are under LGPL2.1+.
315 license:lgpl2.1+
316 ;; qocoa is under MIT and CC by-sa for the icons.
317 license:cc-by-sa3.0)))))
318
e8069d01
PW
319(define-public cmus
320 (package
321 (name "cmus")
455e6a31 322 (version "2.8.0")
e8069d01 323 (source (origin
4e829468
RW
324 (method git-fetch)
325 (uri (git-reference
326 (url "https://github.com/cmus/cmus.git")
327 (commit (string-append "v" version))))
328 (file-name (git-file-name name version))
e8069d01
PW
329 (sha256
330 (base32
455e6a31 331 "1ydnvq13ay8b8mfmmgwi5qsgyf220yi1d01acbnxqn775dghmwar"))))
e8069d01
PW
332 (build-system gnu-build-system)
333 (arguments
334 `(#:tests? #f ; cmus does not include tests
335 #:phases
336 (modify-phases %standard-phases
ec618c20
RW
337 (replace 'configure
338 (lambda* (#:key outputs #:allow-other-keys)
339 (let ((out (assoc-ref outputs "out")))
340 ;; It's an idiosyncratic configure script that doesn't
341 ;; understand --prefix=..; it wants prefix=.. instead.
342 (invoke "./configure"
343 (string-append "prefix=" out))
344 #t))))))
e8069d01
PW
345 ;; TODO: cmus optionally supports the following formats, which haven't yet
346 ;; been added to Guix:
347 ;;
348 ;; - Roar, libroar
349 ;;
350 ;; - DISCID_LIBS, apparently different from cd-discid which is included in
351 ;; Guix. See <http://sourceforge.net/projects/discid/>
352 (native-inputs
353 `(("pkg-config" ,pkg-config)))
354 (inputs
355 `(("alsa-lib" ,alsa-lib)
356 ("ao" ,ao)
9d34cc13 357 ("faad2" ,faad2)
e8069d01
PW
358 ("ffmpeg" ,ffmpeg)
359 ("flac" ,flac)
360 ("jack" ,jack-1)
361 ("libcddb" ,libcddb)
362 ("libcdio-paranoia" ,libcdio-paranoia)
363 ("libcue" ,libcue)
364 ("libmad" ,libmad)
365 ("libmodplug" ,libmodplug)
366 ("libmpcdec" ,libmpcdec)
367 ("libsamplerate" ,libsamplerate)
368 ("libvorbis" ,libvorbis)
369 ("ncurses" ,ncurses)
370 ("opusfile" ,opusfile)
371 ("pulseaudio" ,pulseaudio)
372 ("wavpack" ,wavpack)))
373 (home-page "https://cmus.github.io/")
374 (synopsis "Small console music player")
375 (description "Cmus is a small and fast console music player. It supports
376many input formats and provides a customisable Vi-style user interface.")
377 (license license:gpl2+)))
378
edd1652e
KK
379(define-public denemo
380 (package
381 (name "denemo")
6ff5e9ba 382 (version "2.1")
edd1652e
KK
383 (source (origin
384 (method url-fetch)
385 (uri (string-append "mirror://gnu/denemo/denemo-"
386 version ".tar.gz"))
387 (sha256
388 (base32
6ff5e9ba 389 "0hggf8c4xcrjcxd5m00r788r7jg7g8ff54w2idfaqpj5j2ix3299"))))
edd1652e
KK
390 (build-system gnu-build-system)
391 (arguments
392 `(#:phases
393 (modify-phases %standard-phases
394 (replace 'check
395 ;; Denemo's documentation says to use this command to run its
396 ;; testsuite.
397 (lambda _
f6181921 398 (invoke "make" "-C" "tests" "check")))
b43ec33b
KK
399 (add-before 'build 'set-lilypond
400 ;; This phase sets the default path for lilypond to its current
401 ;; location in the store.
402 (lambda* (#:key inputs #:allow-other-keys)
403 (let* ((lilypond (string-append (assoc-ref inputs "lilypond")
404 "/bin/lilypond")))
405 (substitute* "src/core/prefops.c"
406 (("g_string_new \\(\"lilypond\"\\);")
407 (string-append "g_string_new (\""
408 lilypond
409 "\");"))))
410 #t))
edd1652e
KK
411 (add-after 'install 'correct-filename
412 ;; "graft-derivation/shallow" from the (guix grafts) module runs in
413 ;; the C locale, expecting file names to be ASCII encoded. This
414 ;; phase renames a filename with a Unicode character in it to meet
415 ;; the aforementioned condition.
416 (lambda* (#:key outputs #:allow-other-keys)
417 (let* ((out (assoc-ref outputs "out")))
418 (chdir (string-append
419 out
420 "/share/denemo/templates/instruments/woodwind"))
421 (rename-file "Clarinet in B♭.denemo"
422 "Clarinet in Bb.denemo"))
423 #t)))))
424 (native-inputs
f6181921 425 `(("glib:bin" ,glib "bin") ; for gtester
edd1652e
KK
426 ("pkg-config" ,pkg-config)))
427 (inputs
428 `(("alsa-lib" ,alsa-lib)
429 ("aubio" ,aubio)
430 ("evince" ,evince)
431 ("fftw" ,fftw)
432 ("fluidsynth" ,fluidsynth)
433 ("glib" ,glib)
434 ("gtk+" ,gtk+)
435 ("gtk-doc" ,gtk-doc)
6bf79532 436 ("gtksourceview" ,gtksourceview-3)
edd1652e
KK
437 ("guile" ,guile-2.0)
438 ("intltool" ,intltool)
439 ("librsvg" ,librsvg)
440 ("libsndfile" ,libsndfile)
441 ("libtool" ,libtool)
442 ("libxml2" ,libxml2)
c695fb76 443 ("lilypond" ,lilypond)
edd1652e
KK
444 ("portaudio" ,portaudio)
445 ("portmidi" ,portmidi)
446 ("rubberband" ,rubberband)))
edd1652e
KK
447 (synopsis "Graphical music notation, front-end to GNU Lilypond")
448 (description
449 "GNU Denemo is a music notation editor that provides a convenient
450interface to the powerful music engraving program Lilypond. Music can be
451typed in using the computer keyboard, played in using a MIDI keyboard, or
452even input via a microphone connected to the sound card. The final product
453is publication-quality music notation that is continuously generated in the
454background while you work.")
455 (home-page "http://www.denemo.org")
456 (license license:gpl3+)))
457
72385c34
KK
458(define-public dumb
459 (package
460 (name "dumb")
461 (version "2.0.3")
462 (source
463 (origin
464 (method git-fetch)
465 (uri (git-reference
466 (url "https://github.com/kode54/dumb.git")
467 (commit version)))
468 (sha256
469 (base32 "1cnq6rb14d4yllr0yi32p9jmcig8avs3f43bvdjrx4r1mpawspi6"))
470 (file-name (git-file-name name version))))
471 (build-system cmake-build-system)
472 (arguments
473 '(#:tests? #f ; no check target
474 #:configure-flags
475 (list "-DBUILD_SHARED_LIBS=ON"
476 "-DBUILD_EXAMPLES=OFF")))
477 (home-page "https://github.com/kode54/dumb")
478 (synopsis "Module audio renderer library")
479 (description
480 "DUMB is a tracker library with support for IT, XM, S3M and MOD files. It
481targets maximum accuracy to the original formats, with low-pass resonant filters
482for the IT files, accurate timing and pitching, and three resampling quality
483settings (aliasing, linear interpolation and cubic interpolation).")
484 ;; The DUMB license is a bit peculiar.
485 ;; Clause 8 states that clauses 4, 5 and 6 are null and void, leaving only
486 ;; the first three clauses for genuine consideration.
487 ;; Clauses 1, 2 and 3 are analogous to clauses 1, 2 and 3 of the zlib
488 ;; license, a known free software license.
489 ;; Therefore, the DUMB license may be considered a free software license.
490 (license (license:fsf-free "file://LICENSE"))))
491
d61dcb1b
KK
492(define-public dumb-allegro4
493 (package
494 (inherit dumb)
495 (name "dumb-allegro4")
496 (arguments
497 (substitute-keyword-arguments (package-arguments dumb)
498 ((#:configure-flags flags)
499 `(cons "-DBUILD_ALLEGRO4=ON" ,flags))))
500 (inputs
501 `(("allegro" ,allegro-4)))))
502
d231bb35
RW
503(define-public hydrogen
504 (package
505 (name "hydrogen")
80808d67 506 (version "1.0.0-beta1")
d231bb35 507 (source (origin
80808d67
RW
508 (method git-fetch)
509 (uri (git-reference
510 (url "https://github.com/hydrogen-music/hydrogen.git")
511 (commit version)))
512 (file-name (string-append name "-" version "-checkout"))
d231bb35
RW
513 (sha256
514 (base32
80808d67 515 "0nv83l70j5bjz2wd6n3a8cq3bmgrvdvg6g2hjhc1g5h6xnbqsh9x"))))
b7367762 516 (build-system cmake-build-system)
d231bb35 517 (arguments
80808d67
RW
518 `(#:test-target "tests"
519 #:phases
520 (modify-phases %standard-phases
521 (add-after 'unpack 'fix-data-directory
522 (lambda* (#:key outputs #:allow-other-keys)
523 (substitute* "CMakeLists.txt"
524 (("/usr/share/pixmaps")
525 (string-append (assoc-ref outputs "out")
526 "/share/pixmaps")))
527 #t)))))
d231bb35 528 (native-inputs
b7367762 529 `(("cppunit" ,cppunit)
d231bb35
RW
530 ("pkg-config" ,pkg-config)))
531 (inputs
b7367762 532 `(("alsa-lib" ,alsa-lib)
d231bb35 533 ("jack" ,jack-1)
b7367762 534 ;; ("ladspa" ,ladspa) ; cannot find during configure
d231bb35 535 ("lash" ,lash)
b7367762
EF
536 ("libarchive" ,libarchive)
537 ("libsndfile" ,libsndfile)
538 ("libtar" ,libtar)
539 ("lrdf" ,lrdf)
80808d67
RW
540 ("qtbase" ,qtbase)
541 ("qtxmlpatterns" ,qtxmlpatterns)
b7367762 542 ("zlib" ,zlib)))
d231bb35
RW
543 (home-page "http://www.hydrogen-music.org")
544 (synopsis "Drum machine")
545 (description
546 "Hydrogen is an advanced drum machine for GNU/Linux. Its main goal is to
547enable professional yet simple and intuitive pattern-based drum programming.")
548 (license license:gpl2+)))
549
58301682
PL
550(define-public easytag
551 (package
552 (name "easytag")
553 (version "2.4.3")
554 (source (origin
555 (method url-fetch)
556 (uri (string-append "mirror://gnome/sources/easytag/2.4/easytag-"
557 version ".tar.xz"))
558 (sha256
559 (base32
560 "1mbxnqrw1fwcgraa1bgik25vdzvf97vma5pzknbwbqq5ly9fwlgw"))))
561 (build-system glib-or-gtk-build-system)
562 (native-inputs
563 `(("desktop-file-utils" ,desktop-file-utils)
564 ("glib" ,glib "bin")
565 ("intltool" ,intltool)
566 ("itstool" ,itstool)
567 ("pkg-config" ,pkg-config)
568 ("xmllint" ,libxml2)))
569 (inputs
570 `(("flac" ,flac)
571 ("gtk+" ,gtk+)
572 ("id3lib" ,id3lib)
573 ("libid3tag" ,libid3tag)
574 ("libvorbis" ,libvorbis)
575 ("opusfile" ,opusfile)
576 ("speex" ,speex)
577 ("taglib" ,taglib)
578 ("wavpack" ,wavpack)
579 ("yelp" ,yelp)))
580 (arguments
581 '(#:phases
582 (modify-phases %standard-phases
583 (add-before 'configure 'configure-libid3tag
584 (lambda* (#:key inputs #:allow-other-keys)
585 ;; libid3tag does not provide a .pc file and EasyTAG's configure
586 ;; script healivy relies on pkg-config. Providing a temporary
587 ;; local .pc file is easier than patching the configure script.
588 (let* ((libid3tag (assoc-ref inputs "libid3tag")))
589 (mkdir-p "pkgconfig")
590 (with-output-to-file
591 "pkgconfig/id3tag.pc"
592 (lambda _
593 (format #t
594 "prefix=~@*~a~@
595 libdir=${prefix}/lib~@
596 includedir=${prefix}/include~@
55af6456
PL
597
598 Name: libid3tag~@
599 Description:~@
600 Version:~@
58301682
PL
601 Libs: -L${libdir} -lid3tag -lz~@
602 Cflags: -I${includedir}~%"
603 libid3tag)))
604 (setenv "PKG_CONFIG_PATH"
605 (string-append (getenv "PKG_CONFIG_PATH")
55af6456
PL
606 ":" (getcwd) "/pkgconfig"))
607 #t)))
58301682
PL
608 (add-after 'unpack 'patch-makefile
609 (lambda _
610 (substitute* "Makefile.in"
611 ;; The Makefile generates a test-desktop-file-validate.sh
612 ;; script with /bin/sh hard-coded.
613 (("/bin/sh") (which "sh"))
614 ;; Don't create 'icon-theme.cache'.
55af6456
PL
615 (("gtk-update-icon-cache") "true"))
616 #t)))))
58301682
PL
617 (home-page "https://wiki.gnome.org/Apps/EasyTAG")
618 (synopsis "Simple application for viewing and editing tags in audio files")
619 (description
620 "EasyTAG is an application for viewing and editing tags in audio files.
621It supports MP3, MP2, MP4/AAC, FLAC, Ogg Opus, Ogg Speex, Ogg Vorbis,
622MusePack, Monkey's Audio, and WavPack files.")
623 (license license:gpl2+)))
624
91595624
RW
625(define-public extempore
626 (package
627 (name "extempore")
628 (version "0.7.0")
629 (source (origin
8b0f6917
RW
630 (method git-fetch)
631 (uri (git-reference
632 (url "https://github.com/digego/extempore.git")
633 (commit version)))
91595624
RW
634 (sha256
635 (base32
8b0f6917
RW
636 "12fsp7zkfxb9kykwq46l88kcbbici9arczrrsl4qn87m6vm5349l"))
637 (file-name (string-append name "-" version "-checkout"))))
91595624
RW
638 (build-system cmake-build-system)
639 (arguments
640 `(;; The default target also includes ahead-of-time compilation of the
641 ;; standard libraries. However, during the "install" phase this would
642 ;; happen *again* for unknown reasons. Hence we only build the
643 ;; extempore executable during the build phase.
644 #:make-flags '("extempore")
645 #:configure-flags '("-DJACK=ON"
646 ;; We want to distribute.
647 "-DIN_TREE=OFF"
648 ;; Don't download any dependencies.
649 "-DBUILD_DEPS=OFF")
650 #:modules ((ice-9 match)
651 (guix build cmake-build-system)
652 (guix build utils))
653 #:phases
654 (modify-phases %standard-phases
655 (add-after 'unpack 'patch-directories
656 (lambda* (#:key outputs #:allow-other-keys)
657 ;; Rewrite default path to runtime directory
658 (substitute* "src/Extempore.cpp"
659 (("runtimedir \\+= \"runtime\"")
660 (string-append "runtimedir = \""
661 (assoc-ref outputs "out")
662 "/lib/extempore/runtime\"")))
663 (substitute* "extras/extempore.el"
664 (("\\(runtime-directory \\(concat default-directory \"runtime\"\\)\\)")
665 (string-append "(runtime-directory \""
666 (assoc-ref outputs "out")
667 "/lib/extempore/runtime"
668 "\")")))
669 #t))
670 (add-after 'unpack 'link-with-additional-libs
671 (lambda _
672 ;; The executable must be linked with libffi and zlib.
673 (substitute* "CMakeLists.txt"
674 (("add_dependencies\\(aot_extended extended_deps\\)") "")
675 (("target_link_libraries\\(extempore PRIVATE dl" line)
676 (string-append line " ffi z")))
677 #t))
678 ;; FIXME: AOT compilation of the nanovg bindings fail with the error:
679 ;; "Compiler Error could not bind _nvgLinearGradient"
680 (add-after 'unpack 'disable-nanovg
681 (lambda _
682 (substitute* "CMakeLists.txt"
683 (("aotcompile_lib\\(libs/external/nanovg.xtm.*") ""))
684 #t))
685 ;; FIXME: All examples that are used as tests segfault for some
686 ;; unknown reason.
687 (add-after 'unpack 'disable-broken-tests
688 (lambda _
689 (substitute* "CMakeLists.txt"
690 (("extempore_add_example_as_test\\(.*") ""))
691 #t))
692 (add-after 'unpack 'hardcode-external-lib-paths
693 (lambda* (#:key inputs #:allow-other-keys)
694 (use-modules (ice-9 match))
695 (for-each
696 (match-lambda
697 ((file-name lib pkg-name)
698 (substitute* (string-append "libs/external/" file-name ".xtm")
699 ((lib) (string-append (assoc-ref inputs pkg-name)
700 "/lib/" lib)))))
701 '(("assimp" "libassimp.so" "assimp")
702 ("portmidi" "libportmidi.so" "portmidi")
703 ("sndfile" "libsndfile.so" "libsndfile")
704 ("fft" "libkiss_fft.so" "kiss-fft")
705 ("stb_image" "libstb_image.so" "stb-image")
706 ("nanovg" "libnanovg.so" "nanovg")
707 ("glext" "libGL.so" "mesa")
708 ("glfw3" "libglfw.so" "glfw")
709 ("gl/glcore-directbind" "libGL.so" "mesa")
710 ("gl/glcompat-directbind" "libGL.so" "mesa")))
711 #t))
712 (add-after 'unpack 'use-own-llvm
713 (lambda* (#:key inputs #:allow-other-keys)
714 (setenv "EXT_LLVM_DIR" (assoc-ref inputs "llvm"))
715 ;; Our LLVM builds shared libraries, so Extempore should use
716 ;; those.
717 (substitute* "CMakeLists.txt"
718 (("CMAKE_STATIC_LIBRARY") "CMAKE_SHARED_LIBRARY"))
719 #t))
720 (add-after 'unpack 'fix-aot-compilation
721 (lambda* (#:key outputs #:allow-other-keys)
722 (substitute* "CMakeLists.txt"
723 ;; EXT_SHARE_DIR does not exist before installation, so the
724 ;; working directory should be the source directory instead.
725 (("WORKING_DIRECTORY \\$\\{EXT_SHARE_DIR\\}")
726 "WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}")
727 ;; Extempore needs to be told where the runtime is to be found.
728 ;; While we're at it we disable automatic tuning for a specific
729 ;; CPU to make binary substitution possible.
730 (("COMMAND extempore" prefix)
731 (string-append prefix " --sharedir " (getcwd)
732 " --mcpu=generic --attr=none")))
733 #t)))))
734 (inputs
735 `(("llvm" ,llvm-for-extempore)
736 ("libffi" ,libffi)
737 ("jack" ,jack-1)
738 ("libsndfile" ,libsndfile)
739 ("glfw" ,glfw)
740 ("apr" ,apr)
741 ("stb-image" ,stb-image-for-extempore)
742 ("kiss-fft" ,kiss-fft-for-extempore)
743 ("nanovg" ,nanovg-for-extempore)
744 ("portmidi" ,portmidi-for-extempore)
745 ("assimp" ,assimp)
746 ("alsa-lib" ,alsa-lib)
747 ("portaudio" ,portaudio)
748 ("mesa" ,mesa)
749 ("pcre" ,pcre)
750 ("zlib" ,zlib)))
751 (native-inputs
752 `(("perl" ,perl)
753 ("emacs" ,emacs-no-x)))
39162ee4
RW
754 ;; Extempore refuses to build on architectures other than x86_64
755 (supported-systems '("x86_64-linux"))
95708ed8 756 (home-page "http://digego.github.io/extempore/")
91595624
RW
757 (synopsis "Programming environment for live coding of multimedia")
758 (description
759 "Extempore is a programming language and runtime environment designed
760with live programming in mind. It supports interactive programming in a REPL
761style, compiling and binding code just-in-time. Although Extempore has its
762roots in 'live coding' of audiovisual media art, it is suitable for any task
763domain where dynamic run-time modifiability and good numerical performance are
764required. Extempore also has strong timing and concurrency semantics, which
765are helpful when working in problem spaces where timing is important (such as
766audio and video).")
767 (license license:bsd-2)))
768
8c454dcd
RW
769(define-public klick
770 (package
771 (name "klick")
772 (version "0.12.2")
773 (source (origin
774 (method url-fetch)
775 (uri (string-append "http://das.nasophon.de/download/klick-"
776 version ".tar.gz"))
777 (sha256
778 (base32
779 "0hmcaywnwzjci3pp4xpvbijnnwvibz7gf9xzcdjbdca910y5728j"))))
bc27eb3b 780 (build-system scons-build-system)
8c454dcd 781 (arguments
bc27eb3b 782 `(#:scons-flags (list (string-append "PREFIX=" %output))
ecc604ba 783 #:scons ,scons-python2
f00067db
RW
784 #:tests? #f ; no "check" target
785 #:phases
786 (modify-phases %standard-phases
fb1d8d2b
RW
787 (add-after 'unpack 'be-permissive
788 (lambda _
789 (substitute* "SConstruct"
790 (("'-Wall'") "'-Wall', '-fpermissive'"))
791 #t))
f00067db
RW
792 (add-after 'unpack 'replace-removed-scons-syntax
793 (lambda _
794 (substitute* "SConstruct"
795 (("BoolOption") "BoolVariable")
796 (("PathOption") "PathVariable")
797 (("Options") "Variables"))
798 #t)))))
8c454dcd
RW
799 (inputs
800 `(("boost" ,boost)
801 ("jack" ,jack-1)
802 ("libsndfile" ,libsndfile)
803 ("libsamplerate" ,libsamplerate)
804 ("liblo" ,liblo)
805 ("rubberband" ,rubberband)))
806 (native-inputs
bc27eb3b 807 `(("pkg-config" ,pkg-config)))
8c454dcd
RW
808 (home-page "http://das.nasophon.de/klick/")
809 (synopsis "Metronome for JACK")
810 (description
811 "klick is an advanced command-line based metronome for JACK. It allows
812you to define complex tempo maps for entire songs or performances.")
813 (license license:gpl2+)))
814
048bfba1
RW
815(define-public gtklick
816 (package
817 (name "gtklick")
818 (version "0.6.4")
819 (source (origin
820 (method url-fetch)
821 (uri (string-append "http://das.nasophon.de/download/gtklick-"
822 version ".tar.gz"))
823 (sha256
824 (base32
825 "0dq1km6njnzsqdqyf6wzir9g733z0mc9vmxfg2383k3c2a2di6bp"))))
826 (build-system python-build-system)
827 (arguments
828 `(#:tests? #f ; no tests
829 #:python ,python-2
830 #:phases
831 (modify-phases %standard-phases
832 (add-before 'build 'add-sitedirs
833 ;; .pth files are not automatically interpreted unless the
834 ;; directories containing them are added as "sites". The directories
835 ;; are then added to those in the PYTHONPATH. This is required for
836 ;; the operation of pygtk.
837 (lambda _
838 (substitute* "gtklick/gtklick.py"
839 (("import pygtk")
840 "import pygtk, site, sys
841for path in [path for path in sys.path if 'site-packages' in path]: site.addsitedir(path)"))))
842 (add-after 'unpack 'inject-store-path-to-klick
843 (lambda* (#:key inputs #:allow-other-keys)
844 (substitute* "gtklick/klick_backend.py"
845 (("KLICK_PATH = 'klick'")
846 (string-append "KLICK_PATH = '"
847 (assoc-ref inputs "klick")
848 "/bin/klick'")))
849 #t)))))
850 (inputs
851 `(("klick" ,klick)
852 ("python2-pyliblo" ,python2-pyliblo)
853 ("python2-pygtk" ,python2-pygtk)))
854 (native-inputs
b94a6ca0 855 `(("gettext" ,gettext-minimal)))
048bfba1
RW
856 (home-page "http://das.nasophon.de/gtklick/")
857 (synopsis "Simple metronome with an easy-to-use graphical interface")
858 (description
859 "Gtklick is a simple metronome with an easy-to-use graphical user
860interface. It is implemented as a frontend to @code{klick}.")
861 (license license:gpl2+)))
862
a3b10217
KK
863(define-public libgme
864 (package
865 (name "libgme")
21f5f351 866 (version "0.6.2")
a3b10217
KK
867 (source (origin
868 (method url-fetch)
869 (uri (string-append "https://bitbucket.org/mpyne/game-music-emu/"
870 "downloads/game-music-emu-" version
21f5f351 871 ".tar.xz"))
a3b10217
KK
872 (sha256
873 (base32
21f5f351 874 "0hkkmxbaas2sirlb5i4r10mgbbiaapjx8pazifabwba23m3wnijh"))))
a3b10217
KK
875 (build-system cmake-build-system)
876 (arguments
877 '(#:tests? #f)) ; no check target
21f5f351
KK
878 (native-inputs
879 `(;; Use gcc-4.9 to work around an internal compiler error that happens
880 ;; when using gcc-5.5.0. FIXME: Try removing this when the default
881 ;; compiler is no longer gcc-5.5.0.
882 ("gcc" ,gcc-4.9)))
a3b10217
KK
883 (home-page "https://bitbucket.org/mpyne/game-music-emu")
884 (synopsis "Video game music file playback library")
885 (description
886 "Game-music-emu is a collection of video game music file emulators that
887support the following formats and systems:
888@table @code
889@item AY
890ZX Spectrum/Asmtrad CPC
891@item GBS
892Nintendo Game Boy
893@item GYM
894Sega Genesis/Mega Drive
895@item HES
896NEC TurboGrafx-16/PC Engine
897@item KSS
898MSX Home Computer/other Z80 systems (doesn't support FM sound)
899@item NSF/NSFE
900Nintendo NES/Famicom (with VRC 6, Namco 106, and FME-7 sound)
901@item SAP
902Atari systems using POKEY sound chip
903@item SPC
904Super Nintendo/Super Famicom
905@item VGM/VGZ
906Sega Master System/Mark III, Sega Genesis/Mega Drive, BBC Micro
907@end table")
908 (license (list license:lgpl2.1+
909 ;; demo and player directories are under the Expat license
910 license:expat))))
911
1b6826d3
RW
912(define-public lilypond
913 (package
914 (name "lilypond")
85f075a0 915 (version "2.19.80")
1b6826d3
RW
916 (source (origin
917 (method url-fetch)
918 (uri (string-append
919 "http://download.linuxaudio.org/lilypond/sources/v"
920 (version-major+minor version) "/"
921 name "-" version ".tar.gz"))
922 (sha256
923 (base32
85f075a0 924 "0lql4q946gna2pl1g409mmmsvn2qvnq2z5cihrkfhk7plcqdny9n"))))
1b6826d3
RW
925 (build-system gnu-build-system)
926 (arguments
127b04d7 927 `(#:tests? #f ; out-test/collated-files.html fails
1b6826d3 928 #:out-of-source? #t
409be57b 929 #:make-flags '("conf=www") ;to generate images for info manuals
127b04d7 930 #:configure-flags
409be57b
RW
931 (list "CONFIGURATION=www"
932 (string-append "--with-texgyre-dir="
127b04d7
RW
933 (assoc-ref %build-inputs "font-tex-gyre")
934 "/share/fonts/opentype/"))
1b6826d3 935 #:phases
a8bc747a 936 (modify-phases %standard-phases
9cc823f5
RW
937 (add-after 'unpack 'use-texlive-union
938 (lambda _
939 ;; FIXME: fonts are not found and have to be generated in HOME.
940 (setenv "HOME" "/tmp")
941 ;; The test for the "lh" package fails, even though it is among
942 ;; the inputs.
943 (substitute* "configure"
944 (("TEX_FIKPARM=.*") "TEX_FIKPARM=found\n"))
945 #t))
409be57b
RW
946 (add-after 'unpack 'fix-path-references
947 (lambda _
a8bc747a
RW
948 (substitute* "scm/backend-library.scm"
949 (("\\(search-executable '\\(\"gs\"\\)\\)")
409be57b
RW
950 (string-append "\"" (which "gs") "\""))
951 (("\"/bin/sh\"")
952 (string-append "\"" (which "sh") "\"")))
a8bc747a
RW
953 #t))
954 (add-before 'configure 'prepare-configuration
955 (lambda _
956 (substitute* "configure"
7affb2c1
RW
957 (("SHELL=/bin/sh") "SHELL=sh")
958 ;; When checking the fontforge version do not consider the
959 ;; version string that's part of the directory.
31ec5228
EF
960 (("head -n") "tail -n")
961 ;; Also allow for SOURCE_DATE_EPOCH = 0 in fontforge.
962 (("20110222") "19700101"))
409be57b
RW
963 (setenv "out" "www")
964 (setenv "conf" "www")
965 #t))
966 (add-after 'install 'install-info
967 (lambda _
88659738
RW
968 (invoke "make"
969 "-j" (number->string (parallel-job-count))
970 "conf=www" "install-info")
971 #t)))))
1b6826d3
RW
972 (inputs
973 `(("guile" ,guile-1.8)
974 ("font-dejavu" ,font-dejavu)
127b04d7 975 ("font-tex-gyre" ,font-tex-gyre)
1b6826d3
RW
976 ("fontconfig" ,fontconfig)
977 ("freetype" ,freetype)
fb0b9ff1 978 ("ghostscript" ,ghostscript)
1b6826d3
RW
979 ("pango" ,pango)
980 ("python" ,python-2)))
981 (native-inputs
982 `(("bison" ,bison)
983 ("perl" ,perl)
984 ("flex" ,flex)
985 ("fontforge" ,fontforge)
986 ("dblatex" ,dblatex)
b94a6ca0 987 ("gettext" ,gettext-minimal)
1b6826d3
RW
988 ("imagemagick" ,imagemagick)
989 ("netpbm" ,netpbm) ;for pngtopnm
9cc823f5
RW
990 ("texlive" ,(texlive-union (list texlive-metapost
991 texlive-generic-epsf
992 texlive-latex-lh
993 texlive-latex-cyrillic)))
1b6826d3
RW
994 ("texinfo" ,texinfo)
995 ("texi2html" ,texi2html)
996 ("rsync" ,rsync)
997 ("pkg-config" ,pkg-config)
998 ("zip" ,zip)))
999 (home-page "http://www.lilypond.org/")
1000 (synopsis "Music typesetting")
1001 (description
1002 "GNU LilyPond is a music typesetter, which produces high-quality sheet
1003music. Music is input in a text file containing control sequences which are
1004interpreted by LilyPond to produce the final document. It is extendable with
1005Guile.")
55ca5e80
LC
1006 (license license:gpl3+)
1007
1008 ;; On armhf and mips64el, building the documentation sometimes leads to
1009 ;; more than an hour of silence, so double the max silent time.
1010 (properties `((max-silent-time . 7200)))))
c267cc15 1011
8e80244a
RW
1012(define-public non-sequencer
1013 ;; The latest tagged release is three years old and uses a custom build
1bbe7959 1014 ;; system, so we take the last commit.
a6b5e1fb
RW
1015 (let ((commit "5ae43bb27c42387052a73e5ffc5d33efb9d946a9")
1016 (revision "4"))
8e80244a
RW
1017 (package
1018 (name "non-sequencer")
1bbe7959 1019 (version (string-append "1.9.5-" revision "." (string-take commit 7)))
8e80244a
RW
1020 (source (origin
1021 (method git-fetch)
1022 (uri (git-reference
1023 (url "git://git.tuxfamily.org/gitroot/non/non.git")
1024 (commit commit)))
1025 (sha256
1026 (base32
a6b5e1fb 1027 "1cljkkyi9dxqpqhx8y6l2ja4zjmlya26m26kqxml8gx08vyvddhx"))
8e80244a
RW
1028 (file-name (string-append name "-" version "-checkout"))))
1029 (build-system waf-build-system)
1030 (arguments
1031 `(#:tests? #f ;no "check" target
e591a4d6
RW
1032 #:configure-flags
1033 (list "--project=sequencer"
1034 ;; Disable the use of SSE unless on x86_64.
1035 ,@(if (not (string-prefix? "x86_64" (or (%current-target-system)
1036 (%current-system))))
1037 '("--disable-sse")
1038 '()))
8e80244a
RW
1039 #:python ,python-2))
1040 (inputs
1041 `(("jack" ,jack-1)
1042 ("libsigc++" ,libsigc++)
1043 ("liblo" ,liblo)
1044 ("ntk" ,ntk)))
1045 (native-inputs
1046 `(("pkg-config" ,pkg-config)))
1047 (home-page "http://non.tuxfamily.org/wiki/Non%20Sequencer")
1048 (synopsis "Pattern-based MIDI sequencer")
1049 (description
1050 "The Non Sequencer is a powerful, lightweight, real-time,
1051pattern-based MIDI sequencer. It utilizes the JACK Audio Connection Kit for
1052MIDI I/O and the NTK GUI toolkit for its user interface. Everything in Non
1053Sequencer happens on-line, in real-time. Music can be composed live, while the
1054transport is rolling.")
1055 (license license:gpl2+))))
1056
ded69d6f
RW
1057(define-public non-session-manager
1058 (package (inherit non-sequencer)
1059 (name "non-session-manager")
1060 (arguments
1061 (substitute-keyword-arguments (package-arguments non-sequencer)
1062 ((#:configure-flags flags)
1063 `(cons "--project=session-manager"
1064 (delete "--project=sequencer" ,flags)))))
1065 (inputs
1066 `(("jack" ,jack-1)
1067 ("liblo" ,liblo)
1068 ("ntk" ,ntk)))
1069 (native-inputs
1070 `(("pkg-config" ,pkg-config)))
1071 (home-page "http://non.tuxfamily.org/nsm/")
1072 (synopsis "Audio session management")
1073 (description
1074 "The Non Session Manager is an API and an implementation for audio
1075session management. NSM clients use a well-specified OSC protocol to
1076communicate with the session management daemon.")
1077 (license license:gpl2+)))
1078
46bb58b8
RW
1079(define-public non-mixer
1080 (package (inherit non-sequencer)
1081 (name "non-mixer")
1082 (arguments
1083 (substitute-keyword-arguments (package-arguments non-sequencer)
1084 ((#:configure-flags flags)
1085 `(cons "--project=mixer"
1086 (delete "--project=sequencer" ,flags)))))
1087 (inputs
1088 `(("jack" ,jack-1)
1089 ("liblo" ,liblo)
1090 ("ladspa" ,ladspa)
1091 ("lrdf" ,lrdf)
1092 ("ntk" ,ntk)))
1093 (native-inputs
1094 `(("pkg-config" ,pkg-config)))
1095 (home-page "http://non.tuxfamily.org/wiki/Non%20Mixer")
1096 (synopsis "Modular digital audio mixer")
1097 (description
1098 "The Non Mixer is a powerful, reliable and fast modular digital audio
1099mixer. It utilizes JACK for inter-application audio I/O and the NTK GUI
1100toolkit for a fast and lightweight user interface. Non Mixer can be used
1101alone or in concert with Non Timeline and Non Sequencer to form a complete
1102studio.")
1103 (license license:gpl2+)))
1104
4511e0db
RW
1105(define-public non-timeline
1106 (package (inherit non-sequencer)
1107 (name "non-timeline")
1108 (arguments
1109 (substitute-keyword-arguments (package-arguments non-sequencer)
1110 ((#:configure-flags flags)
1111 `(cons "--project=timeline"
1112 (delete "--project=sequencer" ,flags)))))
1113 (inputs
1114 `(("jack" ,jack-1)
1115 ("liblo" ,liblo)
1116 ("libsndfile" ,libsndfile)
1117 ("ntk" ,ntk)))
1118 (native-inputs
1119 `(("pkg-config" ,pkg-config)))
1120 (home-page "http://non.tuxfamily.org/wiki/Non%20Timeline")
1121 (synopsis "Modular digital audio timeline arranger")
1122 (description
1123 "The Non Timeline is a powerful, reliable and fast modular digital audio
1124timeline arranger. It utilizes JACK for inter-application audio I/O and the
1125NTK GUI toolkit for a fast and lightweight user interface. Non Timeline can
1126be used alone or in concert with Non Mixer and Non Sequencer to form a
1127complete studio.")
1128 (license license:gpl2+)))
1129
c267cc15
RW
1130(define-public solfege
1131 (package
1132 (name "solfege")
1133 (version "3.22.2")
1134 (source (origin
1135 (method url-fetch)
1136 (uri (string-append
1137 "mirror://gnu/solfege/solfege-"
1138 version ".tar.xz"))
1139 (sha256
1140 (base32
1141 "1w25rxdbj907nsx285k9nm480pvy12w3yknfh4n1dfv17cwy072i"))))
1142 (build-system gnu-build-system)
1143 (arguments
1144 `(#:tests? #f ; xmllint attempts to download DTD
1145 #:test-target "test"
1146 #:phases
dc1d3cde
KK
1147 (modify-phases %standard-phases
1148 (add-after 'unpack 'fix-configuration
1149 (lambda* (#:key inputs #:allow-other-keys)
1150 (substitute* "default.config"
20c65aa1 1151 (("/usr/bin/aplay") "aplay")
95e545a4
NG
1152 (("/usr/bin/timidity") "timidity")
1153 (("/usr/bin/mpg123") "mpg123")
1154 (("/usr/bin/ogg123") "ogg123"))
dc1d3cde
KK
1155 #t))
1156 (add-before 'build 'patch-python-shebangs
1157 (lambda _
1158 ;; Two python scripts begin with a Unicode BOM, so patch-shebang
1159 ;; has no effect.
1160 (substitute* '("solfege/parsetree.py"
1161 "solfege/presetup.py")
1162 (("#!/usr/bin/python") (string-append "#!" (which "python"))))
1163 #t))
1164 (add-before 'build 'add-sitedirs
1165 ;; .pth files are not automatically interpreted unless the
1166 ;; directories containing them are added as "sites". The directories
1167 ;; are then added to those in the PYTHONPATH. This is required for
1168 ;; the operation of pygtk and pygobject.
1169 (lambda _
1170 (substitute* "run-solfege.py"
1171 (("import os")
1172 "import os, site
1173for path in [path for path in sys.path if 'site-packages' in path]: site.addsitedir(path)"))
1174 #t))
1175 (add-before 'build 'adjust-config-file-prefix
c267cc15
RW
1176 (lambda* (#:key outputs #:allow-other-keys)
1177 (substitute* "run-solfege.py"
1178 (("prefix = os.path.*$")
dc1d3cde
KK
1179 (string-append "prefix = " (assoc-ref outputs "out"))))
1180 #t))
1181 (add-after 'install 'wrap-program
1182 (lambda* (#:key inputs outputs #:allow-other-keys)
1183 ;; Make sure 'solfege' runs with the correct PYTHONPATH.
1184 (let* ((out (assoc-ref outputs "out"))
1185 (path (getenv "PYTHONPATH")))
1186 (wrap-program (string-append out "/bin/solfege")
1187 `("PYTHONPATH" ":" prefix (,path))))
1188 #t)))))
c267cc15
RW
1189 (inputs
1190 `(("python" ,python-2)
1191 ("pygtk" ,python2-pygtk)
b94a6ca0 1192 ("gettext" ,gettext-minimal)
c267cc15 1193 ("gtk" ,gtk+)
95e545a4 1194 ("lilypond" ,lilypond)))
c267cc15
RW
1195 (native-inputs
1196 `(("pkg-config" ,pkg-config)
1197 ("txt2man" ,txt2man)
1198 ("libxml2" ,libxml2) ; for tests
1199 ("ghostscript" ,ghostscript)
c267cc15
RW
1200 ("texinfo" ,texinfo)))
1201 (home-page "https://www.gnu.org/software/solfege/")
1202 (synopsis "Ear training")
1203 (description
1204 "GNU Solfege is a program for practicing musical ear-training. With it,
1205you can practice your recognition of various musical intervals and chords. It
1206features a statistics overview so you can monitor your progress across several
1207sessions. Solfege is also designed to be extensible so you can easily write
1208your own lessons.")
1209 (license license:gpl3+)))
6260d1a8 1210
8b9ec354
RW
1211(define-public powertabeditor
1212 (package
1213 (name "powertabeditor")
92a1cb92 1214 (version "2.0.0-alpha10")
8b9ec354 1215 (source (origin
1b12b572
RW
1216 (method git-fetch)
1217 (uri (git-reference
1218 (url "https://github.com/powertab/powertabeditor.git")
1219 (commit version)))
1220 (file-name (git-file-name name version))
8b9ec354
RW
1221 (sha256
1222 (base32
1b12b572 1223 "1z4fhdp71ck9synr12rg1p6365xnypd8ih40c5icj4si36khvksk"))
8b9ec354
RW
1224 (modules '((guix build utils)))
1225 (snippet
1226 '(begin
1227 ;; Remove bundled sources for external libraries
1228 (delete-file-recursively "external")
40effef7 1229 ;; Use only system libraries
8b9ec354 1230 (substitute* "CMakeLists.txt"
40effef7
RW
1231 (("include\\( PTE_ThirdParty \\)")
1232 "\
1233include(third_party/Qt)
1234include(third_party/boost)
1235add_library( Catch INTERFACE IMPORTED )
1236add_library( rapidjson INTERFACE IMPORTED )"))
8b9ec354
RW
1237 #t))))
1238 (build-system cmake-build-system)
1239 (arguments
7e11d113 1240 `(#:modules ((guix build cmake-build-system)
8b9ec354
RW
1241 (guix build utils)
1242 (ice-9 match))
1243 #:configure-flags
1244 ;; CMake appears to lose the RUNPATH for some reason, so it has to be
1245 ;; explicitly set with CMAKE_INSTALL_RPATH.
7e11d113 1246 (list "-DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE"
7e11d113 1247 (string-append "-DCMAKE_INSTALL_RPATH="
8b9ec354
RW
1248 (string-join (map (match-lambda
1249 ((name . directory)
1250 (string-append directory "/lib")))
40effef7
RW
1251 %build-inputs) ";"))
1252 "-DPTE_DATA_DIR=share/powertabeditor")
8b9ec354
RW
1253 #:phases
1254 (modify-phases %standard-phases
40effef7
RW
1255 (replace 'check
1256 (lambda _
b1b82aed
RW
1257 (invoke "bin/pte_tests"
1258 ;; FIXME: these tests fail
1259 "exclude:Actions/EditStaff"
1260 "exclude:Formats/PowerTabOldImport/MergeMultiBarRests"
1261 "exclude:Score/ViewFilter/FilterRule"
1262 "exclude:Score/ViewFilter/ViewFilter"
1263 "exclude:Formats/PowerTabOldImport/Directions")
1264 #t))
04ba7a9d
RW
1265 ;; FIXME: This bug has been fixed upstream, but no release has been
1266 ;; made yet. See https://github.com/powertab/powertabeditor/issues/257
1267 (add-after 'unpack 'fix-boost-bug
1268 (lambda _
1269 (substitute* "source/score/voiceutils.cpp"
1270 (("boost::rational<int> duration\\(4, pos.getDurationType\\(\\)\\);")
1271 "boost::rational<int> duration(4, static_cast<int>(pos.getDurationType()));"))
1272 #t))
1e341fa5
RW
1273 ;; Fix build with Qt 5.11.
1274 (add-after 'unpack 'add-missing-headers
1275 (lambda _
1276 (substitute* (find-files "source/dialogs/" "\\.h$")
1277 (("#include <QDialog>" m)
1278 (string-append m "\n#include <QButtonGroup>")))
1279 (substitute* "source/widgets/mixer/mixeritem.h"
1280 (("#include <QWidget>" m)
1281 (string-append m "\n#include <QStyle>")))
1282 (substitute* "source/widgets/playback/playbackwidget.h"
1283 (("#include <QWidget>" m)
1284 (string-append m "\n#include <QButtonGroup>\n#include <QAction>")))
1285 #t))
40effef7
RW
1286 (add-before 'configure 'remove-third-party-libs
1287 (lambda* (#:key inputs #:allow-other-keys)
1288 ;; Link with required static libraries, because we're not
1289 ;; using the bundled version of withershins.
c3913fac 1290 ;; Also add pthread for fixing a linker error.
40effef7
RW
1291 (substitute* "source/build/CMakeLists.txt"
1292 (("withershins" line)
1293 (string-append line "\n"
1294 (assoc-ref inputs "binutils")
1295 "/lib/libbfd.a\n"
1296 (assoc-ref inputs "libiberty")
1297 "/lib/libiberty.a\n"
1298 "dl\n"
c3913fac 1299 "pthread\n"
40effef7
RW
1300 "z\n")))
1301 #t)))))
8b9ec354
RW
1302 (inputs
1303 `(("boost" ,boost)
1304 ("alsa-lib" ,alsa-lib)
0a0bfd68 1305 ("qtbase" ,qtbase)
8b9ec354 1306 ("withershins" ,withershins)
d6902798 1307 ("libiberty" ,libiberty) ;for withershins
8b9ec354
RW
1308 ("binutils" ,binutils) ;for -lbfd and -liberty (for withershins)
1309 ("timidity" ,timidity++)
1310 ("pugixml" ,pugixml)
1311 ("rtmidi" ,rtmidi)
1312 ("rapidjson" ,rapidjson)
1313 ("zlib" ,zlib)))
1314 (native-inputs
1315 `(("catch" ,catch-framework)
1316 ("pkg-config" ,pkg-config)))
1317 (home-page "http://powertabs.net")
1318 (synopsis "Guitar tablature editor")
1319 (description
1320 "Power Tab Editor 2.0 is the successor to the famous original Power Tab
1321Editor. It is compatible with Power Tab Editor 1.7 and Guitar Pro.")
1322 (license license:gpl3+)))
1323
3d4b1bb9
RW
1324(define-public jalv-select
1325 (package
1326 (name "jalv-select")
fc1ff7fc 1327 (version "1.3")
3d4b1bb9 1328 (source (origin
ca364e7a
RW
1329 (method git-fetch)
1330 (uri (git-reference
1331 (url "https://github.com/brummer10/jalv_select.git")
fc1ff7fc 1332 (commit (string-append "v" version))))
ca364e7a 1333 (file-name (git-file-name name version))
3d4b1bb9
RW
1334 (sha256
1335 (base32
fc1ff7fc 1336 "15yanq1wra0hyh6x72ji7pk562iddg476g3vksj495x91zhnl6vm"))))
3d4b1bb9
RW
1337 (build-system gnu-build-system)
1338 (arguments
1339 `(#:make-flags
1340 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
1341 #:phases
1342 (modify-phases %standard-phases
1343 (delete 'configure)
1344 (add-after 'unpack 'ignore-PATH
1345 (lambda* (#:key inputs #:allow-other-keys)
1346 (substitute* "jalv.select.cpp"
ad7f6e5f 1347 (("echo \\$PATH.*tr ':'.*xargs ls")
3d4b1bb9 1348 (string-append "ls -1 " (assoc-ref inputs "jalv") "/bin")))
ca364e7a
RW
1349 #t))
1350 (add-before 'reset-gzip-timestamps 'make-manpages-writable
1351 (lambda* (#:key outputs #:allow-other-keys)
1352 (for-each make-file-writable
1353 (find-files (string-append (assoc-ref outputs "out")
1354 "/share/man")
1355 ".*\\.gz$"))
3d4b1bb9
RW
1356 #t)))))
1357 (inputs
1358 `(("lilv" ,lilv)
1359 ("lv2" ,lv2)
1360 ("jalv" ,jalv)
1361 ("gtkmm" ,gtkmm-2)))
1362 (native-inputs
1363 `(("pkg-config" ,pkg-config)))
1364 (home-page "https://github.com/brummer10/jalv_select")
1365 (synopsis "GUI to select LV2 plugins and run them with jalv")
1366 (description
1367 "The jalv.select package provides a graphical user interface allowing
1368users to select LV2 plugins and run them with jalv.")
1369 (license license:public-domain)))
1370
b095e762
RW
1371(define-public synthv1
1372 (package
1373 (name "synthv1")
8c7c7687 1374 (version "0.9.8")
b095e762
RW
1375 (source (origin
1376 (method url-fetch)
1377 (uri
de67e922
LF
1378 (string-append "mirror://sourceforge/synthv1/synthv1/" version
1379 "/synthv1-" version ".tar.gz"))
b095e762
RW
1380 (sha256
1381 (base32
8c7c7687 1382 "15kabmxp38wqvavs5hr1dqasjjf1j977kzqggxfmzyi3y5fan3hj"))))
b095e762 1383 (build-system gnu-build-system)
69008d73 1384 (arguments
8c7c7687 1385 `(#:tests? #f)) ; there are no tests
b095e762
RW
1386 (inputs
1387 `(("jack" ,jack-1)
1388 ("lv2" ,lv2)
1389 ("alsa-lib" ,alsa-lib)
b45aa39b 1390 ("non-session-manager" ,non-session-manager)
b095e762 1391 ("liblo" ,liblo)
e5f2afdb
EF
1392 ("qtbase" ,qtbase)
1393 ("qttools" ,qttools)))
b45aa39b
RW
1394 (native-inputs
1395 `(("pkg-config" ,pkg-config)))
9459216a 1396 (home-page "https://synthv1.sourceforge.io")
b095e762
RW
1397 (synopsis "Polyphonic subtractive synthesizer")
1398 (description
1399 "Synthv1 is an old-school subtractive polyphonic synthesizer with four
1400oscillators and stereo effects.")
1401 (license license:gpl2+)))
2bb00612 1402
cf9af706
RW
1403(define-public drumkv1
1404 (package
1405 (name "drumkv1")
8b78ba2b 1406 (version "0.9.8")
cf9af706
RW
1407 (source (origin
1408 (method url-fetch)
1409 (uri
1410 (string-append "mirror://sourceforge/drumkv1/drumkv1/" version
1411 "/drumkv1-" version ".tar.gz"))
1412 (sha256
1413 (base32
8b78ba2b 1414 "010p8nwnmqgj5mw324psig3hxi1g2gylxrigd6sj6sgcpy3kdm23"))))
cf9af706
RW
1415 (build-system gnu-build-system)
1416 (arguments
8b78ba2b 1417 `(#:tests? #f)) ; there are no tests
cf9af706
RW
1418 (inputs
1419 `(("jack" ,jack-1)
1420 ("lv2" ,lv2)
1421 ("libsndfile" ,libsndfile)
1422 ("alsa-lib" ,alsa-lib)
41e2a731 1423 ("non-session-manager" ,non-session-manager)
cf9af706
RW
1424 ("liblo" ,liblo)
1425 ("qtbase" ,qtbase)))
1426 (native-inputs
1427 `(("pkg-config" ,pkg-config)
1428 ("qttools" ,qttools)))
9459216a 1429 (home-page "https://drumkv1.sourceforge.io")
cf9af706
RW
1430 (synopsis "Drum-kit sampler synthesizer with stereo effects")
1431 (description
1432 "Drumkv1 is an old-school drum-kit sampler synthesizer with stereo
1433effects.")
1434 (license license:gpl2+)))
1435
18675264
RW
1436(define-public samplv1
1437 (package
1438 (name "samplv1")
d32f2aa3 1439 (version "0.9.8")
18675264
RW
1440 (source (origin
1441 (method url-fetch)
1442 (uri
1443 (string-append "mirror://sourceforge/samplv1/samplv1/" version
1444 "/samplv1-" version ".tar.gz"))
1445 (sha256
1446 (base32
d32f2aa3 1447 "138kd9szgn3b97s7crhsyj8pgwb0bn4l9knd4zliqjgj2f1bs9x0"))))
18675264
RW
1448 (build-system gnu-build-system)
1449 (arguments
d32f2aa3 1450 `(#:tests? #f)) ; there are no tests
18675264
RW
1451 (inputs
1452 `(("jack" ,jack-1)
1453 ("lv2" ,lv2)
1454 ("libsndfile" ,libsndfile)
1455 ("alsa-lib" ,alsa-lib)
92b70c6f 1456 ("non-session-manager" ,non-session-manager)
18675264
RW
1457 ("liblo" ,liblo)
1458 ("qtbase" ,qtbase)))
1459 (native-inputs
1460 `(("pkg-config" ,pkg-config)
1461 ("qttools" ,qttools)))
9459216a 1462 (home-page "https://samplv1.sourceforge.io")
18675264
RW
1463 (synopsis "Polyphonic sampler synthesizer with stereo effects")
1464 (description
1465 "Samplv1 is an old-school polyphonic sampler synthesizer with stereo
1466effects.")
1467 (license license:gpl2+)))
1468
2702e12e
RW
1469(define-public padthv1
1470 (package
1471 (name "padthv1")
0246bfc0 1472 (version "0.9.8")
2702e12e
RW
1473 (source (origin
1474 (method url-fetch)
1475 (uri
1476 (string-append "mirror://sourceforge/padthv1/padthv1/" version
1477 "/padthv1-" version ".tar.gz"))
1478 (sha256
1479 (base32
0246bfc0 1480 "1k4p2ir12qjcs62knvw2s6qyvb46203yx22fnwp341cjk171cxji"))))
2702e12e
RW
1481 (build-system gnu-build-system)
1482 (arguments
0246bfc0 1483 `(#:tests? #f)) ; there are no tests
2702e12e
RW
1484 (inputs
1485 `(("jack" ,jack-1)
1486 ("lv2" ,lv2)
1487 ("alsa-lib" ,alsa-lib)
1488 ("non-session-manager" ,non-session-manager)
1489 ("liblo" ,liblo)
1490 ("fftw" ,fftw)
1491 ("qtbase" ,qtbase)))
1492 (native-inputs
1493 `(("pkg-config" ,pkg-config)
1494 ("qttools" ,qttools)))
9459216a 1495 (home-page "https://padthv1.sourceforge.io")
2702e12e
RW
1496 (synopsis "Polyphonic additive synthesizer")
1497 (description
1498 "Padthv1 is an old-school polyphonic additive synthesizer with stereo
1499effects. Padthv1 is based on the PADsynth algorithm by Paul Nasca, as a
1500special variant of additive synthesis.")
1501 (license license:gpl2+)))
1502
2bb00612
RW
1503(define-public amsynth
1504 (package
1505 (name "amsynth")
7e0befd4 1506 (version "1.7.1")
2bb00612
RW
1507 (source
1508 (origin
1509 (method url-fetch)
1510 (uri (string-append "https://github.com/amsynth/amsynth/releases/"
1511 "download/release-" version
1512 "/amsynth-" version ".tar.bz2"))
1513 (sha256
1514 (base32
7e0befd4 1515 "1882pfcmf3rqg3vd4qflzkppcv158d748i603spqjbxqi8z7x7w0"))))
2bb00612
RW
1516 (build-system gnu-build-system)
1517 (arguments
1518 `(#:phases
1519 (modify-phases %standard-phases
1520 (add-before 'configure 'set-flags
1521 (lambda _
1522 ;; Compile with C++11, required by gtkmm.
1523 (setenv "CXXFLAGS" "-std=c++11")
1524 #t)))))
1525 (inputs
1526 `(("alsa-lib" ,alsa-lib)
1527 ("jack" ,jack-1)
1528 ("lv2" ,lv2)
7175f4c2 1529 ("lash" ,lash)
2bb00612
RW
1530 ("libsndfile" ,libsndfile)
1531 ("gtk+" ,gtk+-2)
1532 ("gtkmm" ,gtkmm-2)))
1533 (native-inputs
7e0befd4
RW
1534 `(("pkg-config" ,pkg-config)
1535 ("intltool" ,intltool)))
2bb00612
RW
1536 (home-page "http://amsynth.github.io")
1537 (synopsis "Analog modeling synthesizer")
1538 (description
1539 "amsynth is an easy-to-use software synthesizer with a classic
1540subtractive synthesizer topology. Its features include: dual
1541oscillators (sine, saw, square, noise) with hard sync; 12 and 24 dB/oct
1542resonant filters (low-pass, high-pass, band-pass, notch); mono, poly, legato
1543keyboard modes; dual ADSR envelope generators for filter and amplitude; LFO
1544which can modulate the oscillators, filter, and amplitude; distortion and
1545reverb effects.")
1546 (license license:gpl2+)))
b095e762 1547
ec8da0e2
RW
1548(define-public setbfree
1549 (package
1550 (name "setbfree")
8ce1b78b 1551 (version "0.8.9")
ec8da0e2 1552 (source (origin
e0674840
TGR
1553 (method git-fetch)
1554 (uri (git-reference
1555 (url "https://github.com/pantherb/setBfree")
1556 (commit (string-append "v" version))))
1557 (file-name (git-file-name name version))
ec8da0e2
RW
1558 (sha256
1559 (base32
8ce1b78b 1560 "1lpsa64xvwa9xbbp8zcwxy5w0daffc7fziny2pizabqh7m9xqjl2"))))
ec8da0e2
RW
1561 (build-system gnu-build-system)
1562 (arguments
d7caf8b8 1563 `(#:tests? #f ; no "check" target
ec8da0e2
RW
1564 #:make-flags
1565 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
1566 (string-append "FONTFILE="
1567 (assoc-ref %build-inputs "font-bitstream-vera")
b42d4508
RW
1568 "/share/fonts/truetype/VeraBd.ttf")
1569 ;; Disable unsupported optimization flags on non-x86
1570 ,@(let ((system (or (%current-target-system)
1571 (%current-system))))
1572 (if (or (string-prefix? "x86_64" system)
1573 (string-prefix? "i686" system))
1574 '()
1575 '("OPTIMIZATIONS=-ffast-math -fomit-frame-pointer -O3"))))
ec8da0e2
RW
1576 #:phases
1577 (modify-phases %standard-phases
1578 (add-before 'build 'set-CC-variable
d7caf8b8 1579 (lambda _ (setenv "CC" "gcc") #t))
ec8da0e2
RW
1580 (delete 'configure))))
1581 (inputs
1582 `(("jack" ,jack-1)
1583 ("lv2" ,lv2)
1584 ("zita-convolver" ,zita-convolver)
1585 ("glu" ,glu)
1586 ("ftgl" ,ftgl)
1587 ("font-bitstream-vera" ,font-bitstream-vera)))
1588 (native-inputs
1589 `(("help2man" ,help2man)
1590 ("pkg-config" ,pkg-config)))
1591 (home-page "http://setbfree.org")
1592 (synopsis "Tonewheel organ")
1593 (description
1594 "setBfree is a MIDI-controlled, software synthesizer designed to imitate
1595the sound and properties of the electromechanical organs and sound
1596modification devices that brought world-wide fame to the names and products of
1597Laurens Hammond and Don Leslie.")
1598 (license license:gpl2+)))
1599
770305f4
RW
1600(define-public beast
1601 (package
1602 (name "beast")
1603 (version "0.10.0")
1604 (source (origin
1605 (method url-fetch)
1606 (uri (string-append "https://testbit.eu/pub/dists/beast/beast-"
1607 version ".tar.xz"))
1608 (sha256
1609 (base32
1610 "1jzzmfwssklzw8fvvil04n8csc0zm99fnd9p2xa7c0xchg37lvhn"))))
1611 (build-system gnu-build-system)
844f4f6e
EF
1612 (arguments
1613 '(#:parallel-build? #f)) ; Race conditions cause build failures
770305f4
RW
1614 (inputs
1615 `(("rapicorn" ,rapicorn)
1616 ("guile" ,guile-1.8)
1617 ("python" ,python-2)
770305f4
RW
1618 ("libgnomecanvas" ,libgnomecanvas)
1619 ("libogg" ,libogg)
1620 ("libmad" ,libmad)
1621 ("flac" ,flac)
1622 ("alsa-lib" ,alsa-lib)
1623 ("libvorbis" ,libvorbis)
b94a6ca0 1624 ("gettext" ,gettext-minimal)))
770305f4
RW
1625 (native-inputs
1626 `(("pkg-config" ,pkg-config)
1627 ("glib:bin" ,glib "bin")
f2516de2 1628 ("cython" ,python2-cython)
770305f4
RW
1629 ("perl" ,perl)
1630 ("perl-xml-parser" ,perl-xml-parser)))
1631 (home-page "https://testbit.eu/wiki/Beast_Home")
1632 (synopsis "Music composition and modular synthesis environment")
1633 (description
1634 "Beast is a music composition and modular synthesis application. It
1635supports a wide range of standards in the field, such as MIDI, various audio
1636file formats and LADSPA modules. It allows for multitrack editing, real-time
1637synthesis, 32bit audio rendering, precise timing down to sample granularity,
1638on-demand and partial loading of wave files, on the fly decoding, stereo
1639mixing, FFT scopes, MIDI automation and full scriptability in Scheme.")
1640 (license license:gpl3+)))
1641
96250294
RW
1642(define-public bristol
1643 (package
1644 (name "bristol")
1645 (version "0.60.11")
1646 (source (origin
1647 (method url-fetch)
1648 (uri (string-append "mirror://sourceforge/bristol/bristol/"
1649 (version-major+minor version)
1650 "/bristol-" version ".tar.gz"))
1651 (sha256
1652 (base32
1653 "1fi2m4gmvxdi260821y09lxsimq82yv4k5bbgk3kyc3x1nyhn7vx"))))
1654 (build-system gnu-build-system)
18ef998b
RW
1655 (arguments
1656 `(#:phases
1657 (modify-phases %standard-phases
1658 (add-after 'unpack 'remove-sse-flags
1659 (lambda* (#:key system #:allow-other-keys)
1660 (when (not (or (string-prefix? "x86_64" system)
1661 (string-prefix? "i686" system)))
1662 (substitute* "bristol/Makefile.in"
1663 (("-msse -mfpmath=sse") "")))
73124d34 1664 #t))
bd0c6231
RW
1665 ;; alsa-lib 1.1.x no longer provides iatomic.h. That's okay because
1666 ;; bristol actually doesn't use it.
1667 (add-after 'unpack 'do-not-use-alsa-iatomic
1668 (lambda _
1669 (substitute* "libbristolaudio/audioEngineJack.c"
1670 (("#include <alsa/iatomic.h>") ""))
1671 #t))
73124d34
RW
1672 ;; We know that Bristol has been linked with JACK and we don't have
1673 ;; ldd, so we can just skip this check.
1674 (add-after 'unpack 'do-not-grep-for-jack
1675 (lambda _
1676 (substitute* "bin/startBristol.in"
1677 (("ldd `which bristol` | grep jack") "echo guix"))
18ef998b 1678 #t)))))
96250294
RW
1679 (inputs
1680 `(("alsa-lib" ,alsa-lib)
1681 ("jack" ,jack-1)
1682 ("liblo" ,liblo)
1683 ("libx11" ,libx11)))
1684 (native-inputs
1685 `(("pkg-config" ,pkg-config)))
1686 (home-page "http://bristol.sourceforge.net/")
1687 (synopsis "Synthesizer emulator")
1688 (description
36a4366d 1689 "Bristol is an emulation package for a number of different @code{classic}
96250294
RW
1690synthesizers including additive and subtractive and a few organs. The
1691application consists of the engine, which is called bristol, and its own GUI
1692library called brighton that represents all the emulations. There are
1693currently more than twenty different emulations; each does sound different
1694although the author maintains that the quality and accuracy of each emulation
1695is subjective.")
1696 (license license:gpl3+)))
1697
6260d1a8
RW
1698(define-public tuxguitar
1699 (package
1700 (name "tuxguitar")
a0a7e425 1701 (version "1.5.2")
6260d1a8
RW
1702 (source (origin
1703 (method url-fetch)
1704 (uri (string-append
1705 "mirror://sourceforge/tuxguitar/TuxGuitar/TuxGuitar-"
f467c352 1706 version "/tuxguitar-" version "-src.tar.gz"))
6260d1a8
RW
1707 (sha256
1708 (base32
a0a7e425 1709 "10arfpgm2pw7mn922klklzn05lw5ifqx070shdrar81afmkfbbd9"))))
f467c352 1710 (build-system ant-build-system)
6260d1a8 1711 (arguments
f467c352 1712 `(#:build-target "build"
40f372af 1713 #:jdk ,icedtea-8
a0a7e425 1714 #:tests? #f ; no tests
6260d1a8 1715 #:phases
5f1c9498 1716 (modify-phases %standard-phases
f467c352
RW
1717 (add-after 'unpack 'enter-dir
1718 (lambda _ (chdir "TuxGuitar-lib") #t))
750e54ec 1719 (add-after 'build 'build-libraries
f467c352 1720 (lambda* (#:key inputs outputs #:allow-other-keys)
750e54ec
RW
1721 (let* ((initial-classpath (getenv "CLASSPATH"))
1722 (build-dir (lambda (dir)
1723 (chdir "..")
1724 (setenv "CLASSPATH"
1725 (string-join (cons initial-classpath
1726 (find-files (getcwd) "\\.jar$"))
1727 ":"))
1728 (chdir dir)
1729 (if (file-exists? "build.xml")
1730 ((assoc-ref %standard-phases 'build)
1731 #:build-target "build")
1732 (begin
a0a7e425 1733 ;; Generate default build.xml.
750e54ec
RW
1734 ((@@ (guix build ant-build-system) default-build.xml)
1735 (string-append (string-downcase dir) ".jar")
1736 (string-append (assoc-ref outputs "out")
1737 "/share/java"))
1738 ((assoc-ref %standard-phases 'build)))))))
1739 (map build-dir '("TuxGuitar-editor-utils"
1740 "TuxGuitar-ui-toolkit"
1741 "TuxGuitar-ui-toolkit-swt"
1742 "TuxGuitar-awt-graphics")))))
1743 (add-after 'build-libraries 'build-application
f467c352
RW
1744 (lambda _
1745 (chdir "../TuxGuitar")
1746 ((assoc-ref %standard-phases 'build)
1747 #:build-target "build")))
1748 (replace 'install
1749 (lambda* (#:key inputs outputs #:allow-other-keys)
1750 (let* ((out (assoc-ref outputs "out"))
1751 (bin (string-append out "/bin"))
1752 (share (string-append out "/share"))
1753 (lib (string-append share "/java"))
1754 (swt (assoc-ref inputs "java-swt")))
1755 (mkdir-p bin)
a0a7e425 1756 ;; Install all jars.
f467c352
RW
1757 (for-each (lambda (file)
1758 (install-file file lib))
1759 (find-files ".." "\\.jar$"))
750e54ec 1760
a0a7e425 1761 ;; Install all resources.
750e54ec
RW
1762 (copy-recursively "share" share)
1763
a0a7e425 1764 ;; Create wrapper.
f467c352
RW
1765 (call-with-output-file (string-append bin "/tuxguitar")
1766 (lambda (port)
1767 (let ((classpath (string-join (append (find-files lib "\\.jar$")
1768 (find-files swt "\\.jar$"))
1769 ":")))
1770 (format
1771 port
1772 (string-append "#!/bin/sh\n"
1773 (which "java")
1774 " -cp " classpath
1775 " -Dtuxguitar.home.path=" out
1776 " -Dtuxguitar.share.path=" out "/share"
1777 " -Dswt.library.path=" swt "/lib"
1778 " org.herac.tuxguitar.app.TGMainSingleton"
1779 " \"$1\" \"$2\"")))))
1780 (chmod (string-append bin "/tuxguitar") #o555)
1781 #t))))))
6260d1a8 1782 (inputs
1ad15c16 1783 `(("java-swt" ,java-swt)))
d4eae3f7 1784 (home-page "http://tuxguitar.com.ar/")
6260d1a8
RW
1785 (synopsis "Multitrack tablature editor and player")
1786 (description
1787 "TuxGuitar is a guitar tablature editor with player support through midi.
1788It can display scores and multitrack tabs. TuxGuitar provides various
1789additional features, including autoscrolling while playing, note duration
1790management, bend/slide/vibrato/hammer-on/pull-off effects, support for
1791tuplets, time signature management, tempo management, gp3/gp4/gp5 import and
1792export.")
1793 (license license:lgpl2.1+)))
2d0fd07b
RW
1794
1795(define-public pd
1796 (package
1797 (name "pd")
4bad41e0 1798 (version "0.50-0")
2d0fd07b
RW
1799 (source (origin
1800 (method url-fetch)
1801 (uri
037bf4f4
RW
1802 (string-append "http://msp.ucsd.edu/Software/pd-"
1803 version ".src.tar.gz"))
2d0fd07b
RW
1804 (sha256
1805 (base32
4bad41e0 1806 "0hg4n5b55f650qsc0mjx559072dp7vfza7w0pvk6rk2l831cvsps"))))
2d0fd07b
RW
1807 (build-system gnu-build-system)
1808 (arguments
4bad41e0 1809 `(#:tests? #f ; no "check" target
96808b39
SB
1810 #:configure-flags
1811 (list
1812 "--enable-jack"
1813 (string-append "--with-wish=" (string-append
1814 (assoc-ref %build-inputs "tk")
1815 "/bin/wish8.6")))
2d0fd07b
RW
1816 #:phases
1817 (modify-phases %standard-phases
96808b39 1818 (add-before 'configure 'fix-with-path
4712cbb0 1819 (lambda _
4712cbb0
RW
1820 (substitute* "tcl/pd-gui.tcl"
1821 (("exec wish ") (string-append "exec " (which "wish8.6") " ")))
9ab90ead 1822 #t)))))
2d0fd07b
RW
1823 (native-inputs
1824 `(("autoconf" ,autoconf)
1825 ("automake" ,automake)
1826 ("libtool" ,libtool)
b94a6ca0 1827 ("gettext" ,gettext-minimal)
2d0fd07b
RW
1828 ("pkg-config" ,pkg-config)))
1829 (inputs
1830 `(("tk" ,tk)
1831 ("alsa-lib" ,alsa-lib)
1832 ("jack" ,jack-1)))
1833 (home-page "http://puredata.info")
1834 (synopsis "Visual programming language for artistic performances")
1835 (description
1836 "Pure Data (aka Pd) is a visual programming language. Pd enables
1837musicians, visual artists, performers, researchers, and developers to create
1838software graphically, without writing lines of code. Pd is used to process
1839and generate sound, video, 2D/3D graphics, and interface sensors, input
1840devices, and MIDI. Pd can easily work over local and remote networks to
1841integrate wearable technology, motor systems, lighting rigs, and other
1842equipment. Pd is suitable for learning basic multimedia processing and visual
1843programming methods as well as for realizing complex systems for large-scale
1844projects.")
1845 (license license:bsd-3)))
821664f1 1846
6826f1e1
SB
1847(define-public libpd
1848 (package
1849 (name "libpd")
1850 (version "0.11.0")
1851 (source (origin
1852 (method git-fetch)
1853 (uri (git-reference
1854 (url "https://github.com/libpd/libpd.git")
1855 (commit version)
1856 (recursive? #t))) ; for the 'pure-data' submodule
1857 (file-name (string-append name "-" version "-checkout"))
1858 (sha256
1859 (base32
1860 "1bcg1d9iyf9n37hwwphmih0c8rd1xcqykil5z1cax6xfs76552nk"))))
1861 (build-system gnu-build-system)
1862 (arguments
1863 '(#:tests? #f ; no tests
1864 #:make-flags '("CC=gcc")
1865 #:phases
1866 (modify-phases %standard-phases
1867 (delete 'configure) ; no configure script
1868 (replace 'install
1869 (lambda* (#:key outputs #:allow-other-keys)
1870 (let ((out (assoc-ref outputs "out")))
1871 (invoke "make" "install"
1872 (string-append "prefix=" out)
1873 ;; XXX: Fix the last 2 lines of 'install' target.
1874 "LIBPD_IMPLIB=NO"
1875 "LIBPD_DEF=NO")))))))
1876 (home-page "http://libpd.cc/")
1877 (synopsis "Pure Data as an embeddable audio synthesis library")
1878 (description
1879 "Libpd provides Pure Data as an embeddable audio synthesis library. Its
1880main purpose is to liberate raw audio rendering from audio and MIDI drivers.")
1881 (license license:bsd-3)))
1882
aacb52fb
RW
1883(define-public portmidi
1884 (package
1885 (name "portmidi")
1886 (version "217")
1887 (source (origin
1888 (method url-fetch)
1889 (uri (string-append "mirror://sourceforge/portmedia/portmidi/"
1890 version "/portmidi-src-" version ".zip"))
1891 (sha256
1892 (base32
1893 "03rfsk7z6rdahq2ihy5k13qjzgx757f75yqka88v3gc0pn9ais88"))
1894 (patches (list (search-patch "portmidi-modular-build.patch")))))
1895 (build-system cmake-build-system)
1896 (arguments
3def739d
TGR
1897 `(#:tests? #f ; tests cannot be linked
1898 #:build-type "Release" ; needed to have PMALSA set
aacb52fb
RW
1899 #:configure-flags
1900 (list "-DPORTMIDI_ENABLE_JAVA=Off"
a374d9c9
NG
1901 "-DPORTMIDI_ENABLE_TEST=Off") ; tests fail linking
1902 #:phases
1903 (modify-phases %standard-phases
1904 ;; Some packages, e.g., MuseScore, expect "libporttime.so" instead of
1905 ;; "libportmidi.so". Distributions get away with it by creating an
1906 ;; appropriate symlink.
1907 (add-after 'install 'add-porttime
1908 (lambda* (#:key outputs #:allow-other-keys)
1909 (let* ((out (assoc-ref outputs "out"))
1910 (lib (string-append out "/lib")))
1911 (with-directory-excursion lib
1912 (symlink "libportmidi.so" "libporttime.so")))
1913 #t)))))
aacb52fb
RW
1914 (inputs
1915 `(("alsa-lib" ,alsa-lib)))
1916 (native-inputs
1917 `(("unzip" ,unzip)))
1918 (home-page "http://portmedia.sourceforge.net/portmidi/")
1919 (synopsis "Library for MIDI I/O")
1920 (description
1921 "PortMidi is a library supporting real-time input and output of MIDI data
1922using a system-independent interface.")
1923 (license license:expat)))
f65d59fc 1924
38098bf7
RW
1925(define-public portmidi-for-extempore
1926 (package (inherit portmidi)
1927 (name "portmidi-for-extempore")
1928 (version "217")
1929 (source (origin
57906fad
RW
1930 (method git-fetch)
1931 (uri (git-reference
1932 (url "https://github.com/extemporelang/portmidi.git")
1933 (commit version)))
1934 (file-name (git-file-name name version))
38098bf7
RW
1935 (sha256
1936 (base32
57906fad 1937 "1inriyrjf7xx2b7r54x0vmf9ngyqgr7g5060c22bwkbsgg53apzv"))))
38098bf7
RW
1938 (build-system cmake-build-system)
1939 (arguments `(#:tests? #f)) ; no tests
1940 (native-inputs '())
39162ee4
RW
1941 ;; Extempore refuses to build on architectures other than x86_64
1942 (supported-systems '("x86_64-linux"))
38098bf7
RW
1943 (home-page "https://github.com/extemporelang/portmidi/")))
1944
f65d59fc
RW
1945(define-public python-pyportmidi
1946 (package
1947 (name "python-pyportmidi")
1948 (version (package-version portmidi))
1949 (source (package-source portmidi))
1950 (build-system python-build-system)
1951 (arguments
1952 `(#:tests? #f ; no tests included
1953 #:phases
1954 (modify-phases %standard-phases
1955 (add-after 'unpack 'enter-dir
1956 (lambda _ (chdir "pm_python") #t))
1957 (add-after 'enter-dir 'fix-setup.py
1958 (lambda _
1959 (substitute* "setup.py"
1960 ;; Use Python 3 syntax
1961 (("print (\".*\")" _ text)
1962 (string-append "print(" text ")\n"))
1963 ;; TODO.txt and CHANGES.txt don't exist
1964 (("CHANGES =.*") "CHANGES = \"\"\n")
1965 (("TODO =.*") "TODO = \"\"\n"))
1966 #t)))))
1967 (inputs
1968 `(("portmidi" ,portmidi)
f2516de2 1969 ("alsa-lib" ,alsa-lib)))
f65d59fc 1970 (native-inputs
f2516de2
HG
1971 `(("python-cython" ,python-cython)
1972 ("unzip" ,unzip)))
f65d59fc
RW
1973 (home-page "http://portmedia.sourceforge.net/portmidi/")
1974 (synopsis "Python bindings to PortMidi")
1975 (description
1976 "This package provides Python bindings to the PortMidi library.")
1977 (license license:expat)))
aacb52fb 1978
821664f1
RW
1979(define-public frescobaldi
1980 (package
1981 (name "frescobaldi")
e40335b2 1982 (version "3.0.0")
821664f1
RW
1983 (source (origin
1984 (method url-fetch)
1985 (uri (string-append
1986 "https://github.com/wbsoft/frescobaldi/releases/download/v"
1987 version "/frescobaldi-" version ".tar.gz"))
1988 (sha256
1989 (base32
e40335b2 1990 "15cqhbjbjikr7ljgiq56bz2gxrr38j8p0f78p2vhyzydaviy9a2z"))))
821664f1 1991 (build-system python-build-system)
a19a6d3a 1992 (arguments `(#:tests? #f)) ; no tests included
821664f1
RW
1993 (inputs
1994 `(("lilypond" ,lilypond)
6855b347 1995 ("portmidi" ,portmidi)
e40335b2 1996 ("python-pyqt" ,python-pyqt)
821664f1 1997 ("python-ly" ,python-ly)
6855b347 1998 ("python-pyportmidi" ,python-pyportmidi)
821664f1 1999 ("poppler" ,poppler)
e40335b2 2000 ("python-poppler-qt5" ,python-poppler-qt5)
821664f1
RW
2001 ("python-sip" ,python-sip)))
2002 (home-page "http://www.frescobaldi.org/")
2003 (synopsis "LilyPond sheet music text editor")
2004 (description
2005 "Frescobaldi is a LilyPond sheet music text editor with syntax
2006highlighting and automatic completion. Among other things, it can render
2007scores next to the source, can capture input from MIDI or read MusicXML and
2008ABC files, has a MIDI player for proof-listening, and includes a documentation
2009browser.")
2010 (license license:gpl2+)))
ddfddb0c 2011
bf76d780
RW
2012(define-public drumstick
2013 (package
2014 (name "drumstick")
6fd7e0cc 2015 (version "1.1.3")
bf76d780
RW
2016 (source (origin
2017 (method url-fetch)
2018 (uri (string-append "mirror://sourceforge/drumstick/"
2019 version "/drumstick-" version ".tar.bz2"))
2020 (sha256
2021 (base32
6fd7e0cc 2022 "1n9wvg79yvkygrkc8xd8pgrd3d7hqmr7gh24dccf0px23lla9b3m"))))
bf76d780
RW
2023 (build-system cmake-build-system)
2024 (arguments
7adaf5b5 2025 `(#:tests? #f ; no test target
bf76d780
RW
2026 #:configure-flags '("-DLIB_SUFFIX=")
2027 #:phases
2028 (modify-phases %standard-phases
2029 (add-before 'configure 'fix-docbook
2030 (lambda* (#:key inputs #:allow-other-keys)
2031 (substitute* "cmake_admin/CreateManpages.cmake"
2032 (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
2033 (string-append (assoc-ref inputs "docbook-xsl")
2034 "/xml/xsl/docbook-xsl-"
2035 ,(package-version docbook-xsl)
2036 "/manpages/docbook.xsl")))
2037 #t)))))
2038 (inputs
ca1cab82
EF
2039 `(("qtbase" ,qtbase)
2040 ("qtsvg" ,qtsvg)
7adaf5b5 2041 ("alsa-lib" ,alsa-lib)))
bf76d780
RW
2042 (native-inputs
2043 `(("pkg-config" ,pkg-config)
7adaf5b5 2044 ("libxslt" ,libxslt) ; for xsltproc
bf76d780
RW
2045 ("docbook-xsl" ,docbook-xsl)
2046 ("doxygen" ,doxygen)))
2047 (home-page "http://drumstick.sourceforge.net/")
2048 (synopsis "C++ MIDI library")
2049 (description
2050 "Drumstick is a set of MIDI libraries using C++/Qt5 idioms and style. It
2051includes a C++ wrapper around the ALSA library sequencer interface. A
2052complementary library provides classes for processing SMF (Standard MIDI
2053files: .MID/.KAR), Cakewalk (.WRK), and Overture (.OVE) file formats. A
2054multiplatform realtime MIDI I/O library is also provided with various output
2055backends, including ALSA, OSS, Network and FluidSynth.")
2056 (license license:gpl2+)))
2057
14b9203d
RW
2058(define-public vmpk
2059 (package
2060 (name "vmpk")
2061 (version "0.7.2")
2062 (source (origin
2063 (method url-fetch)
2064 (uri (string-append "mirror://sourceforge/vmpk/vmpk/"
2065 version "/vmpk-" version ".tar.bz2"))
2066 (sha256
2067 (base32
2068 "1i3hnvdgz46n4k5v0q4jhgh7nkh0s390ix4nqr69z0q3026yp0p6"))))
2069 (build-system cmake-build-system)
2070 (arguments
2071 `(#:tests? #f ; no test target
2072 #:phases
2073 (modify-phases %standard-phases
2074 (add-before 'configure 'fix-docbook
2075 (lambda* (#:key inputs #:allow-other-keys)
2076 (substitute* "cmake_admin/CreateManpages.cmake"
2077 (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
2078 (string-append (assoc-ref inputs "docbook-xsl")
2079 "/xml/xsl/docbook-xsl-"
2080 ,(package-version docbook-xsl)
2081 "/manpages/docbook.xsl")))
2082 #t)))))
2083 (inputs
2084 `(("drumstick" ,drumstick)
2085 ("qtbase" ,qtbase)
2086 ("qtsvg" ,qtsvg)
2087 ("qttools" ,qttools)
2088 ("qtx11extras" ,qtx11extras)))
2089 (native-inputs
2090 `(("libxslt" ,libxslt) ;for xsltproc
2091 ("docbook-xsl" ,docbook-xsl)
2092 ("pkg-config" ,pkg-config)))
2093 (home-page "http://vmpk.sourceforge.net")
2094 (synopsis "Virtual MIDI piano keyboard")
2095 (description
2096 "Virtual MIDI Piano Keyboard is a MIDI events generator and receiver. It
2097doesn't produce any sound by itself, but can be used to drive a MIDI
2098synthesizer (either hardware or software, internal or external). You can use
2099the computer's keyboard to play MIDI notes, and also the mouse. You can use
2100the Virtual MIDI Piano Keyboard to display the played MIDI notes from another
2101instrument or MIDI file player.")
2102 (license license:gpl3+)))
2103
ddfddb0c
RW
2104(define-public zynaddsubfx
2105 (package
2106 (name "zynaddsubfx")
5f88d81f 2107 (version "3.0.5")
ddfddb0c
RW
2108 (source (origin
2109 (method url-fetch)
2110 (uri (string-append
2111 "mirror://sourceforge/zynaddsubfx/zynaddsubfx/"
138e7697 2112 version "/zynaddsubfx-" version ".tar.bz2"))
ddfddb0c
RW
2113 (sha256
2114 (base32
5f88d81f 2115 "0qwzg14h043rmyf9jqdylxhyfy4sl0vsr0gjql51wjhid0i34ivl"))))
ddfddb0c 2116 (build-system cmake-build-system)
00dfc97c
RW
2117 (arguments
2118 `(#:phases
2119 (modify-phases %standard-phases
2120 ;; Move SSE compiler optimization flags from generic target to
2121 ;; athlon64 and core2 targets, because otherwise the build would fail
2122 ;; on non-Intel machines.
2123 (add-after 'unpack 'remove-sse-flags-from-generic-target
2124 (lambda _
2125 (substitute* "src/CMakeLists.txt"
2126 (("-msse -msse2 -mfpmath=sse") "")
2127 (("-march=(athlon64|core2)" flag)
2128 (string-append flag " -msse -msse2 -mfpmath=sse")))
2129 #t)))))
ddfddb0c
RW
2130 (inputs
2131 `(("liblo" ,liblo)
2132 ("ntk" ,ntk)
1ea7969f 2133 ("mesa" ,mesa)
ddfddb0c
RW
2134 ("alsa-lib" ,alsa-lib)
2135 ("jack" ,jack-1)
2136 ("fftw" ,fftw)
2137 ("minixml" ,minixml)
2138 ("libxpm" ,libxpm)
2139 ("zlib" ,zlib)))
2140 (native-inputs
2141 `(("pkg-config" ,pkg-config)))
2142 (home-page "http://zynaddsubfx.sf.net/")
2143 (synopsis "Software synthesizer")
2144 (description
2145 "ZynAddSubFX is a feature heavy realtime software synthesizer. It offers
2146three synthesizer engines, multitimbral and polyphonic synths, microtonal
2147capabilities, custom envelopes, effects, etc.")
2148 (license license:gpl2)))
c493679f
RW
2149
2150(define-public yoshimi
2151 (package
2152 (name "yoshimi")
886534b4 2153 (version "1.6.0.1")
c493679f
RW
2154 (source (origin
2155 (method url-fetch)
2156 (uri (string-append "mirror://sourceforge/yoshimi/"
2157 (version-major+minor version)
2158 "/yoshimi-" version ".tar.bz2"))
2159 (sha256
2160 (base32
886534b4 2161 "140f2k4akj39pny8c7i794q125415gyvmy4rday0il5ncp3glik4"))))
c493679f
RW
2162 (build-system cmake-build-system)
2163 (arguments
886534b4 2164 `(#:tests? #f ; there are no tests
c493679f
RW
2165 #:configure-flags
2166 (list (string-append "-DCMAKE_INSTALL_DATAROOTDIR="
2167 (assoc-ref %outputs "out") "/share"))
2168 #:phases
2169 (modify-phases %standard-phases
2170 (add-before 'configure 'enter-dir
2171 (lambda _ (chdir "src") #t))
2172 ;; Move SSE compiler optimization flags from generic target to
2173 ;; athlon64 and core2 targets, because otherwise the build would fail
2174 ;; on non-Intel machines.
2175 (add-after 'unpack 'remove-sse-flags-from-generic-target
2176 (lambda _
2177 (substitute* "src/CMakeLists.txt"
2178 (("-msse -msse2 -mfpmath=sse") "")
2179 (("-march=(athlon64|core2)" flag)
2180 (string-append flag " -msse -msse2 -mfpmath=sse")))
5edc8682 2181 #t)))))
c493679f
RW
2182 (inputs
2183 `(("boost" ,boost)
2184 ("fftwf" ,fftwf)
2185 ("alsa-lib" ,alsa-lib)
2186 ("jack" ,jack-1)
2187 ("fontconfig" ,fontconfig)
2188 ("minixml" ,minixml)
2189 ("mesa" ,mesa)
2190 ("fltk" ,fltk)
2191 ("lv2" ,lv2)
2192 ("readline" ,readline)
2193 ("ncurses" ,ncurses)
2194 ("cairo" ,cairo)
2195 ("zlib" ,zlib)))
2196 (native-inputs
2197 `(("pkg-config" ,pkg-config)))
2198 (home-page "http://yoshimi.sourceforge.net/")
2199 (synopsis "Multi-paradigm software synthesizer")
2200 (description
edfa2eee 2201 "Yoshimi is a fork of ZynAddSubFX, a feature-heavy real-time software
c493679f
RW
2202synthesizer. It offers three synthesizer engines, multitimbral and polyphonic
2203synths, microtonal capabilities, custom envelopes, effects, etc. Yoshimi
2204improves on support for JACK features, such as JACK MIDI.")
2205 (license license:gpl2)))
658212eb 2206
e87cb754
RW
2207(define-public libgig
2208 (package
2209 (name "libgig")
38146797 2210 (version "4.1.0")
e87cb754
RW
2211 (source (origin
2212 (method url-fetch)
2213 (uri (string-append "http://download.linuxsampler.org/packages/"
2214 "libgig-" version ".tar.bz2"))
2215 (sha256
2216 (base32
38146797 2217 "02xx6bqxzgkvrawwnzrnxx1ypk244q4kpwfd58266f9ji8kq18h6"))))
e87cb754
RW
2218 (build-system gnu-build-system)
2219 (inputs
2220 `(("libuuid" ,util-linux)
2221 ("libsndfile" ,libsndfile)))
2222 (native-inputs
2223 `(("pkg-config" ,pkg-config)))
2224 (home-page "http://linuxsampler.org/libgig/")
2225 (synopsis "C++ library for working with Gigasampler (.gig) files")
2226 (description
2227 "Libgig is a C++ library for loading, modifying existing and creating new
2228Gigasampler (.gig) files and DLS (Downloadable Sounds) Level 1/2 files, KORG
2229sample based instruments (.KSF and .KMP files), SoundFont v2 (.sf2) files and
2230AKAI sampler data. The package includes a couple of command line tools based
2231on the library.")
2232 ;; The library and tools are released under the GPL, except the AKAI
2233 ;; classes which are released under the LGPL.
2234 (license (list license:gpl2+ license:lgpl2.1+))))
2235
a9f55bf2
RW
2236(define-public jack-keyboard
2237 (package
2238 (name "jack-keyboard")
2239 (version "2.5")
2240 (source
2241 (origin
2242 (method url-fetch)
2243 (uri (string-append "mirror://sourceforge/jack-keyboard/jack-keyboard/"
2244 version "/jack-keyboard-" version ".tar.gz"))
2245 (sha256
2246 (base32
2247 "0mzmg8aavybcfdlq2yd9d0vscqd6is5p6jzrgfpfm5j3xdcvh2s3"))))
2248 (build-system gnu-build-system)
2249 (inputs
2250 `(("jack" ,jack-1)
2251 ("lash" ,lash)
2252 ("gtk+" ,gtk+-2)))
2253 (native-inputs
2254 `(("pkg-config" ,pkg-config)))
2255 (home-page "http://jack-keyboard.sourceforge.net/")
2256 (synopsis "Virtual MIDI keyboard")
2257 (description "Jack-keyboard is a virtual MIDI keyboard, a program that
2258allows you to send JACK MIDI events (i.e. play) using your PC keyboard.")
2259 (license license:bsd-2)))
2260
39b33584
RW
2261(define-public jack-capture
2262 (package
2263 (name "jack-capture")
2264 (version "0.9.73")
2265 (source (origin
2266 (method git-fetch)
2267 (uri (git-reference
2268 (url "https://github.com/kmatheussen/jack_capture.git")
2269 (commit version)))
2270 (file-name (string-append name "-" version "-checkout"))
2271 (sha256
2272 (base32
2273 "0jcqky96q8xgya6wqv1p8pj9fkf2wh7ynl67ah7x5bn3basgfclf"))))
2274 (build-system gnu-build-system)
2275 (arguments
2276 `(#:make-flags
2277 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
2278 #:tests? #f ; there are none
2279 #:phases
2280 (modify-phases %standard-phases
2281 (delete 'configure))))
2282 (native-inputs
2283 `(("pkg-config" ,pkg-config)
2284 ("which" ,which)))
2285 (inputs
2286 `(("gtk+" ,gtk+-2)
2287 ("jack" ,jack-1)
2288 ("libogg" ,libogg)
2289 ("liblo" ,liblo)
2290 ("lame" ,lame)
2291 ("libsndfile" ,libsndfile)))
2292 (home-page "https://github.com/kmatheussen/jack_capture")
2293 (synopsis "Program for recording sound files with JACK")
2294 (description "This is a program for recording sound files with JACK. It
2295can connect to any JACK port and record the output into a stereo WAV file.")
2296 (license license:gpl2+)))
2297
658212eb
LF
2298(define-public cursynth
2299 (package
2300 (name "cursynth")
2301 (version "1.5")
2302 (source
2303 (origin
2304 (method url-fetch)
2305 (uri (string-append "mirror://gnu/cursynth/cursynth-"
2306 version ".tar.gz"))
2307 (sha256
2308 (base32 "1dhphsya41rv8z6yqcv9l6fwbslsds4zh1y56zizi39nd996d40v"))
fc1adab1 2309 (patches (search-patches "cursynth-wave-rand.patch"))))
658212eb
LF
2310 (build-system gnu-build-system)
2311 (native-inputs `(("pkg-config" ,pkg-config)))
2312 ;; TODO: See https://github.com/iyoko/cursynth/issues/4 which currently
2313 ;; prevents us from using pulseaudio
2314 (inputs `(("ncurses" ,ncurses)
2315 ("alsa" ,alsa-lib)))
6fd52309 2316 (home-page "https://www.gnu.org/software/cursynth/")
658212eb
LF
2317 (synopsis "Polyphonic and MIDI subtractive music synthesizer using curses")
2318 (description "GNU cursynth is a polyphonic synthesizer that runs
2319graphically in the terminal. It is built on a full-featured subtractive
2320synthesis engine. Notes and parameter changes may be entered via MIDI or the
2321computer's keyboard.")
2322 (license license:gpl3+)))
a763ce7d 2323
13edf1b9
RW
2324(define-public aj-snapshot
2325 (package
2326 (name "aj-snapshot")
bc03fe69 2327 (version "0.9.9")
13edf1b9
RW
2328 (source (origin
2329 (method url-fetch)
2330 (uri (string-append "mirror://sourceforge/aj-snapshot/"
2331 "aj-snapshot-" version ".tar.bz2"))
2332 (sha256
2333 (base32
bc03fe69 2334 "0z8wd5yvxdmw1h1rj6km9h01xd4xmp4d86gczlix7hsc7zrf0wil"))))
13edf1b9
RW
2335 (build-system gnu-build-system)
2336 (inputs
2337 `(("minixml" ,minixml)
2338 ("jack" ,jack-1)
2339 ("alsa-lib" ,alsa-lib)))
2340 (native-inputs
2341 `(("pkg-config" ,pkg-config)))
2342 (home-page "http://aj-snapshot.sourceforge.net/")
2343 (synopsis "Snapshot connections between ALSA and JACK clients")
2344 (description "Aj-snapshot is a small program that can be used to make
2345snapshots of the connections made between JACK and/or ALSA clients. Because
2346JACK can provide both audio and MIDI support to programs, aj-snapshot can
2347store both types of connections for JACK. ALSA, on the other hand, only
2348provides routing facilities for MIDI clients. Aj-snapshot is meant to be used
2349from the command line.")
2350 (license license:gpl3+)))
2351
a763ce7d
RW
2352(define-public qtractor
2353 (package
2354 (name "qtractor")
95bf4508 2355 (version "0.9.6")
a763ce7d
RW
2356 (source (origin
2357 (method url-fetch)
2358 (uri (string-append "http://downloads.sourceforge.net/qtractor/"
2359 "qtractor-" version ".tar.gz"))
2360 (sha256
2361 (base32
95bf4508 2362 "06sa4wl8zr0k8dnjiil0gjwnhrkq95h50xv56ih1y8jgyzxchaxp"))))
a763ce7d 2363 (build-system gnu-build-system)
42639cc9 2364 (arguments
d56eee86 2365 `(#:tests? #f)) ; no "check" target
a763ce7d 2366 (inputs
523544d3
RW
2367 `(("qt" ,qtbase)
2368 ("qtx11extras" ,qtx11extras)
a763ce7d
RW
2369 ("alsa-lib" ,alsa-lib)
2370 ("jack" ,jack-1)
2371 ("libsndfile" ,libsndfile)
2372 ("ladspa" ,ladspa)
2373 ("lv2" ,lv2)
2374 ("lilv" ,lilv)
2375 ("suil" ,suil)
2376 ("libsamplerate" ,libsamplerate)
2377 ("libvorbis" ,libvorbis)
2378 ("libmad" ,libmad)
2379 ("rubberband" ,rubberband)
2380 ("liblo" ,liblo)
2381 ("zlib" ,zlib)))
2382 (native-inputs
523544d3
RW
2383 `(("pkg-config" ,pkg-config)
2384 ("qttools" ,qttools)))
8071bbbc 2385 (home-page "http://qtractor.org/")
a763ce7d
RW
2386 (synopsis "Audio/MIDI multi-track sequencer")
2387 (description
2388 "Qtractor is an Audio/MIDI multi-track sequencer application. It uses
2389JACK for audio and ALSA sequencer for MIDI as multimedia infrastructures and
2390follows a traditional multi-track tape recorder control paradigm.")
2391 (license license:gpl2+)))
aa0edd3f 2392
849c3d03 2393(define-public ams-lv2
e029d90f
BH
2394 ;; Version 1.2.1 built with Python 3.7 raises an error in the waf-script.
2395 ;; Therefore, we take two more commmits than 1.2.1 that introduce an updated
2396 ;; waf-script and fix one error.
2397 (let ((commit "377d166db54a787b48979171c5652d2eb4f1bbb5")
2398 (revision "1"))
2399 (package
2400 (name "ams-lv2")
2401 (version (git-version "1.2.1" revision commit))
2402 (source
2403 (origin
2404 (method git-fetch)
2405 (uri (git-reference
2406 (url "https://github.com/blablack/ams-lv2.git")
2407 (commit commit)))
2408 (file-name (git-file-name name version))
2409 (sha256
2410 (base32
2411 "1ndgxcxjxwidg7436k0nb5clxkyi878k1j999sbbd1gk2fm0kcqm"))))
2412 (build-system waf-build-system)
2413 (arguments
2414 `(#:phases
2415 (modify-phases %standard-phases
2416 (add-after 'unpack 'remove-sse-flags
2417 (lambda* (#:key system #:allow-other-keys)
6cbb2c87
BH
2418 (unless (or (string-prefix? "x86_64" system)
2419 (string-prefix? "i686" system))
e029d90f 2420 (substitute* "wscript"
6cbb2c87
BH
2421 (("'-msse', '-mfpmath=sse', ") "")))
2422 #t)))
e029d90f
BH
2423 #:tests? #f)) ; no tests
2424 (inputs
2425 `(("lv2" ,lv2)
2426 ("lvtk" ,lvtk)
2427 ("gtkmm" ,gtkmm-2)
2428 ("gtk" ,gtk+-2)
2429 ("cairo" ,cairo)
2430 ("fftw" ,fftw)))
2431 (native-inputs
2432 `(("pkg-config" ,pkg-config)))
2433 (home-page "https://objectivewave.wordpress.com/ams-lv2/")
2434 (synopsis "Port of Alsa Modular Synth internal modules into LV2")
2435 (description "This set of LV2 plugins is a port of the internal modules
849c3d03
RW
2436found in Alsa Modular Synth. These plugins are used to create modular
2437synthesizers and contain: VCO, VCF, VCA, LFO, slew limiter, envelopes, sample
2438and hold, etc.")
e029d90f 2439 (license license:gpl2))))
849c3d03 2440
aed023ff
RW
2441(define-public gxtuner
2442 (package
2443 (name "gxtuner")
f5e0ff0f 2444 (version "2.4")
aed023ff 2445 (source (origin
bed4eb37
RW
2446 (method git-fetch)
2447 (uri (git-reference
2448 (url "https://github.com/brummer10/gxtuner.git")
2449 (commit (string-append "v" version))))
2450 (file-name (git-file-name name version))
aed023ff
RW
2451 (sha256
2452 (base32
bed4eb37 2453 "1fxd2akan2njlr7fpkh84830783qhh1gg7yakswqk5dd466dcn96"))))
aed023ff
RW
2454 (build-system gnu-build-system)
2455 (arguments
2456 `(#:make-flags
2457 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
2458 (string-append "INCLUDE_L_DIR="
2459 (assoc-ref %build-inputs "zita-resampler")
2460 "/include/"))
2461 #:phases
2462 (modify-phases %standard-phases
2463 (delete 'configure))))
2464 (inputs
f5e0ff0f 2465 `(("gtk+" ,gtk+)
aed023ff
RW
2466 ("jack" ,jack-1)
2467 ("fftwf" ,fftwf)
2468 ("cairo" ,cairo)
2469 ("zita-resampler" ,zita-resampler)))
2470 (native-inputs
2471 `(("pkg-config" ,pkg-config)))
2472 (home-page "https://github.com/brummer10/gxtuner")
2473 (synopsis "Guitar tuner")
2474 (description "GXtuner is a simple guitar tuner for JACK with an
2475analogue-like user interface.")
2476 (license license:gpl2+)))
2477
c2c9e748 2478(define-public mod-host
9f1ac4fa 2479 ;; The last release was in 2014 but since then hundreds of commits have
c2c9e748 2480 ;; been made.
9f1ac4fa
RW
2481 (let ((commit "1726ad06b11323da7e1aaed690ff8aef91f702b5")
2482 (revision "3"))
c2c9e748
RW
2483 (package
2484 (name "mod-host")
2485 (version (string-append "0.10.6-" revision "." (string-take commit 9)))
2486 (source (origin
2487 (method git-fetch)
2488 (uri (git-reference
2489 (url "https://github.com/moddevices/mod-host")
2490 (commit commit)))
2491 (sha256
2492 (base32
9f1ac4fa 2493 "1nrd37c35w6z6ldczgrwmmd9hx1n3zyvcjcgb3mi4cygqdanvspv"))
c2c9e748
RW
2494 (file-name (string-append name "-" version "-checkout"))))
2495 (build-system gnu-build-system)
2496 (arguments
2497 `(#:tests? #f ; no tests included
2498 #:make-flags
2499 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
2500 "CC=gcc")
2501 #:phases
2502 (modify-phases %standard-phases
2503 (delete 'configure)
2504 (add-after 'unpack 'fix-jack-installation-directory
2505 (lambda _
2506 ;; Do not attempt to install files to output of "jack" package.
2507 (substitute* "Makefile"
2508 (("\\$\\(shell pkg-config --variable=libdir jack\\)")
2509 "lib"))
2510 #t)))))
2511 (inputs
2512 `(("lilv" ,lilv)
c96cb01a
DC
2513 ("fftw" ,fftw)
2514 ("fftwf" ,fftwf)
c2c9e748
RW
2515 ("lv2" ,lv2)
2516 ("jack" ,jack-1)
2517 ("readline" ,readline)))
2518 (native-inputs
2519 `(("pkg-config" ,pkg-config)
2520 ("python" ,python-2)))
2521 (home-page "https://github.com/moddevices/mod-host")
2522 (synopsis "LV2 host for Jack controllable via socket or command line")
2523 (description "mod-host is an LV2 plugin host for JACK, controllable via
2524socket or command line.")
2525 (license license:gpl3+))))
2526
19d93ef5
SR
2527(define-public curseradio
2528 (let ((commit "1bd4bd0faeec675e0647bac9a100b526cba19f8d")
2529 (revision "1"))
2530 (package
2531 (name "curseradio")
2532 (version (git-version "0" revision commit))
2533 (source (origin
2534 (method git-fetch)
2535 (uri (git-reference
2536 (url "https://github.com/chronitis/curseradio.git")
2537 (commit commit)))
2538 (file-name (git-file-name name version))
2539 (sha256
2540 (base32
2541 "11bf0jnj8h2fxhpdp498189r4s6b47vy4wripv0z4nx7lxajl88i"))))
2542 (build-system python-build-system)
2543 (propagated-inputs
2544 `(("python-lxml" ,python-lxml)
2545 ("python-requests" ,python-requests)
2546 ("python-pyxdg" ,python-pyxdg)
2547 ("mpv" ,mpv)))
2548 (home-page "https://github.com/chronitis/curseradio")
2549 (synopsis "Command-line Internet radio player")
2550 (description "Curseradio is a Curses-based radio player that uses a
2551tune-in sender list from @url{http://opml.radiotime.com}.")
2552 (license license:expat))))
2553
aa0edd3f
AM
2554(define-public pianobar
2555 (package
2556 (name "pianobar")
3999b664 2557 (version "2016.06.02")
aa0edd3f 2558 (source (origin
1410e178
RW
2559 (method git-fetch)
2560 (uri (git-reference
2561 (url "https://github.com/PromyLOPh/pianobar.git")
2562 (commit version)))
2563 (file-name (git-file-name name version))
aa0edd3f
AM
2564 (sha256
2565 (base32
1410e178 2566 "058fbdxp7n35hxwy3b8slfy4pb4n63cb173vfmywqa06wh1dv6f6"))))
aa0edd3f
AM
2567 (build-system gnu-build-system)
2568 (arguments
2569 `(#:tests? #f ; no tests
2570 #:make-flags (list "CC=gcc" "CFLAGS=-std=c99"
2571 (string-append "PREFIX=" %output))
2572 #:phases (modify-phases %standard-phases
2573 (delete 'configure))))
2574 (inputs
2575 `(("ao" ,ao)
2576 ("curl" ,curl)
2577 ("libgcrypt" ,libgcrypt)
2578 ("json-c" ,json-c)
bb5c508c 2579 ("ffmpeg" ,ffmpeg-3.4)))
aa0edd3f
AM
2580 (native-inputs
2581 `(("pkg-config" ,pkg-config)))
2582 (home-page "http://6xq.net/projects/pianobar/")
2583 (synopsis "Console-based pandora.com player")
2584 (description "pianobar is a console-based music player for the
2585personalized online radio pandora.com. It has configurable keys for playing
2586and managing stations, can be controlled remotely via fifo, and can run
2587event-based scripts for scrobbling, notifications, etc.")
2588 (license license:expat)))
3f7a182d 2589
1deab8cb
CB
2590(define-public picard
2591 (package
2592 (name "picard")
b421e915 2593 (version "2.1.3")
1deab8cb
CB
2594 (source (origin
2595 (method url-fetch)
2596 (uri (string-append
2597 "https://musicbrainz.osuosl.org/pub/musicbrainz/"
2598 "picard/picard-" version ".tar.gz"))
2599 (sha256
2600 (base32
b421e915 2601 "19w5k3bf4886gdycxjds9nkjvir0gwy2r5cqkz0lbls4ikk4y14f"))))
1deab8cb
CB
2602 (build-system python-build-system)
2603 (arguments
251448f7
TGR
2604 '(#:use-setuptools? #f
2605 #:configure-flags
e28b0798
TGR
2606 (list "--root=/"
2607 ;; Don't phone home or show ‘Check for Update…’ in the Help menu.
2608 "--disable-autoupdate")
251448f7 2609 #:phases
1deab8cb
CB
2610 (modify-phases %standard-phases
2611 (add-after 'unpack 'patch-source
2612 (lambda* (#:key inputs #:allow-other-keys)
2613 (substitute* "picard/const/__init__.py"
2614 (("pyfpcalc")
2615 (string-append
2616 "pyfpcalc', '"
e247244e
TGR
2617 (assoc-ref inputs "chromaprint") "/bin/fpcalc")))
2618 #t)))))
1deab8cb
CB
2619 (native-inputs
2620 `(("gettext" ,gettext-minimal)))
2621 (inputs
2622 `(("chromaprint" ,chromaprint)
7d9fa5f3 2623 ("python-discid" ,python-discid)
1deab8cb
CB
2624 ("python-pyqt" ,python-pyqt)
2625 ("python-mutagen" ,python-mutagen)))
2626 (home-page "https://picard.musicbrainz.org/")
2627 (synopsis "Graphical music tagging application")
2628 (description
2629 "MusicBrainz Picard is a music tagging application, supporting multiple
2630formats, looking up tracks through metadata and audio fingerprints.")
2631 (license license:gpl2+)))
2632
3f7a182d
LF
2633(define-public python-mutagen
2634 (package
2635 (name "python-mutagen")
e39aae4f 2636 (version "1.38")
3f7a182d
LF
2637 (source (origin
2638 (method url-fetch)
2639 (uri (pypi-uri "mutagen" version))
2640 (sha256
2641 (base32
e39aae4f 2642 "0rl7sxn1rcjl48fwga3dqf9f6pzspsny4ngxyf6pp337mrq0z693"))))
3f7a182d 2643 (build-system python-build-system)
4228a79e
LF
2644 (native-inputs
2645 `(("python-pytest" ,python-pytest)))
3f7a182d
LF
2646 (home-page "https://bitbucket.org/lazka/mutagen")
2647 (synopsis "Read and write audio tags")
2648 (description "Mutagen is a Python module to handle audio metadata. It
2649supports ASF, FLAC, M4A, Monkey’s Audio, MP3, Musepack, Ogg FLAC, Ogg Speex, Ogg
2650Theora, Ogg Vorbis, True Audio, WavPack and OptimFROG audio files. All versions
2651of ID3v2 are supported, and all standard ID3v2.4 frames are parsed. It can read
2652Xing headers to accurately calculate the bitrate and length of MP3s. ID3 and
2653APEv2 tags can be edited regardless of audio format. It can also manipulate Ogg
2654streams on an individual packet/page level.")
2655 (license license:gpl2))) ; "later version" never mentioned
2656
2657(define-public python2-mutagen
2658 (package-with-python2 python-mutagen))
8975de88
LF
2659
2660(define-public python-musicbrainzngs
2661 (package
2662 (name "python-musicbrainzngs")
daedf34d 2663 (version "0.6")
8975de88
LF
2664 (source (origin
2665 (method url-fetch)
2666 (uri (pypi-uri "musicbrainzngs" version))
2667 (sha256
2668 (base32
daedf34d 2669 "1dddarpjawryll2wss65xq3v9q8ln8dan7984l5dxzqx88d2dvr8"))))
8975de88 2670 (build-system python-build-system)
daedf34d
LF
2671 (arguments
2672 '(;; The tests fail suffer from race conditions:
2673 ;; https://github.com/alastair/python-musicbrainzngs/issues/211
2674 #:tests? #f))
8975de88
LF
2675 (home-page "https://python-musicbrainzngs.readthedocs.org/")
2676 (synopsis "Python bindings for MusicBrainz NGS webservice")
2677 (description "Musicbrainzngs implements Python bindings of the MusicBrainz
2678web service. This library can be used to retrieve music metadata from the
2679MusicBrainz database.")
2680 ;; 'musicbrainzngs/compat.py' is ISC licensed.
2681 (license (list license:bsd-2 license:isc))))
2682
2683(define-public python2-musicbrainzngs
2684 (package-with-python2 python-musicbrainzngs))
e8fee648 2685
07c82daa
GH
2686(define-public python-isrcsubmit
2687 (package
2688 (name "python-isrcsubmit")
2689 (version "2.0.1")
2690 (source
2691 (origin
2692 (method url-fetch)
2693 (uri (pypi-uri "isrcsubmit" version))
2694 (sha256
2695 (base32
2696 "0jh4cni8qhri6dh83cmp0i0m0384vv0vznlygv49wj9xzh1d99qv"))))
2697 (build-system python-build-system)
2698 (propagated-inputs
2699 `(("python-discid" ,python-discid)
2700 ("python-musicbrainzngs" ,python-musicbrainzngs)))
2701 (home-page "https://github.com/JonnyJD/musicbrainz-isrcsubmit")
2702 (synopsis "Submit ISRCs from CDs to MusicBrainz")
2703 (description "@code{isrcsubmit} is a tool to extract @dfn{International
2704Standard Recording Code} (ISRCs) from audio CDs and submit them to
2705@url{https://musicbrainz.org/, MusicBrainz}.")
2706 (license license:gpl3+)))
2707
a2eab422 2708(define-public python2-pyechonest
e8fee648 2709 (package
a2eab422 2710 (name "python2-pyechonest")
e8fee648
LF
2711 (version "9.0.0")
2712 (source (origin
2713 (method url-fetch)
2714 (uri (pypi-uri "pyechonest" version))
2715 (sha256
2716 (base32
2717 "1584nira3rkiman9dm81kdshihmkj21s8navndz2l8spnjwb790x"))))
2718 (build-system python-build-system)
a2eab422
LF
2719 (arguments
2720 `(;; Python 3 is not supported:
2721 ;; https://github.com/echonest/pyechonest/issues/42
2722 #:python ,python-2))
e8fee648
LF
2723 (home-page "https://github.com/echonest/pyechonest")
2724 (synopsis "Python interface to The Echo Nest APIs")
d3e3468f
LF
2725 (description "Pyechonest is a Python library for the Echo Nest API. With
2726Pyechonest you have Python access to the entire set of API methods including:
e8fee648
LF
2727
2728@enumerate
2729@item artist - search for artists by name, description, or attribute, and get
2730back detailed information about any artist including audio, similar artists,
2731blogs, familiarity, hotttnesss, news, reviews, urls and video.
2732@item song - search songs by artist, title, description, or attribute (tempo,
2733duration, etc) and get detailed information back about each song, such as
2734hotttnesss, audio_summary, or tracks.
2735@item track - upload a track to the Echo Nest and receive summary information
2736about the track including key, duration, mode, tempo, time signature along with
2737detailed track info including timbre, pitch, rhythm and loudness information.
2738@end enumerate\n")
a2eab422 2739 (license license:bsd-3)))
acd7351f
LF
2740
2741(define-public python-pylast
2742 (package
2743 (name "python-pylast")
653f2b92 2744 (version "2.0.0")
acd7351f
LF
2745 (source (origin
2746 (method url-fetch)
2747 (uri (pypi-uri "pylast" version))
2748 (sha256
2749 (base32
653f2b92 2750 "0r9h7g8i8l2mgqjwkda3v6prfbkb2im5kap1az9ppmhjm9i4jkcf"))))
acd7351f 2751 (build-system python-build-system)
653f2b92
RW
2752 ;; Tests require network access. See
2753 ;; https://github.com/pylast/pylast/issues/105
2754 (arguments '(#:tests? #f))
acd7351f
LF
2755 (native-inputs
2756 `(("python-coverage" ,python-coverage)
653f2b92 2757 ("python-pycodestyle" ,python-pycodestyle)
acd7351f
LF
2758 ("python-mock" ,python-mock)
2759 ("python-pep8" ,python-pep8)
2760 ("python-pytest" ,python-pytest)
653f2b92 2761 ("python-flaky" ,python-flaky)
acd7351f
LF
2762 ("python-pyflakes" ,python-pyflakes)
2763 ("python-pyyaml" ,python-pyyaml)))
2764 (propagated-inputs
2765 `(("python-six" ,python-six)))
2766 (home-page "https://github.com/pylast/pylast")
2767 (synopsis "Python interface to Last.fm and Libre.fm")
2768 (description "A Python interface to Last.fm and other API-compatible
2769websites such as Libre.fm.")
5c31f4aa 2770 (license license:asl2.0)))
acd7351f
LF
2771
2772(define-public python2-pylast
5c31f4aa 2773 (package-with-python2 python-pylast))
3bf429af 2774
b0dea60c
SR
2775(define-public instantmusic
2776 (let ((commit "300891d09c703525215fa5a116b9294af1c923c8")
2777 (revision "1"))
2778 (package
2779 (name "instantmusic")
2780 (version (git-version "1.0" revision commit))
2781 (source (origin
2782 (method git-fetch)
2783 (uri (git-reference
2784 (url "https://github.com/yask123/Instant-Music-Downloader.git")
2785 (commit commit)))
2786 (file-name (git-file-name name version))
2787 (sha256
2788 (base32
2789 "0j7qivaa04bpdz3anmgci5833dgiyfqqwq9fdrpl9m68b34gl773"))))
2790 (build-system python-build-system)
2791 (propagated-inputs
2792 `(("python-requests" ,python-requests)
c695fb76 2793 ("eyed3" ,eyed3)
b0dea60c
SR
2794 ("python-beautifulsoup4" ,python-beautifulsoup4)
2795 ("youtube-dl" ,youtube-dl)))
2796 (arguments
2797 '(#:modules ((guix build python-build-system)
2798 (guix build utils)
2799 (srfi srfi-26))
2800 #:phases (modify-phases %standard-phases
2801 (add-before 'build 'change-directory
2802 (lambda _
2803 (chdir "instantmusic-0.1") #t))
4b577961 2804 (add-before 'install 'fix-file-permissions
b0dea60c
SR
2805 (lambda _
2806 ;; Fix some read-only files that would cause a build failure
2807 (for-each (cut chmod <> #o644)
2808 (find-files "instantmusic.egg-info"
2809 "PKG-INFO|.*\\.txt"))
2810 #t)))))
2811 (home-page "http://iyask.me/Instant-Music-Downloader/")
2812 (synopsis "Command-line program to download a song from YouTube")
2813 (description "InstantMusic downloads a song from YouTube in MP3 format.
2814Songs can be searched by artist, name or even by a part of the song text.")
2815 (license license:expat))))
2816
3bf429af
LF
2817(define-public beets
2818 (package
2819 (name "beets")
3f3d712c 2820 (version "1.4.9")
3bf429af
LF
2821 (source (origin
2822 (method url-fetch)
23319ed6 2823 (uri (pypi-uri "beets" version))
3bf429af
LF
2824 (sha256
2825 (base32
3f3d712c 2826 "0m40rjimvfgy1dv04p8f8d5dvi2855v4ix99a9xr900cmcn476yj"))))
3bf429af
LF
2827 (build-system python-build-system)
2828 (arguments
0d48ff81 2829 `(#:phases
3bf429af
LF
2830 (modify-phases %standard-phases
2831 (add-after 'unpack 'set-HOME
46fce968
TGR
2832 (lambda _
2833 (setenv "HOME" (string-append (getcwd) "/tmp"))
2834 #t))
36c2c8c8 2835 (replace 'check
46fce968
TGR
2836 (lambda _
2837 (invoke "nosetests" "-v"))))))
3bf429af 2838 (native-inputs
0d48ff81
LF
2839 `(("python-beautifulsoup4" ,python-beautifulsoup4)
2840 ("python-flask" ,python-flask)
2841 ("python-mock" ,python-mock)
2842 ("python-mpd2" ,python-mpd2)
2843 ("python-nose" ,python-nose)
2844 ("python-pathlib" ,python-pathlib)
2845 ("python-pyxdg" ,python-pyxdg)
2846 ("python-pylast" ,python-pylast)
2847 ("python-rarfile" ,python-rarfile)
2848 ("python-responses" ,python-responses)))
3bf429af 2849 ;; TODO: Install optional plugins and dependencies.
b3470031 2850 (inputs
0d48ff81 2851 `(("python-discogs-client" ,python-discogs-client)
0d48ff81
LF
2852 ("python-jellyfish" ,python-jellyfish)
2853 ("python-munkres" ,python-munkres)
2854 ("python-musicbrainzngs" ,python-musicbrainzngs)
2855 ("python-mutagen" ,python-mutagen)
2856 ("python-pyyaml" ,python-pyyaml)
2857 ("python-unidecode" ,python-unidecode)))
d94ec407 2858 (home-page "https://beets.io")
3bf429af
LF
2859 (synopsis "Music organizer")
2860 (description "The purpose of beets is to get your music collection right
2861once and for all. It catalogs your collection, automatically improving its
2862metadata as it goes using the MusicBrainz database. Then it provides a variety
2863of tools for manipulating and accessing your music.")
2864 (license license:expat)))
21d18113 2865
4ee2cce3
JK
2866(define-public beets-bandcamp
2867 (package
2868 (name "beets-bandcamp")
2869 (version "0.1.3")
2870 (source (origin
2871 (method url-fetch)
2872 (uri (pypi-uri "beets-bandcamp" version))
2873 (sha256
2874 (base32
2875 "04awg0zdhhg5h510fc1p3qkvr2l1qm6nf85hlr9z8im8a7xlka0i"))))
2876 (build-system python-build-system)
2877 (arguments '(#:tests? #f)) ; there are no tests
2878 (propagated-inputs
2879 `(("beets" ,beets)
2880 ("python-isodate" ,python-isodate)))
2881 (inputs
2882 `(("python-beautifulsoup4" ,python-beautifulsoup4)
2883 ("python-requests" ,python-requests)
2884 ("python-six" ,python-six)))
2885 (home-page "https://github.com/unrblt/beets-bandcamp")
2886 (synopsis "Bandcamp plugin for beets")
2887 (description
2888 "This plugin for beets automatically obtains tag data from @uref{Bandcamp,
2889https://bandcamp.com/}. It's also capable of getting song lyrics and album art
2890using the beets FetchArt plugin.")
2891 (license license:gpl2)))
2892
21d18113
KY
2893(define-public milkytracker
2894 (package
2895 (name "milkytracker")
b7e2fcf0 2896 (version "1.02.00")
21d18113 2897 (source (origin
caa39e56
RW
2898 (method git-fetch)
2899 (uri (git-reference
2900 (url "https://github.com/milkytracker/MilkyTracker.git")
2901 (commit (string-append "v" version))))
2902 (file-name (git-file-name name version))
21d18113
KY
2903 (sha256
2904 (base32
caa39e56 2905 "05a6d7l98k9i82dwrgi855dnccm3f2lkb144gi244vhk1156n0ca"))
e3b2e943
KK
2906 (modules '((guix build utils)))
2907 ;; Remove non-FSDG compliant sample songs.
2908 (snippet
2909 '(begin
2910 (delete-file-recursively "resources/music")
2911 (substitute* "CMakeLists.txt"
6cbee49d
MW
2912 (("add_subdirectory\\(resources/music\\)") ""))
2913 #t))))
e3b2e943 2914 (build-system cmake-build-system)
21d18113 2915 (arguments
7f2f8345
KK
2916 '(#:tests? #f ; no check target
2917 ;; This flag ensures that MilkyTracker links with the JACK library.
2918 #:configure-flags '("-DCMAKE_CXX_FLAGS=-ljack")))
21d18113
KY
2919 (inputs
2920 `(("alsa-lib" ,alsa-lib)
ba259bad 2921 ("lhasa" ,lhasa)
21d18113 2922 ("jack" ,jack-1)
f1618a0f 2923 ("rtmidi" ,rtmidi)
e3b2e943 2924 ("sdl" ,sdl2)
f1618a0f
KK
2925 ("zlib" ,zlib)
2926 ("zziplib" ,zziplib)))
21d18113
KY
2927 (native-inputs
2928 `(("pkg-config" ,pkg-config)))
2929 (synopsis "Music tracker for working with .MOD/.XM module files")
2930 (description "MilkyTracker is a music application for creating .MOD and .XM
2931module files. It attempts to recreate the module replay and user experience of
2932the popular DOS program Fasttracker II, with special playback modes available
2933for improved Amiga ProTracker 2/3 compatibility.")
1b35fea1 2934 (home-page "http://milkytracker.titandemo.org/")
21d18113
KY
2935 ;; 'src/milkyplay' is under Modified BSD, the rest is under GPL3 or later.
2936 (license (list license:bsd-3 license:gpl3+))))
13416a10 2937
89bcf3fc
KK
2938(define-public schismtracker
2939 (package
2940 (name "schismtracker")
e526db51 2941 (version "20190614")
89bcf3fc 2942 (source (origin
3b9e9415
RW
2943 (method git-fetch)
2944 (uri (git-reference
2945 (url "https://github.com/schismtracker/schismtracker.git")
2946 (commit version)))
2947 (file-name (git-file-name name version))
89bcf3fc
KK
2948 (sha256
2949 (base32
e526db51 2950 "0cg0q5bkn8a06v03vmj69xyhi4xxpl729k4008q4hiakh9gy2x49"))
89bcf3fc
KK
2951 (modules '((guix build utils)))
2952 (snippet
2953 ;; Remove use of __DATE__ and __TIME__ for reproducibility.
6cbee49d
MW
2954 `(begin
2955 (substitute* "schism/version.c"
2956 (("Schism Tracker built %s %s.*$")
2957 (string-append "Schism Tracker version " ,version "\");")))
2958 #t))))
89bcf3fc
KK
2959 (build-system gnu-build-system)
2960 (arguments
2961 `(#:phases
2962 (modify-phases %standard-phases
89bcf3fc
KK
2963 (add-before 'configure 'link-libm
2964 (lambda _ (setenv "LIBS" "-lm") #t)))))
2965 (native-inputs
2966 `(("autoconf" ,autoconf)
2967 ("automake" ,automake)
2968 ("python" ,python)))
2969 (inputs
e526db51 2970 `(("alsa-lib" ,alsa-lib) ; for asound dependency
89bcf3fc
KK
2971 ("libx11" ,libx11)
2972 ("libxext" ,libxext)
2973 ("sdl" ,sdl)))
2974 (home-page "http://schismtracker.org")
2975 (synopsis "Oldschool sample-based music composition tool")
2976 (description
2977 "Schism Tracker is a reimplementation of Impulse Tracker, a program used to
2978create high quality music without the requirements of specialized, expensive
2979equipment, and with a unique \"finger feel\" that is difficult to replicate in
2980part. The player is based on a highly modified version of the ModPlug engine,
2981with a number of bugfixes and changes to improve IT playback.")
2982 (license license:gpl2+)))
2983
5beecc32
RW
2984(define-public sooperlooper
2985 (package
2986 (name "sooperlooper")
2987 (version "1.7.3")
2988 (source (origin
2989 (method url-fetch)
2990 (uri (string-append "http://essej.net/sooperlooper/sooperlooper-"
2991 version ".tar.gz"))
2992 (sha256
2993 (base32
2994 "0n2gdxw1fx8nxxnpzf4sj0kp6k6zi1yq59cbz6qqzcnsnpnvszbs"))
2995 (patches (search-patches "sooperlooper-build-with-wx-30.patch"))))
2996 (build-system gnu-build-system)
2997 (arguments
e6e09dc9 2998 `(#:phases
5beecc32
RW
2999 (modify-phases %standard-phases
3000 (add-after 'unpack 'add-sigc++-includes
3001 (lambda* (#:key inputs #:allow-other-keys)
3002 (let ((sig (assoc-ref inputs "libsigc++"))
3003 (xml (assoc-ref inputs "libxml2"))
3004 (cwd (getcwd)))
3005 (setenv "CPATH"
3006 (string-append sig "/include/sigc++-2.0:"
3007 sig "/lib/sigc++-2.0/include:"
3008 xml "/include/libxml2/:"
3009 cwd "/libs/pbd:"
e6e09dc9
MB
3010 cwd "/libs/midi++:"
3011 (or (getenv "CPATH") ""))))
5beecc32
RW
3012 (substitute* '("src/control_osc.hpp"
3013 "src/gui/app_frame.hpp"
3014 "src/gui/config_panel.hpp"
3015 "src/gui/keys_panel.hpp"
3016 "src/gui/latency_panel.hpp"
3017 "src/gui/main_panel.hpp"
3018 "src/gui/midi_bind_panel.hpp"
3019 "src/gui/prefs_dialog.hpp")
3020 (("sigc\\+\\+/object.h")
3021 "sigc++/sigc++.h"))
3022 (substitute* '("src/engine.cpp"
3023 "src/gui/latency_panel.cpp"
3024 "src/gui/looper_panel.cpp"
3025 "src/gui/main_panel.cpp")
3026 (("(\\(| )bind " _ pre)
3027 (string-append pre "sigc::bind ")))
3028 #t))
3029 (add-after 'unpack 'fix-xpm-warnings
3030 (lambda _
3031 (substitute* (find-files "." "\\.xpm$")
3032 (("static char") "static const char"))
3033 #t)))))
3034 (inputs
3035 `(("jack" ,jack-1)
3036 ("alsa-lib" ,alsa-lib)
3037 ("wxwidgets" ,wxwidgets-gtk2)
3038 ("libsndfile" ,libsndfile)
3039 ("libsamplerate" ,libsamplerate)
3040 ("liblo" ,liblo)
3041 ("rubberband" ,rubberband)
3042 ("libxml2" ,libxml2)
3043 ("libsigc++" ,libsigc++)
3044 ("ncurses" ,ncurses)))
3045 (native-inputs
3046 `(("pkg-config" ,pkg-config)))
3047 (home-page "http://essej.net/sooperlooper/")
3048 (synopsis "Live looping sampler")
3049 (description
3050 "SooperLooper is a live looping sampler capable of immediate loop
3051recording, overdubbing, multiplying, reversing and more. It allows for
3052multiple simultaneous multi-channel loops limited only by your computer's
3053available memory.")
3054 (license license:gpl2+)))
3055
13416a10
KY
3056(define-public moc
3057 (package
3058 (name "moc")
2fbc004f 3059 (version "2.5.2")
13416a10
KY
3060 (source (origin
3061 (method url-fetch)
3062 (uri (string-append "http://ftp.daper.net/pub/soft/"
3063 name "/stable/"
3064 name "-" version ".tar.bz2"))
3065 (sha256
3066 (base32
2784b35f 3067 "026v977kwb0wbmlmf6mnik328plxg8wykfx9ryvqhirac0aq39pk"))))
13416a10
KY
3068 (build-system gnu-build-system)
3069 (inputs
3070 `(("alsa-lib" ,alsa-lib)
3071 ("curl" ,curl)
3072 ("faad2" ,faad2)
bb5c508c 3073 ("ffmpeg" ,ffmpeg-3.4)
13416a10
KY
3074 ("file" ,file)
3075 ("jack" ,jack-1)
3076 ("libid3tag" ,libid3tag)
3077 ("libltdl" ,libltdl)
3078 ("libmodplug" ,libmodplug)
3079 ("libmpcdec" ,libmpcdec)
3080 ("libmad" ,libmad)
6beaa5a0
MM
3081 ("libogg" ,libogg)
3082 ("libvorbis" ,libvorbis)
13416a10
KY
3083 ("ncurses" ,ncurses)
3084 ("openssl" ,openssl)
3085 ("sasl" ,cyrus-sasl)
3086 ("speex" ,speex)
3087 ("taglib" ,taglib)
3088 ("wavpack" ,wavpack)
3089 ("zlib" ,zlib)))
3090 (native-inputs
3091 `(("pkg-config" ,pkg-config)))
3092 (synopsis "Console audio player designed to be powerful and easy to use")
3093 (description
3094 "Music on Console is a console audio player that supports many file
3095formats, including most audio formats recognized by FFMpeg.")
3096 (home-page "http://moc.daper.net")
3097 (license license:gpl2+)))
6d3ef286
JF
3098
3099(define-public midicsv
3100 (package
3101 (name "midicsv")
3102 (version "1.1")
3103 (source (origin
3104 (method url-fetch)
3105 (uri (string-append "http://www.fourmilab.ch/webtools/midicsv/"
3106 name "-" version ".tar.gz"))
3107 (sha256
3108 (base32
3109 "1vvhk2nf9ilfw0wchmxy8l13hbw9cnpz079nsx5srsy4nnd78nkw"))))
3110 (build-system gnu-build-system)
3111 (arguments
3112 `(#:phases (modify-phases %standard-phases (delete 'configure))
3113 #:make-flags (list "CC=gcc" (string-append "INSTALL_DEST=" %output))))
3114 (synopsis "Convert MIDI files to and from CSV")
3115 (description
3116 "Midicsv reads a standard MIDI file and decodes it into a comma-separated
3117value file (CSV), which preserves all the information in the MIDI file. The
3118ASCII CSV file may be loaded into a spreadsheet or database application, or
3119processed by a program to transform the MIDI data (for example, to key
3120transpose a composition or extract a track from a multi-track sequence). A
3121CSV file in the format created by midicsv may be converted back into a
3122standard MIDI file with the csvmidi program.")
3123 (home-page "http://www.fourmilab.ch/webtools/midicsv/")
3124 (license license:public-domain)))
49604680
RW
3125
3126(define-public gx-guvnor-lv2
35f909d4
RW
3127 (package
3128 (name "gx-guvnor-lv2")
3129 (version "0.1")
3130 (source (origin
6ac8c78c
RW
3131 (method git-fetch)
3132 (uri (git-reference
3133 (url "https://github.com/brummer10/GxGuvnor.lv2.git")
3134 (commit (string-append "v" version))))
3135 (file-name (string-append name "-" version "-checkout"))
35f909d4
RW
3136 (sha256
3137 (base32
6ac8c78c 3138 "1wa5070j40p7f0b3kr259pzm99xb6cf2badr2capayjvgayd6gnm"))))
35f909d4
RW
3139 (build-system gnu-build-system)
3140 (arguments
3141 `(;; The check target is used only to output a warning.
3142 #:tests? #f
3143 #:make-flags
3144 (list (string-append "DESTDIR=" (assoc-ref %outputs "out")))
3145 #:phases
3146 (modify-phases %standard-phases
3147 (replace 'configure
3148 (lambda _
3149 (substitute* "Makefile"
6ac8c78c
RW
3150 (("INSTALL_DIR = .*") "INSTALL_DIR=/lib/lv2\n")
3151 (("install : all") "install :"))
35f909d4
RW
3152 #t)))))
3153 (inputs
3154 `(("lv2" ,lv2)))
3155 (home-page "https://github.com/brummer10/GxGuvnor.lv2")
3156 (synopsis "Overdrive/distortion pedal simulation")
3157 (description "This package provides the LV2 plugin \"GxGuvnor\", a
49604680 3158simulation of an overdrive or distortion pedal for guitars.")
35f909d4 3159 ;; The LICENSE file says GPLv3 but the license headers in the files say
4b359532
RW
3160 ;; GPLv2 or later. The whole project is released under GPLv3 or later
3161 ;; according to https://github.com/brummer10/GxGuvnor.lv2/issues/1
3162 (license license:gpl3+)))
85ae347e
RW
3163
3164(define-public gx-vbass-preamp-lv2
1b74b126
RW
3165 (let ((commit "eb999b0ca0ef4da40a59e458a9ab6e7042b96c99")
3166 (revision "2"))
85ae347e
RW
3167 (package (inherit gx-guvnor-lv2)
3168 (name "gx-vbass-preamp-lv2")
3169 (version (string-append "0-" revision "." (string-take commit 9)))
3170 (source (origin
3171 (method git-fetch)
3172 (uri (git-reference
3173 (url "https://github.com/brummer10/GxVBassPreAmp.lv2")
3174 (commit commit)))
3175 (sha256
3176 (base32
1b74b126 3177 "0firap073ldw4nrykkd7jvyyj0jbl1nslxyzjj4kswazp99x7d9h"))
85ae347e 3178 (file-name (string-append name "-" version "-checkout"))))
1b74b126
RW
3179 (inputs
3180 `(("lv2" ,lv2)
3181 ("gtk+" ,gtk+-2)))
3182 (native-inputs
3183 `(("pkg-config" ,pkg-config)))
85ae347e
RW
3184 (home-page "https://github.com/brummer10/GxVBassPreAmp.lv2")
3185 (synopsis "Simulation of the Vox Venue Bass 100 Pre Amp Section")
3186 (description "This package provides the LV2 plugin \"GxVBassPreAmp\", a
3187pre-amplifier simulation modelled after the 1984 Vox Venue Bass 100 Pre Amp
3188Section."))))
cdc7a021
RW
3189
3190(define-public gx-overdriver-lv2
3191 (let ((commit "ed71801987449414bf3adaa0dbfac68e8775f1ce")
3192 (revision "1"))
1b74b126 3193 (package (inherit gx-guvnor-lv2)
cdc7a021
RW
3194 (name "gx-overdriver-lv2")
3195 (version (string-append "0-" revision "." (string-take commit 9)))
3196 (source (origin
3197 (method git-fetch)
3198 (uri (git-reference
3199 (url "https://github.com/brummer10/GxOverDriver.lv2")
3200 (commit commit)))
3201 (sha256
3202 (base32
3203 "13j614jh525fbkby79nnzwj0z1ac0c9wclyn5pfqvkmx6a7j24r8"))
3204 (file-name (string-append name "-" version "-checkout"))))
3205 (home-page "https://github.com/brummer10/GxOverDriver.lv2")
3206 (synopsis "Overdrive effect with level and tone control")
3207 (description "This package provides the LV2 plugin \"GxOverDriver\", an
3208overdrive effect."))))
4d95cd30
RW
3209
3210(define-public gx-tone-mender-lv2
3211 (let ((commit "b6780b4a3e4782b3ed0e5882d6788f178aed138f")
3212 (revision "1"))
1b74b126 3213 (package (inherit gx-guvnor-lv2)
4d95cd30
RW
3214 (name "gx-tone-mender-lv2")
3215 (version (string-append "0-" revision "." (string-take commit 9)))
3216 (source (origin
3217 (method git-fetch)
3218 (uri (git-reference
3219 (url "https://github.com/brummer10/GxToneMender.lv2")
3220 (commit commit)))
3221 (sha256
3222 (base32
3223 "07qdcfsvv2vdnfnjh91pfgvjdcs5y91nvwfm8c0z8fp6b4bk7a9q"))
3224 (file-name (string-append name "-" version "-checkout"))))
3225 (home-page "https://github.com/brummer10/GxToneMender.lv2")
3226 (synopsis "Clean boost with a 3-knob tonestack")
3227 (description "This package provides the LV2 plugin \"GxToneMender\", a
3228clean boost effect with a 3-knob tonestack."))))
4d4bfdc2
RW
3229
3230(define-public gx-push-pull-lv2
3231 (let ((commit "7f76ae2068498643ac8671ee0930b13ee3fd8eb5")
3232 (revision "1"))
1b74b126 3233 (package (inherit gx-guvnor-lv2)
4d4bfdc2
RW
3234 (name "gx-push-pull-lv2")
3235 (version (string-append "0-" revision "." (string-take commit 9)))
3236 (source (origin
3237 (method git-fetch)
3238 (uri (git-reference
3239 (url "https://github.com/brummer10/GxPushPull.lv2")
3240 (commit commit)))
3241 (sha256
3242 (base32
3243 "12f5hwck2irph0gjbj8xy8jqcqdwb8l1hlwf29k0clz52h1jhb5q"))
3244 (file-name (string-append name "-" version "-checkout"))))
3245 (home-page "https://github.com/brummer10/GxPushPull.lv2")
3246 (synopsis "Octave up push pull transistor fuzz simulation")
3247 (description "This package provides the LV2 plugin \"GxPushPull\", a
3248simulation of a push pull transistor fuzz effect with added high octave."))))
3eb1a964
RW
3249
3250(define-public gx-suppa-tone-bender-lv2
f959991d
RW
3251 (package (inherit gx-guvnor-lv2)
3252 (name "gx-suppa-tone-bender-lv2")
3253 (version "0.1")
3254 (source (origin
48b95a19
RW
3255 (method git-fetch)
3256 (uri (git-reference
3257 (url "https://github.com/brummer10/GxSuppaToneBender.lv2.git")
3258 (commit (string-append "v" version))))
3259 (file-name (string-append name "-" version "-checkout"))
f959991d
RW
3260 (sha256
3261 (base32
48b95a19 3262 "01x6bjmllkmvxfzc5xwdix7w021j26js71awv728cxsmkxgqw0zy"))))
f959991d
RW
3263 (home-page "https://github.com/brummer10/GxSuppaToneBender.lv2")
3264 (synopsis "Simulation of the Vox Suppa Tone Bender pedal")
3265 (description "This package provides the LV2 plugin
3eb1a964 3266\"GxSuppaToneBender\", a simulation modelled after the Vox Suppa Tone Bender
f959991d 3267pedal.")))
664f677f
RW
3268
3269(define-public gx-saturator-lv2
d9f65bd3
RW
3270 (let ((commit "605330f432c94b6eb3f8203cbe472befae959532")
3271 (revision "3"))
ad67ca3d 3272 (package (inherit gx-vbass-preamp-lv2)
664f677f
RW
3273 (name "gx-saturator-lv2")
3274 (version (string-append "0-" revision "." (string-take commit 9)))
3275 (source (origin
3276 (method git-fetch)
3277 (uri (git-reference
3278 (url "https://github.com/brummer10/GxSaturator.lv2")
3279 (commit commit)))
3280 (sha256
3281 (base32
d9f65bd3 3282 "1w4nvh0rmxrv3s3hmh4fs74f3hc0jn31v00j769j7v68mqr7kawy"))
664f677f
RW
3283 (file-name (string-append name "-" version "-checkout"))))
3284 (home-page "https://github.com/brummer10/GxSaturator.lv2")
3285 (synopsis "Saturation effect")
3286 (description "This package provides the LV2 plugin \"GxSaturator\", a
3287saturation effect."))))
89412238
RW
3288
3289(define-public gx-hyperion-lv2
4396e9b5
RW
3290 (package (inherit gx-guvnor-lv2)
3291 (name "gx-hyperion-lv2")
3292 (version "0.1")
3293 (source (origin
37519239
RW
3294 (method git-fetch)
3295 (uri (git-reference
3296 (url "https://github.com/brummer10/GxHyperion.lv2.git")
3297 (commit (string-append "v" version))))
3298 (file-name (string-append name "-" version "-checkout"))
4396e9b5
RW
3299 (sha256
3300 (base32
37519239 3301 "1vx79s6s9if117y2g0ppdja2sv2wcny6xcfl3j1z4cipahnildxf"))))
4396e9b5
RW
3302 (home-page "https://github.com/brummer10/GxHyperion.lv2")
3303 (synopsis "Simulation of the Hyperion Fuzz pedal")
3304 (description "This package provides the LV2 plugin \"GxHyperion\", a
3305simulation of the Hyperion Fuzz pedal.")))
32536f00
RW
3306
3307(define-public gx-voodoo-fuzz-lv2
cf44ebeb
RW
3308 (package (inherit gx-guvnor-lv2)
3309 (name "gx-voodoo-fuzz-lv2")
3310 (version "0.1")
3311 (source (origin
d42c6613
RW
3312 (method git-fetch)
3313 (uri (git-reference
3314 (url "https://github.com/brummer10/GxVoodoFuzz.lv2.git")
3315 (commit (string-append "v" version))))
3316 (file-name (string-append name "-" version "-checkout"))
cf44ebeb
RW
3317 (sha256
3318 (base32
d42c6613 3319 "1v0scphivri1fk4hl20j13f92i48mnx1zsil4hgnadsmm4nsfw43"))))
cf44ebeb
RW
3320 (home-page "https://github.com/brummer10/GxVoodoFuzz.lv2")
3321 (synopsis "Fuzz effect modelled after the Voodoo Lab SuperFuzz")
3322 (description "This package provides the LV2 plugin \"GxVoodooFuzz\", a
32536f00
RW
3323simulation modelled after the Voodoo Lab SuperFuzz pedal. It's basically a
3324Bosstone circuit, followed by the tone control of the FoxToneMachine in
cf44ebeb 3325parallel with a DarkBooster, followed by a volume control.")))
29f63222
RW
3326
3327(define-public gx-super-fuzz-lv2
34a3ecfe
RW
3328 (package (inherit gx-guvnor-lv2)
3329 (name "gx-super-fuzz-lv2")
3330 (version "0.1")
3331 (source (origin
5057535f
RW
3332 (method git-fetch)
3333 (uri (git-reference
3334 (url "https://github.com/brummer10/GxSuperFuzz.lv2.git")
3335 (commit (string-append "v" version))))
3336 (file-name (string-append name "-" version "-checkout"))
34a3ecfe
RW
3337 (sha256
3338 (base32
5057535f 3339 "1jlljd9hlgfflbiizq47lv1xbbgjyx3v835mf24zmh1q5zsw4np4"))))
34a3ecfe
RW
3340 (home-page "https://github.com/brummer10/GxSuperFuzz.lv2")
3341 (synopsis "Fuzz effect modelled after the UniVox SuperFuzz")
a6f39d7c 3342 (description "This package provides the LV2 plugin \"GxSuperFuzz\", an
29f63222 3343analog simulation of the UniVox SuperFuzz pedal. In this simulation the trim
d1e4ad1b 3344pot, which is usually in the housing, is exposed as a control parameter. It
34a3ecfe 3345adjusts the amount of harmonics.")))
40bffdfa
RW
3346
3347(define-public gx-vintage-fuzz-master-lv2
38050923
RW
3348 (package (inherit gx-guvnor-lv2)
3349 (name "gx-vintage-fuzz-master-lv2")
3350 (version "0.1")
3351 (source (origin
0febd673
RW
3352 (method git-fetch)
3353 (uri (git-reference
3354 (url "https://github.com/brummer10/GxVintageFuzzMaster.lv2.git")
3355 (commit (string-append "v" version))))
3356 (file-name (string-append name "-" version "-checkout"))
38050923
RW
3357 (sha256
3358 (base32
0febd673 3359 "02jb211z8rw2qr5r1z5mdxlqgiw6cbc319xpqplvn6k21c59mskv"))))
38050923
RW
3360 (home-page "https://github.com/brummer10/GxVintageFuzzMaster.lv2")
3361 (synopsis "Fuzz effect simulation of the vintage Fuzz Master")
3362 (description "This package provides the LV2 plugin
3363\"GxVintageFuzzMaster\", a simulation of the vintage Fuzz Master pedal.")))
631f8175
RW
3364
3365(define-public gx-slow-gear-lv2
d921a1f4
RW
3366 (let ((commit "5d37e775b0feef1d82feee94e2a7a2d7e57efe2d")
3367 (revision "3"))
ad67ca3d 3368 (package (inherit gx-vbass-preamp-lv2)
631f8175
RW
3369 (name "gx-slow-gear-lv2")
3370 (version (string-append "0-" revision "." (string-take commit 9)))
3371 (source (origin
3372 (method git-fetch)
3373 (uri (git-reference
3374 (url "https://github.com/brummer10/GxSlowGear.lv2")
3375 (commit commit)))
3376 (sha256
3377 (base32
d921a1f4 3378 "141mz69zkhk3lm54bb6wgpnghb92zm1ig7fv07240cmhydqji1q1"))
631f8175
RW
3379 (file-name (string-append name "-" version "-checkout"))))
3380 (home-page "https://github.com/brummer10/GxSlowGear.lv2")
3381 (synopsis "Slow gear audio effect")
3382 (description "This package provides the LV2 plugin \"GxSlowGear\", a
3383slow gear audio effect to produce volume swells."))))
d75e8f5a
RW
3384
3385(define-public gx-switchless-wah-lv2
cfcef2c2
RW
3386 (let ((commit "7b08691203314612999f0ce2328cdc1161cd6665")
3387 (revision "2"))
1b74b126 3388 (package (inherit gx-guvnor-lv2)
d75e8f5a
RW
3389 (name "gx-switchless-wah-lv2")
3390 (version (string-append "0-" revision "." (string-take commit 9)))
3391 (source (origin
3392 (method git-fetch)
3393 (uri (git-reference
3394 (url "https://github.com/brummer10/GxSwitchlessWah.lv2")
3395 (commit commit)))
3396 (sha256
3397 (base32
cfcef2c2 3398 "04jqfpncmrrqn34p21w4v9m2x5a5wsqwbm4f3byxvq4vcibwxzk2"))
d75e8f5a
RW
3399 (file-name (string-append name "-" version "-checkout"))))
3400 (home-page "https://github.com/brummer10/GxSwitchlessWah.lv2")
3401 (synopsis "Wah emulation with switchless activation")
3402 (description "This package provides the LV2 plugin \"GxSwitchlessWah\",
3403a simulation of an analog Wah pedal with switchless activation."))))
84d53724 3404
a734da86
RW
3405(define-public rkrlv2
3406 (let ((commit "d8c17d3c976107e5c012970276d7cf0aa059f15b")
3407 (revision "1"))
3408 (package
3409 (name "rkrlv2")
3410 (version (git-version "0" revision commit))
3411 (source (origin
3412 (method git-fetch)
3413 (uri (git-reference
3414 (url "https://github.com/ssj71/rkrlv2.git")
3415 (commit commit)))
3416 (sha256
3417 (base32
3418 "035z068rlafb7ibgqf34ck2lm4fab8yzlx41qh061x2xi4hxkvp0"))
3419 (file-name (git-file-name name version))))
3420 (build-system cmake-build-system)
3421 (arguments '(#:tests? #f)) ; there are no tests
3422 (inputs
3423 `(("fftw" ,fftw)
3424 ("libsamplerate" ,libsamplerate)
3425 ("lv2" ,lv2)))
3426 (native-inputs
3427 `(("pkg-config" ,pkg-config)))
3428 (home-page "https://github.com/ssj71/rkrlv2")
3429 (synopsis "Rakarrack effects ported to LV2 plugins")
3430 (description "This package provides the Rakarrack effects as LV2
3431plugins. The ports are done such that hopefully when Rakarrack gets an active
3432maintainer these will get merged into the original project.")
3433 (license license:gpl2))))
3434
84d53724 3435(define-public mod-utilities
fe049d21
RW
3436 (let ((commit "80ea3ea9f52fab7f191671f4810bf90fc955a046")
3437 (revision "2"))
84d53724
RW
3438 (package
3439 (name "mod-utilities")
3440 (version (string-append "0-" revision "." (string-take commit 9)))
3441 (source (origin
3442 (method git-fetch)
3443 (uri (git-reference
3444 (url "https://github.com/moddevices/mod-utilities.git")
3445 (commit commit)))
fe049d21 3446 (file-name (string-append name "-" version "-checkout"))
84d53724
RW
3447 (sha256
3448 (base32
fe049d21 3449 "1v55zmzmlg0ka7341x5lsvb44amy17vk27s669ps1basd1bk5s5v"))))
84d53724
RW
3450 (build-system gnu-build-system)
3451 (arguments
3452 `(#:tests? #f ; there are no tests
3453 #:make-flags
3454 (list (string-append "INSTALL_PATH="
3455 (assoc-ref %outputs "out")
fe049d21
RW
3456 "/lib/lv2")
3457 (string-append "PREFIX=" (assoc-ref %outputs "out"))
3458 "CC=gcc")
84d53724
RW
3459 #:phases
3460 (modify-phases %standard-phases
3461 (delete 'configure))))
3462 (inputs
3463 `(("lv2" ,lv2)))
3464 (home-page "https://github.com/moddevices/mod-utilities")
3465 (synopsis "LV2 utility plugins")
3466 (description "This package provides LV2 audio utility plugins, such as
3467filters, crossovers, simple gain plugins without zipper noise, switch box
3468plugins, a switch trigger, a toggle switch, and a peakmeter.")
3469 (license license:gpl2+))))
d3db5efb 3470
951581a2 3471(define-public ingen
19748414
RW
3472 (let ((commit "cc4a4db33f4d126a07a4a498e053c5fb9a883be3")
3473 (revision "2"))
951581a2
RW
3474 (package
3475 (name "ingen")
3476 (version (string-append "0.0.0-" revision "."
3477 (string-take commit 9)))
3478 (source
3479 (origin
3480 (method git-fetch)
3481 (uri (git-reference
0d0252e4 3482 (url "https://git.drobilla.net/ingen.git")
951581a2
RW
3483 (commit commit)))
3484 (file-name (string-append name "-" version "-checkout"))
3485 (sha256
3486 (base32
19748414 3487 "1wg47vjw9djn99gbnsl2bcwj4xhdid61m4wrbn2nlp797flj91ic"))))
951581a2
RW
3488 (build-system waf-build-system)
3489 (arguments
f9dcf79f
RW
3490 `(#:python ,python-2
3491 #:tests? #f ; no "check" target
951581a2
RW
3492 #:configure-flags (list "--no-webkit")
3493 #:phases
3494 (modify-phases %standard-phases
3495 (add-after 'unpack 'patch-wscript
3496 (lambda* (#:key outputs #:allow-other-keys)
3497 (let ((out (assoc-ref outputs "out")))
3498 (substitute* "wscript"
3499 ;; FIXME: Our version of lv2specgen.py does not behave as
3500 ;; expected. Maybe this requires a development version of
3501 ;; LV2.
3502 (("lv2specgen.py") "touch ingen.lv2/ingen.html; echo")
3503 ;; Add libraries to RUNPATH.
3504 (("^(.+)target.*= 'src/ingen/ingen'," line prefix)
3505 (string-append prefix
3506 "linkflags=[\"-Wl,-rpath="
3507 out "/lib" "\"]," line)))
3508 (substitute* '("src/wscript"
3509 "src/server/wscript")
3510 ;; Add libraries to RUNPATH.
3511 (("bld.env.PTHREAD_LINKFLAGS" line)
3512 (string-append line
3513 " + [\"-Wl,-rpath=" out "/lib" "\"]")))
3514 (substitute* "src/client/wscript"
3515 ;; Add libraries to RUNPATH.
3516 (("^(.+)target.*= 'ingen_client'," line prefix)
3517 (string-append prefix
3518 "linkflags=[\"-Wl,-rpath="
3519 out "/lib" "\"]," line)))
3520 (substitute* "src/gui/wscript"
3521 ;; Add libraries to RUNPATH.
3522 (("^(.+)target.* = 'ingen_gui.*" line prefix)
3523 (string-append prefix
3524 "linkflags=[\"-Wl,-rpath="
3525 out "/lib" "\"]," line))))
3526 #t)))))
3527 (inputs
3528 `(("boost" ,boost)
3529 ("python-rdflib" ,python-rdflib)
3530 ("python" ,python)
3531 ("jack" ,jack-1)
a2467954 3532 ("lv2" ,lv2)
951581a2
RW
3533 ("lilv" ,lilv)
3534 ("raul" ,raul-devel)
3535 ("ganv" ,ganv-devel)
3536 ("suil" ,suil)
3537 ("serd" ,serd)
3538 ("sord" ,sord)
3539 ("sratom" ,sratom)
3540 ("gtkmm" ,gtkmm-2)))
3541 (native-inputs
3542 `(("pkg-config" ,pkg-config)
3543 ("python-pygments" ,python-pygments)))
0d0252e4 3544 (home-page "https://drobilla.net/software/ingen")
951581a2
RW
3545 (synopsis "Modular audio processing system")
3546 (description "Ingen is a modular audio processing system for JACK and
3547LV2 based systems. Ingen is built around LV2 technology and a strict
3548separation of engine from user interface. The engine is controlled
3549exclusively through a protocol, and can execute as a headless process, with an
3550in-process GUI, or as an LV2 plugin. The GUI can run as a program which
3551communicates over a Unix or TCP/IP socket, or as an embeddable LV2 GUI which
3552communicates via LV2 ports. Any saved Ingen graph can be loaded as an LV2
3553plugin on any system where Ingen is installed. This allows users to visually
3554develop custom plugins for use in other applications without programming.")
3555 (license license:agpl3+))))
3556
b3410b44
RW
3557(define-public qmidiarp
3558 (package
3559 (name "qmidiarp")
b6313997 3560 (version "0.6.5")
b3410b44
RW
3561 (source (origin
3562 (method url-fetch)
3563 (uri (string-append "mirror://sourceforge/qmidiarp/qmidiarp/"
3564 version "/qmidiarp-" version ".tar.bz2"))
3565 (sha256
3566 (base32
b6313997 3567 "043yh1p0rrbj1v840y27529m9260g55gvh1km8az4jxy7mns58r2"))))
b3410b44
RW
3568 (build-system gnu-build-system)
3569 (arguments
3570 `(#:configure-flags
3571 (list "--enable-qt5"
3572 "CXXFLAGS=-std=gnu++11")))
3573 (inputs
3574 `(("qtbase" ,qtbase)
3575 ("alsa-lib" ,alsa-lib)
3576 ("jack" ,jack-1)
3577 ("liblo" ,liblo)
3578 ("lv2" ,lv2)))
3579 (native-inputs
3580 `(("pkg-config" ,pkg-config)
3581 ("qttools" ,qttools)))
3582 (home-page "http://qmidiarp.sourceforge.net/")
3583 (synopsis "MIDI arpeggiator")
3584 (description "QMidiArp is an advanced MIDI arpeggiator, programmable step
3585sequencer and LFO. It can hold any number of arpeggiator, sequencer, or LFO
3586modules running in parallel.")
3587 (license license:gpl2+)))
3588
ff49437d
RW
3589(define-public qmidiroute
3590 (package
3591 (name "qmidiroute")
3592 (version "0.4.0")
3593 (source (origin
3594 (method url-fetch)
3595 (uri (string-append "mirror://sourceforge/alsamodular/QMidiRoute/"
3596 version "/qmidiroute-" version ".tar.bz2"))
3597 (sha256
3598 (base32
3599 "19v1ppbglgl3z9v7xdqc0k33w71cqq8a7d6ihvfs7iz77dygrih9"))))
3600 (build-system gnu-build-system)
3601 (arguments
3602 `(#:configure-flags
3603 (list "--enable-qt5"
3604 "CXXFLAGS=-std=gnu++11")))
3605 (inputs
3606 `(("qtbase" ,qtbase)
3607 ("alsa-lib" ,alsa-lib)))
3608 (native-inputs
3609 `(("pkg-config" ,pkg-config)
3610 ("qttools" ,qttools)))
3611 (home-page "http://alsamodular.sourceforge.net/")
3612 (synopsis "MIDI event router and filter")
3613 (description "QMidiRoute is a MIDI event router and filter. MIDI note,
3614control change, program change and pitch bend events are logged, and can be
3615filtered, redirected and transformed into other events according to MIDI maps
3616defined as tabs in the main control surface.")
3617 (license license:gpl2+)))
3618
5a66e25c
RW
3619(define-public seq24
3620 (package
3621 (name "seq24")
3622 (version "0.9.3")
3623 (source (origin
3624 (method url-fetch)
3625 (uri (string-append "https://launchpad.net/seq24/trunk/"
3626 version "/+download/seq24-"
3627 version ".tar.bz2"))
3628 (sha256
3629 (base32
3630 "12dphdhnvfk1k0vmagi1v2lhyxjyj1j3cz6ksjw0ydcvid1x8ap2"))
3631 (patches (search-patches "seq24-rename-mutex.patch"))))
3632 (build-system gnu-build-system)
3633 (arguments
3634 `(#:configure-flags
3635 (list "CXXFLAGS=-std=gnu++11")))
3636 (inputs
3637 `(("gtkmm" ,gtkmm-2)
3638 ("alsa-lib" ,alsa-lib)
3639 ("jack" ,jack-1)
3640 ("lash" ,lash)))
3641 (native-inputs
3642 `(("pkg-config" ,pkg-config)))
3643 (home-page "https://edge.launchpad.net/seq24/")
3644 (synopsis "Real-time MIDI sequencer")
3645 (description "Seq24 is a real-time MIDI sequencer. It was created to
3646provide a very simple interface for editing and playing MIDI loops.")
3647 (license license:gpl2+)))
3648
d3db5efb
LF
3649(define-public python-discogs-client
3650 (package
3651 (name "python-discogs-client")
3652 (version "2.2.1")
3653 (source (origin
3654 (method url-fetch)
3655 (uri (pypi-uri "discogs-client" version))
3656 (sha256
3657 (base32
3658 "053ld2psh0yj3z0kg6z5bn4y3cr562m727494n0ayhgzbkjbacly"))))
3659 (build-system python-build-system)
3660 (propagated-inputs
3661 `(("python-oauthlib" ,python-oauthlib)
3662 ("python-requests" ,python-requests)))
3663 (native-inputs
3664 `(("python-six" ,python-six)))
3665 (home-page "https://github.com/discogs/discogs_client")
3666 (synopsis "Official Python client for the Discogs API")
3667 (description "This is the official Discogs API client for Python. It enables
3668you to query the Discogs database for information on artists, releases, labels,
3669users, Marketplace listings, and more. It also supports OAuth 1.0a
3670authorization, which allows you to change user data such as profile information,
3671collections and wantlists, inventory, and orders.")
80983df3 3672 (license license:bsd-2)))
d3db5efb
LF
3673
3674(define-public python2-discogs-client
80983df3 3675 (package-with-python2 python-discogs-client))
a4f05b46 3676
3677(define-public libsmf
3678 (package
3679 (name "libsmf")
3680 (version "1.3")
3681 (source
3682 (origin
3683 (method url-fetch)
3684 ;; SF download page says development moved, but the link it points to
3685 ;; is gone (https://github.com/nilsgey/libsmf). Someone else adopted
3686 ;; it but made no release so far (https://github.com/stump/libsmf).
3687 (uri (string-append "mirror://sourceforge/libsmf/libsmf/"
3688 version "/libsmf-" version ".tar.gz"))
3689 (sha256
3690 (base32
3691 "16c0n40h0r56gzbh5ypxa4dwp296dan3jminml2qkb4lvqarym6k"))))
3692 (build-system gnu-build-system)
3693 (outputs '("out"
3694 "static")) ; 88KiB of .a files
3695 (arguments
3696 `(#:phases
3697 (modify-phases %standard-phases
3698 (add-after 'install 'move-static-libraries
3699 (lambda* (#:key outputs #:allow-other-keys)
3700 ;; Move static libraries to the "static" output.
3701 (let* ((out (assoc-ref outputs "out"))
3702 (lib (string-append out "/lib"))
3703 (static (assoc-ref outputs "static"))
3704 (slib (string-append static "/lib")))
3705 (mkdir-p slib)
3706 (for-each (lambda (file)
3707 (install-file file slib)
3708 (delete-file file))
3709 (find-files lib "\\.a$"))
3710 #t))))))
3711 (inputs
3712 `(("readline" ,readline)
3713 ("glib" ,glib)))
3714 (native-inputs
3715 `(("doxygen" ,doxygen)
3716 ("pkg-config" ,pkg-config)))
3717 (home-page "http://libsmf.sourceforge.net/")
3718 (synopsis "Standard MIDI File format library")
3719 (description
3720 "LibSMF is a C library for handling SMF (\"*.mid\") files. It transparently handles
3721conversions between time and pulses, tempo map handling and more. The only dependencies
3722are a C compiler and glib. Full API documentation and examples are included.")
3723 (license license:bsd-2)))
a42619e5
RF
3724
3725(define-public lmms
3726 (package
3727 (name "lmms")
3728 (version "1.1.3")
3729 (source
3730 (origin
3a0592ae
RW
3731 (method git-fetch)
3732 (uri (git-reference
3733 (url "https://github.com/LMMS/lmms.git")
3734 (commit (string-append "v" version))))
3735 (file-name (git-file-name name version))
a42619e5
RF
3736 (sha256
3737 (base32
3a0592ae 3738 "03hhymc6d73fa3wbcqb7rm1l03zkw605k5i9kvkvjmv488bqh3pd"))))
a42619e5
RF
3739 (build-system cmake-build-system)
3740 (arguments
3741 `(#:tests? #f ; no tests
3742 #:phases
3743 (modify-phases %standard-phases
ab2ccf4c
KK
3744 (add-before 'configure 'set-ldflags
3745 (lambda* (#:key outputs #:allow-other-keys)
3746 (setenv "LDFLAGS"
3747 (string-append
3748 "-Wl,-rpath=\""
3749 (assoc-ref outputs "out") "/lib/lmms"
3750 ":"
3751 (assoc-ref outputs "out") "/lib/lmms/ladspa"
3752 "\""))
3753 #t))
3754 (add-before 'configure 'remove-Werror
3755 (lambda _
3756 (substitute* "CMakeLists.txt"
3757 (("SET\\(WERROR_FLAGS \"\\$\\{WERROR_FLAGS\\} -Werror")
3758 "SET(WERROR_FLAGS \"${WERROR_FLAGS}"))
3759 #t))
3760 (add-before 'reset-gzip-timestamps 'make-manpages-writable
3761 (lambda* (#:key outputs #:allow-other-keys)
3762 (map (lambda (file)
3763 (make-file-writable file))
3764 (find-files (string-append (assoc-ref outputs "out")
3765 "/share/man")
3766 ".*\\.gz$"))
3767 #t)))))
a42619e5
RF
3768 (native-inputs
3769 `(("pkg-config" ,pkg-config)))
3770 (inputs
3771 `(("sdl" ,sdl)
3772 ("qt" ,qt-4)
3773 ("fltk" ,fltk)
3774 ("libogg" ,libogg)
3775 ("libsamplerate" ,libsamplerate)
9b6dc31b 3776 ("fluidsynth" ,fluidsynth-1) ;XXX: try using 2.x when updating
a42619e5
RF
3777 ("libvorbis" ,libvorbis)
3778 ("alsa-lib" ,alsa-lib)
3779 ("portaudio" ,portaudio)
3780 ("ladspa" ,ladspa)
3781 ("libsndfile1" ,libsndfile)
3782 ("libxft" ,libxft)
3783 ("freetype2" ,freetype)
3784 ("fftw3f" ,fftwf)))
3785 (home-page "https://lmms.io/")
3786 (synopsis "Music composition tool")
3787 (description "LMMS is a digital audio workstation. It includes tools for sequencing
3788melodies and beats and for mixing and arranging songs. LMMS includes instruments based on
3789audio samples and various soft sythesizers. It can receive input from a MIDI keyboard.")
3790 (license license:gpl2+)))
a7a7186c
NG
3791
3792(define-public musescore
3793 (package
3794 (name "musescore")
032ca4ba 3795 (version "3.2.3")
a7a7186c 3796 (source (origin
545ceac8
NG
3797 (method git-fetch)
3798 (uri (git-reference
3799 (url "https://github.com/musescore/MuseScore.git")
3800 (commit (string-append "v" version))))
3801 (file-name (git-file-name name version))
a7a7186c
NG
3802 (sha256
3803 (base32
032ca4ba 3804 "17wx1wl8ns2k31qvrr888dxnrsa13vazg04zh2sn2q4vzd869a7v"))
a7a7186c
NG
3805 (modules '((guix build utils)))
3806 (snippet
3807 ;; Un-bundle OpenSSL and remove unused libraries.
3808 '(begin
3809 (substitute* "thirdparty/kQOAuth/CMakeLists.txt"
3810 (("-I \\$\\{PROJECT_SOURCE_DIR\\}/thirdparty/openssl/include ")
3811 ""))
3812 (substitute* "thirdparty/kQOAuth/kqoauthutils.cpp"
3813 (("#include <openssl/.*") ""))
3814 (for-each delete-file-recursively
3815 '("thirdparty/freetype"
3816 "thirdparty/openssl"
3817 "thirdparty/portmidi"))
8d611ef0 3818 #t))))
11d44d0b 3819 (build-system cmake-build-system)
a7a7186c 3820 (arguments
11d44d0b 3821 `(#:configure-flags
8d611ef0 3822 `("-DBUILD_CRASH_REPORTER=OFF"
11d44d0b 3823 "-DBUILD_WEBENGINE=OFF"
8d611ef0
NG
3824 "-DDOWNLOAD_SOUNDFONT=OFF"
3825 "-DUSE_SYSTEM_FREETYPE=ON")
11d44d0b
NG
3826 ;; There are tests, but no simple target to run. The command used to
3827 ;; run them is:
a7a7186c
NG
3828 ;;
3829 ;; make debug && sudo make installdebug && cd \
3830 ;; build.debug/mtest && make && ctest
3831 ;;
3832 ;; Basically, it requires to start a whole new build process.
3833 ;; So we simply skip them.
11d44d0b 3834 #:tests? #f))
a7a7186c
NG
3835 (inputs
3836 `(("alsa-lib" ,alsa-lib)
3837 ("freetype" ,freetype)
3838 ("gtk+-bin" ,gtk+ "bin") ;for gtk-update-icon-cache
3839 ("jack" ,jack-1)
3840 ("lame" ,lame)
3841 ("libogg" ,libogg)
3842 ("libsndfile" ,libsndfile)
3843 ("libvorbis" ,libvorbis)
3844 ("portaudio" ,portaudio)
b3891a25 3845 ("portmidi" ,portmidi)
a7a7186c
NG
3846 ("pulseaudio" ,pulseaudio)
3847 ("qtbase" ,qtbase)
3848 ("qtdeclarative" ,qtdeclarative)
3849 ("qtscript" ,qtscript)
3850 ("qtsvg" ,qtsvg)
a7a7186c
NG
3851 ("qtxmlpatterns" ,qtxmlpatterns)))
3852 (native-inputs
11d44d0b 3853 `(("pkg-config" ,pkg-config)
a7a7186c
NG
3854 ("qttools" ,qttools)))
3855 (synopsis "Music composition and notation software")
3856 (description "MuseScore is a music score typesetter. Its main purpose is
3857the creation of high-quality engraved musical scores in a WYSIWYG environment.
3858
3859It supports unlimited staves, linked parts and part extraction, tablature,
3860MIDI input, percussion notation, cross-staff beaming, automatic transposition,
3861lyrics (multiple verses), fretboard diagrams, and in general everything
3862commonly used in sheet music. Style options and style sheets to change the
3863appearance and layout are provided.
3864
3865MuseScore can also play back scores through the built-in sequencer and SoundFont
3866sample library.")
3867 (home-page "https://musescore.org")
3868 (license license:gpl2)))
2434f5ce 3869
43188faf
RW
3870(define-public muse-sequencer
3871 (package
3872 (name "muse-sequencer")
3873 (version "3.0.0")
3874 (source (origin
3875 (method git-fetch)
3876 (uri (git-reference
3877 (url "https://github.com/muse-sequencer/muse.git")
3878 (commit (string-append "muse_"
3879 (string-map (lambda (c)
3880 (if (char=? c #\.)
3881 #\_ c)) version)))))
3882 (file-name (string-append name "-" version "-checkout"))
3883 (sha256
3884 (base32
3885 "1nninz8qyqlxxjdnrm79y3gr3056pga9l2fsqh674jd3cjvafya3"))))
3886 (build-system cmake-build-system)
3887 (arguments
3888 `(#:tests? #f ; there is no test target
3889 #:configure-flags
3890 (list "-DENABLE_LV2_SUPPLIED=OFF"
3891 "-DENABLE_RTAUDIO=OFF" ; FIXME: not packaged
3892 "-DENABLE_INSTPATCH=OFF" ; FIXME: not packaged
3893 "-DENABLE_VST_NATIVE=OFF")
3894 #:phases
3895 (modify-phases %standard-phases
3896 (add-after 'unpack 'chdir
3897 (lambda _ (chdir "muse3"))))))
3898 (inputs
3899 `(("alsa-lib" ,alsa-lib)
3900 ("lash" ,lash)
3901 ("jack" ,jack-1)
3902 ("liblo" ,liblo)
3903 ("dssi" ,dssi)
3904 ("ladspa" ,ladspa)
3905 ("lv2" ,lv2)
3906 ("lilv" ,lilv)
3907 ("sord" ,sord)
3908 ("libsndfile" ,libsndfile)
3909 ("libsamplerate" ,libsamplerate)
3910 ("fluidsynth" ,fluidsynth)
3911 ("pcre" ,pcre)
3912 ("qtbase" ,qtbase)
3913 ("qtsvg" ,qtsvg)))
3914 (native-inputs
3915 `(("pkg-config" ,pkg-config)
3916 ("qttools" ,qttools)))
3917 (home-page "http://muse-sequencer.org")
3918 (synopsis "MIDI/Audio sequencer")
3919 (description "MusE is a MIDI/Audio sequencer with recording and editing
3920capabilities. Its audio sequencer supports the LADSPA, DSSI, and LV2 audio
3921plugin formats; the MIDI sequencer provides a piano roll, a drum editor, a
3922list view, and a score editor. MusE aims to be a complete multitrack virtual
3923studio.")
3924 (license license:gpl2+)))
3925
2434f5ce
DM
3926(define-public dssi
3927 (package
3928 (name "dssi")
3929 (version "1.1.1")
3930 (source (origin
3931 (method url-fetch)
3932 (uri (string-append
3933 "mirror://sourceforge/dssi/dssi/" version
3934 "/dssi-" version ".tar.gz"))
3935 (sha256
3936 (base32
3937 "0kl1hzhb7cykzkrqcqgq1dk4xcgrcxv0jja251aq4z4l783jpj7j"))))
3938 (build-system gnu-build-system)
3939 (inputs
3940 `(("alsa-lib" ,alsa-lib)
0e78801a 3941 ("jack" ,jack-1)
2434f5ce
DM
3942 ("ladspa" ,ladspa)
3943 ("libsamplerate" ,libsamplerate)
3944 ("libsndfile" ,libsndfile)
3945 ("liblo" ,liblo)))
3946 (native-inputs
3947 `(("pkg-config" ,pkg-config)))
3948 (synopsis "Audio plugin API for soft synths and effects")
3949 (description "DSSI is a plugin API for software instruments with user
3950interfaces, permitting them to be hosted in-process by audio applications.
3951It is intended to be simple, GUI-toolkit-agnostic, and slightly biased
3952towards familiarity with MIDI. The DSSI distribution package contains
3953a JACK/ALSA-sequencer reference host and some plugins as well as the
3954specification and header.")
3955 (home-page "http://dssi.sourceforge.net/")
3956 ;; The DSSI interface is LGPL2.1+, some tests and examples are GPL2+.
3957 ;; The vast majority of examples are in the public domain.
3958 (license (list license:lgpl2.1+ license:gpl2+))))
9bc38f28
DM
3959
3960(define-public rosegarden
3961 (package
3962 (name "rosegarden")
0d5101c3 3963 (version "18.12")
9bc38f28
DM
3964 (source (origin
3965 (method url-fetch)
3966 (uri (string-append
3967 "mirror://sourceforge/rosegarden/rosegarden/"
3968 version "/rosegarden-" version ".tar.bz2"))
3969 (sha256
3970 (base32
0d5101c3 3971 "15i9fm0vkn3wsgahaxqi1j5zs0wc0j3wdwml0x49084gk2p328vb"))))
9bc38f28
DM
3972 (build-system cmake-build-system)
3973 (arguments
0d5101c3 3974 `(#:configure-flags '("-DCMAKE_BUILD_TYPE=Release")
9bc38f28
DM
3975 #:phases
3976 (modify-phases %standard-phases
3977 (add-after 'unpack 'patch-tests
3978 (lambda _
3979 (substitute* "CMakeLists.txt"
3980 (("BUILD_TESTING OFF") "BUILD_TESTING ON")
3981 ;; Make tests work.
3982 ((" -fvisibility=hidden") ""))
3983 #t))
3984 (add-after 'unpack 'fix-references
3985 (lambda* (#:key inputs #:allow-other-keys)
3986 (substitute* "src/gui/general/ProjectPackager.cpp"
3987 (("\"flac\\>")
3988 (string-append "\"" (assoc-ref inputs "flac") "/bin/flac"))
3989 (("\"wavpack\\>")
3990 (string-append "\"" (assoc-ref inputs "wavpack") "/bin/wavpack"))
3991 (("\"wvunpack\\>")
3992 (string-append "\"" (assoc-ref inputs "wavpack") "/bin/wvunpack"))
3993 (("\"bash\\>")
3994 (string-append "\"" (assoc-ref inputs "bash") "/bin/bash"))
3995 (("\"tar\\>")
3996 (string-append "\"" (assoc-ref inputs "tar") "/bin/tar")))
3997 (substitute* "src/gui/general/LilyPondProcessor.cpp"
3998 (("\"convert-ly\\>")
3999 (string-append "\"" (assoc-ref inputs "lilypond") "/bin/convert-ly"))
4000 (("\"lilypond\\>")
4001 (string-append "\"" (assoc-ref inputs "lilypond") "/bin/lilypond")))
4002 #t))
4003 (add-after 'unpack 'make-reproducible
4004 (lambda _
4005 ;; Prevent Last-Modified from being written.
4006 ;; The "*.qm" files that are used in locale.qrc would have a new
4007 ;; mtime otherwise that is written into qrc_locale.cpp in the
4008 ;; end - except when we disable it.
4009 (substitute* "src/CMakeLists.txt"
4010 (("COMMAND [$][{]QT_RCC_EXECUTABLE[}]")
4011 "COMMAND ${QT_RCC_EXECUTABLE} --format-version 1")
4012 ;; Extraneous.
4013 ;(("qt5_add_resources[(]rg_SOURCES ../data/data.qrc[)]")
4014 ; "qt5_add_resources(rg_SOURCES ../data/data.qrc OPTIONS --format-version 1)")
4015 )
4016 ;; Make hashtable traversal order predicable.
4017 (setenv "QT_RCC_TEST" "1") ; important
4018 #t))
4019 (add-before 'check 'prepare-check
4020 (lambda _
4021 (setenv "QT_QPA_PLATFORM" "offscreen")
4022 ;; Tests create files in $HOME/.local/share/rosegarden .
4023 (mkdir-p "/tmp/foo")
4024 (setenv "HOME" "/tmp/foo")
9bf98520 4025 (setenv "XDG_RUNTIME_DIR" "/tmp/foo")
9bc38f28
DM
4026 #t)))))
4027 (inputs
4028 `(("alsa-lib" ,alsa-lib)
4029 ("bash" ,bash)
4030 ("dssi" ,dssi)
4031 ("flac" ,flac)
4032 ("fftwf" ,fftwf)
b94f250e 4033 ("jack" ,jack-1)
9bc38f28
DM
4034 ("ladspa" ,ladspa)
4035 ("liblo" ,liblo)
4036 ("libsamplerate" ,libsamplerate)
4037 ("lilypond" ,lilypond)
4038 ("lrdf" ,lrdf)
4039 ("qtbase" ,qtbase)
4040 ("tar" ,tar)
4041 ("lirc" ,lirc)
4042 ("wavpack" ,wavpack)
4043 ("zlib" ,zlib)))
4044 (native-inputs
4045 `(("pkg-config" ,pkg-config)
4046 ("qtlinguist" ,qttools)))
4047 (synopsis "Music composition and editing environment based around a MIDI
4048sequencer")
4049 (description "Rosegarden is a music composition and editing environment
4050based around a MIDI sequencer that features a rich understanding of music
4051notation and includes basic support for digital audio.")
9bf98520 4052 (home-page "https://www.rosegardenmusic.com/")
9bc38f28 4053 (license license:gpl2)))
30655652 4054
643817e4 4055(define-public patchmatrix
2394afa4
RW
4056 ;; There have been no releases for more than a year.
4057 (let ((commit "a0b0b1e791f4574d5abd059cfe1819c71e8b18d5")
4058 (revision "1"))
4059 (package
4060 (name "patchmatrix")
4061 (version (git-version "0.12.0" revision commit))
4062 (source (origin
4063 (method git-fetch)
4064 (uri (git-reference
4065 (url "https://github.com/OpenMusicKontrollers/patchmatrix.git")
4066 (commit commit)))
4067 (file-name (string-append "patchmatrix-" version "-checkout"))
4068 (sha256
4069 (base32
4070 "0pph4ra7aci3rbpqvvr564pi16vxrk448bmvp8985cd9lbjlrp3m"))))
4071 (build-system meson-build-system)
4072 (arguments
4073 '(#:tests? #f ; no test target
4074 #:phases
4075 (modify-phases %standard-phases
4076 (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable
4077 (lambda* (#:key outputs #:allow-other-keys)
4078 (map make-file-writable
4079 (find-files (assoc-ref outputs "out") ".*\\.gz$"))
4080 #t)))))
4081 (inputs
4082 `(("jack" ,jack-1)
4083 ("lv2" ,lv2)
4084 ("mesa" ,mesa)))
4085 (native-inputs
4086 `(("pkg-config" ,pkg-config)))
4087 (home-page "https://github.com/OpenMusicKontrollers/patchmatrix")
4088 (synopsis "Simple JACK patch bay")
4089 (description "PatchMatrix is a patch bay for the JACK audio connection
643817e4
RW
4090kit. It provides a patch bay in flow matrix style for audio, MIDI, CV, and
4091OSC connections.")
2394afa4 4092 (license license:artistic2.0))))
643817e4 4093
30655652
RW
4094(define-public sorcer
4095 (package
4096 (name "sorcer")
4097 (version "1.1.3")
4098 (source (origin
4099 (method url-fetch)
4100 (uri (string-append "https://github.com/openAVproductions/"
4101 "openAV-Sorcer/archive/release-"
4102 version ".tar.gz"))
4103 (file-name (string-append name "-" version ".tar.gz"))
4104 (sha256
4105 (base32
4106 "07iyqj28wm0xc4arrq893bm12xjpz65db7ynrlmf6w8krg8wjmd0"))))
4107 (build-system cmake-build-system)
4108 (arguments
4109 `(#:tests? #f ; no tests included
4110 #:phases
4111 (modify-phases %standard-phases
e5af1f4a
EF
4112 (add-after 'unpack 'remove-architecture-specific-flags
4113 (lambda _
4114 (substitute* "CMakeLists.txt"
4115 (("-msse2 -mfpmath=sse") ""))
4116 #t))
30655652
RW
4117 (add-after 'unpack 'build-faust-sources
4118 (lambda* (#:key inputs #:allow-other-keys)
4119 (with-directory-excursion "faust"
4120 (delete-file "main.cpp")
d7e24652
RW
4121 (invoke "faust" "-i"
4122 "-a" "lv2synth.cpp"
4123 "-o" "main.cpp" "main.dsp")))))))
30655652
RW
4124 (inputs
4125 `(("boost" ,boost)
4126 ("lv2" ,lv2)
4127 ("ntk" ,ntk)))
4128 (native-inputs
4129 `(("faust" ,faust)
4130 ("pkg-config" ,pkg-config)))
4131 (home-page "http://openavproductions.com/sorcer/")
4132 (synopsis "Wavetable LV2 plugin synth")
4133 (description "Sorcer is a wavetable LV2 plugin synthesizer, targeted at
4134the electronic or dubstep genre.")
4135 (license license:gpl3+)))
60b7ed9c 4136
f7ce2134
RW
4137(define-public sonivox-eas
4138 (package
4139 (name "sonivox-eas")
4140 (version "1.1.0")
4141 (source (origin
4142 (method git-fetch)
4143 (uri (git-reference
4144 (url "https://github.com/pedrolcl/Linux-SonivoxEas.git")
4145 (commit (string-append "v" version))))
4146 (file-name (string-append name "-" version "-checkout"))
4147 (sha256
4148 (base32
4149 "0l9gs00p5g4k4qy6i7nv1mfi2n2wnsycwjrgrh9hxzam4irf2mw2"))))
4150 (build-system cmake-build-system)
4151 (arguments '(#:tests? #f)) ; there are no tests
4152 (inputs
4153 `(("alsa-lib" ,alsa-lib)
4154 ("drumstick" ,drumstick)
4155 ("pulseaudio" ,pulseaudio)
4156 ("qtbase" ,qtbase)))
4157 (native-inputs
4158 `(("pkg-config" ,pkg-config)))
4159 (home-page "https://github.com/pedrolcl/Linux-SonivoxEas")
4160 (synopsis "MIDI synthesizer library")
4161 (description "This project is a real time General MIDI synthesizer based
4162on the Sonivox EAS Synthesizer by Google. It does not need external
4163soundfonts, using embedded samples instead.")
4164 ;; Sonivox is released under the ASL2.0; the rest of the code is under
4165 ;; GPLv2+.
4166 (license (list license:gpl2+ license:asl2.0))))
92b36e3a
RW
4167
4168(define-public whysynth
4169 (package
4170 (name "whysynth")
4171 (version "20170701")
4172 (source (origin
4173 (method url-fetch)
4174 (uri (string-append "http://smbolton.com/whysynth/whysynth-"
4175 version ".tar.bz2"))
4176 (sha256
4177 (base32
4178 "02qbn0hbvn1iym4zxv35b201blg31yjpgh71h8db0j5zls2xc0m6"))))
4179 (build-system gnu-build-system)
4180 (inputs
4181 `(("dssi" ,dssi)
4182 ("liblo" ,liblo)
4183 ("fftwf" ,fftwf)
4184 ("gtk+" ,gtk+-2)
4185 ("ladspa" ,ladspa)
4186 ("alsa-lib" ,alsa-lib)))
4187 (native-inputs
4188 `(("pkg-config" ,pkg-config)))
4189 (home-page "http://smbolton.com/whysynth.html")
4190 (synopsis "DSSI software synthesizer")
4191 (description "WhySynth is a versatile softsynth which operates as a plugin
4192for the DSSI Soft Synth Interface. A brief list of features:
4193
4194@enumerate
4195@item 4 oscillators, 2 filters, 3 LFOs, and 5 envelope generators per voice.
4196@item 11 oscillator modes: minBLEP, wavecycle, chorused wavecycle,
4197 asynchronous granular, three FM modes, waveshaper, noise, PADsynth, and phase
4198 distortion.
4199@item 10 filter modes.
4200@item flexible modulation and mixdown options, plus effects.
4201@end enumerate
4202")
4203 (license license:gpl2+)))
6b445c57 4204
4205(define-public libdiscid
4206 (package
4207 (name "libdiscid")
4208 (version "0.6.2")
4209 (source
4210 (origin
4211 (method url-fetch)
4212 (uri (string-append
4213 "http://ftp.musicbrainz.org/pub/musicbrainz/libdiscid/libdiscid-"
4214 version ".tar.gz"))
4215 (sha256
4216 (base32
4217 "1f9irlj3dpb5gyfdnb1m4skbjvx4d4hwiz2152f83m0d9jn47r7r"))))
4218 (arguments `(#:test-target "check"))
4219 (build-system cmake-build-system)
4220 (home-page "https://musicbrainz.org/doc/libdiscid")
4221 (synopsis "Disc id reader library")
4222 (description "libdiscid is a C library for creating MusicBrainz and freedb
4223disc IDs from audio CDs. It reads a CD's table of contents (TOC) and generates
4224an identifier which can be used to lookup the CD at MusicBrainz. Additionally,
4225it provides a submission URL for adding the disc ID to the database and gathers
4226ISRCs and the MCN (=UPC/EAN) from disc.")
4227 (license license:lgpl2.1+)))
1ea29aa0 4228
1331a6c0
GH
4229(define-public python-discid
4230 (package
4231 (name "python-discid")
4232 (version "1.1.1")
4233 (source
4234 (origin
4235 (method url-fetch)
4236 (uri (pypi-uri "discid" version))
4237 (sha256
4238 (base32
4239 "1fgp67nhqlbvhhwrcxq5avil7alpzw4s4579hlyvxzbphdnbz8vq"))))
4240 (build-system python-build-system)
4241 (inputs
4242 `(("libdiscid" ,libdiscid)))
4243 (arguments
4244 `(#:phases
4245 (modify-phases %standard-phases
4246 (add-before 'build 'set-libdiscid
4247 ;; Set path of libdiscid
4248 (lambda* (#:key inputs #:allow-other-keys)
4249 (let ((discid (assoc-ref inputs "libdiscid")))
4250 (substitute* "discid/libdiscid.py"
4251 (("lib_name = (.*)$" all name)
4252 (string-append "lib_name = \"" discid
4253 "/lib/libdiscid.so.0\"\n")))
4254 #t))))))
4255 (home-page "https://python-discid.readthedocs.io/")
4256 (synopsis "Python bindings for Libdiscid")
4257 (description
4258 "This package provides Python bindings for the Libdiscid library. The
4259main purpose is the calculation of @url{https://musicbrainz.org/doc/Disc%20ID,
4260Disc IDs} for use with the MusicBrainz database. Additionally the disc
4261@dfn{Media Catalog Number} (MCN) and track @dfn{International Standard
4262Recording Code} (ISRC) can be extracted.}")
4263 (license license:lgpl3+)))
4264
1ea29aa0 4265(define-public libmusicbrainz
4266 (package
4267 (name "libmusicbrainz")
4268 (version "5.1.0")
4269 (source
4270 (origin
4271 (method url-fetch)
4272 (uri (string-append
4273 "https://github.com/metabrainz/libmusicbrainz/releases/download/release-"
4274 version "/libmusicbrainz-" version ".tar.gz"))
4275 (sha256
4276 (base32
8c71a52c 4277 "0ikb9igyyk28jm34raxfzkw2qyn4nzzwsymdyprp7cmvi6g2ajb7"))))
1ea29aa0 4278 (build-system cmake-build-system)
69cb939e
RW
4279 (arguments
4280 `(#:phases
4281 (modify-phases %standard-phases
4282 (replace 'check
4283 (lambda _
4284 ;; requires network connections
4285 ;; (invoke "tests/mbtest")
4286 (invoke "tests/ctest")
4287 #t)))))
1ea29aa0 4288 (inputs `(("neon" ,neon)
4289 ("libxml2" ,libxml2)))
4290 (native-inputs `(("pkg-config" ,pkg-config)))
4291 (home-page "https://musicbrainz.org/doc/libmusicbrainz")
4292 (synopsis "MusicBrainz client library")
4293 (description "The MusicBrainz Client Library (libmusicbrainz), also known as
4294mb_client, is a development library geared towards developers who wish to add
4295MusicBrainz lookup capabilities to their applications.")
4296 (license license:lgpl2.1+)))
87d1b7b0 4297
b0c2c5ab
LC
4298(define-public perl-musicbrainz-discid
4299 (package
4300 (name "perl-musicbrainz-discid")
4301 (version "0.04")
4302 (source (origin
4303 (method url-fetch)
4304 (uri (string-append
4305 "mirror://cpan/authors/id/N/NJ/NJH/MusicBrainz-DiscID-"
4306 version ".tar.gz"))
4307 (sha256
4308 (base32
4309 "1i4qk1qfcmxdibqkyfjrrjdq2zk42vjcz590qgiyc47fi9p6xx1j"))))
4310 (build-system perl-build-system)
4311 (native-inputs `(("pkg-config" ,pkg-config)
4312 ("which" ,which)))
4313 (inputs `(("libdiscid" ,libdiscid)))
4314 (home-page "https://metacpan.org/release/MusicBrainz-DiscID")
4315 (synopsis "Perl interface to the MusicBrainz libdiscid library")
4316 (description
4317 "The @code{MusicBrainz::DiscID} module is a Perl interface to the
4318MusicBrainz libdiscid library, allowing you to manipulate digital audio
4319compact disc (CDDA) identifiers.")
4320 (license license:gpl2)))
4321
b2961dda
LC
4322(define-public perl-webservice-musicbrainz
4323 (package
4324 (name "perl-webservice-musicbrainz")
b0842a8e 4325 (version "1.0.5")
b2961dda
LC
4326 (source (origin
4327 (method url-fetch)
4328 (uri (string-append
4329 "mirror://cpan/authors/id/B/BF/BFAIST/WebService-MusicBrainz-"
4330 version ".tar.gz"))
4331 (sha256
4332 (base32
b0842a8e 4333 "16chs1l58cf000d5kalkyph3p31ci73p1rlyx98mfv10d2cq6fsj"))))
b2961dda
LC
4334 (build-system perl-build-system)
4335 (arguments
4336 ;; Tests try to connect to http://musicbrainz.org.
4337 '(#:tests? #f))
4338 (native-inputs
4339 `(("perl-module-build" ,perl-module-build)))
4340 (propagated-inputs
4341 `(("perl-mojolicious" ,perl-mojolicious)))
4342 (home-page "https://metacpan.org/release/WebService-MusicBrainz")
4343 (synopsis "Web service API to the MusicBrainz database")
4344 (description
4345 "This module searches the MusicBrainz database through their web service
4346at @code{musicbrainz.org}.")
4347 (license license:perl-license)))
4348
87d1b7b0
PN
4349(define-public clyrics
4350 (package
4351 (name "clyrics")
7f56f107 4352 (version "0.11")
87d1b7b0
PN
4353 (source
4354 (origin
234a1825
RW
4355 (method git-fetch)
4356 (uri (git-reference
4357 (url "https://github.com/trizen/clyrics.git")
4358 (commit version)))
4359 (file-name (git-file-name name version))
87d1b7b0
PN
4360 (sha256
4361 (base32
7f56f107 4362 "0vfjy555achgi5zwa34x4q7r692nc6bq4jx518a5w4m7k5fvm71j"))))
87d1b7b0 4363 (build-system trivial-build-system)
87d1b7b0 4364 (inputs
7f56f107 4365 `(("bash" ,bash) ; for the wrapped program
87d1b7b0
PN
4366 ("perl" ,perl)
4367 ("perl-www-mechanize" ,perl-www-mechanize)
4368 ("perl-lwp-protocol-https" ,perl-lwp-protocol-https)
4369 ;; Required or else LWP will fail with "GET https://www.google.com/ ==>
4370 ;; 500 Can't verify SSL peers without knowing which Certificate
4371 ;; Authorities to trust".
4372 ("perl-mozilla-ca" ,perl-mozilla-ca)))
4373 (arguments
4374 `(#:modules ((guix build utils))
4375 #:builder (begin
4376 (use-modules (guix build utils)
4377 (ice-9 match)
4378 (srfi srfi-26))
4379 (let* ((source (assoc-ref %build-inputs "source"))
87d1b7b0
PN
4380 (output (assoc-ref %outputs "out")))
4381 (setenv "PATH"
4382 (string-append
87d1b7b0
PN
4383 (assoc-ref %build-inputs "bash") "/bin" ":"
4384 (assoc-ref %build-inputs "perl") "/bin" ":"))
234a1825 4385 (copy-recursively source (getcwd))
87d1b7b0
PN
4386 (patch-shebang "clyrics")
4387 (substitute* "clyrics"
4388 (("/usr/share") output))
4389 (install-file "clyrics" (string-append output "/bin"))
4390 (wrap-program (string-append output "/bin/clyrics")
4391 `("PERL5LIB" ":" =
4392 ,(delete
4393 ""
4394 (map (match-lambda
7f56f107
TGR
4395 (((? (cut string-prefix? "perl-" <>) name) . dir)
4396 (string-append dir "/lib/perl5/site_perl"))
4397 (_ ""))
87d1b7b0
PN
4398 %build-inputs))))
4399 (copy-recursively "plugins" (string-append output "/clyrics"))
4400 #t))))
4401 (home-page "https://github.com/trizen/clyrics")
4402 (synopsis "Extensible lyrics fetcher")
4403 (description
4404 "Clyrics is an extensible command-line tool to fetch the lyrics of songs.
4405It can be used in daemon mode along with the Music-on-Console (MOC) and cmus
4406console music players.")
4407 (license license:gpl3+)))
5703380b
PN
4408
4409(define-public demlo
4410 (let ((commit "fe9ec4c8ac2fa995ec18e6ac86d50d46df06ec01")
4411 (revision "0"))
4412 (package
4413 (name "demlo")
4414 (version (git-version "3.8" revision commit))
4415 (source
4416 (origin
4417 (method git-fetch)
4418 (uri (git-reference
4419 (url
4420 "https://gitlab.com/ambrevar/demlo")
4421 (commit commit)))
4422 (file-name (git-file-name name version))
4423 (sha256
4424 (base32
4425 "1afkbqhzn6da7zaf5ab7dvyqj1izqhzprwfb4hw448fllda9bdvk"))))
4426 (build-system go-build-system)
4427 (native-inputs
4428 `(("lua" ,lua)
4429 ("go-github-com-mattn-go-isatty" ,go-github-com-mattn-go-isatty)
4430 ("go-github-com-mattn-go-colorable" ,go-github-com-mattn-go-colorable)
4431 ("go-github-com-aarzilli-golua" ,go-github-com-aarzilli-golua)
4432 ("go-gitlab-com-ambrevar-damerau" ,go-gitlab-com-ambrevar-damerau)
4433 ("go-gitlab-com-ambrevar-golua-unicode" ,go-gitlab-com-ambrevar-golua-unicode)
4434 ("go-github-com-mgutz-ansi" ,go-github-com-mgutz-ansi)
4435 ("go-github-com-michiwend-gomusicbrainz" ,go-github-com-michiwend-gomusicbrainz)
4436 ("go-github-com-stevedonovan-luar" ,go-github-com-stevedonovan-luar)
4437 ("go-github-com-wtolson-go-taglib" ,go-github-com-wtolson-go-taglib)
4438 ("go-github-com-yookoala-realpath" ,go-github-com-yookoala-realpath)))
4439 (inputs
4440 `(("chromaprint" ,chromaprint)
4441 ("ffmpeg" ,ffmpeg)))
4442 (arguments
4443 `(#:import-path "gitlab.com/ambrevar/demlo"
4444 #:phases
4445 (modify-phases %standard-phases
4446 (add-after 'install 'wrap-program
4447 (lambda* (#:key inputs outputs #:allow-other-keys)
4448 (let ((out (assoc-ref outputs "out"))
4449 (ffmpeg (assoc-ref inputs "ffmpeg"))
4450 (chromaprint (assoc-ref inputs "chromaprint")))
4451 (wrap-program (string-append out "/bin/demlo")
4452 `("XDG_DATA_DIRS" ":" prefix (,out))
4453 `("PATH" ":" prefix
4454 ,(map (lambda (dir)
4455 (string-append dir "/bin:"
4456 dir "/sbin"))
4457 (list ffmpeg chromaprint))))
4458 #t)))
e3900a4d 4459 (add-after 'install 'install-scripts
5703380b
PN
4460 (lambda* (#:key outputs #:allow-other-keys)
4461 (let* ((out (assoc-ref outputs "out"))
4462 (root (string-append out "/src/gitlab.com/ambrevar/demlo"))
4463 (xdg-data-dirs (string-append out "/demlo")))
4464 (copy-recursively (string-append root "/actions")
4465 (string-append xdg-data-dirs "/actions"))
4466 (copy-recursively (string-append root "/scripts")
4467 (string-append xdg-data-dirs "/scripts"))
4468 (install-file (string-append root "/config.lua") xdg-data-dirs)
4469 ;; TODO: Test fish completion.
4470 (install-file (string-append root "/completion/demlo.fish")
4471 (string-append out "/share/fish/vendor_completions.d"))
4472 #t))))))
4473 (home-page "https://gitlab.com/ambrevar/demlo")
4474 (synopsis "Dynamic and extensible music library organizer")
4475 (description "Demlo is a music library organizer. It can encode, fix
4476case, change folder hierarchy according to tags or file properties, tag from
4477an online database, copy covers while ignoring duplicates or those below a
4478quality threshold, and much more. It makes it possible to manage your
4479libraries uniformly and dynamically. You can write your own rules to fit your
4480needs best.
4481
4482Demlo can address any of these recurring music library issues (and much more):
4483
4484@itemize
4485@item Fix the lack of folder structure.
4486@item Normalize tags, fix their case, chose which tags to keep and which to
4487discard.
4488@item Handle lossy and lossless audio differently.
4489@item Handle mp3 id3tags hell...
4490@item Handle multiple covers, whether embedded and/or external, resize covers,
4491discard bad quality ones.
4492@end itemize\n")
4493 (license license:expat))))
e42ba3da
LF
4494
4495(define-public lpd8editor
4496 (package
4497 (name "lpd8editor")
83b9ba26 4498 (version "0.0.13")
e42ba3da
LF
4499 (source (origin
4500 (method git-fetch)
4501 (uri (git-reference
4502 (url "https://github.com/charlesfleche/lpd8editor.git")
4503 (commit (string-append "v" version))))
4504 (file-name (git-file-name name version))
4505 (sha256
4506 (base32
83b9ba26 4507 "0lsz3v493ilq2zr016m7kvymrplxd0n3pqv1pjglpq1h7sjw9764"))))
e42ba3da
LF
4508 (build-system gnu-build-system)
4509 (arguments
4510 '(#:phases
4511 (modify-phases %standard-phases
4512 (add-after 'unpack 'setenv
4513 (lambda _
4514 (setenv "INSTALL_PREFIX"
4515 (assoc-ref %outputs "out"))))
4516 (delete 'configure) ; no configure script
4517 (add-before 'build 'qmake
4518 (lambda _ (invoke "qmake"))))))
4519 (native-inputs
4520 `(("pkg-config" ,pkg-config)))
4521 (inputs
4522 `(("alsa" ,alsa-lib)
4523 ("qtbase" ,qtbase)
4524 ("qtsvg" ,qtsvg)))
4525 (synopsis "Graphical editor for the Akai LPD8 MIDI controller")
4526 (description "lpd8editor is a graphical patch editor for the Akai LPD8 MIDI
4527controller.")
4528 (home-page "https://github.com/charlesfleche/lpd8editor")
4529 (license license:expat)))
7fcc2f93 4530
4531(define-public fmit
4532 (package
4533 (name "fmit")
0ed0e3bf 4534 (version "1.2.13")
7fcc2f93 4535 (source (origin
4536 (method git-fetch)
4537 (uri (git-reference
4538 (url "https://github.com/gillesdegottex/fmit/")
4539 (commit (string-append "v" version))))
4540 (file-name (git-file-name name version))
4541 (sha256
4542 (base32
0ed0e3bf 4543 "1qyskam053pvlap1av80rgp12pzhr92rs88vqs6s0ia3ypnixcc6"))))
7fcc2f93 4544 (build-system gnu-build-system)
4545 (arguments
4546 '(#:phases
4547 (modify-phases %standard-phases
4548 (delete 'configure)
4549 (add-before 'build 'qmake
4550 (lambda _
4551 (let ((out (assoc-ref %outputs "out")))
4552 (invoke "qmake"
4553 "fmit.pro"
4554 (string-append "PREFIX=" out)
4555 (string-append "PREFIXSHORTCUT=" out)
4556 "CONFIG+=acs_qt acs_alsa acs_jack acs_portaudio"))))
4557 (add-after 'install 'wrap-executable
4558 (lambda* (#:key inputs outputs #:allow-other-keys)
4559 (let ((out (assoc-ref outputs "out")))
4560 (wrap-program (string-append out "/bin/fmit")
4561 `("QT_PLUGIN_PATH" ":" prefix
4562 ,(map (lambda (label)
4563 (string-append (assoc-ref inputs label)
4564 "/lib/qt5/plugins"))
4565 '("qtbase" "qtmultimedia" "qtsvg")))
4566 `("QML2_IMPORT_PATH" ":" prefix
4567 ,(map (lambda (label)
4568 (string-append (assoc-ref inputs label)
4569 "/lib/qt5/qml"))
4570 '("qtmultimedia"))))
4571 #t))))))
4572 (inputs
4573 `(("alsa-lib" ,alsa-lib)
4574 ("fftw" ,fftw)
4575 ("jack" ,jack-1)
4576 ("portaudio" ,portaudio)
4577 ("qtbase" ,qtbase)
4578 ("qtmultimedia" ,qtmultimedia)
4579 ("qtsvg" ,qtsvg)))
4580 (native-inputs
4581 `(("gettext" ,gnu-gettext)
4582 ("hicolor-icon-theme" ,hicolor-icon-theme)
4583 ("itstool" ,itstool)
4584 ("qttools" ,qttools)))
4585 (synopsis "Musical instrument tuner")
4586 (description "FMIT is a graphical utility for tuning musical instruments,
4587with error and volume history, and advanced features.")
4588 (home-page "https://gillesdegottex.github.io/fmit/")
4589 ;; Most of the code is under GPL2+, but some abstract or helper classes
4590 ;; are under LGPL2.1.
4591 (license (list license:gpl2+ license:lgpl2.1))))
f5870246
RW
4592
4593(define-public mloop
4594 (let ((commit "adebff98b0b4dc5872a03acb82e89c77cb29c127")
4595 (revision "0"))
4596 (package
4597 (name "mloop")
4598 (version (git-version "0.0.1" revision commit))
4599 (source (origin
4600 (method git-fetch)
4601 (uri (git-reference
4602 (url "http://git.fuzzle.org/mloop")
4603 (commit commit)))
4604 (file-name (git-file-name name version))
4605 (sha256
4606 (base32
4607 "175gxvg5slq0bllcx1c381rjlq3xpxww8c3kpiw5i2kfr4m52myz"))))
4608 (build-system waf-build-system)
4609 (arguments
4610 `(#:python ,python-2
4611 #:tests? #f)) ; no "check" target
4612 (inputs
4613 `(("jack" ,jack-1)
4614 ("ncurses" ,ncurses)))
4615 (native-inputs
4616 `(("pkg-config" ,pkg-config)))
4617 (home-page "https://fuzzle.org/~petern/mloop.html")
4618 (synopsis "Live MIDI looper")
4619 (description "mloop is a live MIDI looping system, using jack-midi.
4620Loops are recorded, optionally with beat quantization, and can then be played
4621back, either once or looping. A 'note cache' system is implemented to
4622remember which notes are pressed and their velocities. This allows for a loop
4623to start off with the currently pressed notes, making seamless loops much
4624easier to perform. Features include:
4625
4626@itemize
4627@item Quantisation; end a loop on a beat exactly.
4628@item Delayed recording; wait for a MIDI event before starting a loop record.
4629@item Adjust tempo; Playback speed of loops can be adjusted on the fly.
4630@end itemize\n")
4631 (license license:gpl2))))
0163b900
EB
4632
4633(define-public pragha
4634 (package
4635 (name "pragha")
4636 (version "1.3.4")
4637 (source (origin
4638 (method url-fetch)
4639 (uri (string-append "https://github.com/pragha-music-player/pragha/"
4640 "releases/download/v" version "/pragha-" version
4641 ".tar.bz2"))
4642 (sha256
4643 (base32
4644 "19kbhq99bkimx3aqrdzln0vlr4slkpx6kq66j731jvqyq76nlkp5"))))
4645 (build-system glib-or-gtk-build-system)
4646 (native-inputs
4647 `(("intltool" ,intltool)
4648 ("pkg-config" ,pkg-config)))
4649 (inputs
4650 `(("glib" ,glib)
4651 ("grilo" ,grilo)
4652 ("gstreamer" ,gstreamer)
4653 ("gst-plugins-base" ,gst-plugins-base)
4654 ("gst-plugins-good" ,gst-plugins-good)
4655 ("gtk+" ,gtk+)
4656 ("libcddb" ,libcddb)
4657 ("libcdio" ,libcdio)
4658 ("libcdio-paranoia" ,libcdio-paranoia)
4659 ("libgudev" ,libgudev)
4660 ("libnotify" ,libnotify)
4661 ("libpeas" ,libpeas)
4662 ("libsoup" ,libsoup)
4663 ("sqlite" ,sqlite)
4664 ("taglib" ,taglib)))
4665 (arguments
4666 `(#:phases
4667 (modify-phases %standard-phases
4668 (add-after 'install 'wrap-program
4669 (lambda* (#:key inputs outputs #:allow-other-keys)
4670 (let ((out (assoc-ref outputs "out"))
4671 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
4672 (wrap-program (string-append out "/bin/pragha")
4673 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path)))
4674 #t))))))
4675 (home-page "https://pragha-music-player.github.io")
4676 (synopsis "Music player")
4677 (description "Pragha is a lightweight music player based on Gtk and
4678sqlite. It is constructed to be fast, light, and simultaneously tries to be
4679complete without obstructing your daily work.")
4680 (license license:gpl3+)))
1c463524
DW
4681
4682(define-public playerctl
4683 (package
4684 (name "playerctl")
4685 (version "2.0.2")
4686 (source (origin
4687 (method git-fetch)
4688 (uri (git-reference
4689 (url "https://github.com/altdesktop/playerctl.git")
4690 (commit (string-append "v" version))))
4691 (file-name (git-file-name name version))
4692 (sha256
4693 (base32
4694 "1f3njnpd52djx3dmhh9a8p5a67f0jmr1gbk98icflr2q91149gjz"))))
4695 (build-system meson-build-system)
4696 (arguments
4697 `(#:configure-flags '("-Dintrospection=false" "-Dgtk-doc=false")))
4698 (inputs `(("python-pygobject" ,python-pygobject)))
4699 (native-inputs
4700 `(("glib:bin" ,glib "bin")
4701 ("pkg-config" ,pkg-config)))
4702 (synopsis "Control MPRIS-supporting media player applications")
4703 (description
4704 "Playerctl is a command-line utility and library for controlling media
4705players that implement the MPRIS D-Bus Interface Specification. Playerctl
4706makes it easy to bind player actions, such as play and pause, to media keys.
4707You can also get metadata about the playing track such as the artist and title
4708for integration into status line generators or other command-line tools.")
4709 (home-page "https://github.com/altdesktop/playerctl")
4710 (license license:lgpl3+)))