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