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