gnu: python-rarfile: Update to 2.8.
[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
591 ;; system, so we take the last commit affecting the "sequencer" directory.
698bd297 592 (let ((commit "1d9bd576f6bf7ea240af5f7a60260592750af0dd"))
8e80244a
RW
593 (package
594 (name "non-sequencer")
698bd297 595 (version (string-append "1.9.5-" (string-take commit 7)))
8e80244a
RW
596 (source (origin
597 (method git-fetch)
598 (uri (git-reference
599 (url "git://git.tuxfamily.org/gitroot/non/non.git")
600 (commit commit)))
601 (sha256
602 (base32
603 "0pkkw8q6d55j38xm7r4rwpdv1wy00a44h8c4wrn7vbgpq9nij46y"))
604 (file-name (string-append name "-" version "-checkout"))))
605 (build-system waf-build-system)
606 (arguments
607 `(#:tests? #f ;no "check" target
e591a4d6
RW
608 #:configure-flags
609 (list "--project=sequencer"
610 ;; Disable the use of SSE unless on x86_64.
611 ,@(if (not (string-prefix? "x86_64" (or (%current-target-system)
612 (%current-system))))
613 '("--disable-sse")
614 '()))
d8c317df
SB
615 #:phases
616 (modify-phases %standard-phases
617 (add-before
618 'configure 'set-flags
619 (lambda _
620 ;; Compile with C++11, required by libsigc++.
621 (setenv "CXXFLAGS" "-std=c++11")
622 #t)))
8e80244a
RW
623 #:python ,python-2))
624 (inputs
625 `(("jack" ,jack-1)
626 ("libsigc++" ,libsigc++)
627 ("liblo" ,liblo)
628 ("ntk" ,ntk)))
629 (native-inputs
630 `(("pkg-config" ,pkg-config)))
631 (home-page "http://non.tuxfamily.org/wiki/Non%20Sequencer")
632 (synopsis "Pattern-based MIDI sequencer")
633 (description
634 "The Non Sequencer is a powerful, lightweight, real-time,
635pattern-based MIDI sequencer. It utilizes the JACK Audio Connection Kit for
636MIDI I/O and the NTK GUI toolkit for its user interface. Everything in Non
637Sequencer happens on-line, in real-time. Music can be composed live, while the
638transport is rolling.")
639 (license license:gpl2+))))
640
c267cc15
RW
641(define-public solfege
642 (package
643 (name "solfege")
644 (version "3.22.2")
645 (source (origin
646 (method url-fetch)
647 (uri (string-append
648 "mirror://gnu/solfege/solfege-"
649 version ".tar.xz"))
650 (sha256
651 (base32
652 "1w25rxdbj907nsx285k9nm480pvy12w3yknfh4n1dfv17cwy072i"))))
653 (build-system gnu-build-system)
654 (arguments
655 `(#:tests? #f ; xmllint attempts to download DTD
656 #:test-target "test"
657 #:phases
658 (alist-cons-after
659 'unpack 'fix-configuration
660 (lambda* (#:key inputs #:allow-other-keys)
661 (substitute* "default.config"
662 (("csound=csound")
663 (string-append "csound="
664 (assoc-ref inputs "csound")
665 "/bin/csound"))
666 (("/usr/bin/aplay")
667 (string-append (assoc-ref inputs "aplay")
668 "/bin/aplay"))
669 (("/usr/bin/timidity")
670 (string-append (assoc-ref inputs "timidity")
671 "/bin/timidity"))
672 (("/usr/bin/mpg123")
673 (string-append (assoc-ref inputs "mpg123")
674 "/bin/mpg123"))
675 (("/usr/bin/ogg123")
676 (string-append (assoc-ref inputs "ogg123")
677 "/bin/ogg123"))))
678 (alist-cons-before
679 'build 'patch-python-shebangs
680 (lambda _
681 ;; Two python scripts begin with a Unicode BOM, so patch-shebang
682 ;; has no effect.
683 (substitute* '("solfege/parsetree.py"
684 "solfege/presetup.py")
685 (("#!/usr/bin/python") (string-append "#!" (which "python")))))
686 (alist-cons-before
687 'build 'add-sitedirs
688 ;; .pth files are not automatically interpreted unless the
689 ;; directories containing them are added as "sites". The directories
690 ;; are then added to those in the PYTHONPATH. This is required for
691 ;; the operation of pygtk and pygobject.
692 (lambda _
693 (substitute* "run-solfege.py"
694 (("import os")
695 "import os, site
696for path in [path for path in sys.path if 'site-packages' in path]: site.addsitedir(path)")))
697 (alist-cons-before
698 'build 'adjust-config-file-prefix
699 (lambda* (#:key outputs #:allow-other-keys)
700 (substitute* "run-solfege.py"
701 (("prefix = os.path.*$")
702 (string-append "prefix = " (assoc-ref outputs "out")))))
703 (alist-cons-after
704 'install 'wrap-program
705 (lambda* (#:key inputs outputs #:allow-other-keys)
f3045a5b 706 ;; Make sure 'solfege' runs with the correct PYTHONPATH.
c267cc15 707 (let* ((out (assoc-ref outputs "out"))
f3045a5b 708 (path (getenv "PYTHONPATH")))
c267cc15 709 (wrap-program (string-append out "/bin/solfege")
f3045a5b 710 `("PYTHONPATH" ":" prefix (,path)))))
c267cc15
RW
711 %standard-phases)))))))
712 (inputs
713 `(("python" ,python-2)
714 ("pygtk" ,python2-pygtk)
b94a6ca0 715 ("gettext" ,gettext-minimal)
c267cc15 716 ("gtk" ,gtk+)
e8309291 717 ("lilypond" ,lilypond)
c267cc15
RW
718 ;; players needed at runtime
719 ("aplay" ,alsa-utils)
720 ("csound" ,csound) ; optional, needed for some exercises
721 ("mpg123" ,mpg123)
722 ("ogg123" ,vorbis-tools)
723 ("timidity" ,timidity++)))
724 (native-inputs
725 `(("pkg-config" ,pkg-config)
726 ("txt2man" ,txt2man)
727 ("libxml2" ,libxml2) ; for tests
728 ("ghostscript" ,ghostscript)
c267cc15
RW
729 ("texinfo" ,texinfo)))
730 (home-page "https://www.gnu.org/software/solfege/")
731 (synopsis "Ear training")
732 (description
733 "GNU Solfege is a program for practicing musical ear-training. With it,
734you can practice your recognition of various musical intervals and chords. It
735features a statistics overview so you can monitor your progress across several
736sessions. Solfege is also designed to be extensible so you can easily write
737your own lessons.")
738 (license license:gpl3+)))
6260d1a8 739
8b9ec354
RW
740(define-public powertabeditor
741 (package
742 (name "powertabeditor")
d19cf783 743 (version "2.0.0-alpha8")
8b9ec354
RW
744 (source (origin
745 (method url-fetch)
746 (uri (string-append
747 "https://github.com/powertab/powertabeditor/archive/"
748 version ".tar.gz"))
749 (file-name (string-append name "-" version ".tar.gz"))
750 (sha256
751 (base32
d19cf783 752 "0gaa2x209v3azql8ak3r1n9a9qbxjx2ssirvwdxwklv2lmfqkm82"))
8b9ec354
RW
753 (modules '((guix build utils)))
754 (snippet
755 '(begin
756 ;; Remove bundled sources for external libraries
757 (delete-file-recursively "external")
758 (substitute* "CMakeLists.txt"
759 (("include_directories\\(\\$\\{PROJECT_SOURCE_DIR\\}/external/.*") "")
8b9ec354
RW
760 (("add_subdirectory\\(external\\)") ""))
761 (substitute* "test/CMakeLists.txt"
762 (("include_directories\\(\\$\\{PROJECT_SOURCE_DIR\\}/external/.*") ""))
763
764 ;; Add install target
765 (substitute* "source/CMakeLists.txt"
766 (("qt5_use_modules")
767 (string-append
768 "install(TARGETS powertabeditor "
769 "RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)\n"
770 "install(FILES data/tunings.json DESTINATION "
771 "${CMAKE_INSTALL_PREFIX}/share/powertabeditor/)\n"
772 "qt5_use_modules")))
773 #t))))
774 (build-system cmake-build-system)
775 (arguments
7e11d113 776 `(#:modules ((guix build cmake-build-system)
8b9ec354
RW
777 (guix build utils)
778 (ice-9 match))
779 #:configure-flags
780 ;; CMake appears to lose the RUNPATH for some reason, so it has to be
781 ;; explicitly set with CMAKE_INSTALL_RPATH.
7e11d113
RW
782 (list "-DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE"
783 "-DCMAKE_ENABLE_PRECOMPILED_HEADERS=OFF" ; if ON pte_tests cannot be built
784 (string-append "-DCMAKE_INSTALL_RPATH="
8b9ec354
RW
785 (string-join (map (match-lambda
786 ((name . directory)
787 (string-append directory "/lib")))
788 %build-inputs) ";")))
789 #:phases
790 (modify-phases %standard-phases
7e11d113
RW
791 (replace
792 'check
793 (lambda _
794 (zero? (system* "bin/pte_tests"
795 ;; Exclude this failing test
796 "~Formats/PowerTabOldImport/Directions"))))
797 (add-before
798 'configure 'fix-tests
799 (lambda _
800 ;; Tests cannot be built with precompiled headers
801 (substitute* "test/CMakeLists.txt"
802 (("cotire\\(pte_tests\\)") ""))
803 #t))
8b9ec354
RW
804 (add-before
805 'configure 'remove-third-party-libs
806 (lambda* (#:key inputs #:allow-other-keys)
807 ;; Link with required static libraries, because we're not
808 ;; using the bundled version of withershins.
809 (substitute* '("source/CMakeLists.txt"
810 "test/CMakeLists.txt")
7e11d113 811 (("target_link_libraries\\((powertabeditor|pte_tests)" _ target)
8b9ec354
RW
812 (string-append "target_link_libraries(" target " "
813 (assoc-ref inputs "binutils")
814 "/lib/libbfd.a "
d6902798 815 (assoc-ref inputs "libiberty")
8b9ec354
RW
816 "/lib/libiberty.a "
817 "dl")))
818 #t)))))
819 (inputs
820 `(("boost" ,boost)
821 ("alsa-lib" ,alsa-lib)
0a0bfd68 822 ("qtbase" ,qtbase)
8b9ec354 823 ("withershins" ,withershins)
d6902798 824 ("libiberty" ,libiberty) ;for withershins
8b9ec354
RW
825 ("binutils" ,binutils) ;for -lbfd and -liberty (for withershins)
826 ("timidity" ,timidity++)
827 ("pugixml" ,pugixml)
828 ("rtmidi" ,rtmidi)
829 ("rapidjson" ,rapidjson)
830 ("zlib" ,zlib)))
831 (native-inputs
832 `(("catch" ,catch-framework)
833 ("pkg-config" ,pkg-config)))
834 (home-page "http://powertabs.net")
835 (synopsis "Guitar tablature editor")
836 (description
837 "Power Tab Editor 2.0 is the successor to the famous original Power Tab
838Editor. It is compatible with Power Tab Editor 1.7 and Guitar Pro.")
839 (license license:gpl3+)))
840
3d4b1bb9
RW
841(define-public jalv-select
842 (package
843 (name "jalv-select")
844 (version "0.7")
845 (source (origin
846 (method url-fetch)
847 (uri (string-append "https://github.com/brummer10/jalv_select/"
848 "archive/V" version ".tar.gz"))
849 (sha256
850 (base32
851 "01y93l5c1f8za04a0y4b3v0nhsm1lhj6rny9xpdgd7jz6sl6w581"))))
852 (build-system gnu-build-system)
853 (arguments
854 `(#:make-flags
855 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
856 #:phases
857 (modify-phases %standard-phases
858 (delete 'configure)
859 (add-after 'unpack 'ignore-PATH
860 (lambda* (#:key inputs #:allow-other-keys)
861 (substitute* "jalv.select.cpp"
862 (("echo \\$PATH | tr ':' '\\\n' | xargs ls")
863 (string-append "ls -1 " (assoc-ref inputs "jalv") "/bin")))
864 (substitute* "jalv.select.h"
865 (("gtkmm.h") "gtkmm-2.4/gtkmm.h"))
866 #t)))))
867 (inputs
868 `(("lilv" ,lilv)
869 ("lv2" ,lv2)
870 ("jalv" ,jalv)
871 ("gtkmm" ,gtkmm-2)))
872 (native-inputs
873 `(("pkg-config" ,pkg-config)))
874 (home-page "https://github.com/brummer10/jalv_select")
875 (synopsis "GUI to select LV2 plugins and run them with jalv")
876 (description
877 "The jalv.select package provides a graphical user interface allowing
878users to select LV2 plugins and run them with jalv.")
879 (license license:public-domain)))
880
b095e762
RW
881(define-public synthv1
882 (package
883 (name "synthv1")
f2bd238b 884 (version "0.8.0")
b095e762
RW
885 (source (origin
886 (method url-fetch)
887 (uri
de67e922
LF
888 (string-append "mirror://sourceforge/synthv1/synthv1/" version
889 "/synthv1-" version ".tar.gz"))
b095e762
RW
890 (sha256
891 (base32
f2bd238b 892 "155pfyhr6d35ciw95pbxlqy7751cmij8j5d849rvblqbjzyzb5qx"))))
b095e762 893 (build-system gnu-build-system)
69008d73
DC
894 (arguments
895 `(#:tests? #f ; There are no tests.
896 #:configure-flags
897 '("CXXFLAGS=-std=gnu++11")))
b095e762
RW
898 (inputs
899 `(("jack" ,jack-1)
900 ("lv2" ,lv2)
901 ("alsa-lib" ,alsa-lib)
902 ("liblo" ,liblo)
e5f2afdb
EF
903 ("qtbase" ,qtbase)
904 ("qttools" ,qttools)))
b095e762
RW
905 (home-page "http://synthv1.sourceforge.net")
906 (synopsis "Polyphonic subtractive synthesizer")
907 (description
908 "Synthv1 is an old-school subtractive polyphonic synthesizer with four
909oscillators and stereo effects.")
910 (license license:gpl2+)))
2bb00612 911
cf9af706
RW
912(define-public drumkv1
913 (package
914 (name "drumkv1")
915 (version "0.8.0")
916 (source (origin
917 (method url-fetch)
918 (uri
919 (string-append "mirror://sourceforge/drumkv1/drumkv1/" version
920 "/drumkv1-" version ".tar.gz"))
921 (sha256
922 (base32
923 "1n2kd468kn71yp2asmamprvblmdlvh0zd8lsh3598dwi4b7aa3ga"))))
924 (build-system gnu-build-system)
925 (arguments
926 `(#:tests? #f ; There are no tests.
927 #:configure-flags
928 '("CXXFLAGS=-std=gnu++11")))
929 (inputs
930 `(("jack" ,jack-1)
931 ("lv2" ,lv2)
932 ("libsndfile" ,libsndfile)
933 ("alsa-lib" ,alsa-lib)
934 ("liblo" ,liblo)
935 ("qtbase" ,qtbase)))
936 (native-inputs
937 `(("pkg-config" ,pkg-config)
938 ("qttools" ,qttools)))
939 (home-page "http://drumkv1.sourceforge.net")
940 (synopsis "Drum-kit sampler synthesizer with stereo effects")
941 (description
942 "Drumkv1 is an old-school drum-kit sampler synthesizer with stereo
943effects.")
944 (license license:gpl2+)))
945
18675264
RW
946(define-public samplv1
947 (package
948 (name "samplv1")
949 (version "0.8.0")
950 (source (origin
951 (method url-fetch)
952 (uri
953 (string-append "mirror://sourceforge/samplv1/samplv1/" version
954 "/samplv1-" version ".tar.gz"))
955 (sha256
956 (base32
957 "0j3hkmd9q0bw9b7nk9cssqywlrishkd1n790a9vq6gh3pdc5sf3r"))))
958 (build-system gnu-build-system)
959 (arguments
960 `(#:tests? #f ; There are no tests.
961 #:configure-flags
962 '("CXXFLAGS=-std=gnu++11")))
963 (inputs
964 `(("jack" ,jack-1)
965 ("lv2" ,lv2)
966 ("libsndfile" ,libsndfile)
967 ("alsa-lib" ,alsa-lib)
968 ("liblo" ,liblo)
969 ("qtbase" ,qtbase)))
970 (native-inputs
971 `(("pkg-config" ,pkg-config)
972 ("qttools" ,qttools)))
973 (home-page "http://samplv1.sourceforge.net")
974 (synopsis "Polyphonic sampler synthesizer with stereo effects")
975 (description
976 "Samplv1 is an old-school polyphonic sampler synthesizer with stereo
977effects.")
978 (license license:gpl2+)))
979
2bb00612
RW
980(define-public amsynth
981 (package
982 (name "amsynth")
983 (version "1.6.4")
984 (source
985 (origin
986 (method url-fetch)
987 (uri (string-append "https://github.com/amsynth/amsynth/releases/"
988 "download/release-" version
989 "/amsynth-" version ".tar.bz2"))
990 (sha256
991 (base32
992 "07dp9dl38g9krjqxxh89l2z42z08yzrl57cx95b1l67xnxwjp5k3"))))
993 (build-system gnu-build-system)
994 (arguments
995 `(#:phases
996 (modify-phases %standard-phases
997 (add-before 'configure 'set-flags
998 (lambda _
999 ;; Compile with C++11, required by gtkmm.
1000 (setenv "CXXFLAGS" "-std=c++11")
1001 #t)))))
1002 (inputs
1003 `(("alsa-lib" ,alsa-lib)
1004 ("jack" ,jack-1)
1005 ("lv2" ,lv2)
1006 ("libsndfile" ,libsndfile)
1007 ("gtk+" ,gtk+-2)
1008 ("gtkmm" ,gtkmm-2)))
1009 (native-inputs
1010 `(("pkg-config" ,pkg-config)))
1011 (home-page "http://amsynth.github.io")
1012 (synopsis "Analog modeling synthesizer")
1013 (description
1014 "amsynth is an easy-to-use software synthesizer with a classic
1015subtractive synthesizer topology. Its features include: dual
1016oscillators (sine, saw, square, noise) with hard sync; 12 and 24 dB/oct
1017resonant filters (low-pass, high-pass, band-pass, notch); mono, poly, legato
1018keyboard modes; dual ADSR envelope generators for filter and amplitude; LFO
1019which can modulate the oscillators, filter, and amplitude; distortion and
1020reverb effects.")
1021 (license license:gpl2+)))
b095e762 1022
ec8da0e2
RW
1023(define-public setbfree
1024 (package
1025 (name "setbfree")
a39f48b8 1026 (version "0.8.1")
ec8da0e2
RW
1027 (source (origin
1028 (method url-fetch)
1029 (uri
a39f48b8
RW
1030 (string-append "https://github.com/pantherb/setBfree/archive/v"
1031 version ".tar.gz"))
1032 (file-name (string-append name "-" version ".tar.gz"))
ec8da0e2
RW
1033 (sha256
1034 (base32
a39f48b8 1035 "0hj0rqk5yd4fzs7bwy6a6nhqgrmcggkjcr4il76rxy92r7nwabf3"))))
ec8da0e2
RW
1036 (build-system gnu-build-system)
1037 (arguments
1038 `(#:tests? #f ; no "check" target
1039 #:make-flags
1040 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
1041 (string-append "FONTFILE="
1042 (assoc-ref %build-inputs "font-bitstream-vera")
b42d4508
RW
1043 "/share/fonts/truetype/VeraBd.ttf")
1044 ;; Disable unsupported optimization flags on non-x86
1045 ,@(let ((system (or (%current-target-system)
1046 (%current-system))))
1047 (if (or (string-prefix? "x86_64" system)
1048 (string-prefix? "i686" system))
1049 '()
1050 '("OPTIMIZATIONS=-ffast-math -fomit-frame-pointer -O3"))))
ec8da0e2
RW
1051 #:phases
1052 (modify-phases %standard-phases
1053 (add-before 'build 'set-CC-variable
1054 (lambda _ (setenv "CC" "gcc") #t))
1055 (delete 'configure))))
1056 (inputs
1057 `(("jack" ,jack-1)
1058 ("lv2" ,lv2)
1059 ("zita-convolver" ,zita-convolver)
1060 ("glu" ,glu)
1061 ("ftgl" ,ftgl)
1062 ("font-bitstream-vera" ,font-bitstream-vera)))
1063 (native-inputs
1064 `(("help2man" ,help2man)
1065 ("pkg-config" ,pkg-config)))
1066 (home-page "http://setbfree.org")
1067 (synopsis "Tonewheel organ")
1068 (description
1069 "setBfree is a MIDI-controlled, software synthesizer designed to imitate
1070the sound and properties of the electromechanical organs and sound
1071modification devices that brought world-wide fame to the names and products of
1072Laurens Hammond and Don Leslie.")
1073 (license license:gpl2+)))
1074
770305f4
RW
1075(define-public beast
1076 (package
1077 (name "beast")
1078 (version "0.10.0")
1079 (source (origin
1080 (method url-fetch)
1081 (uri (string-append "https://testbit.eu/pub/dists/beast/beast-"
1082 version ".tar.xz"))
1083 (sha256
1084 (base32
1085 "1jzzmfwssklzw8fvvil04n8csc0zm99fnd9p2xa7c0xchg37lvhn"))))
1086 (build-system gnu-build-system)
844f4f6e
EF
1087 (arguments
1088 '(#:parallel-build? #f)) ; Race conditions cause build failures
770305f4
RW
1089 (inputs
1090 `(("rapicorn" ,rapicorn)
1091 ("guile" ,guile-1.8)
1092 ("python" ,python-2)
1093 ("cython" ,python2-cython)
1094 ("libgnomecanvas" ,libgnomecanvas)
1095 ("libogg" ,libogg)
1096 ("libmad" ,libmad)
1097 ("flac" ,flac)
1098 ("alsa-lib" ,alsa-lib)
1099 ("libvorbis" ,libvorbis)
b94a6ca0 1100 ("gettext" ,gettext-minimal)))
770305f4
RW
1101 (native-inputs
1102 `(("pkg-config" ,pkg-config)
1103 ("glib:bin" ,glib "bin")
1104 ("perl" ,perl)
1105 ("perl-xml-parser" ,perl-xml-parser)))
1106 (home-page "https://testbit.eu/wiki/Beast_Home")
1107 (synopsis "Music composition and modular synthesis environment")
1108 (description
1109 "Beast is a music composition and modular synthesis application. It
1110supports a wide range of standards in the field, such as MIDI, various audio
1111file formats and LADSPA modules. It allows for multitrack editing, real-time
1112synthesis, 32bit audio rendering, precise timing down to sample granularity,
1113on-demand and partial loading of wave files, on the fly decoding, stereo
1114mixing, FFT scopes, MIDI automation and full scriptability in Scheme.")
1115 (license license:gpl3+)))
1116
96250294
RW
1117(define-public bristol
1118 (package
1119 (name "bristol")
1120 (version "0.60.11")
1121 (source (origin
1122 (method url-fetch)
1123 (uri (string-append "mirror://sourceforge/bristol/bristol/"
1124 (version-major+minor version)
1125 "/bristol-" version ".tar.gz"))
1126 (sha256
1127 (base32
1128 "1fi2m4gmvxdi260821y09lxsimq82yv4k5bbgk3kyc3x1nyhn7vx"))))
1129 (build-system gnu-build-system)
18ef998b
RW
1130 (arguments
1131 `(#:phases
1132 (modify-phases %standard-phases
1133 (add-after 'unpack 'remove-sse-flags
1134 (lambda* (#:key system #:allow-other-keys)
1135 (when (not (or (string-prefix? "x86_64" system)
1136 (string-prefix? "i686" system)))
1137 (substitute* "bristol/Makefile.in"
1138 (("-msse -mfpmath=sse") "")))
73124d34
RW
1139 #t))
1140 ;; We know that Bristol has been linked with JACK and we don't have
1141 ;; ldd, so we can just skip this check.
1142 (add-after 'unpack 'do-not-grep-for-jack
1143 (lambda _
1144 (substitute* "bin/startBristol.in"
1145 (("ldd `which bristol` | grep jack") "echo guix"))
18ef998b 1146 #t)))))
96250294
RW
1147 (inputs
1148 `(("alsa-lib" ,alsa-lib)
1149 ("jack" ,jack-1)
1150 ("liblo" ,liblo)
1151 ("libx11" ,libx11)))
1152 (native-inputs
1153 `(("pkg-config" ,pkg-config)))
1154 (home-page "http://bristol.sourceforge.net/")
1155 (synopsis "Synthesizer emulator")
1156 (description
1157 "Bristol is an emulation package for a number of different 'classic'
1158synthesizers including additive and subtractive and a few organs. The
1159application consists of the engine, which is called bristol, and its own GUI
1160library called brighton that represents all the emulations. There are
1161currently more than twenty different emulations; each does sound different
1162although the author maintains that the quality and accuracy of each emulation
1163is subjective.")
1164 (license license:gpl3+)))
1165
6260d1a8
RW
1166(define-public tuxguitar
1167 (package
1168 (name "tuxguitar")
f467c352 1169 (version "1.3.2")
6260d1a8
RW
1170 (source (origin
1171 (method url-fetch)
1172 (uri (string-append
1173 "mirror://sourceforge/tuxguitar/TuxGuitar/TuxGuitar-"
f467c352 1174 version "/tuxguitar-" version "-src.tar.gz"))
6260d1a8
RW
1175 (sha256
1176 (base32
f467c352
RW
1177 "0ldml31zvywid1w28mfd65ramyiics55fdl0ch846vm7j7nwv58j"))
1178 (modules '((guix build utils)))
1179 (snippet
1180 ;; Delete pre-built classes
1181 '(delete-file-recursively "TuxGuitar-android/bin"))))
1182 (build-system ant-build-system)
6260d1a8 1183 (arguments
f467c352
RW
1184 `(#:build-target "build"
1185 #:tests? #f ; no tests
6260d1a8 1186 #:phases
5f1c9498 1187 (modify-phases %standard-phases
f467c352
RW
1188 (add-after 'unpack 'enter-dir
1189 (lambda _ (chdir "TuxGuitar-lib") #t))
1190 (add-after 'build 'build-editor-utils
1191 (lambda* (#:key inputs outputs #:allow-other-keys)
1192 (chdir "..")
1193 (let ((cwd (getcwd)))
1194 (setenv "CLASSPATH"
1195 (string-append
1196 cwd "/TuxGuitar-lib/tuxguitar-lib.jar" ":"
1197 cwd "/TuxGuitar-editor-utils/build/jar/tuxguitar-editor-utils.jar" ":"
1198 (getenv "CLASSPATH"))))
1199 (chdir "TuxGuitar-editor-utils")
1200 ;; Generate default build.xml
1201 ((@@ (guix build ant-build-system) default-build.xml)
1202 "tuxguitar-editor-utils.jar"
1203 (string-append (assoc-ref outputs "out")
1204 "/share/java"))
1205 ((assoc-ref %standard-phases 'build))))
1206 (add-after 'build-editor-utils 'build-application
1207 (lambda _
1208 (chdir "../TuxGuitar")
1209 ((assoc-ref %standard-phases 'build)
1210 #:build-target "build")))
1211 (replace 'install
1212 (lambda* (#:key inputs outputs #:allow-other-keys)
1213 (let* ((out (assoc-ref outputs "out"))
1214 (bin (string-append out "/bin"))
1215 (share (string-append out "/share"))
1216 (lib (string-append share "/java"))
1217 (swt (assoc-ref inputs "java-swt")))
1218 (mkdir-p bin)
f467c352
RW
1219 ;; install all jars
1220 (for-each (lambda (file)
1221 (install-file file lib))
1222 (find-files ".." "\\.jar$"))
1223 ;; install all resources
1224 (for-each (lambda (file)
1225 (install-file file share))
1226 (find-files "share" ".*"))
1227 ;; create wrapper
1228 (call-with-output-file (string-append bin "/tuxguitar")
1229 (lambda (port)
1230 (let ((classpath (string-join (append (find-files lib "\\.jar$")
1231 (find-files swt "\\.jar$"))
1232 ":")))
1233 (format
1234 port
1235 (string-append "#!/bin/sh\n"
1236 (which "java")
1237 " -cp " classpath
1238 " -Dtuxguitar.home.path=" out
1239 " -Dtuxguitar.share.path=" out "/share"
1240 " -Dswt.library.path=" swt "/lib"
1241 " org.herac.tuxguitar.app.TGMainSingleton"
1242 " \"$1\" \"$2\"")))))
1243 (chmod (string-append bin "/tuxguitar") #o555)
1244 #t))))))
6260d1a8 1245 (inputs
1ad15c16 1246 `(("java-swt" ,java-swt)))
6260d1a8
RW
1247 (home-page "http://tuxguitar.com.ar")
1248 (synopsis "Multitrack tablature editor and player")
1249 (description
1250 "TuxGuitar is a guitar tablature editor with player support through midi.
1251It can display scores and multitrack tabs. TuxGuitar provides various
1252additional features, including autoscrolling while playing, note duration
1253management, bend/slide/vibrato/hammer-on/pull-off effects, support for
1254tuplets, time signature management, tempo management, gp3/gp4/gp5 import and
1255export.")
1256 (license license:lgpl2.1+)))
2d0fd07b
RW
1257
1258(define-public pd
1259 (package
1260 (name "pd")
1261 (version "0.45.4")
1262 (source (origin
1263 (method url-fetch)
1264 (uri
1265 (string-append "mirror://sourceforge/pure-data/pure-data/"
1266 version "/pd-" (version-major+minor version)
1267 "-" (last (string-split version #\.))
1268 ".src.tar.gz"))
1269 (sha256
1270 (base32
1271 "1ls2ap5yi2zxvmr247621g4jx0hhfds4j5704a050bn2n3l0va2p"))))
1272 (build-system gnu-build-system)
1273 (arguments
1274 `(#:tests? #f ; no "check" target
1275 #:phases
1276 (modify-phases %standard-phases
1277 (add-before
1278 'configure 'fix-wish-path
1279 (lambda _
1280 (substitute* "src/s_inter.c"
1281 ((" wish ") (string-append " " (which "wish8.6") " ")))
1282 (substitute* "tcl/pd-gui.tcl"
1283 (("exec wish ") (string-append "exec " (which "wish8.6") " ")))
1284 #t))
1285 (add-after
1286 'unpack 'autoconf
1287 (lambda _ (zero? (system* "autoreconf" "-vfi")))))))
1288 (native-inputs
1289 `(("autoconf" ,autoconf)
1290 ("automake" ,automake)
1291 ("libtool" ,libtool)
b94a6ca0 1292 ("gettext" ,gettext-minimal)
2d0fd07b
RW
1293 ("pkg-config" ,pkg-config)))
1294 (inputs
1295 `(("tk" ,tk)
1296 ("alsa-lib" ,alsa-lib)
1297 ("jack" ,jack-1)))
1298 (home-page "http://puredata.info")
1299 (synopsis "Visual programming language for artistic performances")
1300 (description
1301 "Pure Data (aka Pd) is a visual programming language. Pd enables
1302musicians, visual artists, performers, researchers, and developers to create
1303software graphically, without writing lines of code. Pd is used to process
1304and generate sound, video, 2D/3D graphics, and interface sensors, input
1305devices, and MIDI. Pd can easily work over local and remote networks to
1306integrate wearable technology, motor systems, lighting rigs, and other
1307equipment. Pd is suitable for learning basic multimedia processing and visual
1308programming methods as well as for realizing complex systems for large-scale
1309projects.")
1310 (license license:bsd-3)))
821664f1 1311
aacb52fb
RW
1312(define-public portmidi
1313 (package
1314 (name "portmidi")
1315 (version "217")
1316 (source (origin
1317 (method url-fetch)
1318 (uri (string-append "mirror://sourceforge/portmedia/portmidi/"
1319 version "/portmidi-src-" version ".zip"))
1320 (sha256
1321 (base32
1322 "03rfsk7z6rdahq2ihy5k13qjzgx757f75yqka88v3gc0pn9ais88"))
1323 (patches (list (search-patch "portmidi-modular-build.patch")))))
1324 (build-system cmake-build-system)
1325 (arguments
1326 `(#:tests? #f ; tests cannot be linked
1327 #:configure-flags
1328 (list "-DPORTMIDI_ENABLE_JAVA=Off"
1329 "-DCMAKE_BUILD_TYPE=Release" ; needed to have PMALSA set
1330 "-DPORTMIDI_ENABLE_TEST=Off"))) ; tests fail linking
1331 (inputs
1332 `(("alsa-lib" ,alsa-lib)))
1333 (native-inputs
1334 `(("unzip" ,unzip)))
1335 (home-page "http://portmedia.sourceforge.net/portmidi/")
1336 (synopsis "Library for MIDI I/O")
1337 (description
1338 "PortMidi is a library supporting real-time input and output of MIDI data
1339using a system-independent interface.")
1340 (license license:expat)))
f65d59fc 1341
38098bf7
RW
1342(define-public portmidi-for-extempore
1343 (package (inherit portmidi)
1344 (name "portmidi-for-extempore")
1345 (version "217")
1346 (source (origin
1347 (method url-fetch)
1348 (uri (string-append "https://github.com/extemporelang/portmidi/"
1349 "archive/" version ".tar.gz"))
1350 (file-name (string-append name "-" version ".tar.gz"))
1351 (sha256
1352 (base32
1353 "0gjikwciyr8kk4y3qiv1pcq58xpgw38ql1m2gs6g0qc1s8sx4235"))))
1354 (build-system cmake-build-system)
1355 (arguments `(#:tests? #f)) ; no tests
1356 (native-inputs '())
39162ee4
RW
1357 ;; Extempore refuses to build on architectures other than x86_64
1358 (supported-systems '("x86_64-linux"))
38098bf7
RW
1359 (home-page "https://github.com/extemporelang/portmidi/")))
1360
f65d59fc
RW
1361(define-public python-pyportmidi
1362 (package
1363 (name "python-pyportmidi")
1364 (version (package-version portmidi))
1365 (source (package-source portmidi))
1366 (build-system python-build-system)
1367 (arguments
1368 `(#:tests? #f ; no tests included
1369 #:phases
1370 (modify-phases %standard-phases
1371 (add-after 'unpack 'enter-dir
1372 (lambda _ (chdir "pm_python") #t))
1373 (add-after 'enter-dir 'fix-setup.py
1374 (lambda _
1375 (substitute* "setup.py"
1376 ;; Use Python 3 syntax
1377 (("print (\".*\")" _ text)
1378 (string-append "print(" text ")\n"))
1379 ;; TODO.txt and CHANGES.txt don't exist
1380 (("CHANGES =.*") "CHANGES = \"\"\n")
1381 (("TODO =.*") "TODO = \"\"\n"))
1382 #t)))))
1383 (inputs
1384 `(("portmidi" ,portmidi)
1385 ("alsa-lib" ,alsa-lib)
1386 ("python-cython" ,python-cython)))
1387 (native-inputs
1388 `(("unzip" ,unzip)))
1389 (home-page "http://portmedia.sourceforge.net/portmidi/")
1390 (synopsis "Python bindings to PortMidi")
1391 (description
1392 "This package provides Python bindings to the PortMidi library.")
1393 (license license:expat)))
aacb52fb 1394
821664f1
RW
1395(define-public frescobaldi
1396 (package
1397 (name "frescobaldi")
4b2eede4 1398 (version "2.19.0")
821664f1
RW
1399 (source (origin
1400 (method url-fetch)
1401 (uri (string-append
1402 "https://github.com/wbsoft/frescobaldi/releases/download/v"
1403 version "/frescobaldi-" version ".tar.gz"))
1404 (sha256
1405 (base32
4b2eede4 1406 "1rnk8i8dlshzx16n2qxcsqcs7kywgyazzyzw2vy4vp2gsm9vs9ml"))))
821664f1
RW
1407 (build-system python-build-system)
1408 (inputs
1409 `(("lilypond" ,lilypond)
6855b347 1410 ("portmidi" ,portmidi)
821664f1
RW
1411 ("python-pyqt-4" ,python-pyqt-4)
1412 ("python-ly" ,python-ly)
6855b347 1413 ("python-pyportmidi" ,python-pyportmidi)
821664f1
RW
1414 ("poppler" ,poppler)
1415 ("python-poppler-qt4" ,python-poppler-qt4)
1416 ("python-sip" ,python-sip)))
1417 (home-page "http://www.frescobaldi.org/")
1418 (synopsis "LilyPond sheet music text editor")
1419 (description
1420 "Frescobaldi is a LilyPond sheet music text editor with syntax
1421highlighting and automatic completion. Among other things, it can render
1422scores next to the source, can capture input from MIDI or read MusicXML and
1423ABC files, has a MIDI player for proof-listening, and includes a documentation
1424browser.")
1425 (license license:gpl2+)))
ddfddb0c 1426
bf76d780
RW
1427(define-public drumstick
1428 (package
1429 (name "drumstick")
382aacc5 1430 (version "1.1.0")
bf76d780
RW
1431 (source (origin
1432 (method url-fetch)
1433 (uri (string-append "mirror://sourceforge/drumstick/"
1434 version "/drumstick-" version ".tar.bz2"))
1435 (sha256
1436 (base32
382aacc5 1437 "13pkfqrav30bbcddgf1imd7jk6lpqbxkz1qv31718pdl446jq7df"))))
bf76d780
RW
1438 (build-system cmake-build-system)
1439 (arguments
1440 `(#:tests? #f ; no test target
1441 #:configure-flags '("-DLIB_SUFFIX=")
1442 #:phases
1443 (modify-phases %standard-phases
1444 (add-before 'configure 'fix-docbook
1445 (lambda* (#:key inputs #:allow-other-keys)
1446 (substitute* "cmake_admin/CreateManpages.cmake"
1447 (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
1448 (string-append (assoc-ref inputs "docbook-xsl")
1449 "/xml/xsl/docbook-xsl-"
1450 ,(package-version docbook-xsl)
1451 "/manpages/docbook.xsl")))
1452 #t)))))
1453 (inputs
ca1cab82
EF
1454 `(("qtbase" ,qtbase)
1455 ("qtsvg" ,qtsvg)
bf76d780
RW
1456 ("alsa-lib" ,alsa-lib)
1457 ("fluidsynth" ,fluidsynth)))
1458 (native-inputs
1459 `(("pkg-config" ,pkg-config)
1460 ("libxslt" ,libxslt) ;for xsltproc
1461 ("docbook-xsl" ,docbook-xsl)
1462 ("doxygen" ,doxygen)))
1463 (home-page "http://drumstick.sourceforge.net/")
1464 (synopsis "C++ MIDI library")
1465 (description
1466 "Drumstick is a set of MIDI libraries using C++/Qt5 idioms and style. It
1467includes a C++ wrapper around the ALSA library sequencer interface. A
1468complementary library provides classes for processing SMF (Standard MIDI
1469files: .MID/.KAR), Cakewalk (.WRK), and Overture (.OVE) file formats. A
1470multiplatform realtime MIDI I/O library is also provided with various output
1471backends, including ALSA, OSS, Network and FluidSynth.")
1472 (license license:gpl2+)))
1473
ddfddb0c
RW
1474(define-public zynaddsubfx
1475 (package
1476 (name "zynaddsubfx")
1ea7969f 1477 (version "3.0.0")
ddfddb0c
RW
1478 (source (origin
1479 (method url-fetch)
1480 (uri (string-append
1481 "mirror://sourceforge/zynaddsubfx/zynaddsubfx/"
138e7697 1482 version "/zynaddsubfx-" version ".tar.bz2"))
ddfddb0c
RW
1483 (sha256
1484 (base32
1ea7969f 1485 "0p640hlw28264nzrnd2lm4bi5snas4fvh80p8lpxvph2hjw3sncl"))))
ddfddb0c 1486 (build-system cmake-build-system)
00dfc97c
RW
1487 (arguments
1488 `(#:phases
1489 (modify-phases %standard-phases
1490 ;; Move SSE compiler optimization flags from generic target to
1491 ;; athlon64 and core2 targets, because otherwise the build would fail
1492 ;; on non-Intel machines.
1493 (add-after 'unpack 'remove-sse-flags-from-generic-target
1494 (lambda _
1495 (substitute* "src/CMakeLists.txt"
1496 (("-msse -msse2 -mfpmath=sse") "")
1497 (("-march=(athlon64|core2)" flag)
1498 (string-append flag " -msse -msse2 -mfpmath=sse")))
1499 #t)))))
ddfddb0c
RW
1500 (inputs
1501 `(("liblo" ,liblo)
1502 ("ntk" ,ntk)
1ea7969f 1503 ("mesa" ,mesa)
ddfddb0c
RW
1504 ("alsa-lib" ,alsa-lib)
1505 ("jack" ,jack-1)
1506 ("fftw" ,fftw)
1507 ("minixml" ,minixml)
1508 ("libxpm" ,libxpm)
1509 ("zlib" ,zlib)))
1510 (native-inputs
1511 `(("pkg-config" ,pkg-config)))
1512 (home-page "http://zynaddsubfx.sf.net/")
1513 (synopsis "Software synthesizer")
1514 (description
1515 "ZynAddSubFX is a feature heavy realtime software synthesizer. It offers
1516three synthesizer engines, multitimbral and polyphonic synths, microtonal
1517capabilities, custom envelopes, effects, etc.")
1518 (license license:gpl2)))
c493679f
RW
1519
1520(define-public yoshimi
1521 (package
1522 (name "yoshimi")
7fd30d1b 1523 (version "1.4.1")
c493679f
RW
1524 (source (origin
1525 (method url-fetch)
1526 (uri (string-append "mirror://sourceforge/yoshimi/"
1527 (version-major+minor version)
1528 "/yoshimi-" version ".tar.bz2"))
1529 (sha256
1530 (base32
7fd30d1b 1531 "133sx42wb66g803pcrgdwph40wh94knvab3yfqkgm0001jv4v14y"))))
c493679f
RW
1532 (build-system cmake-build-system)
1533 (arguments
1534 `(#:tests? #f ; there are no tests
1535 #:configure-flags
1536 (list (string-append "-DCMAKE_INSTALL_DATAROOTDIR="
1537 (assoc-ref %outputs "out") "/share"))
1538 #:phases
1539 (modify-phases %standard-phases
1540 (add-before 'configure 'enter-dir
1541 (lambda _ (chdir "src") #t))
1542 ;; Move SSE compiler optimization flags from generic target to
1543 ;; athlon64 and core2 targets, because otherwise the build would fail
1544 ;; on non-Intel machines.
1545 (add-after 'unpack 'remove-sse-flags-from-generic-target
1546 (lambda _
1547 (substitute* "src/CMakeLists.txt"
1548 (("-msse -msse2 -mfpmath=sse") "")
1549 (("-march=(athlon64|core2)" flag)
1550 (string-append flag " -msse -msse2 -mfpmath=sse")))
7fd30d1b
RW
1551 #t))
1552 ;; Yoshimi tries to find ncurses with pkg-config, but our ncurses
1553 ;; package does not install .pc files.
1554 (add-after 'unpack 'find-ncurses
1555 (lambda _
1556 (substitute* "src/CMakeLists.txt"
1557 (("LIBNCURSES REQUIRED") "LIBNCURSES")
1558 (("NCURSES REQUIRED") "NCURSES")
1559 (("FATAL_ERROR \"libncurses") "STATUS \"libncurses")
1560 (("\\$\\{NCURSES_LIBRARIES\\}") "ncurses"))
1561 #t)))))
c493679f
RW
1562 (inputs
1563 `(("boost" ,boost)
1564 ("fftwf" ,fftwf)
1565 ("alsa-lib" ,alsa-lib)
1566 ("jack" ,jack-1)
1567 ("fontconfig" ,fontconfig)
1568 ("minixml" ,minixml)
1569 ("mesa" ,mesa)
1570 ("fltk" ,fltk)
1571 ("lv2" ,lv2)
1572 ("readline" ,readline)
1573 ("ncurses" ,ncurses)
1574 ("cairo" ,cairo)
1575 ("zlib" ,zlib)))
1576 (native-inputs
1577 `(("pkg-config" ,pkg-config)))
1578 (home-page "http://yoshimi.sourceforge.net/")
1579 (synopsis "Multi-paradigm software synthesizer")
1580 (description
1581 "Yoshimi is a fork of ZynAddSubFX, a feature heavy realtime software
1582synthesizer. It offers three synthesizer engines, multitimbral and polyphonic
1583synths, microtonal capabilities, custom envelopes, effects, etc. Yoshimi
1584improves on support for JACK features, such as JACK MIDI.")
1585 (license license:gpl2)))
658212eb 1586
a9f55bf2
RW
1587(define-public jack-keyboard
1588 (package
1589 (name "jack-keyboard")
1590 (version "2.5")
1591 (source
1592 (origin
1593 (method url-fetch)
1594 (uri (string-append "mirror://sourceforge/jack-keyboard/jack-keyboard/"
1595 version "/jack-keyboard-" version ".tar.gz"))
1596 (sha256
1597 (base32
1598 "0mzmg8aavybcfdlq2yd9d0vscqd6is5p6jzrgfpfm5j3xdcvh2s3"))))
1599 (build-system gnu-build-system)
1600 (inputs
1601 `(("jack" ,jack-1)
1602 ("lash" ,lash)
1603 ("gtk+" ,gtk+-2)))
1604 (native-inputs
1605 `(("pkg-config" ,pkg-config)))
1606 (home-page "http://jack-keyboard.sourceforge.net/")
1607 (synopsis "Virtual MIDI keyboard")
1608 (description "Jack-keyboard is a virtual MIDI keyboard, a program that
1609allows you to send JACK MIDI events (i.e. play) using your PC keyboard.")
1610 (license license:bsd-2)))
1611
658212eb
LF
1612(define-public cursynth
1613 (package
1614 (name "cursynth")
1615 (version "1.5")
1616 (source
1617 (origin
1618 (method url-fetch)
1619 (uri (string-append "mirror://gnu/cursynth/cursynth-"
1620 version ".tar.gz"))
1621 (sha256
1622 (base32 "1dhphsya41rv8z6yqcv9l6fwbslsds4zh1y56zizi39nd996d40v"))
fc1adab1 1623 (patches (search-patches "cursynth-wave-rand.patch"))))
658212eb
LF
1624 (build-system gnu-build-system)
1625 (native-inputs `(("pkg-config" ,pkg-config)))
1626 ;; TODO: See https://github.com/iyoko/cursynth/issues/4 which currently
1627 ;; prevents us from using pulseaudio
1628 (inputs `(("ncurses" ,ncurses)
1629 ("alsa" ,alsa-lib)))
1630 (home-page "http://www.gnu.org/software/cursynth")
1631 (synopsis "Polyphonic and MIDI subtractive music synthesizer using curses")
1632 (description "GNU cursynth is a polyphonic synthesizer that runs
1633graphically in the terminal. It is built on a full-featured subtractive
1634synthesis engine. Notes and parameter changes may be entered via MIDI or the
1635computer's keyboard.")
1636 (license license:gpl3+)))
a763ce7d
RW
1637
1638(define-public qtractor
1639 (package
1640 (name "qtractor")
aaaf8b38 1641 (version "0.8.0")
a763ce7d
RW
1642 (source (origin
1643 (method url-fetch)
1644 (uri (string-append "http://downloads.sourceforge.net/qtractor/"
1645 "qtractor-" version ".tar.gz"))
1646 (sha256
1647 (base32
aaaf8b38 1648 "17v563liyqcvil204ry1qfp09d91944nqz2ig33f5c3pyg4z2427"))))
a763ce7d
RW
1649 (build-system gnu-build-system)
1650 (arguments `(#:tests? #f)) ; no "check" target
1651 (inputs
1652 `(("qt" ,qt)
1653 ("alsa-lib" ,alsa-lib)
1654 ("jack" ,jack-1)
1655 ("libsndfile" ,libsndfile)
1656 ("ladspa" ,ladspa)
1657 ("lv2" ,lv2)
1658 ("lilv" ,lilv)
1659 ("suil" ,suil)
1660 ("libsamplerate" ,libsamplerate)
1661 ("libvorbis" ,libvorbis)
1662 ("libmad" ,libmad)
1663 ("rubberband" ,rubberband)
1664 ("liblo" ,liblo)
1665 ("zlib" ,zlib)))
1666 (native-inputs
1667 `(("pkg-config" ,pkg-config)))
1668 (home-page "http://qtractor.sourceforge.net/")
1669 (synopsis "Audio/MIDI multi-track sequencer")
1670 (description
1671 "Qtractor is an Audio/MIDI multi-track sequencer application. It uses
1672JACK for audio and ALSA sequencer for MIDI as multimedia infrastructures and
1673follows a traditional multi-track tape recorder control paradigm.")
1674 (license license:gpl2+)))
aa0edd3f 1675
aed023ff
RW
1676(define-public gxtuner
1677 (package
1678 (name "gxtuner")
1679 (version "2.3")
1680 (source (origin
1681 (method url-fetch)
1682 (uri (string-append "https://github.com/brummer10/gxtuner/"
1683 "archive/v" version ".tar.gz"))
1684 (file-name (string-append name "-" version ".tar.gz"))
1685 (sha256
1686 (base32
1687 "1abpxiydn4c9wssz6895hnad9ipkcy3rkgzbnanvwb46nm44x6if"))))
1688 (build-system gnu-build-system)
1689 (arguments
1690 `(#:make-flags
1691 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
1692 (string-append "INCLUDE_L_DIR="
1693 (assoc-ref %build-inputs "zita-resampler")
1694 "/include/"))
1695 #:phases
1696 (modify-phases %standard-phases
1697 (delete 'configure))))
1698 (inputs
1699 `(("gtk+" ,gtk+-2)
1700 ("jack" ,jack-1)
1701 ("fftwf" ,fftwf)
1702 ("cairo" ,cairo)
1703 ("zita-resampler" ,zita-resampler)))
1704 (native-inputs
1705 `(("pkg-config" ,pkg-config)))
1706 (home-page "https://github.com/brummer10/gxtuner")
1707 (synopsis "Guitar tuner")
1708 (description "GXtuner is a simple guitar tuner for JACK with an
1709analogue-like user interface.")
1710 (license license:gpl2+)))
1711
c2c9e748
RW
1712(define-public mod-host
1713 ;; The last release was in 2014 but since then more than 140 commits have
1714 ;; been made.
1715 (let ((commit "72aca771e3a4e3889641b9bab84985586c9bb926")
1716 (revision "1"))
1717 (package
1718 (name "mod-host")
1719 (version (string-append "0.10.6-" revision "." (string-take commit 9)))
1720 (source (origin
1721 (method git-fetch)
1722 (uri (git-reference
1723 (url "https://github.com/moddevices/mod-host")
1724 (commit commit)))
1725 (sha256
1726 (base32
1727 "19szi8cy65jlchbrmbjbma03g6gxj9zyyp4dgw1k06r0cxbx82gq"))
1728 (file-name (string-append name "-" version "-checkout"))))
1729 (build-system gnu-build-system)
1730 (arguments
1731 `(#:tests? #f ; no tests included
1732 #:make-flags
1733 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
1734 "CC=gcc")
1735 #:phases
1736 (modify-phases %standard-phases
1737 (delete 'configure)
1738 (add-after 'unpack 'fix-jack-installation-directory
1739 (lambda _
1740 ;; Do not attempt to install files to output of "jack" package.
1741 (substitute* "Makefile"
1742 (("\\$\\(shell pkg-config --variable=libdir jack\\)")
1743 "lib"))
1744 #t)))))
1745 (inputs
1746 `(("lilv" ,lilv)
45591fd7
RW
1747 ("fftw" ,fftw-with-threads)
1748 ("fftwf" ,fftwf-with-threads)
c2c9e748
RW
1749 ("lv2" ,lv2)
1750 ("jack" ,jack-1)
1751 ("readline" ,readline)))
1752 (native-inputs
1753 `(("pkg-config" ,pkg-config)
1754 ("python" ,python-2)))
1755 (home-page "https://github.com/moddevices/mod-host")
1756 (synopsis "LV2 host for Jack controllable via socket or command line")
1757 (description "mod-host is an LV2 plugin host for JACK, controllable via
1758socket or command line.")
1759 (license license:gpl3+))))
1760
aa0edd3f
AM
1761(define-public pianobar
1762 (package
1763 (name "pianobar")
1764 (version "2015.11.22")
1765 (source (origin
1766 (method url-fetch)
1767 (uri (string-append "https://github.com/PromyLOPh/"
1768 name "/archive/" version ".tar.gz"))
1769 (file-name (string-append name "-" version ".tar.gz"))
1770 (sha256
1771 (base32
1772 "022df19bhxqvkhy0qy21xahba5s1fm17b13y0p9p9dnf2yl44wfv"))))
1773 (build-system gnu-build-system)
1774 (arguments
1775 `(#:tests? #f ; no tests
1776 #:make-flags (list "CC=gcc" "CFLAGS=-std=c99"
1777 (string-append "PREFIX=" %output))
1778 #:phases (modify-phases %standard-phases
1779 (delete 'configure))))
1780 (inputs
1781 `(("ao" ,ao)
1782 ("curl" ,curl)
1783 ("libgcrypt" ,libgcrypt)
1784 ("json-c" ,json-c)
1785 ("ffmpeg" ,ffmpeg)))
1786 (native-inputs
1787 `(("pkg-config" ,pkg-config)))
1788 (home-page "http://6xq.net/projects/pianobar/")
1789 (synopsis "Console-based pandora.com player")
1790 (description "pianobar is a console-based music player for the
1791personalized online radio pandora.com. It has configurable keys for playing
1792and managing stations, can be controlled remotely via fifo, and can run
1793event-based scripts for scrobbling, notifications, etc.")
1794 (license license:expat)))
3f7a182d
LF
1795
1796(define-public python-mutagen
1797 (package
1798 (name "python-mutagen")
4228a79e 1799 (version "1.35.1")
3f7a182d
LF
1800 (source (origin
1801 (method url-fetch)
1802 (uri (pypi-uri "mutagen" version))
1803 (sha256
1804 (base32
4228a79e 1805 "0klk68c1n3285vvm2xzk8ii7mlqp1dxii04askan0gi1wlpagka9"))))
3f7a182d 1806 (build-system python-build-system)
4228a79e
LF
1807 (native-inputs
1808 `(("python-pytest" ,python-pytest)))
3f7a182d
LF
1809 (home-page "https://bitbucket.org/lazka/mutagen")
1810 (synopsis "Read and write audio tags")
1811 (description "Mutagen is a Python module to handle audio metadata. It
1812supports ASF, FLAC, M4A, Monkey’s Audio, MP3, Musepack, Ogg FLAC, Ogg Speex, Ogg
1813Theora, Ogg Vorbis, True Audio, WavPack and OptimFROG audio files. All versions
1814of ID3v2 are supported, and all standard ID3v2.4 frames are parsed. It can read
1815Xing headers to accurately calculate the bitrate and length of MP3s. ID3 and
1816APEv2 tags can be edited regardless of audio format. It can also manipulate Ogg
1817streams on an individual packet/page level.")
1818 (license license:gpl2))) ; "later version" never mentioned
1819
1820(define-public python2-mutagen
1821 (package-with-python2 python-mutagen))
8975de88
LF
1822
1823(define-public python-musicbrainzngs
1824 (package
1825 (name "python-musicbrainzngs")
daedf34d 1826 (version "0.6")
8975de88
LF
1827 (source (origin
1828 (method url-fetch)
1829 (uri (pypi-uri "musicbrainzngs" version))
1830 (sha256
1831 (base32
daedf34d 1832 "1dddarpjawryll2wss65xq3v9q8ln8dan7984l5dxzqx88d2dvr8"))))
8975de88 1833 (build-system python-build-system)
daedf34d
LF
1834 (arguments
1835 '(;; The tests fail suffer from race conditions:
1836 ;; https://github.com/alastair/python-musicbrainzngs/issues/211
1837 #:tests? #f))
8975de88
LF
1838 (home-page "https://python-musicbrainzngs.readthedocs.org/")
1839 (synopsis "Python bindings for MusicBrainz NGS webservice")
1840 (description "Musicbrainzngs implements Python bindings of the MusicBrainz
1841web service. This library can be used to retrieve music metadata from the
1842MusicBrainz database.")
1843 ;; 'musicbrainzngs/compat.py' is ISC licensed.
1844 (license (list license:bsd-2 license:isc))))
1845
1846(define-public python2-musicbrainzngs
1847 (package-with-python2 python-musicbrainzngs))
e8fee648 1848
a2eab422 1849(define-public python2-pyechonest
e8fee648 1850 (package
a2eab422 1851 (name "python2-pyechonest")
e8fee648
LF
1852 (version "9.0.0")
1853 (source (origin
1854 (method url-fetch)
1855 (uri (pypi-uri "pyechonest" version))
1856 (sha256
1857 (base32
1858 "1584nira3rkiman9dm81kdshihmkj21s8navndz2l8spnjwb790x"))))
1859 (build-system python-build-system)
a2eab422
LF
1860 (arguments
1861 `(;; Python 3 is not supported:
1862 ;; https://github.com/echonest/pyechonest/issues/42
1863 #:python ,python-2))
1864 (native-inputs `(("python2-setuptools" ,python2-setuptools)))
e8fee648
LF
1865 (home-page "https://github.com/echonest/pyechonest")
1866 (synopsis "Python interface to The Echo Nest APIs")
d3e3468f
LF
1867 (description "Pyechonest is a Python library for the Echo Nest API. With
1868Pyechonest you have Python access to the entire set of API methods including:
e8fee648
LF
1869
1870@enumerate
1871@item artist - search for artists by name, description, or attribute, and get
1872back detailed information about any artist including audio, similar artists,
1873blogs, familiarity, hotttnesss, news, reviews, urls and video.
1874@item song - search songs by artist, title, description, or attribute (tempo,
1875duration, etc) and get detailed information back about each song, such as
1876hotttnesss, audio_summary, or tracks.
1877@item track - upload a track to the Echo Nest and receive summary information
1878about the track including key, duration, mode, tempo, time signature along with
1879detailed track info including timbre, pitch, rhythm and loudness information.
1880@end enumerate\n")
a2eab422 1881 (license license:bsd-3)))
acd7351f
LF
1882
1883(define-public python-pylast
1884 (package
1885 (name "python-pylast")
b04d9b97 1886 (version "1.6.0")
acd7351f
LF
1887 (source (origin
1888 (method url-fetch)
1889 (uri (pypi-uri "pylast" version))
1890 (sha256
1891 (base32
b04d9b97 1892 "0bml11gfkxqd3i2jxkn5k2xllc4rvxjcyhs8an05gcyy1zp2bwvb"))))
acd7351f
LF
1893 (build-system python-build-system)
1894 (native-inputs
1895 `(("python-coverage" ,python-coverage)
1896 ("python-mock" ,python-mock)
1897 ("python-pep8" ,python-pep8)
1898 ("python-pytest" ,python-pytest)
1899 ("python-pyflakes" ,python-pyflakes)
1900 ("python-pyyaml" ,python-pyyaml)))
1901 (propagated-inputs
1902 `(("python-six" ,python-six)))
1903 (home-page "https://github.com/pylast/pylast")
1904 (synopsis "Python interface to Last.fm and Libre.fm")
1905 (description "A Python interface to Last.fm and other API-compatible
1906websites such as Libre.fm.")
1907 (license license:asl2.0)
1908 (properties `((python2-variant . ,(delay python2-pylast))))))
1909
1910(define-public python2-pylast
1911 (let ((pylast (package-with-python2
1912 (strip-python2-variant python-pylast))))
1913 (package (inherit pylast)
1914 (native-inputs
1915 `(("python2-setuptools" ,python2-setuptools)
1916 ,@(package-native-inputs pylast))))))
3bf429af
LF
1917
1918(define-public beets
1919 (package
1920 (name "beets")
23319ed6 1921 (version "1.3.19")
3bf429af
LF
1922 (source (origin
1923 (method url-fetch)
23319ed6 1924 (uri (pypi-uri "beets" version))
3bf429af
LF
1925 (sha256
1926 (base32
23319ed6 1927 "1vi1dh3fr554bnm8y9pjy09hblw18v6cl2jppzwlp72afri1w93b"))))
3bf429af
LF
1928 (build-system python-build-system)
1929 (arguments
1930 `(#:python ,python-2 ; only Python 2 is supported
1931 #:phases
1932 (modify-phases %standard-phases
1933 (add-after 'unpack 'set-HOME
36c2c8c8
LF
1934 (lambda _ (setenv "HOME" (string-append (getcwd) "/tmp"))))
1935 (replace 'check
1936 (lambda _ (zero? (system* "nosetests" "-v")))))))
3bf429af
LF
1937 (native-inputs
1938 `(("python2-beautifulsoup4" ,python2-beautifulsoup4)
1939 ("python2-flask" ,python2-flask)
1940 ("python2-setuptools" ,python2-setuptools)
1941 ("python2-mock" ,python2-mock)
1942 ("python2-mpd2" ,python2-mpd2)
36c2c8c8 1943 ("python2-nose" ,python2-nose)
3bf429af
LF
1944 ("python2-pathlib" ,python2-pathlib)
1945 ("python2-pyxdg" ,python2-pyxdg)
1946 ("python2-pyechonest" ,python2-pyechonest)
1947 ("python2-pylast" ,python2-pylast)
1948 ("python2-rarfile" ,python2-rarfile)
1949 ("python2-responses" ,python2-responses)))
1950 ;; TODO: Install optional plugins and dependencies.
b3470031 1951 (inputs
3bf429af
LF
1952 `(("python2-enum34" ,python2-enum34)
1953 ("python2-jellyfish" ,python2-jellyfish)
1954 ("python2-munkres" ,python2-munkres)
1955 ("python2-musicbrainzngs" ,python2-musicbrainzngs)
1956 ("python2-mutagen" ,python2-mutagen)
1957 ("python2-pyyaml" ,python2-pyyaml)
1958 ("python2-unidecode" ,python2-unidecode)))
1959 (home-page "http://beets.io")
1960 (synopsis "Music organizer")
1961 (description "The purpose of beets is to get your music collection right
1962once and for all. It catalogs your collection, automatically improving its
1963metadata as it goes using the MusicBrainz database. Then it provides a variety
1964of tools for manipulating and accessing your music.")
1965 (license license:expat)))
21d18113
KY
1966
1967(define-public milkytracker
1968 (package
1969 (name "milkytracker")
1970 (version "0.90.86")
1971 (source (origin
1972 (method url-fetch)
1b35fea1 1973 (uri (string-append "http://milkytracker.titandemo.org/files/"
21d18113
KY
1974 name "-" version ".tar.bz2"))
1975 (sha256
1976 (base32
1977 "1v9vp8vi24lkagfpr92c128whvakwgrm9pq2zf6ijpl5sh7014zb"))))
1978 (build-system gnu-build-system)
1979 (arguments
1980 `(#:make-flags '("CXXFLAGS=-lasound")))
1981 (inputs
1982 `(("alsa-lib" ,alsa-lib)
1983 ("jack" ,jack-1)
1984 ("sdl" ,sdl)
1985 ("zlib" ,zlib)))
1986 (native-inputs
1987 `(("pkg-config" ,pkg-config)))
1988 (synopsis "Music tracker for working with .MOD/.XM module files")
1989 (description "MilkyTracker is a music application for creating .MOD and .XM
1990module files. It attempts to recreate the module replay and user experience of
1991the popular DOS program Fasttracker II, with special playback modes available
1992for improved Amiga ProTracker 2/3 compatibility.")
1b35fea1 1993 (home-page "http://milkytracker.titandemo.org/")
21d18113
KY
1994 ;; 'src/milkyplay' is under Modified BSD, the rest is under GPL3 or later.
1995 (license (list license:bsd-3 license:gpl3+))))
13416a10 1996
89bcf3fc
KK
1997(define-public schismtracker
1998 (package
1999 (name "schismtracker")
2000 (version "20160521")
2001 (source (origin
2002 (method url-fetch)
2003 (uri (string-append
2004 "https://github.com/" name "/" name "/archive/"
2005 version ".tar.gz"))
2006 (file-name (string-append name "-" version ".tar.gz"))
2007 (sha256
2008 (base32
2009 "0c6r24wm3rldm4j8cskl9xnixj3rwi3lnrhckw5gv43wpy6h4jcz"))
2010 (modules '((guix build utils)))
2011 (snippet
2012 ;; Remove use of __DATE__ and __TIME__ for reproducibility.
2013 `(substitute* "schism/version.c"
2014 (("Schism Tracker build %s %s.*$")
2015 (string-append "Schism Tracker version " ,version "\");"))))))
2016 (build-system gnu-build-system)
2017 (arguments
2018 `(#:phases
2019 (modify-phases %standard-phases
2020 (add-after 'unpack 'autoconf
2021 (lambda _ (zero? (system* "autoreconf" "-vfi"))))
2022 (add-before 'configure 'link-libm
2023 (lambda _ (setenv "LIBS" "-lm") #t)))))
2024 (native-inputs
2025 `(("autoconf" ,autoconf)
2026 ("automake" ,automake)
2027 ("python" ,python)))
2028 (inputs
2029 `(("alsa-lib" ,alsa-lib) ; for asound dependency
2030 ("libx11" ,libx11)
2031 ("libxext" ,libxext)
2032 ("sdl" ,sdl)))
2033 (home-page "http://schismtracker.org")
2034 (synopsis "Oldschool sample-based music composition tool")
2035 (description
2036 "Schism Tracker is a reimplementation of Impulse Tracker, a program used to
2037create high quality music without the requirements of specialized, expensive
2038equipment, and with a unique \"finger feel\" that is difficult to replicate in
2039part. The player is based on a highly modified version of the ModPlug engine,
2040with a number of bugfixes and changes to improve IT playback.")
2041 (license license:gpl2+)))
2042
13416a10
KY
2043(define-public moc
2044 (package
2045 (name "moc")
2046 (version "2.5.1")
2047 (source (origin
2048 (method url-fetch)
2049 (uri (string-append "http://ftp.daper.net/pub/soft/"
2050 name "/stable/"
2051 name "-" version ".tar.bz2"))
2052 (sha256
2053 (base32
2054 "1wn4za08z64bhsgfhr9c0crfyvy8c3b6a337wx7gz19am5srqh8v"))))
2055 (build-system gnu-build-system)
2056 (inputs
2057 `(("alsa-lib" ,alsa-lib)
2058 ("curl" ,curl)
2059 ("faad2" ,faad2)
2060 ("ffmpeg" ,ffmpeg)
2061 ("file" ,file)
2062 ("jack" ,jack-1)
2063 ("libid3tag" ,libid3tag)
2064 ("libltdl" ,libltdl)
2065 ("libmodplug" ,libmodplug)
2066 ("libmpcdec" ,libmpcdec)
2067 ("libmad" ,libmad)
2068 ("ncurses" ,ncurses)
2069 ("openssl" ,openssl)
2070 ("sasl" ,cyrus-sasl)
2071 ("speex" ,speex)
2072 ("taglib" ,taglib)
2073 ("wavpack" ,wavpack)
2074 ("zlib" ,zlib)))
2075 (native-inputs
2076 `(("pkg-config" ,pkg-config)))
2077 (synopsis "Console audio player designed to be powerful and easy to use")
2078 (description
2079 "Music on Console is a console audio player that supports many file
2080formats, including most audio formats recognized by FFMpeg.")
2081 (home-page "http://moc.daper.net")
2082 (license license:gpl2+)))
6d3ef286
JF
2083
2084(define-public midicsv
2085 (package
2086 (name "midicsv")
2087 (version "1.1")
2088 (source (origin
2089 (method url-fetch)
2090 (uri (string-append "http://www.fourmilab.ch/webtools/midicsv/"
2091 name "-" version ".tar.gz"))
2092 (sha256
2093 (base32
2094 "1vvhk2nf9ilfw0wchmxy8l13hbw9cnpz079nsx5srsy4nnd78nkw"))))
2095 (build-system gnu-build-system)
2096 (arguments
2097 `(#:phases (modify-phases %standard-phases (delete 'configure))
2098 #:make-flags (list "CC=gcc" (string-append "INSTALL_DEST=" %output))))
2099 (synopsis "Convert MIDI files to and from CSV")
2100 (description
2101 "Midicsv reads a standard MIDI file and decodes it into a comma-separated
2102value file (CSV), which preserves all the information in the MIDI file. The
2103ASCII CSV file may be loaded into a spreadsheet or database application, or
2104processed by a program to transform the MIDI data (for example, to key
2105transpose a composition or extract a track from a multi-track sequence). A
2106CSV file in the format created by midicsv may be converted back into a
2107standard MIDI file with the csvmidi program.")
2108 (home-page "http://www.fourmilab.ch/webtools/midicsv/")
2109 (license license:public-domain)))
49604680
RW
2110
2111(define-public gx-guvnor-lv2
2112 (let ((commit "9f528a7623a201383e119bb6a2df32b18396a9d5")
2113 (revision "1"))
2114 (package
2115 (name "gx-guvnor-lv2")
2116 (version (string-append "0-" revision "." (string-take commit 9)))
2117 (source (origin
2118 (method git-fetch)
2119 (uri (git-reference
2120 (url "https://github.com/brummer10/GxGuvnor.lv2")
2121 (commit commit)))
2122 (sha256
2123 (base32
2124 "10zx84p2vd7i1yqc5ma9p17927265j4g0zfwv9rxladw0nm8y45k"))
2125 (file-name (string-append name "-" version "-checkout"))))
2126 (build-system gnu-build-system)
2127 (arguments
2128 `(;; The check target is used only to output a warning.
2129 #:tests? #f
2130 #:make-flags
2131 (list (string-append "DESTDIR=" (assoc-ref %outputs "out")))
2132 #:phases
2133 (modify-phases %standard-phases
2134 (replace 'configure
2135 (lambda _
2136 (substitute* "Makefile"
2137 (("INSTALL_DIR = .*") "INSTALL_DIR=/lib/lv2\n")
2138 ;; Avoid rebuilding everything
2139 (("install : all") "install:"))
2140 #t)))))
2141 (inputs
2142 `(("lv2" ,lv2)))
2143 (home-page "https://github.com/brummer10/GxGuvnor.lv2")
2144 (synopsis "Overdrive/distortion pedal simulation")
2145 (description "This package provides the LV2 plugin \"GxGuvnor\", a
2146simulation of an overdrive or distortion pedal for guitars.")
2147 ;; The LICENSE file says GPLv3 but the license headers in the files say
2148 ;; GPLv2 or later.
2149 (license license:gpl2+))))
85ae347e
RW
2150
2151(define-public gx-vbass-preamp-lv2
2152 (let ((commit "0e599abab10c7669dd444e5d06f671c2fc1b9c6c")
2153 (revision "1"))
2154 (package (inherit gx-guvnor-lv2)
2155 (name "gx-vbass-preamp-lv2")
2156 (version (string-append "0-" revision "." (string-take commit 9)))
2157 (source (origin
2158 (method git-fetch)
2159 (uri (git-reference
2160 (url "https://github.com/brummer10/GxVBassPreAmp.lv2")
2161 (commit commit)))
2162 (sha256
2163 (base32
2164 "1dzksdfrva666gpi62fd2ni9rhf18sl917f1894qr0b17pbdh9k1"))
2165 (file-name (string-append name "-" version "-checkout"))))
2166 (home-page "https://github.com/brummer10/GxVBassPreAmp.lv2")
2167 (synopsis "Simulation of the Vox Venue Bass 100 Pre Amp Section")
2168 (description "This package provides the LV2 plugin \"GxVBassPreAmp\", a
2169pre-amplifier simulation modelled after the 1984 Vox Venue Bass 100 Pre Amp
2170Section."))))
cdc7a021
RW
2171
2172(define-public gx-overdriver-lv2
2173 (let ((commit "ed71801987449414bf3adaa0dbfac68e8775f1ce")
2174 (revision "1"))
2175 (package (inherit gx-guvnor-lv2)
2176 (name "gx-overdriver-lv2")
2177 (version (string-append "0-" revision "." (string-take commit 9)))
2178 (source (origin
2179 (method git-fetch)
2180 (uri (git-reference
2181 (url "https://github.com/brummer10/GxOverDriver.lv2")
2182 (commit commit)))
2183 (sha256
2184 (base32
2185 "13j614jh525fbkby79nnzwj0z1ac0c9wclyn5pfqvkmx6a7j24r8"))
2186 (file-name (string-append name "-" version "-checkout"))))
2187 (home-page "https://github.com/brummer10/GxOverDriver.lv2")
2188 (synopsis "Overdrive effect with level and tone control")
2189 (description "This package provides the LV2 plugin \"GxOverDriver\", an
2190overdrive effect."))))
4d95cd30
RW
2191
2192(define-public gx-tone-mender-lv2
2193 (let ((commit "b6780b4a3e4782b3ed0e5882d6788f178aed138f")
2194 (revision "1"))
2195 (package (inherit gx-guvnor-lv2)
2196 (name "gx-tone-mender-lv2")
2197 (version (string-append "0-" revision "." (string-take commit 9)))
2198 (source (origin
2199 (method git-fetch)
2200 (uri (git-reference
2201 (url "https://github.com/brummer10/GxToneMender.lv2")
2202 (commit commit)))
2203 (sha256
2204 (base32
2205 "07qdcfsvv2vdnfnjh91pfgvjdcs5y91nvwfm8c0z8fp6b4bk7a9q"))
2206 (file-name (string-append name "-" version "-checkout"))))
2207 (home-page "https://github.com/brummer10/GxToneMender.lv2")
2208 (synopsis "Clean boost with a 3-knob tonestack")
2209 (description "This package provides the LV2 plugin \"GxToneMender\", a
2210clean boost effect with a 3-knob tonestack."))))
4d4bfdc2
RW
2211
2212(define-public gx-push-pull-lv2
2213 (let ((commit "7f76ae2068498643ac8671ee0930b13ee3fd8eb5")
2214 (revision "1"))
2215 (package (inherit gx-guvnor-lv2)
2216 (name "gx-push-pull-lv2")
2217 (version (string-append "0-" revision "." (string-take commit 9)))
2218 (source (origin
2219 (method git-fetch)
2220 (uri (git-reference
2221 (url "https://github.com/brummer10/GxPushPull.lv2")
2222 (commit commit)))
2223 (sha256
2224 (base32
2225 "12f5hwck2irph0gjbj8xy8jqcqdwb8l1hlwf29k0clz52h1jhb5q"))
2226 (file-name (string-append name "-" version "-checkout"))))
2227 (home-page "https://github.com/brummer10/GxPushPull.lv2")
2228 (synopsis "Octave up push pull transistor fuzz simulation")
2229 (description "This package provides the LV2 plugin \"GxPushPull\", a
2230simulation of a push pull transistor fuzz effect with added high octave."))))
3eb1a964
RW
2231
2232(define-public gx-suppa-tone-bender-lv2
2233 (let ((commit "4e6dc713ec24e7fcf5ea23b7e685af627c01b9c9")
2234 (revision "1"))
2235 (package (inherit gx-guvnor-lv2)
2236 (name "gx-suppa-tone-bender-lv2")
2237 (version (string-append "0-" revision "." (string-take commit 9)))
2238 (source (origin
2239 (method git-fetch)
2240 (uri (git-reference
2241 (url "https://github.com/brummer10/GxSuppaToneBender.lv2")
2242 (commit commit)))
2243 (sha256
2244 (base32
2245 "1i22xr252nkbazkwidll2zb3i96610gx65qn5djdkijlz7j77138"))
2246 (file-name (string-append name "-" version "-checkout"))))
2247 (home-page "https://github.com/brummer10/GxSuppaToneBender.lv2")
2248 (synopsis "Simulation of the Vox Suppa Tone Bender pedal")
2249 (description "This package provides the LV2 plugin
2250\"GxSuppaToneBender\", a simulation modelled after the Vox Suppa Tone Bender
2251pedal."))))
664f677f
RW
2252
2253(define-public gx-saturator-lv2
31de5e22
RW
2254 (let ((commit "0b581ac85c515325b9f16e51937cae6e1bf81a0a")
2255 (revision "2"))
664f677f
RW
2256 (package (inherit gx-guvnor-lv2)
2257 (name "gx-saturator-lv2")
2258 (version (string-append "0-" revision "." (string-take commit 9)))
2259 (source (origin
2260 (method git-fetch)
2261 (uri (git-reference
2262 (url "https://github.com/brummer10/GxSaturator.lv2")
2263 (commit commit)))
2264 (sha256
2265 (base32
31de5e22 2266 "1cl785pzq8zk55m1rnhfd6qsabci6kpf4pf002gwr91vagyq246z"))
664f677f
RW
2267 (file-name (string-append name "-" version "-checkout"))))
2268 (home-page "https://github.com/brummer10/GxSaturator.lv2")
2269 (synopsis "Saturation effect")
2270 (description "This package provides the LV2 plugin \"GxSaturator\", a
2271saturation effect."))))
89412238
RW
2272
2273(define-public gx-hyperion-lv2
dad6cb50
RW
2274 (let ((commit "6a096a664e553e551e179e85cf390bd1683410fb")
2275 (revision "2"))
89412238
RW
2276 (package (inherit gx-guvnor-lv2)
2277 (name "gx-hyperion-lv2")
2278 (version (string-append "0-" revision "." (string-take commit 9)))
2279 (source (origin
2280 (method git-fetch)
2281 (uri (git-reference
2282 (url "https://github.com/brummer10/GxHyperion.lv2")
2283 (commit commit)))
2284 (sha256
2285 (base32
dad6cb50 2286 "1ksv3wmylhwbf6kjl2lnhr14h9rfl291cfm21471gnb1r68yqfxh"))
89412238
RW
2287 (file-name (string-append name "-" version "-checkout"))))
2288 (home-page "https://github.com/brummer10/GxHyperion.lv2")
2289 (synopsis "Simulation of the Hyperion Fuzz pedal")
2290 (description "This package provides the LV2 plugin \"GxHyperion\", a
2291simulation of the Hyperion Fuzz pedal."))))
32536f00
RW
2292
2293(define-public gx-voodoo-fuzz-lv2
c1802b08
RW
2294 (let ((commit "aec7889b489385e8add06126e7a36ae2e26254b1")
2295 (revision "2"))
32536f00
RW
2296 (package (inherit gx-guvnor-lv2)
2297 (name "gx-voodoo-fuzz-lv2")
2298 (version (string-append "0-" revision "." (string-take commit 9)))
2299 (source (origin
2300 (method git-fetch)
2301 (uri (git-reference
2302 (url "https://github.com/brummer10/GxVoodoFuzz.lv2")
2303 (commit commit)))
2304 (sha256
2305 (base32
c1802b08 2306 "0mc41ldlv89069iaysnfiqxy5h5sr8mdi5cxm3ij5q5v4jv3viwx"))
32536f00
RW
2307 (file-name (string-append name "-" version "-checkout"))))
2308 (home-page "https://github.com/brummer10/GxVoodoFuzz.lv2")
2309 (synopsis "Fuzz effect modelled after the Voodoo Lab SuperFuzz")
2310 (description "This package provides the LV2 plugin \"GxVoodooFuzz\", a
2311simulation modelled after the Voodoo Lab SuperFuzz pedal. It's basically a
2312Bosstone circuit, followed by the tone control of the FoxToneMachine in
2313parallel with a DarkBooster, followed by a volume control."))))
29f63222
RW
2314
2315(define-public gx-super-fuzz-lv2
1df4d85f
RW
2316 (let ((commit "f40389575812c909007d140d327ce579930b71f7")
2317 (revision "2"))
29f63222
RW
2318 (package (inherit gx-guvnor-lv2)
2319 (name "gx-super-fuzz-lv2")
2320 (version (string-append "0-" revision "." (string-take commit 9)))
2321 (source (origin
2322 (method git-fetch)
2323 (uri (git-reference
2324 (url "https://github.com/brummer10/GxSuperFuzz.lv2")
2325 (commit commit)))
2326 (sha256
2327 (base32
1df4d85f 2328 "174bibj8qzm8zr6f5h8bcj94iry17zravk8flpdy84n6yg7cixji"))
29f63222
RW
2329 (file-name (string-append name "-" version "-checkout"))))
2330 (home-page "https://github.com/brummer10/GxSuperFuzz.lv2")
2331 (synopsis "Fuzz effect modelled after the UniVox SuperFuzz")
2332 (description "This package provides the LV2 plugin \"GxVoodooFuzz\", an
2333analog simulation of the UniVox SuperFuzz pedal. In this simulation the trim
2334pot, which is usualy in the housing, is exposed as a control parameter. It
2335adjusts the amount of harmonics."))))
40bffdfa
RW
2336
2337(define-public gx-vintage-fuzz-master-lv2
a7cd2d44
RW
2338 (let ((commit "0fec0bc1e8a8ba909a68e916e036138a3425d7db")
2339 (revision "2"))
40bffdfa
RW
2340 (package (inherit gx-guvnor-lv2)
2341 (name "gx-vintage-fuzz-master-lv2")
2342 (version (string-append "0-" revision "." (string-take commit 9)))
2343 (source (origin
2344 (method git-fetch)
2345 (uri (git-reference
2346 (url "https://github.com/brummer10/GxVintageFuzzMaster.lv2")
2347 (commit commit)))
2348 (sha256
2349 (base32
a7cd2d44 2350 "06szi6d2iwkygbw5azhwzhcl2as4lmk2gs9hanngsf46a1zbdcp7"))
40bffdfa
RW
2351 (file-name (string-append name "-" version "-checkout"))))
2352 (home-page "https://github.com/brummer10/GxVintageFuzzMaster.lv2")
2353 (synopsis "Fuzz effect simulation of the vintage Fuzz Master")
2354 (description "This package provides the LV2 plugin
2355\"GxVintageFuzzMaster\", a simulation of the vintage Fuzz Master pedal."))))
631f8175
RW
2356
2357(define-public gx-slow-gear-lv2
8e6f6503
RW
2358 (let ((commit "cb852e0426f4e6fe077e7f1ede73a4da335cfc5e")
2359 (revision "2"))
631f8175
RW
2360 (package (inherit gx-guvnor-lv2)
2361 (name "gx-slow-gear-lv2")
2362 (version (string-append "0-" revision "." (string-take commit 9)))
2363 (source (origin
2364 (method git-fetch)
2365 (uri (git-reference
2366 (url "https://github.com/brummer10/GxSlowGear.lv2")
2367 (commit commit)))
2368 (sha256
2369 (base32
8e6f6503 2370 "0dp7afi1r3kzciiyn1hrkz6arsq47ys9sx5g4b7xa9k1dv92ishp"))
631f8175
RW
2371 (file-name (string-append name "-" version "-checkout"))))
2372 (home-page "https://github.com/brummer10/GxSlowGear.lv2")
2373 (synopsis "Slow gear audio effect")
2374 (description "This package provides the LV2 plugin \"GxSlowGear\", a
2375slow gear audio effect to produce volume swells."))))
d75e8f5a
RW
2376
2377(define-public gx-switchless-wah-lv2
cfcef2c2
RW
2378 (let ((commit "7b08691203314612999f0ce2328cdc1161cd6665")
2379 (revision "2"))
d75e8f5a
RW
2380 (package (inherit gx-guvnor-lv2)
2381 (name "gx-switchless-wah-lv2")
2382 (version (string-append "0-" revision "." (string-take commit 9)))
2383 (source (origin
2384 (method git-fetch)
2385 (uri (git-reference
2386 (url "https://github.com/brummer10/GxSwitchlessWah.lv2")
2387 (commit commit)))
2388 (sha256
2389 (base32
cfcef2c2 2390 "04jqfpncmrrqn34p21w4v9m2x5a5wsqwbm4f3byxvq4vcibwxzk2"))
d75e8f5a
RW
2391 (file-name (string-append name "-" version "-checkout"))))
2392 (home-page "https://github.com/brummer10/GxSwitchlessWah.lv2")
2393 (synopsis "Wah emulation with switchless activation")
2394 (description "This package provides the LV2 plugin \"GxSwitchlessWah\",
2395a simulation of an analog Wah pedal with switchless activation."))))
84d53724
RW
2396
2397(define-public mod-utilities
2398 (let ((commit "7cdeeac26ae682730740105ece121d4dddb8ba3f")
2399 (revision "1"))
2400 (package
2401 (name "mod-utilities")
2402 (version (string-append "0-" revision "." (string-take commit 9)))
2403 (source (origin
2404 (method git-fetch)
2405 (uri (git-reference
2406 (url "https://github.com/moddevices/mod-utilities.git")
2407 (commit commit)))
2408 (sha256
2409 (base32
2410 "1ilnkbrmwrszxvc21qlb86h29yz7cnc6rcp0jmna1y693ny2qhf4"))
2411 (file-name (string-append name "-" version "-checkout"))))
2412 (build-system gnu-build-system)
2413 (arguments
2414 `(#:tests? #f ; there are no tests
2415 #:make-flags
2416 (list (string-append "INSTALL_PATH="
2417 (assoc-ref %outputs "out")
2418 "/lib/lv2"))
2419 #:phases
2420 (modify-phases %standard-phases
2421 (delete 'configure))))
2422 (inputs
2423 `(("lv2" ,lv2)))
2424 (home-page "https://github.com/moddevices/mod-utilities")
2425 (synopsis "LV2 utility plugins")
2426 (description "This package provides LV2 audio utility plugins, such as
2427filters, crossovers, simple gain plugins without zipper noise, switch box
2428plugins, a switch trigger, a toggle switch, and a peakmeter.")
2429 (license license:gpl2+))))