gnu: fastcap: Remove non-free file.
[jackhill/guix/guix.git] / gnu / packages / music.scm
CommitLineData
1b6826d3
RW
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
3;;;
4;;; This file is part of GNU Guix.
5;;;
6;;; GNU Guix is free software; you can redistribute it and/or modify it
7;;; under the terms of the GNU General Public License as published by
8;;; the Free Software Foundation; either version 3 of the License, or (at
9;;; your option) any later version.
10;;;
11;;; GNU Guix is distributed in the hope that it will be useful, but
12;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14;;; GNU General Public License for more details.
15;;;
16;;; You should have received a copy of the GNU General Public License
17;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
18
19(define-module (gnu packages music)
20 #:use-module (guix utils)
21 #:use-module (guix packages)
22 #:use-module (guix download)
8e80244a 23 #:use-module (guix git-download)
1b6826d3
RW
24 #:use-module ((guix licenses) #:prefix license:)
25 #:use-module (guix build-system gnu)
8b9ec354 26 #:use-module (guix build-system cmake)
821664f1 27 #:use-module (guix build-system python)
8e80244a 28 #:use-module (guix build-system waf)
1b6826d3 29 #:use-module (gnu packages)
ddfddb0c 30 #:use-module (gnu packages algebra)
c267cc15 31 #:use-module (gnu packages audio)
2d0fd07b 32 #:use-module (gnu packages autotools)
8b9ec354
RW
33 #:use-module (gnu packages base) ;libbdf
34 #:use-module (gnu packages boost)
1b6826d3 35 #:use-module (gnu packages bison)
8b9ec354
RW
36 #:use-module (gnu packages code)
37 #:use-module (gnu packages check)
38 #:use-module (gnu packages compression)
1b6826d3
RW
39 #:use-module (gnu packages docbook)
40 #:use-module (gnu packages flex)
8e80244a 41 #:use-module (gnu packages fltk)
1b6826d3
RW
42 #:use-module (gnu packages fonts)
43 #:use-module (gnu packages fontutils)
6260d1a8 44 #:use-module (gnu packages gcc)
1b6826d3
RW
45 #:use-module (gnu packages gettext)
46 #:use-module (gnu packages ghostscript)
ec8da0e2 47 #:use-module (gnu packages gl)
8e80244a 48 #:use-module (gnu packages glib)
c267cc15 49 #:use-module (gnu packages gnome)
1b6826d3
RW
50 #:use-module (gnu packages gtk)
51 #:use-module (gnu packages guile)
c267cc15 52 #:use-module (gnu packages image)
1b6826d3 53 #:use-module (gnu packages imagemagick)
6260d1a8 54 #:use-module (gnu packages java)
c267cc15
RW
55 #:use-module (gnu packages linux) ; for alsa-utils
56 #:use-module (gnu packages man)
57 #:use-module (gnu packages mp3)
1b6826d3 58 #:use-module (gnu packages netpbm)
821664f1 59 #:use-module (gnu packages pdf)
1b6826d3
RW
60 #:use-module (gnu packages perl)
61 #:use-module (gnu packages pkg-config)
d231bb35 62 #:use-module (gnu packages pulseaudio) ;libsndfile
1b6826d3 63 #:use-module (gnu packages python)
8b9ec354 64 #:use-module (gnu packages qt)
d231bb35 65 #:use-module (gnu packages rdf)
1b6826d3 66 #:use-module (gnu packages rsync)
2d0fd07b 67 #:use-module (gnu packages tcl)
1b6826d3
RW
68 #:use-module (gnu packages texinfo)
69 #:use-module (gnu packages texlive)
8b9ec354 70 #:use-module (gnu packages web)
c267cc15 71 #:use-module (gnu packages xml)
ddfddb0c 72 #:use-module (gnu packages xorg)
c267cc15 73 #:use-module (gnu packages xiph)
2d0fd07b
RW
74 #:use-module (gnu packages zip)
75 #:use-module ((srfi srfi-1) #:select (last)))
1b6826d3 76
d231bb35
RW
77(define-public hydrogen
78 (package
79 (name "hydrogen")
80 (version "0.9.5.1")
81 (source (origin
82 (method url-fetch)
83 (uri (string-append
84 "mirror://sourceforge/hydrogen/Hydrogen/"
85 (version-prefix version 3) "%20Sources/"
86 "hydrogen-" version ".tar.gz"))
87 (sha256
88 (base32
89 "1fvyp6gfzcqcc90dmaqbm11p272zczz5pfz1z4lj33nfr7z0bqgb"))))
90 (build-system gnu-build-system)
91 (arguments
92 `(#:tests? #f ;no "check" target
93 #:phases
94 ;; TODO: Add scons-build-system and use it here.
95 (modify-phases %standard-phases
96 (delete 'configure)
97 (add-after 'unpack 'scons-propagate-environment
98 (lambda _
99 ;; By design, SCons does not, by default, propagate
100 ;; environment variables to subprocesses. See:
101 ;; <http://comments.gmane.org/gmane.linux.distributions.nixos/4969>
102 ;; Here, we modify the Sconstruct file to arrange for
103 ;; environment variables to be propagated.
104 (substitute* "Sconstruct"
105 (("^env = Environment\\(")
106 "env = Environment(ENV=os.environ, "))))
107 (replace 'build
108 (lambda* (#:key inputs outputs #:allow-other-keys)
109 (let ((out (assoc-ref outputs "out")))
110 (zero? (system* "scons"
111 (string-append "prefix=" out)
112 "lrdf=0" ; cannot be found
113 "lash=1")))))
114 (add-before
115 'install
116 'fix-img-install
117 (lambda _
118 ;; The whole ./data/img directory is copied to the target first.
119 ;; Scons complains about existing files when we try to install all
120 ;; images a second time.
121 (substitute* "Sconstruct"
122 (("os.path.walk\\(\"./data/img/\",install_images,env\\)") ""))
123 #t))
124 (replace 'install (lambda _ (zero? (system* "scons" "install")))))))
125 (native-inputs
126 `(("scons" ,scons)
127 ("python" ,python-2)
128 ("pkg-config" ,pkg-config)))
129 (inputs
130 `(("zlib" ,zlib)
131 ("libtar" ,libtar)
132 ("alsa-lib" ,alsa-lib)
133 ("jack" ,jack-1)
134 ("lash" ,lash)
135 ;;("lrdf" ,lrdf) ;FIXME: cannot be found by scons
136 ("qt" ,qt-4)
137 ("libsndfile" ,libsndfile)))
138 (home-page "http://www.hydrogen-music.org")
139 (synopsis "Drum machine")
140 (description
141 "Hydrogen is an advanced drum machine for GNU/Linux. Its main goal is to
142enable professional yet simple and intuitive pattern-based drum programming.")
143 (license license:gpl2+)))
144
8c454dcd
RW
145(define-public klick
146 (package
147 (name "klick")
148 (version "0.12.2")
149 (source (origin
150 (method url-fetch)
151 (uri (string-append "http://das.nasophon.de/download/klick-"
152 version ".tar.gz"))
153 (sha256
154 (base32
155 "0hmcaywnwzjci3pp4xpvbijnnwvibz7gf9xzcdjbdca910y5728j"))))
156 (build-system gnu-build-system)
157 (arguments
158 `(#:tests? #f ;no "check" target
159 #:phases
160 ;; TODO: Add scons-build-system and use it here.
161 (modify-phases %standard-phases
162 (delete 'configure)
163 (replace 'build
164 (lambda* (#:key inputs outputs #:allow-other-keys)
165 (let ((out (assoc-ref outputs "out")))
166 (mkdir-p out)
167 (zero? (system* "scons" (string-append "PREFIX=" out))))))
168 (replace 'install (lambda _ (zero? (system* "scons" "install")))))))
169 (inputs
170 `(("boost" ,boost)
171 ("jack" ,jack-1)
172 ("libsndfile" ,libsndfile)
173 ("libsamplerate" ,libsamplerate)
174 ("liblo" ,liblo)
175 ("rubberband" ,rubberband)))
176 (native-inputs
177 `(("scons" ,scons)
178 ("python" ,python-2)
179 ("pkg-config" ,pkg-config)))
180 (home-page "http://das.nasophon.de/klick/")
181 (synopsis "Metronome for JACK")
182 (description
183 "klick is an advanced command-line based metronome for JACK. It allows
184you to define complex tempo maps for entire songs or performances.")
185 (license license:gpl2+)))
186
1b6826d3
RW
187(define-public lilypond
188 (package
189 (name "lilypond")
127b04d7 190 (version "2.19.27")
1b6826d3
RW
191 (source (origin
192 (method url-fetch)
193 (uri (string-append
194 "http://download.linuxaudio.org/lilypond/sources/v"
195 (version-major+minor version) "/"
196 name "-" version ".tar.gz"))
197 (sha256
198 (base32
127b04d7 199 "11v4jr4qj1jpqvjw1ww7riv8pxfyasif8mf16l447f1xq1ifhkhs"))))
1b6826d3
RW
200 (build-system gnu-build-system)
201 (arguments
127b04d7 202 `(#:tests? #f ; out-test/collated-files.html fails
1b6826d3 203 #:out-of-source? #t
127b04d7
RW
204 #:configure-flags
205 (list (string-append "--with-texgyre-dir="
206 (assoc-ref %build-inputs "font-tex-gyre")
207 "/share/fonts/opentype/"))
1b6826d3 208 #:phases
a8bc747a
RW
209 (modify-phases %standard-phases
210 (add-after 'unpack 'hardcode-path-to-gs
211 (lambda* (#:key inputs #:allow-other-keys)
212 (substitute* "scm/backend-library.scm"
213 (("\\(search-executable '\\(\"gs\"\\)\\)")
214 (string-append "\""
215 (assoc-ref inputs "ghostscript")
216 "/bin/gs"
217 "\"" )))
218 #t))
219 (add-before 'configure 'prepare-configuration
220 (lambda _
221 (substitute* "configure"
222 (("SHELL=/bin/sh") "SHELL=sh"))
223 (setenv "out" "")
224 #t)))))
1b6826d3
RW
225 (inputs
226 `(("guile" ,guile-1.8)
227 ("font-dejavu" ,font-dejavu)
127b04d7 228 ("font-tex-gyre" ,font-tex-gyre)
1b6826d3
RW
229 ("fontconfig" ,fontconfig)
230 ("freetype" ,freetype)
231 ("ghostscript" ,ghostscript)
232 ("pango" ,pango)
233 ("python" ,python-2)))
234 (native-inputs
235 `(("bison" ,bison)
236 ("perl" ,perl)
237 ("flex" ,flex)
238 ("fontforge" ,fontforge)
239 ("dblatex" ,dblatex)
240 ("gettext" ,gnu-gettext)
241 ("imagemagick" ,imagemagick)
242 ("netpbm" ,netpbm) ;for pngtopnm
243 ("texlive" ,texlive) ;metafont and metapost
244 ("texinfo" ,texinfo)
245 ("texi2html" ,texi2html)
246 ("rsync" ,rsync)
247 ("pkg-config" ,pkg-config)
248 ("zip" ,zip)))
249 (home-page "http://www.lilypond.org/")
250 (synopsis "Music typesetting")
251 (description
252 "GNU LilyPond is a music typesetter, which produces high-quality sheet
253music. Music is input in a text file containing control sequences which are
254interpreted by LilyPond to produce the final document. It is extendable with
255Guile.")
256 (license license:gpl3+)))
c267cc15 257
8e80244a
RW
258(define-public non-sequencer
259 ;; The latest tagged release is three years old and uses a custom build
260 ;; system, so we take the last commit affecting the "sequencer" directory.
261 (let ((commit "1d9bd576"))
262 (package
263 (name "non-sequencer")
264 (version (string-append "1.9.5-" commit))
265 (source (origin
266 (method git-fetch)
267 (uri (git-reference
268 (url "git://git.tuxfamily.org/gitroot/non/non.git")
269 (commit commit)))
270 (sha256
271 (base32
272 "0pkkw8q6d55j38xm7r4rwpdv1wy00a44h8c4wrn7vbgpq9nij46y"))
273 (file-name (string-append name "-" version "-checkout"))))
274 (build-system waf-build-system)
275 (arguments
276 `(#:tests? #f ;no "check" target
277 #:configure-flags '("--project=sequencer")
278 #:python ,python-2))
279 (inputs
280 `(("jack" ,jack-1)
281 ("libsigc++" ,libsigc++)
282 ("liblo" ,liblo)
283 ("ntk" ,ntk)))
284 (native-inputs
285 `(("pkg-config" ,pkg-config)))
286 (home-page "http://non.tuxfamily.org/wiki/Non%20Sequencer")
287 (synopsis "Pattern-based MIDI sequencer")
288 (description
289 "The Non Sequencer is a powerful, lightweight, real-time,
290pattern-based MIDI sequencer. It utilizes the JACK Audio Connection Kit for
291MIDI I/O and the NTK GUI toolkit for its user interface. Everything in Non
292Sequencer happens on-line, in real-time. Music can be composed live, while the
293transport is rolling.")
294 (license license:gpl2+))))
295
c267cc15
RW
296(define-public solfege
297 (package
298 (name "solfege")
299 (version "3.22.2")
300 (source (origin
301 (method url-fetch)
302 (uri (string-append
303 "mirror://gnu/solfege/solfege-"
304 version ".tar.xz"))
305 (sha256
306 (base32
307 "1w25rxdbj907nsx285k9nm480pvy12w3yknfh4n1dfv17cwy072i"))))
308 (build-system gnu-build-system)
309 (arguments
310 `(#:tests? #f ; xmllint attempts to download DTD
311 #:test-target "test"
312 #:phases
313 (alist-cons-after
314 'unpack 'fix-configuration
315 (lambda* (#:key inputs #:allow-other-keys)
316 (substitute* "default.config"
317 (("csound=csound")
318 (string-append "csound="
319 (assoc-ref inputs "csound")
320 "/bin/csound"))
321 (("/usr/bin/aplay")
322 (string-append (assoc-ref inputs "aplay")
323 "/bin/aplay"))
324 (("/usr/bin/timidity")
325 (string-append (assoc-ref inputs "timidity")
326 "/bin/timidity"))
327 (("/usr/bin/mpg123")
328 (string-append (assoc-ref inputs "mpg123")
329 "/bin/mpg123"))
330 (("/usr/bin/ogg123")
331 (string-append (assoc-ref inputs "ogg123")
332 "/bin/ogg123"))))
333 (alist-cons-before
334 'build 'patch-python-shebangs
335 (lambda _
336 ;; Two python scripts begin with a Unicode BOM, so patch-shebang
337 ;; has no effect.
338 (substitute* '("solfege/parsetree.py"
339 "solfege/presetup.py")
340 (("#!/usr/bin/python") (string-append "#!" (which "python")))))
341 (alist-cons-before
342 'build 'add-sitedirs
343 ;; .pth files are not automatically interpreted unless the
344 ;; directories containing them are added as "sites". The directories
345 ;; are then added to those in the PYTHONPATH. This is required for
346 ;; the operation of pygtk and pygobject.
347 (lambda _
348 (substitute* "run-solfege.py"
349 (("import os")
350 "import os, site
351for path in [path for path in sys.path if 'site-packages' in path]: site.addsitedir(path)")))
352 (alist-cons-before
353 'build 'adjust-config-file-prefix
354 (lambda* (#:key outputs #:allow-other-keys)
355 (substitute* "run-solfege.py"
356 (("prefix = os.path.*$")
357 (string-append "prefix = " (assoc-ref outputs "out")))))
358 (alist-cons-after
359 'install 'wrap-program
360 (lambda* (#:key inputs outputs #:allow-other-keys)
361 ;; Make sure 'solfege' runs with the correct PYTHONPATH. We
362 ;; also need to modify GDK_PIXBUF_MODULE_FILE for SVG support.
363 (let* ((out (assoc-ref outputs "out"))
364 (path (getenv "PYTHONPATH"))
365 (rsvg (assoc-ref inputs "librsvg"))
366 (pixbuf (find-files rsvg "^loaders\\.cache$")))
367 (wrap-program (string-append out "/bin/solfege")
368 `("PYTHONPATH" ":" prefix (,path))
369 `("GDK_PIXBUF_MODULE_FILE" ":" prefix ,pixbuf))))
370 %standard-phases)))))))
371 (inputs
372 `(("python" ,python-2)
373 ("pygtk" ,python2-pygtk)
374 ("gettext" ,gnu-gettext)
375 ("gtk" ,gtk+)
376 ;; TODO: Lilypond is optional. Produces errors at build time:
377 ;; Drawing systems...Error: /undefinedresult in --glyphshow--
378 ;; Fontconfig is needed to fix one of the errors, but other similar
379 ;; errors remain.
380 ;;("lilypond" ,lilypond)
381 ("librsvg" ,librsvg) ; needed at runtime for icons
382 ("libpng" ,libpng) ; needed at runtime for icons
383 ;; players needed at runtime
384 ("aplay" ,alsa-utils)
385 ("csound" ,csound) ; optional, needed for some exercises
386 ("mpg123" ,mpg123)
387 ("ogg123" ,vorbis-tools)
388 ("timidity" ,timidity++)))
389 (native-inputs
390 `(("pkg-config" ,pkg-config)
391 ("txt2man" ,txt2man)
392 ("libxml2" ,libxml2) ; for tests
393 ("ghostscript" ,ghostscript)
394 ;;("fontconfig" ,fontconfig) ; only needed with lilypond
395 ;;("freetype" ,freetype) ; only needed with lilypond
396 ("texinfo" ,texinfo)))
397 (home-page "https://www.gnu.org/software/solfege/")
398 (synopsis "Ear training")
399 (description
400 "GNU Solfege is a program for practicing musical ear-training. With it,
401you can practice your recognition of various musical intervals and chords. It
402features a statistics overview so you can monitor your progress across several
403sessions. Solfege is also designed to be extensible so you can easily write
404your own lessons.")
405 (license license:gpl3+)))
6260d1a8 406
8b9ec354
RW
407(define-public powertabeditor
408 (package
409 (name "powertabeditor")
d19cf783 410 (version "2.0.0-alpha8")
8b9ec354
RW
411 (source (origin
412 (method url-fetch)
413 (uri (string-append
414 "https://github.com/powertab/powertabeditor/archive/"
415 version ".tar.gz"))
416 (file-name (string-append name "-" version ".tar.gz"))
417 (sha256
418 (base32
d19cf783 419 "0gaa2x209v3azql8ak3r1n9a9qbxjx2ssirvwdxwklv2lmfqkm82"))
8b9ec354
RW
420 (modules '((guix build utils)))
421 (snippet
422 '(begin
423 ;; Remove bundled sources for external libraries
424 (delete-file-recursively "external")
425 (substitute* "CMakeLists.txt"
426 (("include_directories\\(\\$\\{PROJECT_SOURCE_DIR\\}/external/.*") "")
8b9ec354
RW
427 (("add_subdirectory\\(external\\)") ""))
428 (substitute* "test/CMakeLists.txt"
429 (("include_directories\\(\\$\\{PROJECT_SOURCE_DIR\\}/external/.*") ""))
430
431 ;; Add install target
432 (substitute* "source/CMakeLists.txt"
433 (("qt5_use_modules")
434 (string-append
435 "install(TARGETS powertabeditor "
436 "RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)\n"
437 "install(FILES data/tunings.json DESTINATION "
438 "${CMAKE_INSTALL_PREFIX}/share/powertabeditor/)\n"
439 "qt5_use_modules")))
440 #t))))
441 (build-system cmake-build-system)
442 (arguments
7e11d113 443 `(#:modules ((guix build cmake-build-system)
8b9ec354
RW
444 (guix build utils)
445 (ice-9 match))
446 #:configure-flags
447 ;; CMake appears to lose the RUNPATH for some reason, so it has to be
448 ;; explicitly set with CMAKE_INSTALL_RPATH.
7e11d113
RW
449 (list "-DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE"
450 "-DCMAKE_ENABLE_PRECOMPILED_HEADERS=OFF" ; if ON pte_tests cannot be built
451 (string-append "-DCMAKE_INSTALL_RPATH="
8b9ec354
RW
452 (string-join (map (match-lambda
453 ((name . directory)
454 (string-append directory "/lib")))
455 %build-inputs) ";")))
456 #:phases
457 (modify-phases %standard-phases
7e11d113
RW
458 (replace
459 'check
460 (lambda _
461 (zero? (system* "bin/pte_tests"
462 ;; Exclude this failing test
463 "~Formats/PowerTabOldImport/Directions"))))
464 (add-before
465 'configure 'fix-tests
466 (lambda _
467 ;; Tests cannot be built with precompiled headers
468 (substitute* "test/CMakeLists.txt"
469 (("cotire\\(pte_tests\\)") ""))
470 #t))
8b9ec354
RW
471 (add-before
472 'configure 'remove-third-party-libs
473 (lambda* (#:key inputs #:allow-other-keys)
474 ;; Link with required static libraries, because we're not
475 ;; using the bundled version of withershins.
476 (substitute* '("source/CMakeLists.txt"
477 "test/CMakeLists.txt")
7e11d113 478 (("target_link_libraries\\((powertabeditor|pte_tests)" _ target)
8b9ec354
RW
479 (string-append "target_link_libraries(" target " "
480 (assoc-ref inputs "binutils")
481 "/lib/libbfd.a "
d6902798 482 (assoc-ref inputs "libiberty")
8b9ec354
RW
483 "/lib/libiberty.a "
484 "dl")))
485 #t)))))
486 (inputs
487 `(("boost" ,boost)
488 ("alsa-lib" ,alsa-lib)
489 ("qt" ,qt)
490 ("withershins" ,withershins)
d6902798 491 ("libiberty" ,libiberty) ;for withershins
8b9ec354
RW
492 ("binutils" ,binutils) ;for -lbfd and -liberty (for withershins)
493 ("timidity" ,timidity++)
494 ("pugixml" ,pugixml)
495 ("rtmidi" ,rtmidi)
496 ("rapidjson" ,rapidjson)
497 ("zlib" ,zlib)))
498 (native-inputs
499 `(("catch" ,catch-framework)
500 ("pkg-config" ,pkg-config)))
501 (home-page "http://powertabs.net")
502 (synopsis "Guitar tablature editor")
503 (description
504 "Power Tab Editor 2.0 is the successor to the famous original Power Tab
505Editor. It is compatible with Power Tab Editor 1.7 and Guitar Pro.")
506 (license license:gpl3+)))
507
ec8da0e2
RW
508(define-public setbfree
509 (package
510 (name "setbfree")
511 (version "0.8.0")
512 (source (origin
513 (method url-fetch)
514 (uri
515 (string-append
516 "https://github.com/pantherb/setBfree/releases/download/v"
517 version "/setbfree-" version ".tar.gz"))
518 (sha256
519 (base32
520 "045bgp7qsigpbrhk7qvgvliwiy26sajifwn7f2jvk90ckfqnlw4b"))))
521 (build-system gnu-build-system)
522 (arguments
523 `(#:tests? #f ; no "check" target
524 #:make-flags
525 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
526 (string-append "FONTFILE="
527 (assoc-ref %build-inputs "font-bitstream-vera")
b42d4508
RW
528 "/share/fonts/truetype/VeraBd.ttf")
529 ;; Disable unsupported optimization flags on non-x86
530 ,@(let ((system (or (%current-target-system)
531 (%current-system))))
532 (if (or (string-prefix? "x86_64" system)
533 (string-prefix? "i686" system))
534 '()
535 '("OPTIMIZATIONS=-ffast-math -fomit-frame-pointer -O3"))))
ec8da0e2
RW
536 #:phases
537 (modify-phases %standard-phases
538 (add-before 'build 'set-CC-variable
539 (lambda _ (setenv "CC" "gcc") #t))
540 (delete 'configure))))
541 (inputs
542 `(("jack" ,jack-1)
543 ("lv2" ,lv2)
544 ("zita-convolver" ,zita-convolver)
545 ("glu" ,glu)
546 ("ftgl" ,ftgl)
547 ("font-bitstream-vera" ,font-bitstream-vera)))
548 (native-inputs
549 `(("help2man" ,help2man)
550 ("pkg-config" ,pkg-config)))
551 (home-page "http://setbfree.org")
552 (synopsis "Tonewheel organ")
553 (description
554 "setBfree is a MIDI-controlled, software synthesizer designed to imitate
555the sound and properties of the electromechanical organs and sound
556modification devices that brought world-wide fame to the names and products of
557Laurens Hammond and Don Leslie.")
558 (license license:gpl2+)))
559
6260d1a8
RW
560(define-public tuxguitar
561 (package
562 (name "tuxguitar")
563 (version "1.2")
564 (source (origin
565 (method url-fetch)
566 (uri (string-append
567 "mirror://sourceforge/tuxguitar/TuxGuitar/TuxGuitar-"
568 version "/tuxguitar-src-" version ".tar.gz"))
569 (sha256
570 (base32
571 "1g1yf2gd06fzdhqb8kb8dmdcmr602s9y24f01kyl4940wimgr944"))))
572 (build-system gnu-build-system)
573 (arguments
574 `(#:make-flags (list (string-append "LDFLAGS=-Wl,-rpath="
575 (assoc-ref %outputs "out") "/lib")
576 (string-append "PREFIX="
577 (assoc-ref %outputs "out"))
578 (string-append "SWT_PATH="
579 (assoc-ref %build-inputs "swt")
580 "/share/java/swt.jar"))
581 #:tests? #f ;no "check" target
582 #:parallel-build? #f ;not supported
583 #:phases
584 (alist-cons-before
585 'build 'enter-dir-set-path-and-pass-ldflags
586 (lambda* (#:key inputs #:allow-other-keys)
587 (chdir "TuxGuitar")
588 (substitute* "GNUmakefile"
589 (("PROPERTIES\\?=")
590 (string-append "PROPERTIES?= -Dswt.library.path="
591 (assoc-ref inputs "swt") "/lib"))
592 (("\\$\\(GCJ\\) -o") "$(GCJ) $(LDFLAGS) -o"))
593 #t)
594 (alist-delete 'configure %standard-phases))))
595 (inputs
596 `(("swt" ,swt)))
597 (native-inputs
397dbde8 598 `(("gcj" ,gcj)
6260d1a8
RW
599 ("pkg-config" ,pkg-config)))
600 (home-page "http://tuxguitar.com.ar")
601 (synopsis "Multitrack tablature editor and player")
602 (description
603 "TuxGuitar is a guitar tablature editor with player support through midi.
604It can display scores and multitrack tabs. TuxGuitar provides various
605additional features, including autoscrolling while playing, note duration
606management, bend/slide/vibrato/hammer-on/pull-off effects, support for
607tuplets, time signature management, tempo management, gp3/gp4/gp5 import and
608export.")
609 (license license:lgpl2.1+)))
2d0fd07b
RW
610
611(define-public pd
612 (package
613 (name "pd")
614 (version "0.45.4")
615 (source (origin
616 (method url-fetch)
617 (uri
618 (string-append "mirror://sourceforge/pure-data/pure-data/"
619 version "/pd-" (version-major+minor version)
620 "-" (last (string-split version #\.))
621 ".src.tar.gz"))
622 (sha256
623 (base32
624 "1ls2ap5yi2zxvmr247621g4jx0hhfds4j5704a050bn2n3l0va2p"))))
625 (build-system gnu-build-system)
626 (arguments
627 `(#:tests? #f ; no "check" target
628 #:phases
629 (modify-phases %standard-phases
630 (add-before
631 'configure 'fix-wish-path
632 (lambda _
633 (substitute* "src/s_inter.c"
634 ((" wish ") (string-append " " (which "wish8.6") " ")))
635 (substitute* "tcl/pd-gui.tcl"
636 (("exec wish ") (string-append "exec " (which "wish8.6") " ")))
637 #t))
638 (add-after
639 'unpack 'autoconf
640 (lambda _ (zero? (system* "autoreconf" "-vfi")))))))
641 (native-inputs
642 `(("autoconf" ,autoconf)
643 ("automake" ,automake)
644 ("libtool" ,libtool)
645 ("gettext" ,gnu-gettext)
646 ("pkg-config" ,pkg-config)))
647 (inputs
648 `(("tk" ,tk)
649 ("alsa-lib" ,alsa-lib)
650 ("jack" ,jack-1)))
651 (home-page "http://puredata.info")
652 (synopsis "Visual programming language for artistic performances")
653 (description
654 "Pure Data (aka Pd) is a visual programming language. Pd enables
655musicians, visual artists, performers, researchers, and developers to create
656software graphically, without writing lines of code. Pd is used to process
657and generate sound, video, 2D/3D graphics, and interface sensors, input
658devices, and MIDI. Pd can easily work over local and remote networks to
659integrate wearable technology, motor systems, lighting rigs, and other
660equipment. Pd is suitable for learning basic multimedia processing and visual
661programming methods as well as for realizing complex systems for large-scale
662projects.")
663 (license license:bsd-3)))
821664f1
RW
664
665(define-public frescobaldi
666 (package
667 (name "frescobaldi")
668 (version "2.18.1")
669 (source (origin
670 (method url-fetch)
671 (uri (string-append
672 "https://github.com/wbsoft/frescobaldi/releases/download/v"
673 version "/frescobaldi-" version ".tar.gz"))
674 (sha256
675 (base32
676 "1hflc6gck6dn17czc2ldai5j0ynfg3df8lqcggdry06qxsdbnns7"))))
677 (build-system python-build-system)
678 (inputs
679 `(("lilypond" ,lilypond)
680 ("python-pyqt-4" ,python-pyqt-4)
681 ("python-ly" ,python-ly)
682 ("poppler" ,poppler)
683 ("python-poppler-qt4" ,python-poppler-qt4)
684 ("python-sip" ,python-sip)))
685 (home-page "http://www.frescobaldi.org/")
686 (synopsis "LilyPond sheet music text editor")
687 (description
688 "Frescobaldi is a LilyPond sheet music text editor with syntax
689highlighting and automatic completion. Among other things, it can render
690scores next to the source, can capture input from MIDI or read MusicXML and
691ABC files, has a MIDI player for proof-listening, and includes a documentation
692browser.")
693 (license license:gpl2+)))
ddfddb0c
RW
694
695(define-public zynaddsubfx
696 (package
697 (name "zynaddsubfx")
698 (version "2.5.1")
699 (source (origin
700 (method url-fetch)
701 (uri (string-append
702 "mirror://sourceforge/zynaddsubfx/zynaddsubfx/"
703 version "/zynaddsubfx-" version ".tar.gz"))
704 (sha256
705 (base32
706 "01c4v5lbzard6y00cjq3b6a50cafqwfwibzng9gdsajczhnbkqz2"))))
707 (build-system cmake-build-system)
708 (inputs
709 `(("liblo" ,liblo)
710 ("ntk" ,ntk)
711 ("alsa-lib" ,alsa-lib)
712 ("jack" ,jack-1)
713 ("fftw" ,fftw)
714 ("minixml" ,minixml)
715 ("libxpm" ,libxpm)
716 ("zlib" ,zlib)))
717 (native-inputs
718 `(("pkg-config" ,pkg-config)))
719 (home-page "http://zynaddsubfx.sf.net/")
720 (synopsis "Software synthesizer")
721 (description
722 "ZynAddSubFX is a feature heavy realtime software synthesizer. It offers
723three synthesizer engines, multitimbral and polyphonic synths, microtonal
724capabilities, custom envelopes, effects, etc.")
725 (license license:gpl2)))