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