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