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