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