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