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