gnu: python-pandas: Fix build on 32-bit.
[jackhill/guix/guix.git] / gnu / packages / music.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
3 ;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
4 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
5 ;;; Copyright © 2016 Al McElrath <hello@yrns.org>
6 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
7 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
8 ;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
9 ;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net>
10 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
11 ;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net>
12 ;;;
13 ;;; This file is part of GNU Guix.
14 ;;;
15 ;;; GNU Guix is free software; you can redistribute it and/or modify it
16 ;;; under the terms of the GNU General Public License as published by
17 ;;; the Free Software Foundation; either version 3 of the License, or (at
18 ;;; your option) any later version.
19 ;;;
20 ;;; GNU Guix is distributed in the hope that it will be useful, but
21 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
22 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 ;;; GNU General Public License for more details.
24 ;;;
25 ;;; You should have received a copy of the GNU General Public License
26 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
27
28 (define-module (gnu packages music)
29 #:use-module (guix utils)
30 #:use-module (guix packages)
31 #:use-module (guix download)
32 #:use-module (guix git-download)
33 #:use-module ((guix licenses) #:prefix license:)
34 #:use-module (guix build-system gnu)
35 #:use-module (guix build-system ant)
36 #:use-module (guix build-system cmake)
37 #:use-module (guix build-system python)
38 #:use-module (guix build-system waf)
39 #:use-module (gnu packages)
40 #:use-module (gnu packages algebra)
41 #:use-module (gnu packages apr)
42 #:use-module (gnu packages audio)
43 #:use-module (gnu packages autotools)
44 #:use-module (gnu packages backup)
45 #:use-module (gnu packages base) ;libbdf
46 #:use-module (gnu packages bison)
47 #:use-module (gnu packages boost)
48 #:use-module (gnu packages cdrom)
49 #:use-module (gnu packages code)
50 #:use-module (gnu packages check)
51 #:use-module (gnu packages compression)
52 #:use-module (gnu packages curl)
53 #:use-module (gnu packages cyrus-sasl)
54 #:use-module (gnu packages docbook)
55 #:use-module (gnu packages documentation)
56 #:use-module (gnu packages emacs)
57 #:use-module (gnu packages file)
58 #:use-module (gnu packages flex)
59 #:use-module (gnu packages fltk)
60 #:use-module (gnu packages fonts)
61 #:use-module (gnu packages fontutils)
62 #:use-module (gnu packages freedesktop)
63 #:use-module (gnu packages gcc)
64 #:use-module (gnu packages gnupg)
65 #:use-module (gnu packages gettext)
66 #:use-module (gnu packages ghostscript)
67 #:use-module (gnu packages gl)
68 #:use-module (gnu packages glib)
69 #:use-module (gnu packages gnome)
70 #:use-module (gnu packages graphics)
71 #:use-module (gnu packages gtk)
72 #:use-module (gnu packages guile)
73 #:use-module (gnu packages image)
74 #:use-module (gnu packages imagemagick)
75 #:use-module (gnu packages java)
76 #:use-module (gnu packages linux) ; for alsa-utils
77 #:use-module (gnu packages libffi)
78 #:use-module (gnu packages llvm)
79 #:use-module (gnu packages man)
80 #:use-module (gnu packages mp3)
81 #:use-module (gnu packages mpd)
82 #:use-module (gnu packages ncurses)
83 #:use-module (gnu packages netpbm)
84 #:use-module (gnu packages pcre)
85 #:use-module (gnu packages pdf)
86 #:use-module (gnu packages perl)
87 #:use-module (gnu packages pkg-config)
88 #:use-module (gnu packages pulseaudio) ;libsndfile
89 #:use-module (gnu packages python)
90 #:use-module (gnu packages qt)
91 #:use-module (gnu packages rdf)
92 #:use-module (gnu packages readline)
93 #:use-module (gnu packages rsync)
94 #:use-module (gnu packages sdl)
95 #:use-module (gnu packages tcl)
96 #:use-module (gnu packages texinfo)
97 #:use-module (gnu packages tex)
98 #:use-module (gnu packages tls)
99 #:use-module (gnu packages video)
100 #:use-module (gnu packages web)
101 #:use-module (gnu packages wxwidgets)
102 #:use-module (gnu packages xml)
103 #:use-module (gnu packages xorg)
104 #:use-module (gnu packages xiph)
105 #:use-module (gnu packages zip)
106 #:use-module ((srfi srfi-1) #:select (last)))
107
108 (define-public aria-maestosa
109 (package
110 (name "aria-maestosa")
111 (version "1.4.11")
112 (source (origin
113 (method url-fetch)
114 (uri (string-append "mirror://sourceforge/ariamaestosa/ariamaestosa/"
115 version "/AriaSrc-" version ".tar.bz2"))
116 (sha256
117 (base32
118 "0gf9z96z83jiabxhpl856j15vl9flfgs6x1r0r6hc7g2xvwag0vy"))))
119 (build-system gnu-build-system)
120 (arguments
121 `(#:tests? #f ;no tests
122 #:phases
123 ;; TODO: Add scons-build-system and use it here.
124 (modify-phases %standard-phases
125 (delete 'configure)
126 (add-after 'unpack 'scons-propagate-environment
127 (lambda _
128 ;; By design, SCons does not, by default, propagate
129 ;; environment variables to subprocesses. See:
130 ;; <http://comments.gmane.org/gmane.linux.distributions.nixos/4969>
131 ;; Here, we modify the SConstruct file to arrange for
132 ;; environment variables to be propagated.
133 (substitute* "SConstruct"
134 (("env = Environment\\(\\)")
135 "env = Environment(ENV=os.environ)")
136 ;; Scons errors out when copying subdirectories from Resources,
137 ;; so we move them instead.
138 (("Copy") "Move")
139 ;; We move the "score" and "Documentation" directories at once,
140 ;; so we have to ignore files contained therein.
141 (("if \".svn\" in file" line)
142 (string-append line
143 " or \"score/\" in file"
144 " or \"Documentation/\" in file")))
145 #t))
146 (replace 'build (lambda _ (zero? (system* "scons"))))
147 (replace 'install
148 (lambda* (#:key outputs #:allow-other-keys)
149 (let ((out (assoc-ref outputs "out")))
150 (and
151 (zero? (system* "scons"
152 (string-append "prefix=" out)
153 "install"))
154 ;; Fix directory permissions
155 (begin
156 (chmod (string-append out "/share/Aria/Documentation") #o555)
157 (chmod (string-append out "/share/Aria/score") #o555)
158 #t))))))))
159 (inputs
160 `(("wxwidgets" ,wxwidgets)
161 ("glib" ,glib)
162 ("alsa-lib" ,alsa-lib)))
163 (native-inputs
164 `(("scons" ,scons)
165 ("pkg-config" ,pkg-config)))
166 (home-page "http://ariamaestosa.sourceforge.net/")
167 (synopsis "MIDI sequencer and editor")
168 (description
169 "Aria Maestosa is a MIDI sequencer and editor. It lets you compose, edit
170 and play MIDI files with a few clicks in a user-friendly interface offering
171 score, keyboard, guitar, drum and controller views.")
172 (license license:gpl3+)))
173
174 (define-public cmus
175 (package
176 (name "cmus")
177 (version "2.7.1")
178 (source (origin
179 (method url-fetch)
180 (uri (string-append
181 "https://github.com/" name "/" name "/archive/v"
182 version ".tar.gz"))
183 (file-name (string-append name "-" version ".tar.gz"))
184 (sha256
185 (base32
186 "0raixgjavkm7hxppzsc5zqbfbh2bhjcmbiplhnsxsmyj8flafyc1"))))
187 (build-system gnu-build-system)
188 (arguments
189 `(#:tests? #f ; cmus does not include tests
190 #:phases
191 (modify-phases %standard-phases
192 (replace
193 'configure
194 (lambda* (#:key outputs #:allow-other-keys)
195 (let ((out (assoc-ref outputs "out")))
196
197 ;; It's an idiosyncratic configure script that doesn't
198 ;; understand --prefix=..; it wants prefix=.. instead.
199 (zero?
200 (system* "./configure"
201 (string-append "prefix=" out)))))))))
202 ;; TODO: cmus optionally supports the following formats, which haven't yet
203 ;; been added to Guix:
204 ;;
205 ;; - Roar, libroar
206 ;;
207 ;; - DISCID_LIBS, apparently different from cd-discid which is included in
208 ;; Guix. See <http://sourceforge.net/projects/discid/>
209 (native-inputs
210 `(("pkg-config" ,pkg-config)))
211 (inputs
212 `(("alsa-lib" ,alsa-lib)
213 ("ao" ,ao)
214 ("ffmpeg" ,ffmpeg)
215 ("flac" ,flac)
216 ("jack" ,jack-1)
217 ("libcddb" ,libcddb)
218 ("libcdio-paranoia" ,libcdio-paranoia)
219 ("libcue" ,libcue)
220 ("libmad" ,libmad)
221 ("libmodplug" ,libmodplug)
222 ("libmpcdec" ,libmpcdec)
223 ("libsamplerate" ,libsamplerate)
224 ("libvorbis" ,libvorbis)
225 ("ncurses" ,ncurses)
226 ("opusfile" ,opusfile)
227 ("pulseaudio" ,pulseaudio)
228 ("wavpack" ,wavpack)))
229 (home-page "https://cmus.github.io/")
230 (synopsis "Small console music player")
231 (description "Cmus is a small and fast console music player. It supports
232 many input formats and provides a customisable Vi-style user interface.")
233 (license license:gpl2+)))
234
235 (define-public denemo
236 (package
237 (name "denemo")
238 (version "2.0.14")
239 (source (origin
240 (method url-fetch)
241 (uri (string-append "mirror://gnu/denemo/denemo-"
242 version ".tar.gz"))
243 (sha256
244 (base32
245 "1a7g38695g7jjypx25qp0dx0asrh72xwdj0mdhmb9pfyzlppq0wh"))))
246 (build-system gnu-build-system)
247 (arguments
248 `(#:phases
249 (modify-phases %standard-phases
250 (replace 'check
251 ;; Denemo's documentation says to use this command to run its
252 ;; testsuite.
253 (lambda _
254 (zero? (system* "make" "-C" "tests" "check"))))
255 (add-before 'build 'set-lilypond
256 ;; This phase sets the default path for lilypond to its current
257 ;; location in the store.
258 (lambda* (#:key inputs #:allow-other-keys)
259 (let* ((lilypond (string-append (assoc-ref inputs "lilypond")
260 "/bin/lilypond")))
261 (substitute* "src/core/prefops.c"
262 (("g_string_new \\(\"lilypond\"\\);")
263 (string-append "g_string_new (\""
264 lilypond
265 "\");"))))
266 #t))
267 (add-after 'install 'correct-filename
268 ;; "graft-derivation/shallow" from the (guix grafts) module runs in
269 ;; the C locale, expecting file names to be ASCII encoded. This
270 ;; phase renames a filename with a Unicode character in it to meet
271 ;; the aforementioned condition.
272 (lambda* (#:key outputs #:allow-other-keys)
273 (let* ((out (assoc-ref outputs "out")))
274 (chdir (string-append
275 out
276 "/share/denemo/templates/instruments/woodwind"))
277 (rename-file "Clarinet in B♭.denemo"
278 "Clarinet in Bb.denemo"))
279 #t)))))
280 (native-inputs
281 `(("glib:bin", glib "bin") ; for gtester
282 ("pkg-config" ,pkg-config)))
283 (inputs
284 `(("alsa-lib" ,alsa-lib)
285 ("aubio" ,aubio)
286 ("evince" ,evince)
287 ("fftw" ,fftw)
288 ("fluidsynth" ,fluidsynth)
289 ("glib" ,glib)
290 ("gtk+" ,gtk+)
291 ("gtk-doc" ,gtk-doc)
292 ("gtksourceview" ,gtksourceview)
293 ("guile" ,guile-2.0)
294 ("intltool" ,intltool)
295 ("librsvg" ,librsvg)
296 ("libsndfile" ,libsndfile)
297 ("libtool" ,libtool)
298 ("libxml2" ,libxml2)
299 ("lilypond", lilypond)
300 ("portaudio" ,portaudio)
301 ("portmidi" ,portmidi)
302 ("rubberband" ,rubberband)))
303 (synopsis "Graphical music notation, front-end to GNU Lilypond")
304 (description
305 "GNU Denemo is a music notation editor that provides a convenient
306 interface to the powerful music engraving program Lilypond. Music can be
307 typed in using the computer keyboard, played in using a MIDI keyboard, or
308 even input via a microphone connected to the sound card. The final product
309 is publication-quality music notation that is continuously generated in the
310 background while you work.")
311 (home-page "http://www.denemo.org")
312 (license license:gpl3+)))
313
314 (define-public hydrogen
315 (package
316 (name "hydrogen")
317 (version "0.9.7")
318 (source (origin
319 (method url-fetch)
320 (uri (string-append
321 "https://github.com/hydrogen-music/hydrogen/archive/"
322 version ".tar.gz"))
323 (sha256
324 (base32
325 "1dy2jfkdw0nchars4xi4isrz66fqn53a9qk13bqza7lhmsg3s3qy"))))
326 (build-system cmake-build-system)
327 (arguments
328 `(#:test-target "tests"))
329 (native-inputs
330 `(("cppunit" ,cppunit)
331 ("pkg-config" ,pkg-config)))
332 (inputs
333 `(("alsa-lib" ,alsa-lib)
334 ("jack" ,jack-1)
335 ;; ("ladspa" ,ladspa) ; cannot find during configure
336 ("lash" ,lash)
337 ("libarchive" ,libarchive)
338 ("libsndfile" ,libsndfile)
339 ("libtar" ,libtar)
340 ("lrdf" ,lrdf)
341 ("qt" ,qt-4)
342 ("zlib" ,zlib)))
343 (home-page "http://www.hydrogen-music.org")
344 (synopsis "Drum machine")
345 (description
346 "Hydrogen is an advanced drum machine for GNU/Linux. Its main goal is to
347 enable professional yet simple and intuitive pattern-based drum programming.")
348 (license license:gpl2+)))
349
350 (define-public extempore
351 (package
352 (name "extempore")
353 (version "0.7.0")
354 (source (origin
355 (method url-fetch)
356 (uri (string-append
357 "https://github.com/digego/extempore/archive/"
358 version ".tar.gz"))
359 (sha256
360 (base32
361 "1wap1mvsicrhlazikf7l8zxg37fir8bmnh9rin28m1rix730vcch"))
362 (file-name (string-append name "-" version ".tar.gz"))))
363 (build-system cmake-build-system)
364 (arguments
365 `(;; The default target also includes ahead-of-time compilation of the
366 ;; standard libraries. However, during the "install" phase this would
367 ;; happen *again* for unknown reasons. Hence we only build the
368 ;; extempore executable during the build phase.
369 #:make-flags '("extempore")
370 #:configure-flags '("-DJACK=ON"
371 ;; We want to distribute.
372 "-DIN_TREE=OFF"
373 ;; Don't download any dependencies.
374 "-DBUILD_DEPS=OFF")
375 #:modules ((ice-9 match)
376 (guix build cmake-build-system)
377 (guix build utils))
378 #:phases
379 (modify-phases %standard-phases
380 (add-after 'unpack 'patch-directories
381 (lambda* (#:key outputs #:allow-other-keys)
382 ;; Rewrite default path to runtime directory
383 (substitute* "src/Extempore.cpp"
384 (("runtimedir \\+= \"runtime\"")
385 (string-append "runtimedir = \""
386 (assoc-ref outputs "out")
387 "/lib/extempore/runtime\"")))
388 (substitute* "extras/extempore.el"
389 (("\\(runtime-directory \\(concat default-directory \"runtime\"\\)\\)")
390 (string-append "(runtime-directory \""
391 (assoc-ref outputs "out")
392 "/lib/extempore/runtime"
393 "\")")))
394 #t))
395 (add-after 'unpack 'link-with-additional-libs
396 (lambda _
397 ;; The executable must be linked with libffi and zlib.
398 (substitute* "CMakeLists.txt"
399 (("add_dependencies\\(aot_extended extended_deps\\)") "")
400 (("target_link_libraries\\(extempore PRIVATE dl" line)
401 (string-append line " ffi z")))
402 #t))
403 ;; FIXME: AOT compilation of the nanovg bindings fail with the error:
404 ;; "Compiler Error could not bind _nvgLinearGradient"
405 (add-after 'unpack 'disable-nanovg
406 (lambda _
407 (substitute* "CMakeLists.txt"
408 (("aotcompile_lib\\(libs/external/nanovg.xtm.*") ""))
409 #t))
410 ;; FIXME: All examples that are used as tests segfault for some
411 ;; unknown reason.
412 (add-after 'unpack 'disable-broken-tests
413 (lambda _
414 (substitute* "CMakeLists.txt"
415 (("extempore_add_example_as_test\\(.*") ""))
416 #t))
417 (add-after 'unpack 'hardcode-external-lib-paths
418 (lambda* (#:key inputs #:allow-other-keys)
419 (use-modules (ice-9 match))
420 (for-each
421 (match-lambda
422 ((file-name lib pkg-name)
423 (substitute* (string-append "libs/external/" file-name ".xtm")
424 ((lib) (string-append (assoc-ref inputs pkg-name)
425 "/lib/" lib)))))
426 '(("assimp" "libassimp.so" "assimp")
427 ("portmidi" "libportmidi.so" "portmidi")
428 ("sndfile" "libsndfile.so" "libsndfile")
429 ("fft" "libkiss_fft.so" "kiss-fft")
430 ("stb_image" "libstb_image.so" "stb-image")
431 ("nanovg" "libnanovg.so" "nanovg")
432 ("glext" "libGL.so" "mesa")
433 ("glfw3" "libglfw.so" "glfw")
434 ("gl/glcore-directbind" "libGL.so" "mesa")
435 ("gl/glcompat-directbind" "libGL.so" "mesa")))
436 #t))
437 (add-after 'unpack 'use-own-llvm
438 (lambda* (#:key inputs #:allow-other-keys)
439 (setenv "EXT_LLVM_DIR" (assoc-ref inputs "llvm"))
440 ;; Our LLVM builds shared libraries, so Extempore should use
441 ;; those.
442 (substitute* "CMakeLists.txt"
443 (("CMAKE_STATIC_LIBRARY") "CMAKE_SHARED_LIBRARY"))
444 #t))
445 (add-after 'unpack 'fix-aot-compilation
446 (lambda* (#:key outputs #:allow-other-keys)
447 (substitute* "CMakeLists.txt"
448 ;; EXT_SHARE_DIR does not exist before installation, so the
449 ;; working directory should be the source directory instead.
450 (("WORKING_DIRECTORY \\$\\{EXT_SHARE_DIR\\}")
451 "WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}")
452 ;; Extempore needs to be told where the runtime is to be found.
453 ;; While we're at it we disable automatic tuning for a specific
454 ;; CPU to make binary substitution possible.
455 (("COMMAND extempore" prefix)
456 (string-append prefix " --sharedir " (getcwd)
457 " --mcpu=generic --attr=none")))
458 #t)))))
459 (inputs
460 `(("llvm" ,llvm-for-extempore)
461 ("libffi" ,libffi)
462 ("jack" ,jack-1)
463 ("libsndfile" ,libsndfile)
464 ("glfw" ,glfw)
465 ("apr" ,apr)
466 ("stb-image" ,stb-image-for-extempore)
467 ("kiss-fft" ,kiss-fft-for-extempore)
468 ("nanovg" ,nanovg-for-extempore)
469 ("portmidi" ,portmidi-for-extempore)
470 ("assimp" ,assimp)
471 ("alsa-lib" ,alsa-lib)
472 ("portaudio" ,portaudio)
473 ("mesa" ,mesa)
474 ("pcre" ,pcre)
475 ("zlib" ,zlib)))
476 (native-inputs
477 `(("perl" ,perl)
478 ("emacs" ,emacs-no-x)))
479 ;; Extempore refuses to build on architectures other than x86_64
480 (supported-systems '("x86_64-linux"))
481 (home-page "http://benswift.me/extempore-docs/index.html")
482 (synopsis "Programming environment for live coding of multimedia")
483 (description
484 "Extempore is a programming language and runtime environment designed
485 with live programming in mind. It supports interactive programming in a REPL
486 style, compiling and binding code just-in-time. Although Extempore has its
487 roots in 'live coding' of audiovisual media art, it is suitable for any task
488 domain where dynamic run-time modifiability and good numerical performance are
489 required. Extempore also has strong timing and concurrency semantics, which
490 are helpful when working in problem spaces where timing is important (such as
491 audio and video).")
492 (license license:bsd-2)))
493
494 (define-public klick
495 (package
496 (name "klick")
497 (version "0.12.2")
498 (source (origin
499 (method url-fetch)
500 (uri (string-append "http://das.nasophon.de/download/klick-"
501 version ".tar.gz"))
502 (sha256
503 (base32
504 "0hmcaywnwzjci3pp4xpvbijnnwvibz7gf9xzcdjbdca910y5728j"))))
505 (build-system gnu-build-system)
506 (arguments
507 `(#:tests? #f ;no "check" target
508 #:phases
509 ;; TODO: Add scons-build-system and use it here.
510 (modify-phases %standard-phases
511 (delete 'configure)
512 (replace 'build
513 (lambda* (#:key inputs outputs #:allow-other-keys)
514 (let ((out (assoc-ref outputs "out")))
515 (mkdir-p out)
516 (zero? (system* "scons" (string-append "PREFIX=" out))))))
517 (replace 'install (lambda _ (zero? (system* "scons" "install")))))))
518 (inputs
519 `(("boost" ,boost)
520 ("jack" ,jack-1)
521 ("libsndfile" ,libsndfile)
522 ("libsamplerate" ,libsamplerate)
523 ("liblo" ,liblo)
524 ("rubberband" ,rubberband)))
525 (native-inputs
526 `(("scons" ,scons)
527 ("python" ,python-2)
528 ("pkg-config" ,pkg-config)))
529 (home-page "http://das.nasophon.de/klick/")
530 (synopsis "Metronome for JACK")
531 (description
532 "klick is an advanced command-line based metronome for JACK. It allows
533 you to define complex tempo maps for entire songs or performances.")
534 (license license:gpl2+)))
535
536 (define-public gtklick
537 (package
538 (name "gtklick")
539 (version "0.6.4")
540 (source (origin
541 (method url-fetch)
542 (uri (string-append "http://das.nasophon.de/download/gtklick-"
543 version ".tar.gz"))
544 (sha256
545 (base32
546 "0dq1km6njnzsqdqyf6wzir9g733z0mc9vmxfg2383k3c2a2di6bp"))))
547 (build-system python-build-system)
548 (arguments
549 `(#:tests? #f ; no tests
550 #:python ,python-2
551 #:phases
552 (modify-phases %standard-phases
553 (add-before 'build 'add-sitedirs
554 ;; .pth files are not automatically interpreted unless the
555 ;; directories containing them are added as "sites". The directories
556 ;; are then added to those in the PYTHONPATH. This is required for
557 ;; the operation of pygtk.
558 (lambda _
559 (substitute* "gtklick/gtklick.py"
560 (("import pygtk")
561 "import pygtk, site, sys
562 for path in [path for path in sys.path if 'site-packages' in path]: site.addsitedir(path)"))))
563 (add-after 'unpack 'inject-store-path-to-klick
564 (lambda* (#:key inputs #:allow-other-keys)
565 (substitute* "gtklick/klick_backend.py"
566 (("KLICK_PATH = 'klick'")
567 (string-append "KLICK_PATH = '"
568 (assoc-ref inputs "klick")
569 "/bin/klick'")))
570 #t)))))
571 (inputs
572 `(("klick" ,klick)
573 ("python2-pyliblo" ,python2-pyliblo)
574 ("python2-pygtk" ,python2-pygtk)))
575 (native-inputs
576 `(("gettext" ,gettext-minimal)))
577 (home-page "http://das.nasophon.de/gtklick/")
578 (synopsis "Simple metronome with an easy-to-use graphical interface")
579 (description
580 "Gtklick is a simple metronome with an easy-to-use graphical user
581 interface. It is implemented as a frontend to @code{klick}.")
582 (license license:gpl2+)))
583
584 (define-public lilypond
585 (package
586 (name "lilypond")
587 (version "2.19.51")
588 (source (origin
589 (method url-fetch)
590 (uri (string-append
591 "http://download.linuxaudio.org/lilypond/sources/v"
592 (version-major+minor version) "/"
593 name "-" version ".tar.gz"))
594 (sha256
595 (base32
596 "1b4jvc0fixbnp8x457fzk5wgb4zd03npwwivp60kc27fmv63w5l1"))))
597 (build-system gnu-build-system)
598 (arguments
599 `(#:tests? #f ; out-test/collated-files.html fails
600 #:out-of-source? #t
601 #:make-flags '("conf=www") ;to generate images for info manuals
602 #:configure-flags
603 (list "CONFIGURATION=www"
604 (string-append "--with-texgyre-dir="
605 (assoc-ref %build-inputs "font-tex-gyre")
606 "/share/fonts/opentype/"))
607 #:phases
608 (modify-phases %standard-phases
609 (add-after 'unpack 'fix-path-references
610 (lambda _
611 (substitute* "scm/backend-library.scm"
612 (("\\(search-executable '\\(\"gs\"\\)\\)")
613 (string-append "\"" (which "gs") "\""))
614 (("\"/bin/sh\"")
615 (string-append "\"" (which "sh") "\"")))
616 #t))
617 (add-before 'configure 'prepare-configuration
618 (lambda _
619 (substitute* "configure"
620 (("SHELL=/bin/sh") "SHELL=sh")
621 ;; When checking the fontforge version do not consider the
622 ;; version string that's part of the directory.
623 (("head -n") "tail -n"))
624 (setenv "out" "www")
625 (setenv "conf" "www")
626 #t))
627 (add-after 'install 'install-info
628 (lambda _
629 (zero? (system* "make"
630 "-j" (number->string (parallel-job-count))
631 "conf=www" "install-info")))))))
632 (inputs
633 `(("guile" ,guile-1.8)
634 ("font-dejavu" ,font-dejavu)
635 ("font-tex-gyre" ,font-tex-gyre)
636 ("fontconfig" ,fontconfig)
637 ("freetype" ,freetype)
638 ("ghostscript" ,ghostscript)
639 ("pango" ,pango)
640 ("python" ,python-2)))
641 (native-inputs
642 `(("bison" ,bison)
643 ("perl" ,perl)
644 ("flex" ,flex)
645 ("fontforge" ,fontforge)
646 ("dblatex" ,dblatex)
647 ("gettext" ,gettext-minimal)
648 ("imagemagick" ,imagemagick)
649 ("netpbm" ,netpbm) ;for pngtopnm
650 ("texlive" ,texlive) ;metafont and metapost
651 ("texinfo" ,texinfo)
652 ("texi2html" ,texi2html)
653 ("rsync" ,rsync)
654 ("pkg-config" ,pkg-config)
655 ("zip" ,zip)))
656 (home-page "http://www.lilypond.org/")
657 (synopsis "Music typesetting")
658 (description
659 "GNU LilyPond is a music typesetter, which produces high-quality sheet
660 music. Music is input in a text file containing control sequences which are
661 interpreted by LilyPond to produce the final document. It is extendable with
662 Guile.")
663 (license license:gpl3+)
664
665 ;; On armhf and mips64el, building the documentation sometimes leads to
666 ;; more than an hour of silence, so double the max silent time.
667 (properties `((max-silent-time . 7200)))))
668
669 (define-public non-sequencer
670 ;; The latest tagged release is three years old and uses a custom build
671 ;; system, so we take the last commit.
672 (let ((commit "a22f33f486a5c6f75b60e36f66504c036c0f6f8c")
673 (revision "2"))
674 (package
675 (name "non-sequencer")
676 (version (string-append "1.9.5-" revision "." (string-take commit 7)))
677 (source (origin
678 (method git-fetch)
679 (uri (git-reference
680 (url "git://git.tuxfamily.org/gitroot/non/non.git")
681 (commit commit)))
682 (sha256
683 (base32
684 "09q5x8i4f8mqnl8w6xnsq5zriy4bzdl4x2vq9n34a433rfrk84bg"))
685 (file-name (string-append name "-" version "-checkout"))))
686 (build-system waf-build-system)
687 (arguments
688 `(#:tests? #f ;no "check" target
689 #:configure-flags
690 (list "--project=sequencer"
691 ;; Disable the use of SSE unless on x86_64.
692 ,@(if (not (string-prefix? "x86_64" (or (%current-target-system)
693 (%current-system))))
694 '("--disable-sse")
695 '()))
696 #:phases
697 (modify-phases %standard-phases
698 (add-before
699 'configure 'set-flags
700 (lambda _
701 ;; Compile with C++11, required by libsigc++.
702 (setenv "CXXFLAGS" "-std=c++11")
703 #t)))
704 #:python ,python-2))
705 (inputs
706 `(("jack" ,jack-1)
707 ("libsigc++" ,libsigc++)
708 ("liblo" ,liblo)
709 ("ntk" ,ntk)))
710 (native-inputs
711 `(("pkg-config" ,pkg-config)))
712 (home-page "http://non.tuxfamily.org/wiki/Non%20Sequencer")
713 (synopsis "Pattern-based MIDI sequencer")
714 (description
715 "The Non Sequencer is a powerful, lightweight, real-time,
716 pattern-based MIDI sequencer. It utilizes the JACK Audio Connection Kit for
717 MIDI I/O and the NTK GUI toolkit for its user interface. Everything in Non
718 Sequencer happens on-line, in real-time. Music can be composed live, while the
719 transport is rolling.")
720 (license license:gpl2+))))
721
722 (define-public non-session-manager
723 (package (inherit non-sequencer)
724 (name "non-session-manager")
725 (arguments
726 (substitute-keyword-arguments (package-arguments non-sequencer)
727 ((#:configure-flags flags)
728 `(cons "--project=session-manager"
729 (delete "--project=sequencer" ,flags)))))
730 (inputs
731 `(("jack" ,jack-1)
732 ("liblo" ,liblo)
733 ("ntk" ,ntk)))
734 (native-inputs
735 `(("pkg-config" ,pkg-config)))
736 (home-page "http://non.tuxfamily.org/nsm/")
737 (synopsis "Audio session management")
738 (description
739 "The Non Session Manager is an API and an implementation for audio
740 session management. NSM clients use a well-specified OSC protocol to
741 communicate with the session management daemon.")
742 (license license:gpl2+)))
743
744 (define-public solfege
745 (package
746 (name "solfege")
747 (version "3.22.2")
748 (source (origin
749 (method url-fetch)
750 (uri (string-append
751 "mirror://gnu/solfege/solfege-"
752 version ".tar.xz"))
753 (sha256
754 (base32
755 "1w25rxdbj907nsx285k9nm480pvy12w3yknfh4n1dfv17cwy072i"))))
756 (build-system gnu-build-system)
757 (arguments
758 `(#:tests? #f ; xmllint attempts to download DTD
759 #:test-target "test"
760 #:phases
761 (alist-cons-after
762 'unpack 'fix-configuration
763 (lambda* (#:key inputs #:allow-other-keys)
764 (substitute* "default.config"
765 (("csound=csound")
766 (string-append "csound="
767 (assoc-ref inputs "csound")
768 "/bin/csound"))
769 (("/usr/bin/aplay")
770 (string-append (assoc-ref inputs "aplay")
771 "/bin/aplay"))
772 (("/usr/bin/timidity")
773 (string-append (assoc-ref inputs "timidity")
774 "/bin/timidity"))
775 (("/usr/bin/mpg123")
776 (string-append (assoc-ref inputs "mpg123")
777 "/bin/mpg123"))
778 (("/usr/bin/ogg123")
779 (string-append (assoc-ref inputs "ogg123")
780 "/bin/ogg123"))))
781 (alist-cons-before
782 'build 'patch-python-shebangs
783 (lambda _
784 ;; Two python scripts begin with a Unicode BOM, so patch-shebang
785 ;; has no effect.
786 (substitute* '("solfege/parsetree.py"
787 "solfege/presetup.py")
788 (("#!/usr/bin/python") (string-append "#!" (which "python")))))
789 (alist-cons-before
790 'build 'add-sitedirs
791 ;; .pth files are not automatically interpreted unless the
792 ;; directories containing them are added as "sites". The directories
793 ;; are then added to those in the PYTHONPATH. This is required for
794 ;; the operation of pygtk and pygobject.
795 (lambda _
796 (substitute* "run-solfege.py"
797 (("import os")
798 "import os, site
799 for path in [path for path in sys.path if 'site-packages' in path]: site.addsitedir(path)")))
800 (alist-cons-before
801 'build 'adjust-config-file-prefix
802 (lambda* (#:key outputs #:allow-other-keys)
803 (substitute* "run-solfege.py"
804 (("prefix = os.path.*$")
805 (string-append "prefix = " (assoc-ref outputs "out")))))
806 (alist-cons-after
807 'install 'wrap-program
808 (lambda* (#:key inputs outputs #:allow-other-keys)
809 ;; Make sure 'solfege' runs with the correct PYTHONPATH.
810 (let* ((out (assoc-ref outputs "out"))
811 (path (getenv "PYTHONPATH")))
812 (wrap-program (string-append out "/bin/solfege")
813 `("PYTHONPATH" ":" prefix (,path)))))
814 %standard-phases)))))))
815 (inputs
816 `(("python" ,python-2)
817 ("pygtk" ,python2-pygtk)
818 ("gettext" ,gettext-minimal)
819 ("gtk" ,gtk+)
820 ("lilypond" ,lilypond)
821 ;; players needed at runtime
822 ("aplay" ,alsa-utils)
823 ("csound" ,csound) ; optional, needed for some exercises
824 ("mpg123" ,mpg123)
825 ("ogg123" ,vorbis-tools)
826 ("timidity" ,timidity++)))
827 (native-inputs
828 `(("pkg-config" ,pkg-config)
829 ("txt2man" ,txt2man)
830 ("libxml2" ,libxml2) ; for tests
831 ("ghostscript" ,ghostscript)
832 ("texinfo" ,texinfo)))
833 (home-page "https://www.gnu.org/software/solfege/")
834 (synopsis "Ear training")
835 (description
836 "GNU Solfege is a program for practicing musical ear-training. With it,
837 you can practice your recognition of various musical intervals and chords. It
838 features a statistics overview so you can monitor your progress across several
839 sessions. Solfege is also designed to be extensible so you can easily write
840 your own lessons.")
841 (license license:gpl3+)))
842
843 (define-public powertabeditor
844 (package
845 (name "powertabeditor")
846 (version "2.0.0-alpha9")
847 (source (origin
848 (method url-fetch)
849 (uri (string-append
850 "https://github.com/powertab/powertabeditor/archive/"
851 version ".tar.gz"))
852 (file-name (string-append name "-" version ".tar.gz"))
853 (sha256
854 (base32
855 "1zjdz1qpkl83xr6dkap8airqcyjs3mxc5dzfyhrrvkyr7dics7ii"))
856 (modules '((guix build utils)))
857 (snippet
858 '(begin
859 ;; Remove bundled sources for external libraries
860 (delete-file-recursively "external")
861 ;; Use only system libraries
862 (substitute* "CMakeLists.txt"
863 (("include\\( PTE_ThirdParty \\)")
864 "\
865 include(third_party/Qt)
866 include(third_party/boost)
867 add_library( Catch INTERFACE IMPORTED )
868 add_library( rapidjson INTERFACE IMPORTED )"))
869 #t))))
870 (build-system cmake-build-system)
871 (arguments
872 `(#:modules ((guix build cmake-build-system)
873 (guix build utils)
874 (ice-9 match))
875 #:configure-flags
876 ;; CMake appears to lose the RUNPATH for some reason, so it has to be
877 ;; explicitly set with CMAKE_INSTALL_RPATH.
878 (list "-DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE"
879 (string-append "-DCMAKE_INSTALL_RPATH="
880 (string-join (map (match-lambda
881 ((name . directory)
882 (string-append directory "/lib")))
883 %build-inputs) ";"))
884 "-DPTE_DATA_DIR=share/powertabeditor")
885 #:phases
886 (modify-phases %standard-phases
887 (replace 'check
888 (lambda _
889 (zero? (system* "bin/pte_tests"
890 ;; FIXME: one test fails.
891 "exclude:Formats/PowerTabOldImport/Directions"))))
892 (add-after 'unpack 'set-target-directories
893 (lambda _
894 (substitute* "cmake/PTE_Executable.cmake"
895 (("set\\( install_dir.*")
896 "set( install_dir bin )\n"))
897 (substitute* "cmake/PTE_Paths.cmake"
898 (("set\\( PTE_DATA_DIR .*")
899 "set( PTE_DATA_DIR share/powertabeditor )\n"))
900 ;; Tests hardcode the data directory as "data"
901 (substitute* "test/CMakeLists.txt"
902 (("\\$\\{PTE_DATA_DIR\\}") "data"))
903 #t))
904 (add-before 'configure 'remove-third-party-libs
905 (lambda* (#:key inputs #:allow-other-keys)
906 ;; Link with required static libraries, because we're not
907 ;; using the bundled version of withershins.
908 (substitute* "source/build/CMakeLists.txt"
909 (("withershins" line)
910 (string-append line "\n"
911 (assoc-ref inputs "binutils")
912 "/lib/libbfd.a\n"
913 (assoc-ref inputs "libiberty")
914 "/lib/libiberty.a\n"
915 "dl\n"
916 "z\n")))
917 #t)))))
918 (inputs
919 `(("boost" ,boost)
920 ("alsa-lib" ,alsa-lib)
921 ("qtbase" ,qtbase)
922 ("withershins" ,withershins)
923 ("libiberty" ,libiberty) ;for withershins
924 ("binutils" ,binutils) ;for -lbfd and -liberty (for withershins)
925 ("timidity" ,timidity++)
926 ("pugixml" ,pugixml)
927 ("rtmidi" ,rtmidi)
928 ("rapidjson" ,rapidjson)
929 ("zlib" ,zlib)))
930 (native-inputs
931 `(("catch" ,catch-framework)
932 ("pkg-config" ,pkg-config)))
933 (home-page "http://powertabs.net")
934 (synopsis "Guitar tablature editor")
935 (description
936 "Power Tab Editor 2.0 is the successor to the famous original Power Tab
937 Editor. It is compatible with Power Tab Editor 1.7 and Guitar Pro.")
938 (license license:gpl3+)))
939
940 (define-public jalv-select
941 (package
942 (name "jalv-select")
943 (version "0.7")
944 (source (origin
945 (method url-fetch)
946 (uri (string-append "https://github.com/brummer10/jalv_select/"
947 "archive/V" version ".tar.gz"))
948 (sha256
949 (base32
950 "01y93l5c1f8za04a0y4b3v0nhsm1lhj6rny9xpdgd7jz6sl6w581"))))
951 (build-system gnu-build-system)
952 (arguments
953 `(#:make-flags
954 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
955 #:phases
956 (modify-phases %standard-phases
957 (delete 'configure)
958 (add-after 'unpack 'ignore-PATH
959 (lambda* (#:key inputs #:allow-other-keys)
960 (substitute* "jalv.select.cpp"
961 (("echo \\$PATH | tr ':' '\\\n' | xargs ls")
962 (string-append "ls -1 " (assoc-ref inputs "jalv") "/bin")))
963 (substitute* "jalv.select.h"
964 (("gtkmm.h") "gtkmm-2.4/gtkmm.h"))
965 #t)))))
966 (inputs
967 `(("lilv" ,lilv)
968 ("lv2" ,lv2)
969 ("jalv" ,jalv)
970 ("gtkmm" ,gtkmm-2)))
971 (native-inputs
972 `(("pkg-config" ,pkg-config)))
973 (home-page "https://github.com/brummer10/jalv_select")
974 (synopsis "GUI to select LV2 plugins and run them with jalv")
975 (description
976 "The jalv.select package provides a graphical user interface allowing
977 users to select LV2 plugins and run them with jalv.")
978 (license license:public-domain)))
979
980 (define-public synthv1
981 (package
982 (name "synthv1")
983 (version "0.8.0")
984 (source (origin
985 (method url-fetch)
986 (uri
987 (string-append "mirror://sourceforge/synthv1/synthv1/" version
988 "/synthv1-" version ".tar.gz"))
989 (sha256
990 (base32
991 "155pfyhr6d35ciw95pbxlqy7751cmij8j5d849rvblqbjzyzb5qx"))))
992 (build-system gnu-build-system)
993 (arguments
994 `(#:tests? #f ; There are no tests.
995 #:configure-flags
996 '("CXXFLAGS=-std=gnu++11")))
997 (inputs
998 `(("jack" ,jack-1)
999 ("lv2" ,lv2)
1000 ("alsa-lib" ,alsa-lib)
1001 ("liblo" ,liblo)
1002 ("qtbase" ,qtbase)
1003 ("qttools" ,qttools)))
1004 (home-page "http://synthv1.sourceforge.net")
1005 (synopsis "Polyphonic subtractive synthesizer")
1006 (description
1007 "Synthv1 is an old-school subtractive polyphonic synthesizer with four
1008 oscillators and stereo effects.")
1009 (license license:gpl2+)))
1010
1011 (define-public drumkv1
1012 (package
1013 (name "drumkv1")
1014 (version "0.8.0")
1015 (source (origin
1016 (method url-fetch)
1017 (uri
1018 (string-append "mirror://sourceforge/drumkv1/drumkv1/" version
1019 "/drumkv1-" version ".tar.gz"))
1020 (sha256
1021 (base32
1022 "1n2kd468kn71yp2asmamprvblmdlvh0zd8lsh3598dwi4b7aa3ga"))))
1023 (build-system gnu-build-system)
1024 (arguments
1025 `(#:tests? #f ; There are no tests.
1026 #:configure-flags
1027 '("CXXFLAGS=-std=gnu++11")))
1028 (inputs
1029 `(("jack" ,jack-1)
1030 ("lv2" ,lv2)
1031 ("libsndfile" ,libsndfile)
1032 ("alsa-lib" ,alsa-lib)
1033 ("liblo" ,liblo)
1034 ("qtbase" ,qtbase)))
1035 (native-inputs
1036 `(("pkg-config" ,pkg-config)
1037 ("qttools" ,qttools)))
1038 (home-page "http://drumkv1.sourceforge.net")
1039 (synopsis "Drum-kit sampler synthesizer with stereo effects")
1040 (description
1041 "Drumkv1 is an old-school drum-kit sampler synthesizer with stereo
1042 effects.")
1043 (license license:gpl2+)))
1044
1045 (define-public samplv1
1046 (package
1047 (name "samplv1")
1048 (version "0.8.0")
1049 (source (origin
1050 (method url-fetch)
1051 (uri
1052 (string-append "mirror://sourceforge/samplv1/samplv1/" version
1053 "/samplv1-" version ".tar.gz"))
1054 (sha256
1055 (base32
1056 "0j3hkmd9q0bw9b7nk9cssqywlrishkd1n790a9vq6gh3pdc5sf3r"))))
1057 (build-system gnu-build-system)
1058 (arguments
1059 `(#:tests? #f ; There are no tests.
1060 #:configure-flags
1061 '("CXXFLAGS=-std=gnu++11")))
1062 (inputs
1063 `(("jack" ,jack-1)
1064 ("lv2" ,lv2)
1065 ("libsndfile" ,libsndfile)
1066 ("alsa-lib" ,alsa-lib)
1067 ("liblo" ,liblo)
1068 ("qtbase" ,qtbase)))
1069 (native-inputs
1070 `(("pkg-config" ,pkg-config)
1071 ("qttools" ,qttools)))
1072 (home-page "http://samplv1.sourceforge.net")
1073 (synopsis "Polyphonic sampler synthesizer with stereo effects")
1074 (description
1075 "Samplv1 is an old-school polyphonic sampler synthesizer with stereo
1076 effects.")
1077 (license license:gpl2+)))
1078
1079 (define-public amsynth
1080 (package
1081 (name "amsynth")
1082 (version "1.6.4")
1083 (source
1084 (origin
1085 (method url-fetch)
1086 (uri (string-append "https://github.com/amsynth/amsynth/releases/"
1087 "download/release-" version
1088 "/amsynth-" version ".tar.bz2"))
1089 (sha256
1090 (base32
1091 "07dp9dl38g9krjqxxh89l2z42z08yzrl57cx95b1l67xnxwjp5k3"))))
1092 (build-system gnu-build-system)
1093 (arguments
1094 `(#:phases
1095 (modify-phases %standard-phases
1096 (add-before 'configure 'set-flags
1097 (lambda _
1098 ;; Compile with C++11, required by gtkmm.
1099 (setenv "CXXFLAGS" "-std=c++11")
1100 #t)))))
1101 (inputs
1102 `(("alsa-lib" ,alsa-lib)
1103 ("jack" ,jack-1)
1104 ("lv2" ,lv2)
1105 ("libsndfile" ,libsndfile)
1106 ("gtk+" ,gtk+-2)
1107 ("gtkmm" ,gtkmm-2)))
1108 (native-inputs
1109 `(("pkg-config" ,pkg-config)))
1110 (home-page "http://amsynth.github.io")
1111 (synopsis "Analog modeling synthesizer")
1112 (description
1113 "amsynth is an easy-to-use software synthesizer with a classic
1114 subtractive synthesizer topology. Its features include: dual
1115 oscillators (sine, saw, square, noise) with hard sync; 12 and 24 dB/oct
1116 resonant filters (low-pass, high-pass, band-pass, notch); mono, poly, legato
1117 keyboard modes; dual ADSR envelope generators for filter and amplitude; LFO
1118 which can modulate the oscillators, filter, and amplitude; distortion and
1119 reverb effects.")
1120 (license license:gpl2+)))
1121
1122 (define-public setbfree
1123 (package
1124 (name "setbfree")
1125 (version "0.8.1")
1126 (source (origin
1127 (method url-fetch)
1128 (uri
1129 (string-append "https://github.com/pantherb/setBfree/archive/v"
1130 version ".tar.gz"))
1131 (file-name (string-append name "-" version ".tar.gz"))
1132 (sha256
1133 (base32
1134 "0hj0rqk5yd4fzs7bwy6a6nhqgrmcggkjcr4il76rxy92r7nwabf3"))))
1135 (build-system gnu-build-system)
1136 (arguments
1137 `(#:tests? #f ; no "check" target
1138 #:make-flags
1139 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
1140 (string-append "FONTFILE="
1141 (assoc-ref %build-inputs "font-bitstream-vera")
1142 "/share/fonts/truetype/VeraBd.ttf")
1143 ;; Disable unsupported optimization flags on non-x86
1144 ,@(let ((system (or (%current-target-system)
1145 (%current-system))))
1146 (if (or (string-prefix? "x86_64" system)
1147 (string-prefix? "i686" system))
1148 '()
1149 '("OPTIMIZATIONS=-ffast-math -fomit-frame-pointer -O3"))))
1150 #:phases
1151 (modify-phases %standard-phases
1152 (add-before 'build 'set-CC-variable
1153 (lambda _ (setenv "CC" "gcc") #t))
1154 (delete 'configure))))
1155 (inputs
1156 `(("jack" ,jack-1)
1157 ("lv2" ,lv2)
1158 ("zita-convolver" ,zita-convolver)
1159 ("glu" ,glu)
1160 ("ftgl" ,ftgl)
1161 ("font-bitstream-vera" ,font-bitstream-vera)))
1162 (native-inputs
1163 `(("help2man" ,help2man)
1164 ("pkg-config" ,pkg-config)))
1165 (home-page "http://setbfree.org")
1166 (synopsis "Tonewheel organ")
1167 (description
1168 "setBfree is a MIDI-controlled, software synthesizer designed to imitate
1169 the sound and properties of the electromechanical organs and sound
1170 modification devices that brought world-wide fame to the names and products of
1171 Laurens Hammond and Don Leslie.")
1172 (license license:gpl2+)))
1173
1174 (define-public beast
1175 (package
1176 (name "beast")
1177 (version "0.10.0")
1178 (source (origin
1179 (method url-fetch)
1180 (uri (string-append "https://testbit.eu/pub/dists/beast/beast-"
1181 version ".tar.xz"))
1182 (sha256
1183 (base32
1184 "1jzzmfwssklzw8fvvil04n8csc0zm99fnd9p2xa7c0xchg37lvhn"))))
1185 (build-system gnu-build-system)
1186 (arguments
1187 '(#:parallel-build? #f)) ; Race conditions cause build failures
1188 (inputs
1189 `(("rapicorn" ,rapicorn)
1190 ("guile" ,guile-1.8)
1191 ("python" ,python-2)
1192 ("libgnomecanvas" ,libgnomecanvas)
1193 ("libogg" ,libogg)
1194 ("libmad" ,libmad)
1195 ("flac" ,flac)
1196 ("alsa-lib" ,alsa-lib)
1197 ("libvorbis" ,libvorbis)
1198 ("gettext" ,gettext-minimal)))
1199 (native-inputs
1200 `(("pkg-config" ,pkg-config)
1201 ("glib:bin" ,glib "bin")
1202 ("cython" ,python2-cython)
1203 ("perl" ,perl)
1204 ("perl-xml-parser" ,perl-xml-parser)))
1205 (home-page "https://testbit.eu/wiki/Beast_Home")
1206 (synopsis "Music composition and modular synthesis environment")
1207 (description
1208 "Beast is a music composition and modular synthesis application. It
1209 supports a wide range of standards in the field, such as MIDI, various audio
1210 file formats and LADSPA modules. It allows for multitrack editing, real-time
1211 synthesis, 32bit audio rendering, precise timing down to sample granularity,
1212 on-demand and partial loading of wave files, on the fly decoding, stereo
1213 mixing, FFT scopes, MIDI automation and full scriptability in Scheme.")
1214 (license license:gpl3+)))
1215
1216 (define-public bristol
1217 (package
1218 (name "bristol")
1219 (version "0.60.11")
1220 (source (origin
1221 (method url-fetch)
1222 (uri (string-append "mirror://sourceforge/bristol/bristol/"
1223 (version-major+minor version)
1224 "/bristol-" version ".tar.gz"))
1225 (sha256
1226 (base32
1227 "1fi2m4gmvxdi260821y09lxsimq82yv4k5bbgk3kyc3x1nyhn7vx"))))
1228 (build-system gnu-build-system)
1229 (arguments
1230 `(#:phases
1231 (modify-phases %standard-phases
1232 (add-after 'unpack 'remove-sse-flags
1233 (lambda* (#:key system #:allow-other-keys)
1234 (when (not (or (string-prefix? "x86_64" system)
1235 (string-prefix? "i686" system)))
1236 (substitute* "bristol/Makefile.in"
1237 (("-msse -mfpmath=sse") "")))
1238 #t))
1239 ;; We know that Bristol has been linked with JACK and we don't have
1240 ;; ldd, so we can just skip this check.
1241 (add-after 'unpack 'do-not-grep-for-jack
1242 (lambda _
1243 (substitute* "bin/startBristol.in"
1244 (("ldd `which bristol` | grep jack") "echo guix"))
1245 #t)))))
1246 (inputs
1247 `(("alsa-lib" ,alsa-lib)
1248 ("jack" ,jack-1)
1249 ("liblo" ,liblo)
1250 ("libx11" ,libx11)))
1251 (native-inputs
1252 `(("pkg-config" ,pkg-config)))
1253 (home-page "http://bristol.sourceforge.net/")
1254 (synopsis "Synthesizer emulator")
1255 (description
1256 "Bristol is an emulation package for a number of different 'classic'
1257 synthesizers including additive and subtractive and a few organs. The
1258 application consists of the engine, which is called bristol, and its own GUI
1259 library called brighton that represents all the emulations. There are
1260 currently more than twenty different emulations; each does sound different
1261 although the author maintains that the quality and accuracy of each emulation
1262 is subjective.")
1263 (license license:gpl3+)))
1264
1265 (define-public tuxguitar
1266 (package
1267 (name "tuxguitar")
1268 (version "1.3.2")
1269 (source (origin
1270 (method url-fetch)
1271 (uri (string-append
1272 "mirror://sourceforge/tuxguitar/TuxGuitar/TuxGuitar-"
1273 version "/tuxguitar-" version "-src.tar.gz"))
1274 (sha256
1275 (base32
1276 "0ldml31zvywid1w28mfd65ramyiics55fdl0ch846vm7j7nwv58j"))
1277 (modules '((guix build utils)))
1278 (snippet
1279 ;; Delete pre-built classes
1280 '(delete-file-recursively "TuxGuitar-android/bin"))))
1281 (build-system ant-build-system)
1282 (arguments
1283 `(#:build-target "build"
1284 #:tests? #f ; no tests
1285 #:phases
1286 (modify-phases %standard-phases
1287 (add-after 'unpack 'enter-dir
1288 (lambda _ (chdir "TuxGuitar-lib") #t))
1289 (add-after 'build 'build-editor-utils
1290 (lambda* (#:key inputs outputs #:allow-other-keys)
1291 (chdir "..")
1292 (let ((cwd (getcwd)))
1293 (setenv "CLASSPATH"
1294 (string-append
1295 cwd "/TuxGuitar-lib/tuxguitar-lib.jar" ":"
1296 cwd "/TuxGuitar-editor-utils/build/jar/tuxguitar-editor-utils.jar" ":"
1297 (getenv "CLASSPATH"))))
1298 (chdir "TuxGuitar-editor-utils")
1299 ;; Generate default build.xml
1300 ((@@ (guix build ant-build-system) default-build.xml)
1301 "tuxguitar-editor-utils.jar"
1302 (string-append (assoc-ref outputs "out")
1303 "/share/java"))
1304 ((assoc-ref %standard-phases 'build))))
1305 (add-after 'build-editor-utils 'build-application
1306 (lambda _
1307 (chdir "../TuxGuitar")
1308 ((assoc-ref %standard-phases 'build)
1309 #:build-target "build")))
1310 (replace 'install
1311 (lambda* (#:key inputs outputs #:allow-other-keys)
1312 (let* ((out (assoc-ref outputs "out"))
1313 (bin (string-append out "/bin"))
1314 (share (string-append out "/share"))
1315 (lib (string-append share "/java"))
1316 (swt (assoc-ref inputs "java-swt")))
1317 (mkdir-p bin)
1318 ;; install all jars
1319 (for-each (lambda (file)
1320 (install-file file lib))
1321 (find-files ".." "\\.jar$"))
1322 ;; install all resources
1323 (for-each (lambda (file)
1324 (install-file file share))
1325 (find-files "share" ".*"))
1326 ;; create wrapper
1327 (call-with-output-file (string-append bin "/tuxguitar")
1328 (lambda (port)
1329 (let ((classpath (string-join (append (find-files lib "\\.jar$")
1330 (find-files swt "\\.jar$"))
1331 ":")))
1332 (format
1333 port
1334 (string-append "#!/bin/sh\n"
1335 (which "java")
1336 " -cp " classpath
1337 " -Dtuxguitar.home.path=" out
1338 " -Dtuxguitar.share.path=" out "/share"
1339 " -Dswt.library.path=" swt "/lib"
1340 " org.herac.tuxguitar.app.TGMainSingleton"
1341 " \"$1\" \"$2\"")))))
1342 (chmod (string-append bin "/tuxguitar") #o555)
1343 #t))))))
1344 (inputs
1345 `(("java-swt" ,java-swt)))
1346 (home-page "http://tuxguitar.com.ar")
1347 (synopsis "Multitrack tablature editor and player")
1348 (description
1349 "TuxGuitar is a guitar tablature editor with player support through midi.
1350 It can display scores and multitrack tabs. TuxGuitar provides various
1351 additional features, including autoscrolling while playing, note duration
1352 management, bend/slide/vibrato/hammer-on/pull-off effects, support for
1353 tuplets, time signature management, tempo management, gp3/gp4/gp5 import and
1354 export.")
1355 (license license:lgpl2.1+)))
1356
1357 (define-public pd
1358 (package
1359 (name "pd")
1360 (version "0.45.4")
1361 (source (origin
1362 (method url-fetch)
1363 (uri
1364 (string-append "mirror://sourceforge/pure-data/pure-data/"
1365 version "/pd-" (version-major+minor version)
1366 "-" (last (string-split version #\.))
1367 ".src.tar.gz"))
1368 (sha256
1369 (base32
1370 "1ls2ap5yi2zxvmr247621g4jx0hhfds4j5704a050bn2n3l0va2p"))))
1371 (build-system gnu-build-system)
1372 (arguments
1373 `(#:tests? #f ; no "check" target
1374 #:phases
1375 (modify-phases %standard-phases
1376 (add-before
1377 'configure 'fix-wish-path
1378 (lambda _
1379 (substitute* "src/s_inter.c"
1380 ((" wish ") (string-append " " (which "wish8.6") " ")))
1381 (substitute* "tcl/pd-gui.tcl"
1382 (("exec wish ") (string-append "exec " (which "wish8.6") " ")))
1383 #t))
1384 (add-after
1385 'unpack 'autoconf
1386 (lambda _ (zero? (system* "autoreconf" "-vfi")))))))
1387 (native-inputs
1388 `(("autoconf" ,autoconf)
1389 ("automake" ,automake)
1390 ("libtool" ,libtool)
1391 ("gettext" ,gettext-minimal)
1392 ("pkg-config" ,pkg-config)))
1393 (inputs
1394 `(("tk" ,tk)
1395 ("alsa-lib" ,alsa-lib)
1396 ("jack" ,jack-1)))
1397 (home-page "http://puredata.info")
1398 (synopsis "Visual programming language for artistic performances")
1399 (description
1400 "Pure Data (aka Pd) is a visual programming language. Pd enables
1401 musicians, visual artists, performers, researchers, and developers to create
1402 software graphically, without writing lines of code. Pd is used to process
1403 and generate sound, video, 2D/3D graphics, and interface sensors, input
1404 devices, and MIDI. Pd can easily work over local and remote networks to
1405 integrate wearable technology, motor systems, lighting rigs, and other
1406 equipment. Pd is suitable for learning basic multimedia processing and visual
1407 programming methods as well as for realizing complex systems for large-scale
1408 projects.")
1409 (license license:bsd-3)))
1410
1411 (define-public portmidi
1412 (package
1413 (name "portmidi")
1414 (version "217")
1415 (source (origin
1416 (method url-fetch)
1417 (uri (string-append "mirror://sourceforge/portmedia/portmidi/"
1418 version "/portmidi-src-" version ".zip"))
1419 (sha256
1420 (base32
1421 "03rfsk7z6rdahq2ihy5k13qjzgx757f75yqka88v3gc0pn9ais88"))
1422 (patches (list (search-patch "portmidi-modular-build.patch")))))
1423 (build-system cmake-build-system)
1424 (arguments
1425 `(#:tests? #f ; tests cannot be linked
1426 #:configure-flags
1427 (list "-DPORTMIDI_ENABLE_JAVA=Off"
1428 "-DCMAKE_BUILD_TYPE=Release" ; needed to have PMALSA set
1429 "-DPORTMIDI_ENABLE_TEST=Off"))) ; tests fail linking
1430 (inputs
1431 `(("alsa-lib" ,alsa-lib)))
1432 (native-inputs
1433 `(("unzip" ,unzip)))
1434 (home-page "http://portmedia.sourceforge.net/portmidi/")
1435 (synopsis "Library for MIDI I/O")
1436 (description
1437 "PortMidi is a library supporting real-time input and output of MIDI data
1438 using a system-independent interface.")
1439 (license license:expat)))
1440
1441 (define-public portmidi-for-extempore
1442 (package (inherit portmidi)
1443 (name "portmidi-for-extempore")
1444 (version "217")
1445 (source (origin
1446 (method url-fetch)
1447 (uri (string-append "https://github.com/extemporelang/portmidi/"
1448 "archive/" version ".tar.gz"))
1449 (file-name (string-append name "-" version ".tar.gz"))
1450 (sha256
1451 (base32
1452 "0gjikwciyr8kk4y3qiv1pcq58xpgw38ql1m2gs6g0qc1s8sx4235"))))
1453 (build-system cmake-build-system)
1454 (arguments `(#:tests? #f)) ; no tests
1455 (native-inputs '())
1456 ;; Extempore refuses to build on architectures other than x86_64
1457 (supported-systems '("x86_64-linux"))
1458 (home-page "https://github.com/extemporelang/portmidi/")))
1459
1460 (define-public python-pyportmidi
1461 (package
1462 (name "python-pyportmidi")
1463 (version (package-version portmidi))
1464 (source (package-source portmidi))
1465 (build-system python-build-system)
1466 (arguments
1467 `(#:tests? #f ; no tests included
1468 #:phases
1469 (modify-phases %standard-phases
1470 (add-after 'unpack 'enter-dir
1471 (lambda _ (chdir "pm_python") #t))
1472 (add-after 'enter-dir 'fix-setup.py
1473 (lambda _
1474 (substitute* "setup.py"
1475 ;; Use Python 3 syntax
1476 (("print (\".*\")" _ text)
1477 (string-append "print(" text ")\n"))
1478 ;; TODO.txt and CHANGES.txt don't exist
1479 (("CHANGES =.*") "CHANGES = \"\"\n")
1480 (("TODO =.*") "TODO = \"\"\n"))
1481 #t)))))
1482 (inputs
1483 `(("portmidi" ,portmidi)
1484 ("alsa-lib" ,alsa-lib)))
1485 (native-inputs
1486 `(("python-cython" ,python-cython)
1487 ("unzip" ,unzip)))
1488 (home-page "http://portmedia.sourceforge.net/portmidi/")
1489 (synopsis "Python bindings to PortMidi")
1490 (description
1491 "This package provides Python bindings to the PortMidi library.")
1492 (license license:expat)))
1493
1494 (define-public frescobaldi
1495 (package
1496 (name "frescobaldi")
1497 (version "2.19.0")
1498 (source (origin
1499 (method url-fetch)
1500 (uri (string-append
1501 "https://github.com/wbsoft/frescobaldi/releases/download/v"
1502 version "/frescobaldi-" version ".tar.gz"))
1503 (sha256
1504 (base32
1505 "1rnk8i8dlshzx16n2qxcsqcs7kywgyazzyzw2vy4vp2gsm9vs9ml"))))
1506 (build-system python-build-system)
1507 (arguments `(#:tests? #f)) ; no tests included
1508 (inputs
1509 `(("lilypond" ,lilypond)
1510 ("portmidi" ,portmidi)
1511 ("python-pyqt-4" ,python-pyqt-4)
1512 ("python-ly" ,python-ly)
1513 ("python-pyportmidi" ,python-pyportmidi)
1514 ("poppler" ,poppler)
1515 ("python-poppler-qt4" ,python-poppler-qt4)
1516 ("python-sip" ,python-sip)))
1517 (home-page "http://www.frescobaldi.org/")
1518 (synopsis "LilyPond sheet music text editor")
1519 (description
1520 "Frescobaldi is a LilyPond sheet music text editor with syntax
1521 highlighting and automatic completion. Among other things, it can render
1522 scores next to the source, can capture input from MIDI or read MusicXML and
1523 ABC files, has a MIDI player for proof-listening, and includes a documentation
1524 browser.")
1525 (license license:gpl2+)))
1526
1527 (define-public drumstick
1528 (package
1529 (name "drumstick")
1530 (version "1.1.0")
1531 (source (origin
1532 (method url-fetch)
1533 (uri (string-append "mirror://sourceforge/drumstick/"
1534 version "/drumstick-" version ".tar.bz2"))
1535 (sha256
1536 (base32
1537 "13pkfqrav30bbcddgf1imd7jk6lpqbxkz1qv31718pdl446jq7df"))))
1538 (build-system cmake-build-system)
1539 (arguments
1540 `(#:tests? #f ; no test target
1541 #:configure-flags '("-DLIB_SUFFIX=")
1542 #:phases
1543 (modify-phases %standard-phases
1544 (add-before 'configure 'fix-docbook
1545 (lambda* (#:key inputs #:allow-other-keys)
1546 (substitute* "cmake_admin/CreateManpages.cmake"
1547 (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
1548 (string-append (assoc-ref inputs "docbook-xsl")
1549 "/xml/xsl/docbook-xsl-"
1550 ,(package-version docbook-xsl)
1551 "/manpages/docbook.xsl")))
1552 #t)))))
1553 (inputs
1554 `(("qtbase" ,qtbase)
1555 ("qtsvg" ,qtsvg)
1556 ("alsa-lib" ,alsa-lib)
1557 ("fluidsynth" ,fluidsynth)))
1558 (native-inputs
1559 `(("pkg-config" ,pkg-config)
1560 ("libxslt" ,libxslt) ;for xsltproc
1561 ("docbook-xsl" ,docbook-xsl)
1562 ("doxygen" ,doxygen)))
1563 (home-page "http://drumstick.sourceforge.net/")
1564 (synopsis "C++ MIDI library")
1565 (description
1566 "Drumstick is a set of MIDI libraries using C++/Qt5 idioms and style. It
1567 includes a C++ wrapper around the ALSA library sequencer interface. A
1568 complementary library provides classes for processing SMF (Standard MIDI
1569 files: .MID/.KAR), Cakewalk (.WRK), and Overture (.OVE) file formats. A
1570 multiplatform realtime MIDI I/O library is also provided with various output
1571 backends, including ALSA, OSS, Network and FluidSynth.")
1572 (license license:gpl2+)))
1573
1574 (define-public zynaddsubfx
1575 (package
1576 (name "zynaddsubfx")
1577 (version "3.0.1")
1578 (source (origin
1579 (method url-fetch)
1580 (uri (string-append
1581 "mirror://sourceforge/zynaddsubfx/zynaddsubfx/"
1582 version "/zynaddsubfx-" version ".tar.bz2"))
1583 (sha256
1584 (base32
1585 "1qijvlbv41lnqaqbp6gh1i42xzf1syviyxz8wr39xbz55cw7y0d8"))))
1586 (build-system cmake-build-system)
1587 (arguments
1588 `(#:phases
1589 (modify-phases %standard-phases
1590 ;; Move SSE compiler optimization flags from generic target to
1591 ;; athlon64 and core2 targets, because otherwise the build would fail
1592 ;; on non-Intel machines.
1593 (add-after 'unpack 'remove-sse-flags-from-generic-target
1594 (lambda _
1595 (substitute* "src/CMakeLists.txt"
1596 (("-msse -msse2 -mfpmath=sse") "")
1597 (("-march=(athlon64|core2)" flag)
1598 (string-append flag " -msse -msse2 -mfpmath=sse")))
1599 #t)))))
1600 (inputs
1601 `(("liblo" ,liblo)
1602 ("ntk" ,ntk)
1603 ("mesa" ,mesa)
1604 ("alsa-lib" ,alsa-lib)
1605 ("jack" ,jack-1)
1606 ("fftw" ,fftw)
1607 ("minixml" ,minixml)
1608 ("libxpm" ,libxpm)
1609 ("zlib" ,zlib)))
1610 (native-inputs
1611 `(("pkg-config" ,pkg-config)))
1612 (home-page "http://zynaddsubfx.sf.net/")
1613 (synopsis "Software synthesizer")
1614 (description
1615 "ZynAddSubFX is a feature heavy realtime software synthesizer. It offers
1616 three synthesizer engines, multitimbral and polyphonic synths, microtonal
1617 capabilities, custom envelopes, effects, etc.")
1618 (license license:gpl2)))
1619
1620 (define-public yoshimi
1621 (package
1622 (name "yoshimi")
1623 (version "1.5.0")
1624 (source (origin
1625 (method url-fetch)
1626 (uri (string-append "mirror://sourceforge/yoshimi/"
1627 (version-major+minor version)
1628 "/yoshimi-" version ".tar.bz2"))
1629 (sha256
1630 (base32
1631 "10s1i18xlmvqfrnr0zn2mj2b28i7p62dlqzzzkmpaapqj1gsgpz5"))))
1632 (build-system cmake-build-system)
1633 (arguments
1634 `(#:tests? #f ; there are no tests
1635 #:configure-flags
1636 (list (string-append "-DCMAKE_INSTALL_DATAROOTDIR="
1637 (assoc-ref %outputs "out") "/share"))
1638 #:phases
1639 (modify-phases %standard-phases
1640 (add-before 'configure 'enter-dir
1641 (lambda _ (chdir "src") #t))
1642 ;; Move SSE compiler optimization flags from generic target to
1643 ;; athlon64 and core2 targets, because otherwise the build would fail
1644 ;; on non-Intel machines.
1645 (add-after 'unpack 'remove-sse-flags-from-generic-target
1646 (lambda _
1647 (substitute* "src/CMakeLists.txt"
1648 (("-msse -msse2 -mfpmath=sse") "")
1649 (("-march=(athlon64|core2)" flag)
1650 (string-append flag " -msse -msse2 -mfpmath=sse")))
1651 #t))
1652 ;; Yoshimi tries to find ncurses with pkg-config, but our ncurses
1653 ;; package does not install .pc files.
1654 (add-after 'unpack 'find-ncurses
1655 (lambda _
1656 (substitute* "src/CMakeLists.txt"
1657 (("LIBNCURSES REQUIRED") "LIBNCURSES")
1658 (("NCURSES REQUIRED") "NCURSES")
1659 (("FATAL_ERROR \"libncurses") "STATUS \"libncurses")
1660 (("\\$\\{NCURSES_LIBRARIES\\}") "ncurses"))
1661 #t)))))
1662 (inputs
1663 `(("boost" ,boost)
1664 ("fftwf" ,fftwf)
1665 ("alsa-lib" ,alsa-lib)
1666 ("jack" ,jack-1)
1667 ("fontconfig" ,fontconfig)
1668 ("minixml" ,minixml)
1669 ("mesa" ,mesa)
1670 ("fltk" ,fltk)
1671 ("lv2" ,lv2)
1672 ("readline" ,readline)
1673 ("ncurses" ,ncurses)
1674 ("cairo" ,cairo)
1675 ("zlib" ,zlib)))
1676 (native-inputs
1677 `(("pkg-config" ,pkg-config)))
1678 (home-page "http://yoshimi.sourceforge.net/")
1679 (synopsis "Multi-paradigm software synthesizer")
1680 (description
1681 "Yoshimi is a fork of ZynAddSubFX, a feature heavy realtime software
1682 synthesizer. It offers three synthesizer engines, multitimbral and polyphonic
1683 synths, microtonal capabilities, custom envelopes, effects, etc. Yoshimi
1684 improves on support for JACK features, such as JACK MIDI.")
1685 (license license:gpl2)))
1686
1687 (define-public libgig
1688 (package
1689 (name "libgig")
1690 (version "4.0.0")
1691 (source (origin
1692 (method url-fetch)
1693 (uri (string-append "http://download.linuxsampler.org/packages/"
1694 "libgig-" version ".tar.bz2"))
1695 (sha256
1696 (base32
1697 "1wr8mwjmqpnyz6bx9757lspiii1zzn8zfbqsvn2ipzpgqkxv6kaz"))))
1698 (build-system gnu-build-system)
1699 (inputs
1700 `(("libuuid" ,util-linux)
1701 ("libsndfile" ,libsndfile)))
1702 (native-inputs
1703 `(("pkg-config" ,pkg-config)))
1704 (home-page "http://linuxsampler.org/libgig/")
1705 (synopsis "C++ library for working with Gigasampler (.gig) files")
1706 (description
1707 "Libgig is a C++ library for loading, modifying existing and creating new
1708 Gigasampler (.gig) files and DLS (Downloadable Sounds) Level 1/2 files, KORG
1709 sample based instruments (.KSF and .KMP files), SoundFont v2 (.sf2) files and
1710 AKAI sampler data. The package includes a couple of command line tools based
1711 on the library.")
1712 ;; The library and tools are released under the GPL, except the AKAI
1713 ;; classes which are released under the LGPL.
1714 (license (list license:gpl2+ license:lgpl2.1+))))
1715
1716 (define-public jack-keyboard
1717 (package
1718 (name "jack-keyboard")
1719 (version "2.5")
1720 (source
1721 (origin
1722 (method url-fetch)
1723 (uri (string-append "mirror://sourceforge/jack-keyboard/jack-keyboard/"
1724 version "/jack-keyboard-" version ".tar.gz"))
1725 (sha256
1726 (base32
1727 "0mzmg8aavybcfdlq2yd9d0vscqd6is5p6jzrgfpfm5j3xdcvh2s3"))))
1728 (build-system gnu-build-system)
1729 (inputs
1730 `(("jack" ,jack-1)
1731 ("lash" ,lash)
1732 ("gtk+" ,gtk+-2)))
1733 (native-inputs
1734 `(("pkg-config" ,pkg-config)))
1735 (home-page "http://jack-keyboard.sourceforge.net/")
1736 (synopsis "Virtual MIDI keyboard")
1737 (description "Jack-keyboard is a virtual MIDI keyboard, a program that
1738 allows you to send JACK MIDI events (i.e. play) using your PC keyboard.")
1739 (license license:bsd-2)))
1740
1741 (define-public cursynth
1742 (package
1743 (name "cursynth")
1744 (version "1.5")
1745 (source
1746 (origin
1747 (method url-fetch)
1748 (uri (string-append "mirror://gnu/cursynth/cursynth-"
1749 version ".tar.gz"))
1750 (sha256
1751 (base32 "1dhphsya41rv8z6yqcv9l6fwbslsds4zh1y56zizi39nd996d40v"))
1752 (patches (search-patches "cursynth-wave-rand.patch"))))
1753 (build-system gnu-build-system)
1754 (native-inputs `(("pkg-config" ,pkg-config)))
1755 ;; TODO: See https://github.com/iyoko/cursynth/issues/4 which currently
1756 ;; prevents us from using pulseaudio
1757 (inputs `(("ncurses" ,ncurses)
1758 ("alsa" ,alsa-lib)))
1759 (home-page "http://www.gnu.org/software/cursynth")
1760 (synopsis "Polyphonic and MIDI subtractive music synthesizer using curses")
1761 (description "GNU cursynth is a polyphonic synthesizer that runs
1762 graphically in the terminal. It is built on a full-featured subtractive
1763 synthesis engine. Notes and parameter changes may be entered via MIDI or the
1764 computer's keyboard.")
1765 (license license:gpl3+)))
1766
1767 (define-public qtractor
1768 (package
1769 (name "qtractor")
1770 (version "0.8.1")
1771 (source (origin
1772 (method url-fetch)
1773 (uri (string-append "http://downloads.sourceforge.net/qtractor/"
1774 "qtractor-" version ".tar.gz"))
1775 (sha256
1776 (base32
1777 "1pvs9r5ykfaci900p0kz2xc5xsrswnwwbcl2chsvd98f1ns4vwds"))))
1778 (build-system gnu-build-system)
1779 (arguments `(#:tests? #f)) ; no "check" target
1780 (inputs
1781 `(("qt" ,qt)
1782 ("alsa-lib" ,alsa-lib)
1783 ("jack" ,jack-1)
1784 ("libsndfile" ,libsndfile)
1785 ("ladspa" ,ladspa)
1786 ("lv2" ,lv2)
1787 ("lilv" ,lilv)
1788 ("suil" ,suil)
1789 ("libsamplerate" ,libsamplerate)
1790 ("libvorbis" ,libvorbis)
1791 ("libmad" ,libmad)
1792 ("rubberband" ,rubberband)
1793 ("liblo" ,liblo)
1794 ("zlib" ,zlib)))
1795 (native-inputs
1796 `(("pkg-config" ,pkg-config)))
1797 (home-page "http://qtractor.org/")
1798 (synopsis "Audio/MIDI multi-track sequencer")
1799 (description
1800 "Qtractor is an Audio/MIDI multi-track sequencer application. It uses
1801 JACK for audio and ALSA sequencer for MIDI as multimedia infrastructures and
1802 follows a traditional multi-track tape recorder control paradigm.")
1803 (license license:gpl2+)))
1804
1805 (define-public ams-lv2
1806 (package
1807 (name "ams-lv2")
1808 (version "1.2.0")
1809 (source
1810 (origin
1811 (method url-fetch)
1812 (uri (string-append "https://github.com/blablack/ams-lv2/"
1813 "archive/" version ".tar.gz"))
1814 (file-name (string-append name "-" version ".tar.gz"))
1815 (sha256
1816 (base32
1817 "1392spswkhfd38fggf584wb3m8aqpg7csfrs9zxnzyvhgmp0fgqk"))))
1818 (build-system waf-build-system)
1819 (arguments
1820 `(#:phases
1821 (modify-phases %standard-phases
1822 (add-after 'unpack 'remove-sse-flags
1823 (lambda* (#:key system #:allow-other-keys)
1824 (when (not (or (string-prefix? "x86_64" system)
1825 (string-prefix? "i686" system)))
1826 (substitute* "wscript"
1827 (("'-msse', '-mfpmath=sse', ") ""))
1828 #t))))
1829 #:tests? #f)) ; no tests
1830 (inputs
1831 `(("lv2" ,lv2)
1832 ("lvtk" ,lvtk)
1833 ("gtkmm" ,gtkmm-2)
1834 ("gtk" ,gtk+-2)
1835 ("cairo" ,cairo)
1836 ("fftw" ,fftw)))
1837 (native-inputs
1838 `(("pkg-config" ,pkg-config)))
1839 (home-page "https://objectivewave.wordpress.com/ams-lv2/")
1840 (synopsis "Port of Alsa Modular Synth internal modules into LV2")
1841 (description "This set of LV2 plugins is a port of the internal modules
1842 found in Alsa Modular Synth. These plugins are used to create modular
1843 synthesizers and contain: VCO, VCF, VCA, LFO, slew limiter, envelopes, sample
1844 and hold, etc.")
1845 (license license:gpl2)))
1846
1847 (define-public gxtuner
1848 (package
1849 (name "gxtuner")
1850 (version "2.3")
1851 (source (origin
1852 (method url-fetch)
1853 (uri (string-append "https://github.com/brummer10/gxtuner/"
1854 "archive/v" version ".tar.gz"))
1855 (file-name (string-append name "-" version ".tar.gz"))
1856 (sha256
1857 (base32
1858 "1abpxiydn4c9wssz6895hnad9ipkcy3rkgzbnanvwb46nm44x6if"))))
1859 (build-system gnu-build-system)
1860 (arguments
1861 `(#:make-flags
1862 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
1863 (string-append "INCLUDE_L_DIR="
1864 (assoc-ref %build-inputs "zita-resampler")
1865 "/include/"))
1866 #:phases
1867 (modify-phases %standard-phases
1868 (delete 'configure))))
1869 (inputs
1870 `(("gtk+" ,gtk+-2)
1871 ("jack" ,jack-1)
1872 ("fftwf" ,fftwf)
1873 ("cairo" ,cairo)
1874 ("zita-resampler" ,zita-resampler)))
1875 (native-inputs
1876 `(("pkg-config" ,pkg-config)))
1877 (home-page "https://github.com/brummer10/gxtuner")
1878 (synopsis "Guitar tuner")
1879 (description "GXtuner is a simple guitar tuner for JACK with an
1880 analogue-like user interface.")
1881 (license license:gpl2+)))
1882
1883 (define-public mod-host
1884 ;; The last release was in 2014 but since then more than 140 commits have
1885 ;; been made.
1886 (let ((commit "72aca771e3a4e3889641b9bab84985586c9bb926")
1887 (revision "1"))
1888 (package
1889 (name "mod-host")
1890 (version (string-append "0.10.6-" revision "." (string-take commit 9)))
1891 (source (origin
1892 (method git-fetch)
1893 (uri (git-reference
1894 (url "https://github.com/moddevices/mod-host")
1895 (commit commit)))
1896 (sha256
1897 (base32
1898 "19szi8cy65jlchbrmbjbma03g6gxj9zyyp4dgw1k06r0cxbx82gq"))
1899 (file-name (string-append name "-" version "-checkout"))))
1900 (build-system gnu-build-system)
1901 (arguments
1902 `(#:tests? #f ; no tests included
1903 #:make-flags
1904 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
1905 "CC=gcc")
1906 #:phases
1907 (modify-phases %standard-phases
1908 (delete 'configure)
1909 (add-after 'unpack 'fix-jack-installation-directory
1910 (lambda _
1911 ;; Do not attempt to install files to output of "jack" package.
1912 (substitute* "Makefile"
1913 (("\\$\\(shell pkg-config --variable=libdir jack\\)")
1914 "lib"))
1915 #t)))))
1916 (inputs
1917 `(("lilv" ,lilv)
1918 ("fftw" ,fftw)
1919 ("fftwf" ,fftwf)
1920 ("lv2" ,lv2)
1921 ("jack" ,jack-1)
1922 ("readline" ,readline)))
1923 (native-inputs
1924 `(("pkg-config" ,pkg-config)
1925 ("python" ,python-2)))
1926 (home-page "https://github.com/moddevices/mod-host")
1927 (synopsis "LV2 host for Jack controllable via socket or command line")
1928 (description "mod-host is an LV2 plugin host for JACK, controllable via
1929 socket or command line.")
1930 (license license:gpl3+))))
1931
1932 (define-public pianobar
1933 (package
1934 (name "pianobar")
1935 (version "2015.11.22")
1936 (source (origin
1937 (method url-fetch)
1938 (uri (string-append "https://github.com/PromyLOPh/"
1939 name "/archive/" version ".tar.gz"))
1940 (file-name (string-append name "-" version ".tar.gz"))
1941 (sha256
1942 (base32
1943 "022df19bhxqvkhy0qy21xahba5s1fm17b13y0p9p9dnf2yl44wfv"))))
1944 (build-system gnu-build-system)
1945 (arguments
1946 `(#:tests? #f ; no tests
1947 #:make-flags (list "CC=gcc" "CFLAGS=-std=c99"
1948 (string-append "PREFIX=" %output))
1949 #:phases (modify-phases %standard-phases
1950 (delete 'configure))))
1951 (inputs
1952 `(("ao" ,ao)
1953 ("curl" ,curl)
1954 ("libgcrypt" ,libgcrypt)
1955 ("json-c" ,json-c)
1956 ("ffmpeg" ,ffmpeg)))
1957 (native-inputs
1958 `(("pkg-config" ,pkg-config)))
1959 (home-page "http://6xq.net/projects/pianobar/")
1960 (synopsis "Console-based pandora.com player")
1961 (description "pianobar is a console-based music player for the
1962 personalized online radio pandora.com. It has configurable keys for playing
1963 and managing stations, can be controlled remotely via fifo, and can run
1964 event-based scripts for scrobbling, notifications, etc.")
1965 (license license:expat)))
1966
1967 (define-public python-mutagen
1968 (package
1969 (name "python-mutagen")
1970 (version "1.36")
1971 (source (origin
1972 (method url-fetch)
1973 (uri (pypi-uri "mutagen" version))
1974 (sha256
1975 (base32
1976 "1kabb9b81hgvpd3wcznww549vss12b1xlvpnxg1r6n4c7gikgvnp"))))
1977 (build-system python-build-system)
1978 (native-inputs
1979 `(("python-pytest" ,python-pytest)))
1980 (home-page "https://bitbucket.org/lazka/mutagen")
1981 (synopsis "Read and write audio tags")
1982 (description "Mutagen is a Python module to handle audio metadata. It
1983 supports ASF, FLAC, M4A, Monkey’s Audio, MP3, Musepack, Ogg FLAC, Ogg Speex, Ogg
1984 Theora, Ogg Vorbis, True Audio, WavPack and OptimFROG audio files. All versions
1985 of ID3v2 are supported, and all standard ID3v2.4 frames are parsed. It can read
1986 Xing headers to accurately calculate the bitrate and length of MP3s. ID3 and
1987 APEv2 tags can be edited regardless of audio format. It can also manipulate Ogg
1988 streams on an individual packet/page level.")
1989 (license license:gpl2))) ; "later version" never mentioned
1990
1991 (define-public python2-mutagen
1992 (package-with-python2 python-mutagen))
1993
1994 (define-public python-musicbrainzngs
1995 (package
1996 (name "python-musicbrainzngs")
1997 (version "0.6")
1998 (source (origin
1999 (method url-fetch)
2000 (uri (pypi-uri "musicbrainzngs" version))
2001 (sha256
2002 (base32
2003 "1dddarpjawryll2wss65xq3v9q8ln8dan7984l5dxzqx88d2dvr8"))))
2004 (build-system python-build-system)
2005 (arguments
2006 '(;; The tests fail suffer from race conditions:
2007 ;; https://github.com/alastair/python-musicbrainzngs/issues/211
2008 #:tests? #f))
2009 (home-page "https://python-musicbrainzngs.readthedocs.org/")
2010 (synopsis "Python bindings for MusicBrainz NGS webservice")
2011 (description "Musicbrainzngs implements Python bindings of the MusicBrainz
2012 web service. This library can be used to retrieve music metadata from the
2013 MusicBrainz database.")
2014 ;; 'musicbrainzngs/compat.py' is ISC licensed.
2015 (license (list license:bsd-2 license:isc))))
2016
2017 (define-public python2-musicbrainzngs
2018 (package-with-python2 python-musicbrainzngs))
2019
2020 (define-public python2-pyechonest
2021 (package
2022 (name "python2-pyechonest")
2023 (version "9.0.0")
2024 (source (origin
2025 (method url-fetch)
2026 (uri (pypi-uri "pyechonest" version))
2027 (sha256
2028 (base32
2029 "1584nira3rkiman9dm81kdshihmkj21s8navndz2l8spnjwb790x"))))
2030 (build-system python-build-system)
2031 (arguments
2032 `(;; Python 3 is not supported:
2033 ;; https://github.com/echonest/pyechonest/issues/42
2034 #:python ,python-2))
2035 (home-page "https://github.com/echonest/pyechonest")
2036 (synopsis "Python interface to The Echo Nest APIs")
2037 (description "Pyechonest is a Python library for the Echo Nest API. With
2038 Pyechonest you have Python access to the entire set of API methods including:
2039
2040 @enumerate
2041 @item artist - search for artists by name, description, or attribute, and get
2042 back detailed information about any artist including audio, similar artists,
2043 blogs, familiarity, hotttnesss, news, reviews, urls and video.
2044 @item song - search songs by artist, title, description, or attribute (tempo,
2045 duration, etc) and get detailed information back about each song, such as
2046 hotttnesss, audio_summary, or tracks.
2047 @item track - upload a track to the Echo Nest and receive summary information
2048 about the track including key, duration, mode, tempo, time signature along with
2049 detailed track info including timbre, pitch, rhythm and loudness information.
2050 @end enumerate\n")
2051 (license license:bsd-3)))
2052
2053 (define-public python-pylast
2054 (package
2055 (name "python-pylast")
2056 (version "1.6.0")
2057 (source (origin
2058 (method url-fetch)
2059 (uri (pypi-uri "pylast" version))
2060 (sha256
2061 (base32
2062 "0bml11gfkxqd3i2jxkn5k2xllc4rvxjcyhs8an05gcyy1zp2bwvb"))))
2063 (build-system python-build-system)
2064 (arguments
2065 '(#:tests? #f)) ; FIXME: Requires unpackaged python-flaky.
2066 (native-inputs
2067 `(("python-coverage" ,python-coverage)
2068 ("python-mock" ,python-mock)
2069 ("python-pep8" ,python-pep8)
2070 ("python-pytest" ,python-pytest)
2071 ("python-pyflakes" ,python-pyflakes)
2072 ("python-pyyaml" ,python-pyyaml)))
2073 (propagated-inputs
2074 `(("python-six" ,python-six)))
2075 (home-page "https://github.com/pylast/pylast")
2076 (synopsis "Python interface to Last.fm and Libre.fm")
2077 (description "A Python interface to Last.fm and other API-compatible
2078 websites such as Libre.fm.")
2079 (license license:asl2.0)))
2080
2081 (define-public python2-pylast
2082 (package-with-python2 python-pylast))
2083
2084 (define-public beets
2085 (package
2086 (name "beets")
2087 (version "1.4.3")
2088 (source (origin
2089 (method url-fetch)
2090 (uri (pypi-uri "beets" version))
2091 (sha256
2092 (base32
2093 "0r743a2pv1iyw50jsdl01v2ml3pdkhdp920a5d1wsacak48vwgxr"))))
2094 (build-system python-build-system)
2095 (arguments
2096 `(#:phases
2097 (modify-phases %standard-phases
2098 (add-after 'unpack 'set-HOME
2099 (lambda _ (setenv "HOME" (string-append (getcwd) "/tmp"))))
2100 (replace 'check
2101 (lambda _ (zero? (system* "nosetests" "-v")))))))
2102 (native-inputs
2103 `(("python-beautifulsoup4" ,python-beautifulsoup4)
2104 ("python-flask" ,python-flask)
2105 ("python-mock" ,python-mock)
2106 ("python-mpd2" ,python-mpd2)
2107 ("python-nose" ,python-nose)
2108 ("python-pathlib" ,python-pathlib)
2109 ("python-pyxdg" ,python-pyxdg)
2110 ("python-pylast" ,python-pylast)
2111 ("python-rarfile" ,python-rarfile)
2112 ("python-responses" ,python-responses)))
2113 ;; TODO: Install optional plugins and dependencies.
2114 (inputs
2115 `(("python-discogs-client" ,python-discogs-client)
2116 ("python-enum34" ,python-enum34)
2117 ("python-jellyfish" ,python-jellyfish)
2118 ("python-munkres" ,python-munkres)
2119 ("python-musicbrainzngs" ,python-musicbrainzngs)
2120 ("python-mutagen" ,python-mutagen)
2121 ("python-pyyaml" ,python-pyyaml)
2122 ("python-unidecode" ,python-unidecode)))
2123 (home-page "http://beets.io")
2124 (synopsis "Music organizer")
2125 (description "The purpose of beets is to get your music collection right
2126 once and for all. It catalogs your collection, automatically improving its
2127 metadata as it goes using the MusicBrainz database. Then it provides a variety
2128 of tools for manipulating and accessing your music.")
2129 (license license:expat)))
2130
2131 (define-public milkytracker
2132 (package
2133 (name "milkytracker")
2134 (version "0.90.86")
2135 (source (origin
2136 (method url-fetch)
2137 (uri (string-append "http://milkytracker.titandemo.org/files/"
2138 name "-" version ".tar.bz2"))
2139 (sha256
2140 (base32
2141 "1v9vp8vi24lkagfpr92c128whvakwgrm9pq2zf6ijpl5sh7014zb"))))
2142 (build-system gnu-build-system)
2143 (arguments
2144 `(#:make-flags '("CXXFLAGS=-lasound")))
2145 (inputs
2146 `(("alsa-lib" ,alsa-lib)
2147 ("jack" ,jack-1)
2148 ("sdl" ,sdl)
2149 ("zlib" ,zlib)))
2150 (native-inputs
2151 `(("pkg-config" ,pkg-config)))
2152 (synopsis "Music tracker for working with .MOD/.XM module files")
2153 (description "MilkyTracker is a music application for creating .MOD and .XM
2154 module files. It attempts to recreate the module replay and user experience of
2155 the popular DOS program Fasttracker II, with special playback modes available
2156 for improved Amiga ProTracker 2/3 compatibility.")
2157 (home-page "http://milkytracker.titandemo.org/")
2158 ;; 'src/milkyplay' is under Modified BSD, the rest is under GPL3 or later.
2159 (license (list license:bsd-3 license:gpl3+))))
2160
2161 (define-public schismtracker
2162 (package
2163 (name "schismtracker")
2164 (version "20160521")
2165 (source (origin
2166 (method url-fetch)
2167 (uri (string-append
2168 "https://github.com/" name "/" name "/archive/"
2169 version ".tar.gz"))
2170 (file-name (string-append name "-" version ".tar.gz"))
2171 (sha256
2172 (base32
2173 "0c6r24wm3rldm4j8cskl9xnixj3rwi3lnrhckw5gv43wpy6h4jcz"))
2174 (modules '((guix build utils)))
2175 (snippet
2176 ;; Remove use of __DATE__ and __TIME__ for reproducibility.
2177 `(substitute* "schism/version.c"
2178 (("Schism Tracker build %s %s.*$")
2179 (string-append "Schism Tracker version " ,version "\");"))))))
2180 (build-system gnu-build-system)
2181 (arguments
2182 `(#:phases
2183 (modify-phases %standard-phases
2184 (add-after 'unpack 'autoconf
2185 (lambda _ (zero? (system* "autoreconf" "-vfi"))))
2186 (add-before 'configure 'link-libm
2187 (lambda _ (setenv "LIBS" "-lm") #t)))))
2188 (native-inputs
2189 `(("autoconf" ,autoconf)
2190 ("automake" ,automake)
2191 ("python" ,python)))
2192 (inputs
2193 `(("alsa-lib" ,alsa-lib) ; for asound dependency
2194 ("libx11" ,libx11)
2195 ("libxext" ,libxext)
2196 ("sdl" ,sdl)))
2197 (home-page "http://schismtracker.org")
2198 (synopsis "Oldschool sample-based music composition tool")
2199 (description
2200 "Schism Tracker is a reimplementation of Impulse Tracker, a program used to
2201 create high quality music without the requirements of specialized, expensive
2202 equipment, and with a unique \"finger feel\" that is difficult to replicate in
2203 part. The player is based on a highly modified version of the ModPlug engine,
2204 with a number of bugfixes and changes to improve IT playback.")
2205 (license license:gpl2+)))
2206
2207 (define-public moc
2208 (package
2209 (name "moc")
2210 (version "2.5.2")
2211 (source (origin
2212 (method url-fetch)
2213 (uri (string-append "http://ftp.daper.net/pub/soft/"
2214 name "/stable/"
2215 name "-" version ".tar.bz2"))
2216 (sha256
2217 (base32
2218 "026v977kwb0wbmlmf6mnik328plxg8wykfx9ryvqhirac0aq39pk"))
2219 (modules '((guix build utils)))
2220 (snippet
2221 ;; Remove use of __DATE__ and __TIME__ for reproducibility.
2222 '(substitute* "main.c"
2223 (("printf \\(\" Built : %s\", __DATE__\\);") "")
2224 (("printf \\(\" %s\", __TIME__\\);") "")))))
2225 (build-system gnu-build-system)
2226 (inputs
2227 `(("alsa-lib" ,alsa-lib)
2228 ("curl" ,curl)
2229 ("faad2" ,faad2)
2230 ("ffmpeg" ,ffmpeg)
2231 ("file" ,file)
2232 ("jack" ,jack-1)
2233 ("libid3tag" ,libid3tag)
2234 ("libltdl" ,libltdl)
2235 ("libmodplug" ,libmodplug)
2236 ("libmpcdec" ,libmpcdec)
2237 ("libmad" ,libmad)
2238 ("ncurses" ,ncurses)
2239 ("openssl" ,openssl)
2240 ("sasl" ,cyrus-sasl)
2241 ("speex" ,speex)
2242 ("taglib" ,taglib)
2243 ("wavpack" ,wavpack)
2244 ("zlib" ,zlib)))
2245 (native-inputs
2246 `(("pkg-config" ,pkg-config)))
2247 (synopsis "Console audio player designed to be powerful and easy to use")
2248 (description
2249 "Music on Console is a console audio player that supports many file
2250 formats, including most audio formats recognized by FFMpeg.")
2251 (home-page "http://moc.daper.net")
2252 (license license:gpl2+)))
2253
2254 (define-public midicsv
2255 (package
2256 (name "midicsv")
2257 (version "1.1")
2258 (source (origin
2259 (method url-fetch)
2260 (uri (string-append "http://www.fourmilab.ch/webtools/midicsv/"
2261 name "-" version ".tar.gz"))
2262 (sha256
2263 (base32
2264 "1vvhk2nf9ilfw0wchmxy8l13hbw9cnpz079nsx5srsy4nnd78nkw"))))
2265 (build-system gnu-build-system)
2266 (arguments
2267 `(#:phases (modify-phases %standard-phases (delete 'configure))
2268 #:make-flags (list "CC=gcc" (string-append "INSTALL_DEST=" %output))))
2269 (synopsis "Convert MIDI files to and from CSV")
2270 (description
2271 "Midicsv reads a standard MIDI file and decodes it into a comma-separated
2272 value file (CSV), which preserves all the information in the MIDI file. The
2273 ASCII CSV file may be loaded into a spreadsheet or database application, or
2274 processed by a program to transform the MIDI data (for example, to key
2275 transpose a composition or extract a track from a multi-track sequence). A
2276 CSV file in the format created by midicsv may be converted back into a
2277 standard MIDI file with the csvmidi program.")
2278 (home-page "http://www.fourmilab.ch/webtools/midicsv/")
2279 (license license:public-domain)))
2280
2281 (define-public gx-guvnor-lv2
2282 (let ((commit "9f528a7623a201383e119bb6a2df32b18396a9d5")
2283 (revision "1"))
2284 (package
2285 (name "gx-guvnor-lv2")
2286 (version (string-append "0-" revision "." (string-take commit 9)))
2287 (source (origin
2288 (method git-fetch)
2289 (uri (git-reference
2290 (url "https://github.com/brummer10/GxGuvnor.lv2")
2291 (commit commit)))
2292 (sha256
2293 (base32
2294 "10zx84p2vd7i1yqc5ma9p17927265j4g0zfwv9rxladw0nm8y45k"))
2295 (file-name (string-append name "-" version "-checkout"))))
2296 (build-system gnu-build-system)
2297 (arguments
2298 `(;; The check target is used only to output a warning.
2299 #:tests? #f
2300 #:make-flags
2301 (list (string-append "DESTDIR=" (assoc-ref %outputs "out")))
2302 #:phases
2303 (modify-phases %standard-phases
2304 (replace 'configure
2305 (lambda _
2306 (substitute* "Makefile"
2307 (("INSTALL_DIR = .*") "INSTALL_DIR=/lib/lv2\n")
2308 ;; Avoid rebuilding everything
2309 (("install : all") "install:"))
2310 #t)))))
2311 (inputs
2312 `(("lv2" ,lv2)))
2313 (home-page "https://github.com/brummer10/GxGuvnor.lv2")
2314 (synopsis "Overdrive/distortion pedal simulation")
2315 (description "This package provides the LV2 plugin \"GxGuvnor\", a
2316 simulation of an overdrive or distortion pedal for guitars.")
2317 ;; The LICENSE file says GPLv3 but the license headers in the files say
2318 ;; GPLv2 or later.
2319 (license license:gpl2+))))
2320
2321 (define-public gx-vbass-preamp-lv2
2322 (let ((commit "0e599abab10c7669dd444e5d06f671c2fc1b9c6c")
2323 (revision "1"))
2324 (package (inherit gx-guvnor-lv2)
2325 (name "gx-vbass-preamp-lv2")
2326 (version (string-append "0-" revision "." (string-take commit 9)))
2327 (source (origin
2328 (method git-fetch)
2329 (uri (git-reference
2330 (url "https://github.com/brummer10/GxVBassPreAmp.lv2")
2331 (commit commit)))
2332 (sha256
2333 (base32
2334 "1dzksdfrva666gpi62fd2ni9rhf18sl917f1894qr0b17pbdh9k1"))
2335 (file-name (string-append name "-" version "-checkout"))))
2336 (home-page "https://github.com/brummer10/GxVBassPreAmp.lv2")
2337 (synopsis "Simulation of the Vox Venue Bass 100 Pre Amp Section")
2338 (description "This package provides the LV2 plugin \"GxVBassPreAmp\", a
2339 pre-amplifier simulation modelled after the 1984 Vox Venue Bass 100 Pre Amp
2340 Section."))))
2341
2342 (define-public gx-overdriver-lv2
2343 (let ((commit "ed71801987449414bf3adaa0dbfac68e8775f1ce")
2344 (revision "1"))
2345 (package (inherit gx-guvnor-lv2)
2346 (name "gx-overdriver-lv2")
2347 (version (string-append "0-" revision "." (string-take commit 9)))
2348 (source (origin
2349 (method git-fetch)
2350 (uri (git-reference
2351 (url "https://github.com/brummer10/GxOverDriver.lv2")
2352 (commit commit)))
2353 (sha256
2354 (base32
2355 "13j614jh525fbkby79nnzwj0z1ac0c9wclyn5pfqvkmx6a7j24r8"))
2356 (file-name (string-append name "-" version "-checkout"))))
2357 (home-page "https://github.com/brummer10/GxOverDriver.lv2")
2358 (synopsis "Overdrive effect with level and tone control")
2359 (description "This package provides the LV2 plugin \"GxOverDriver\", an
2360 overdrive effect."))))
2361
2362 (define-public gx-tone-mender-lv2
2363 (let ((commit "b6780b4a3e4782b3ed0e5882d6788f178aed138f")
2364 (revision "1"))
2365 (package (inherit gx-guvnor-lv2)
2366 (name "gx-tone-mender-lv2")
2367 (version (string-append "0-" revision "." (string-take commit 9)))
2368 (source (origin
2369 (method git-fetch)
2370 (uri (git-reference
2371 (url "https://github.com/brummer10/GxToneMender.lv2")
2372 (commit commit)))
2373 (sha256
2374 (base32
2375 "07qdcfsvv2vdnfnjh91pfgvjdcs5y91nvwfm8c0z8fp6b4bk7a9q"))
2376 (file-name (string-append name "-" version "-checkout"))))
2377 (home-page "https://github.com/brummer10/GxToneMender.lv2")
2378 (synopsis "Clean boost with a 3-knob tonestack")
2379 (description "This package provides the LV2 plugin \"GxToneMender\", a
2380 clean boost effect with a 3-knob tonestack."))))
2381
2382 (define-public gx-push-pull-lv2
2383 (let ((commit "7f76ae2068498643ac8671ee0930b13ee3fd8eb5")
2384 (revision "1"))
2385 (package (inherit gx-guvnor-lv2)
2386 (name "gx-push-pull-lv2")
2387 (version (string-append "0-" revision "." (string-take commit 9)))
2388 (source (origin
2389 (method git-fetch)
2390 (uri (git-reference
2391 (url "https://github.com/brummer10/GxPushPull.lv2")
2392 (commit commit)))
2393 (sha256
2394 (base32
2395 "12f5hwck2irph0gjbj8xy8jqcqdwb8l1hlwf29k0clz52h1jhb5q"))
2396 (file-name (string-append name "-" version "-checkout"))))
2397 (home-page "https://github.com/brummer10/GxPushPull.lv2")
2398 (synopsis "Octave up push pull transistor fuzz simulation")
2399 (description "This package provides the LV2 plugin \"GxPushPull\", a
2400 simulation of a push pull transistor fuzz effect with added high octave."))))
2401
2402 (define-public gx-suppa-tone-bender-lv2
2403 (let ((commit "4e6dc713ec24e7fcf5ea23b7e685af627c01b9c9")
2404 (revision "1"))
2405 (package (inherit gx-guvnor-lv2)
2406 (name "gx-suppa-tone-bender-lv2")
2407 (version (string-append "0-" revision "." (string-take commit 9)))
2408 (source (origin
2409 (method git-fetch)
2410 (uri (git-reference
2411 (url "https://github.com/brummer10/GxSuppaToneBender.lv2")
2412 (commit commit)))
2413 (sha256
2414 (base32
2415 "1i22xr252nkbazkwidll2zb3i96610gx65qn5djdkijlz7j77138"))
2416 (file-name (string-append name "-" version "-checkout"))))
2417 (home-page "https://github.com/brummer10/GxSuppaToneBender.lv2")
2418 (synopsis "Simulation of the Vox Suppa Tone Bender pedal")
2419 (description "This package provides the LV2 plugin
2420 \"GxSuppaToneBender\", a simulation modelled after the Vox Suppa Tone Bender
2421 pedal."))))
2422
2423 (define-public gx-saturator-lv2
2424 (let ((commit "0b581ac85c515325b9f16e51937cae6e1bf81a0a")
2425 (revision "2"))
2426 (package (inherit gx-guvnor-lv2)
2427 (name "gx-saturator-lv2")
2428 (version (string-append "0-" revision "." (string-take commit 9)))
2429 (source (origin
2430 (method git-fetch)
2431 (uri (git-reference
2432 (url "https://github.com/brummer10/GxSaturator.lv2")
2433 (commit commit)))
2434 (sha256
2435 (base32
2436 "1cl785pzq8zk55m1rnhfd6qsabci6kpf4pf002gwr91vagyq246z"))
2437 (file-name (string-append name "-" version "-checkout"))))
2438 (home-page "https://github.com/brummer10/GxSaturator.lv2")
2439 (synopsis "Saturation effect")
2440 (description "This package provides the LV2 plugin \"GxSaturator\", a
2441 saturation effect."))))
2442
2443 (define-public gx-hyperion-lv2
2444 (let ((commit "6a096a664e553e551e179e85cf390bd1683410fb")
2445 (revision "2"))
2446 (package (inherit gx-guvnor-lv2)
2447 (name "gx-hyperion-lv2")
2448 (version (string-append "0-" revision "." (string-take commit 9)))
2449 (source (origin
2450 (method git-fetch)
2451 (uri (git-reference
2452 (url "https://github.com/brummer10/GxHyperion.lv2")
2453 (commit commit)))
2454 (sha256
2455 (base32
2456 "1ksv3wmylhwbf6kjl2lnhr14h9rfl291cfm21471gnb1r68yqfxh"))
2457 (file-name (string-append name "-" version "-checkout"))))
2458 (home-page "https://github.com/brummer10/GxHyperion.lv2")
2459 (synopsis "Simulation of the Hyperion Fuzz pedal")
2460 (description "This package provides the LV2 plugin \"GxHyperion\", a
2461 simulation of the Hyperion Fuzz pedal."))))
2462
2463 (define-public gx-voodoo-fuzz-lv2
2464 (let ((commit "aec7889b489385e8add06126e7a36ae2e26254b1")
2465 (revision "2"))
2466 (package (inherit gx-guvnor-lv2)
2467 (name "gx-voodoo-fuzz-lv2")
2468 (version (string-append "0-" revision "." (string-take commit 9)))
2469 (source (origin
2470 (method git-fetch)
2471 (uri (git-reference
2472 (url "https://github.com/brummer10/GxVoodoFuzz.lv2")
2473 (commit commit)))
2474 (sha256
2475 (base32
2476 "0mc41ldlv89069iaysnfiqxy5h5sr8mdi5cxm3ij5q5v4jv3viwx"))
2477 (file-name (string-append name "-" version "-checkout"))))
2478 (home-page "https://github.com/brummer10/GxVoodoFuzz.lv2")
2479 (synopsis "Fuzz effect modelled after the Voodoo Lab SuperFuzz")
2480 (description "This package provides the LV2 plugin \"GxVoodooFuzz\", a
2481 simulation modelled after the Voodoo Lab SuperFuzz pedal. It's basically a
2482 Bosstone circuit, followed by the tone control of the FoxToneMachine in
2483 parallel with a DarkBooster, followed by a volume control."))))
2484
2485 (define-public gx-super-fuzz-lv2
2486 (let ((commit "f40389575812c909007d140d327ce579930b71f7")
2487 (revision "2"))
2488 (package (inherit gx-guvnor-lv2)
2489 (name "gx-super-fuzz-lv2")
2490 (version (string-append "0-" revision "." (string-take commit 9)))
2491 (source (origin
2492 (method git-fetch)
2493 (uri (git-reference
2494 (url "https://github.com/brummer10/GxSuperFuzz.lv2")
2495 (commit commit)))
2496 (sha256
2497 (base32
2498 "174bibj8qzm8zr6f5h8bcj94iry17zravk8flpdy84n6yg7cixji"))
2499 (file-name (string-append name "-" version "-checkout"))))
2500 (home-page "https://github.com/brummer10/GxSuperFuzz.lv2")
2501 (synopsis "Fuzz effect modelled after the UniVox SuperFuzz")
2502 (description "This package provides the LV2 plugin \"GxVoodooFuzz\", an
2503 analog simulation of the UniVox SuperFuzz pedal. In this simulation the trim
2504 pot, which is usualy in the housing, is exposed as a control parameter. It
2505 adjusts the amount of harmonics."))))
2506
2507 (define-public gx-vintage-fuzz-master-lv2
2508 (let ((commit "0fec0bc1e8a8ba909a68e916e036138a3425d7db")
2509 (revision "2"))
2510 (package (inherit gx-guvnor-lv2)
2511 (name "gx-vintage-fuzz-master-lv2")
2512 (version (string-append "0-" revision "." (string-take commit 9)))
2513 (source (origin
2514 (method git-fetch)
2515 (uri (git-reference
2516 (url "https://github.com/brummer10/GxVintageFuzzMaster.lv2")
2517 (commit commit)))
2518 (sha256
2519 (base32
2520 "06szi6d2iwkygbw5azhwzhcl2as4lmk2gs9hanngsf46a1zbdcp7"))
2521 (file-name (string-append name "-" version "-checkout"))))
2522 (home-page "https://github.com/brummer10/GxVintageFuzzMaster.lv2")
2523 (synopsis "Fuzz effect simulation of the vintage Fuzz Master")
2524 (description "This package provides the LV2 plugin
2525 \"GxVintageFuzzMaster\", a simulation of the vintage Fuzz Master pedal."))))
2526
2527 (define-public gx-slow-gear-lv2
2528 (let ((commit "cb852e0426f4e6fe077e7f1ede73a4da335cfc5e")
2529 (revision "2"))
2530 (package (inherit gx-guvnor-lv2)
2531 (name "gx-slow-gear-lv2")
2532 (version (string-append "0-" revision "." (string-take commit 9)))
2533 (source (origin
2534 (method git-fetch)
2535 (uri (git-reference
2536 (url "https://github.com/brummer10/GxSlowGear.lv2")
2537 (commit commit)))
2538 (sha256
2539 (base32
2540 "0dp7afi1r3kzciiyn1hrkz6arsq47ys9sx5g4b7xa9k1dv92ishp"))
2541 (file-name (string-append name "-" version "-checkout"))))
2542 (home-page "https://github.com/brummer10/GxSlowGear.lv2")
2543 (synopsis "Slow gear audio effect")
2544 (description "This package provides the LV2 plugin \"GxSlowGear\", a
2545 slow gear audio effect to produce volume swells."))))
2546
2547 (define-public gx-switchless-wah-lv2
2548 (let ((commit "7b08691203314612999f0ce2328cdc1161cd6665")
2549 (revision "2"))
2550 (package (inherit gx-guvnor-lv2)
2551 (name "gx-switchless-wah-lv2")
2552 (version (string-append "0-" revision "." (string-take commit 9)))
2553 (source (origin
2554 (method git-fetch)
2555 (uri (git-reference
2556 (url "https://github.com/brummer10/GxSwitchlessWah.lv2")
2557 (commit commit)))
2558 (sha256
2559 (base32
2560 "04jqfpncmrrqn34p21w4v9m2x5a5wsqwbm4f3byxvq4vcibwxzk2"))
2561 (file-name (string-append name "-" version "-checkout"))))
2562 (home-page "https://github.com/brummer10/GxSwitchlessWah.lv2")
2563 (synopsis "Wah emulation with switchless activation")
2564 (description "This package provides the LV2 plugin \"GxSwitchlessWah\",
2565 a simulation of an analog Wah pedal with switchless activation."))))
2566
2567 (define-public mod-utilities
2568 (let ((commit "7cdeeac26ae682730740105ece121d4dddb8ba3f")
2569 (revision "1"))
2570 (package
2571 (name "mod-utilities")
2572 (version (string-append "0-" revision "." (string-take commit 9)))
2573 (source (origin
2574 (method git-fetch)
2575 (uri (git-reference
2576 (url "https://github.com/moddevices/mod-utilities.git")
2577 (commit commit)))
2578 (sha256
2579 (base32
2580 "1ilnkbrmwrszxvc21qlb86h29yz7cnc6rcp0jmna1y693ny2qhf4"))
2581 (file-name (string-append name "-" version "-checkout"))))
2582 (build-system gnu-build-system)
2583 (arguments
2584 `(#:tests? #f ; there are no tests
2585 #:make-flags
2586 (list (string-append "INSTALL_PATH="
2587 (assoc-ref %outputs "out")
2588 "/lib/lv2"))
2589 #:phases
2590 (modify-phases %standard-phases
2591 (delete 'configure))))
2592 (inputs
2593 `(("lv2" ,lv2)))
2594 (home-page "https://github.com/moddevices/mod-utilities")
2595 (synopsis "LV2 utility plugins")
2596 (description "This package provides LV2 audio utility plugins, such as
2597 filters, crossovers, simple gain plugins without zipper noise, switch box
2598 plugins, a switch trigger, a toggle switch, and a peakmeter.")
2599 (license license:gpl2+))))
2600
2601 (define-public ingen
2602 (let ((commit "fd147d0b888090bfb897505852c1f25dbdf77e18")
2603 (revision "1"))
2604 (package
2605 (name "ingen")
2606 (version (string-append "0.0.0-" revision "."
2607 (string-take commit 9)))
2608 (source
2609 (origin
2610 (method git-fetch)
2611 (uri (git-reference
2612 (url "http://git.drobilla.net/ingen.git")
2613 (commit commit)))
2614 (file-name (string-append name "-" version "-checkout"))
2615 (sha256
2616 (base32
2617 "1qmg79962my82c43vyrv5sxbqci9c7gc2s9bwaaqd0fcf08xcz1z"))))
2618 (build-system waf-build-system)
2619 (arguments
2620 `(#:tests? #f ; no "check" target
2621 #:configure-flags (list "--no-webkit")
2622 #:phases
2623 (modify-phases %standard-phases
2624 (add-after 'unpack 'patch-wscript
2625 (lambda* (#:key outputs #:allow-other-keys)
2626 (let ((out (assoc-ref outputs "out")))
2627 (substitute* "wscript"
2628 ;; FIXME: Our version of lv2specgen.py does not behave as
2629 ;; expected. Maybe this requires a development version of
2630 ;; LV2.
2631 (("lv2specgen.py") "touch ingen.lv2/ingen.html; echo")
2632 ;; Add libraries to RUNPATH.
2633 (("^(.+)target.*= 'src/ingen/ingen'," line prefix)
2634 (string-append prefix
2635 "linkflags=[\"-Wl,-rpath="
2636 out "/lib" "\"]," line)))
2637 (substitute* '("src/wscript"
2638 "src/server/wscript")
2639 ;; Add libraries to RUNPATH.
2640 (("bld.env.PTHREAD_LINKFLAGS" line)
2641 (string-append line
2642 " + [\"-Wl,-rpath=" out "/lib" "\"]")))
2643 (substitute* "src/client/wscript"
2644 ;; Add libraries to RUNPATH.
2645 (("^(.+)target.*= 'ingen_client'," line prefix)
2646 (string-append prefix
2647 "linkflags=[\"-Wl,-rpath="
2648 out "/lib" "\"]," line)))
2649 (substitute* "src/gui/wscript"
2650 ;; Add libraries to RUNPATH.
2651 (("^(.+)target.* = 'ingen_gui.*" line prefix)
2652 (string-append prefix
2653 "linkflags=[\"-Wl,-rpath="
2654 out "/lib" "\"]," line))))
2655 #t)))))
2656 (inputs
2657 `(("boost" ,boost)
2658 ("python-rdflib" ,python-rdflib)
2659 ("python" ,python)
2660 ("jack" ,jack-1)
2661 ("lv2" ,lv2)
2662 ("lilv" ,lilv)
2663 ("raul" ,raul-devel)
2664 ("ganv" ,ganv-devel)
2665 ("suil" ,suil)
2666 ("serd" ,serd)
2667 ("sord" ,sord)
2668 ("sratom" ,sratom)
2669 ("gtkmm" ,gtkmm-2)))
2670 (native-inputs
2671 `(("pkg-config" ,pkg-config)
2672 ("python-pygments" ,python-pygments)))
2673 (home-page "http://drobilla.net/software/ingen")
2674 (synopsis "Modular audio processing system")
2675 (description "Ingen is a modular audio processing system for JACK and
2676 LV2 based systems. Ingen is built around LV2 technology and a strict
2677 separation of engine from user interface. The engine is controlled
2678 exclusively through a protocol, and can execute as a headless process, with an
2679 in-process GUI, or as an LV2 plugin. The GUI can run as a program which
2680 communicates over a Unix or TCP/IP socket, or as an embeddable LV2 GUI which
2681 communicates via LV2 ports. Any saved Ingen graph can be loaded as an LV2
2682 plugin on any system where Ingen is installed. This allows users to visually
2683 develop custom plugins for use in other applications without programming.")
2684 (license license:agpl3+))))
2685
2686 (define-public qmidiarp
2687 (package
2688 (name "qmidiarp")
2689 (version "0.6.4")
2690 (source (origin
2691 (method url-fetch)
2692 (uri (string-append "mirror://sourceforge/qmidiarp/qmidiarp/"
2693 version "/qmidiarp-" version ".tar.bz2"))
2694 (sha256
2695 (base32
2696 "1gkfv8ajgf86kbn6j5ilfc1zlz17gdi9yxzywqd6jwff4xlm75hx"))))
2697 (build-system gnu-build-system)
2698 (arguments
2699 `(#:configure-flags
2700 (list "--enable-qt5"
2701 "CXXFLAGS=-std=gnu++11")))
2702 (inputs
2703 `(("qtbase" ,qtbase)
2704 ("alsa-lib" ,alsa-lib)
2705 ("jack" ,jack-1)
2706 ("liblo" ,liblo)
2707 ("lv2" ,lv2)))
2708 (native-inputs
2709 `(("pkg-config" ,pkg-config)
2710 ("qttools" ,qttools)))
2711 (home-page "http://qmidiarp.sourceforge.net/")
2712 (synopsis "MIDI arpeggiator")
2713 (description "QMidiArp is an advanced MIDI arpeggiator, programmable step
2714 sequencer and LFO. It can hold any number of arpeggiator, sequencer, or LFO
2715 modules running in parallel.")
2716 (license license:gpl2+)))
2717
2718 (define-public seq24
2719 (package
2720 (name "seq24")
2721 (version "0.9.3")
2722 (source (origin
2723 (method url-fetch)
2724 (uri (string-append "https://launchpad.net/seq24/trunk/"
2725 version "/+download/seq24-"
2726 version ".tar.bz2"))
2727 (sha256
2728 (base32
2729 "12dphdhnvfk1k0vmagi1v2lhyxjyj1j3cz6ksjw0ydcvid1x8ap2"))
2730 (patches (search-patches "seq24-rename-mutex.patch"))))
2731 (build-system gnu-build-system)
2732 (arguments
2733 `(#:configure-flags
2734 (list "CXXFLAGS=-std=gnu++11")))
2735 (inputs
2736 `(("gtkmm" ,gtkmm-2)
2737 ("alsa-lib" ,alsa-lib)
2738 ("jack" ,jack-1)
2739 ("lash" ,lash)))
2740 (native-inputs
2741 `(("pkg-config" ,pkg-config)))
2742 (home-page "https://edge.launchpad.net/seq24/")
2743 (synopsis "Real-time MIDI sequencer")
2744 (description "Seq24 is a real-time MIDI sequencer. It was created to
2745 provide a very simple interface for editing and playing MIDI loops.")
2746 (license license:gpl2+)))
2747
2748 (define-public python-discogs-client
2749 (package
2750 (name "python-discogs-client")
2751 (version "2.2.1")
2752 (source (origin
2753 (method url-fetch)
2754 (uri (pypi-uri "discogs-client" version))
2755 (sha256
2756 (base32
2757 "053ld2psh0yj3z0kg6z5bn4y3cr562m727494n0ayhgzbkjbacly"))))
2758 (build-system python-build-system)
2759 (propagated-inputs
2760 `(("python-oauthlib" ,python-oauthlib)
2761 ("python-requests" ,python-requests)))
2762 (native-inputs
2763 `(("python-six" ,python-six)))
2764 (home-page "https://github.com/discogs/discogs_client")
2765 (synopsis "Official Python client for the Discogs API")
2766 (description "This is the official Discogs API client for Python. It enables
2767 you to query the Discogs database for information on artists, releases, labels,
2768 users, Marketplace listings, and more. It also supports OAuth 1.0a
2769 authorization, which allows you to change user data such as profile information,
2770 collections and wantlists, inventory, and orders.")
2771 (license license:bsd-2)))
2772
2773 (define-public python2-discogs-client
2774 (package-with-python2 python-discogs-client))
2775
2776 (define-public libsmf
2777 (package
2778 (name "libsmf")
2779 (version "1.3")
2780 (source
2781 (origin
2782 (method url-fetch)
2783 ;; SF download page says development moved, but the link it points to
2784 ;; is gone (https://github.com/nilsgey/libsmf). Someone else adopted
2785 ;; it but made no release so far (https://github.com/stump/libsmf).
2786 (uri (string-append "mirror://sourceforge/libsmf/libsmf/"
2787 version "/libsmf-" version ".tar.gz"))
2788 (sha256
2789 (base32
2790 "16c0n40h0r56gzbh5ypxa4dwp296dan3jminml2qkb4lvqarym6k"))))
2791 (build-system gnu-build-system)
2792 (outputs '("out"
2793 "static")) ; 88KiB of .a files
2794 (arguments
2795 `(#:phases
2796 (modify-phases %standard-phases
2797 (add-after 'install 'move-static-libraries
2798 (lambda* (#:key outputs #:allow-other-keys)
2799 ;; Move static libraries to the "static" output.
2800 (let* ((out (assoc-ref outputs "out"))
2801 (lib (string-append out "/lib"))
2802 (static (assoc-ref outputs "static"))
2803 (slib (string-append static "/lib")))
2804 (mkdir-p slib)
2805 (for-each (lambda (file)
2806 (install-file file slib)
2807 (delete-file file))
2808 (find-files lib "\\.a$"))
2809 #t))))))
2810 (inputs
2811 `(("readline" ,readline)
2812 ("glib" ,glib)))
2813 (native-inputs
2814 `(("doxygen" ,doxygen)
2815 ("pkg-config" ,pkg-config)))
2816 (home-page "http://libsmf.sourceforge.net/")
2817 (synopsis "Standard MIDI File format library")
2818 (description
2819 "LibSMF is a C library for handling SMF (\"*.mid\") files. It transparently handles
2820 conversions between time and pulses, tempo map handling and more. The only dependencies
2821 are a C compiler and glib. Full API documentation and examples are included.")
2822 (license license:bsd-2)))