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