gnu: sfml: Update to 2.3.2.
[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")
190 (version "2.18.2")
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
199 "01xs9x2wjj7w9appaaqdhk15r1xvvdbz9qwahzhppfmhclvp779j"))))
200 (build-system gnu-build-system)
201 (arguments
202 `(;; Tests fail with this error:
203 ;; Undefined subroutine &main::get_index called at
204 ;; ./lilypond-2.18.2/Documentation/lilypond-texi2html.init line 2127.
205 #:tests? #f
206 #:out-of-source? #t
207 #:phases
208 (alist-cons-before
209 'configure 'prepare-configuration
210 (lambda _
211 (substitute* "configure"
212 (("SHELL=/bin/sh") "SHELL=sh"))
213 (setenv "out" "")
214 #t)
215 %standard-phases)))
216 (inputs
217 `(("guile" ,guile-1.8)
218 ("font-dejavu" ,font-dejavu)
219 ("fontconfig" ,fontconfig)
220 ("freetype" ,freetype)
221 ("ghostscript" ,ghostscript)
222 ("pango" ,pango)
223 ("python" ,python-2)))
224 (native-inputs
225 `(("bison" ,bison)
226 ("perl" ,perl)
227 ("flex" ,flex)
228 ("fontforge" ,fontforge)
229 ("dblatex" ,dblatex)
230 ("gettext" ,gnu-gettext)
231 ("imagemagick" ,imagemagick)
232 ("netpbm" ,netpbm) ;for pngtopnm
233 ("texlive" ,texlive) ;metafont and metapost
234 ("texinfo" ,texinfo)
235 ("texi2html" ,texi2html)
236 ("rsync" ,rsync)
237 ("pkg-config" ,pkg-config)
238 ("zip" ,zip)))
239 (home-page "http://www.lilypond.org/")
240 (synopsis "Music typesetting")
241 (description
242 "GNU LilyPond is a music typesetter, which produces high-quality sheet
243music. Music is input in a text file containing control sequences which are
244interpreted by LilyPond to produce the final document. It is extendable with
245Guile.")
246 (license license:gpl3+)))
c267cc15 247
8e80244a
RW
248(define-public non-sequencer
249 ;; The latest tagged release is three years old and uses a custom build
250 ;; system, so we take the last commit affecting the "sequencer" directory.
251 (let ((commit "1d9bd576"))
252 (package
253 (name "non-sequencer")
254 (version (string-append "1.9.5-" commit))
255 (source (origin
256 (method git-fetch)
257 (uri (git-reference
258 (url "git://git.tuxfamily.org/gitroot/non/non.git")
259 (commit commit)))
260 (sha256
261 (base32
262 "0pkkw8q6d55j38xm7r4rwpdv1wy00a44h8c4wrn7vbgpq9nij46y"))
263 (file-name (string-append name "-" version "-checkout"))))
264 (build-system waf-build-system)
265 (arguments
266 `(#:tests? #f ;no "check" target
267 #:configure-flags '("--project=sequencer")
268 #:python ,python-2))
269 (inputs
270 `(("jack" ,jack-1)
271 ("libsigc++" ,libsigc++)
272 ("liblo" ,liblo)
273 ("ntk" ,ntk)))
274 (native-inputs
275 `(("pkg-config" ,pkg-config)))
276 (home-page "http://non.tuxfamily.org/wiki/Non%20Sequencer")
277 (synopsis "Pattern-based MIDI sequencer")
278 (description
279 "The Non Sequencer is a powerful, lightweight, real-time,
280pattern-based MIDI sequencer. It utilizes the JACK Audio Connection Kit for
281MIDI I/O and the NTK GUI toolkit for its user interface. Everything in Non
282Sequencer happens on-line, in real-time. Music can be composed live, while the
283transport is rolling.")
284 (license license:gpl2+))))
285
c267cc15
RW
286(define-public solfege
287 (package
288 (name "solfege")
289 (version "3.22.2")
290 (source (origin
291 (method url-fetch)
292 (uri (string-append
293 "mirror://gnu/solfege/solfege-"
294 version ".tar.xz"))
295 (sha256
296 (base32
297 "1w25rxdbj907nsx285k9nm480pvy12w3yknfh4n1dfv17cwy072i"))))
298 (build-system gnu-build-system)
299 (arguments
300 `(#:tests? #f ; xmllint attempts to download DTD
301 #:test-target "test"
302 #:phases
303 (alist-cons-after
304 'unpack 'fix-configuration
305 (lambda* (#:key inputs #:allow-other-keys)
306 (substitute* "default.config"
307 (("csound=csound")
308 (string-append "csound="
309 (assoc-ref inputs "csound")
310 "/bin/csound"))
311 (("/usr/bin/aplay")
312 (string-append (assoc-ref inputs "aplay")
313 "/bin/aplay"))
314 (("/usr/bin/timidity")
315 (string-append (assoc-ref inputs "timidity")
316 "/bin/timidity"))
317 (("/usr/bin/mpg123")
318 (string-append (assoc-ref inputs "mpg123")
319 "/bin/mpg123"))
320 (("/usr/bin/ogg123")
321 (string-append (assoc-ref inputs "ogg123")
322 "/bin/ogg123"))))
323 (alist-cons-before
324 'build 'patch-python-shebangs
325 (lambda _
326 ;; Two python scripts begin with a Unicode BOM, so patch-shebang
327 ;; has no effect.
328 (substitute* '("solfege/parsetree.py"
329 "solfege/presetup.py")
330 (("#!/usr/bin/python") (string-append "#!" (which "python")))))
331 (alist-cons-before
332 'build 'add-sitedirs
333 ;; .pth files are not automatically interpreted unless the
334 ;; directories containing them are added as "sites". The directories
335 ;; are then added to those in the PYTHONPATH. This is required for
336 ;; the operation of pygtk and pygobject.
337 (lambda _
338 (substitute* "run-solfege.py"
339 (("import os")
340 "import os, site
341for path in [path for path in sys.path if 'site-packages' in path]: site.addsitedir(path)")))
342 (alist-cons-before
343 'build 'adjust-config-file-prefix
344 (lambda* (#:key outputs #:allow-other-keys)
345 (substitute* "run-solfege.py"
346 (("prefix = os.path.*$")
347 (string-append "prefix = " (assoc-ref outputs "out")))))
348 (alist-cons-after
349 'install 'wrap-program
350 (lambda* (#:key inputs outputs #:allow-other-keys)
351 ;; Make sure 'solfege' runs with the correct PYTHONPATH. We
352 ;; also need to modify GDK_PIXBUF_MODULE_FILE for SVG support.
353 (let* ((out (assoc-ref outputs "out"))
354 (path (getenv "PYTHONPATH"))
355 (rsvg (assoc-ref inputs "librsvg"))
356 (pixbuf (find-files rsvg "^loaders\\.cache$")))
357 (wrap-program (string-append out "/bin/solfege")
358 `("PYTHONPATH" ":" prefix (,path))
359 `("GDK_PIXBUF_MODULE_FILE" ":" prefix ,pixbuf))))
360 %standard-phases)))))))
361 (inputs
362 `(("python" ,python-2)
363 ("pygtk" ,python2-pygtk)
364 ("gettext" ,gnu-gettext)
365 ("gtk" ,gtk+)
366 ;; TODO: Lilypond is optional. Produces errors at build time:
367 ;; Drawing systems...Error: /undefinedresult in --glyphshow--
368 ;; Fontconfig is needed to fix one of the errors, but other similar
369 ;; errors remain.
370 ;;("lilypond" ,lilypond)
371 ("librsvg" ,librsvg) ; needed at runtime for icons
372 ("libpng" ,libpng) ; needed at runtime for icons
373 ;; players needed at runtime
374 ("aplay" ,alsa-utils)
375 ("csound" ,csound) ; optional, needed for some exercises
376 ("mpg123" ,mpg123)
377 ("ogg123" ,vorbis-tools)
378 ("timidity" ,timidity++)))
379 (native-inputs
380 `(("pkg-config" ,pkg-config)
381 ("txt2man" ,txt2man)
382 ("libxml2" ,libxml2) ; for tests
383 ("ghostscript" ,ghostscript)
384 ;;("fontconfig" ,fontconfig) ; only needed with lilypond
385 ;;("freetype" ,freetype) ; only needed with lilypond
386 ("texinfo" ,texinfo)))
387 (home-page "https://www.gnu.org/software/solfege/")
388 (synopsis "Ear training")
389 (description
390 "GNU Solfege is a program for practicing musical ear-training. With it,
391you can practice your recognition of various musical intervals and chords. It
392features a statistics overview so you can monitor your progress across several
393sessions. Solfege is also designed to be extensible so you can easily write
394your own lessons.")
395 (license license:gpl3+)))
6260d1a8 396
8b9ec354
RW
397(define-public powertabeditor
398 (package
399 (name "powertabeditor")
d19cf783 400 (version "2.0.0-alpha8")
8b9ec354
RW
401 (source (origin
402 (method url-fetch)
403 (uri (string-append
404 "https://github.com/powertab/powertabeditor/archive/"
405 version ".tar.gz"))
406 (file-name (string-append name "-" version ".tar.gz"))
407 (sha256
408 (base32
d19cf783 409 "0gaa2x209v3azql8ak3r1n9a9qbxjx2ssirvwdxwklv2lmfqkm82"))
8b9ec354
RW
410 (modules '((guix build utils)))
411 (snippet
412 '(begin
413 ;; Remove bundled sources for external libraries
414 (delete-file-recursively "external")
415 (substitute* "CMakeLists.txt"
416 (("include_directories\\(\\$\\{PROJECT_SOURCE_DIR\\}/external/.*") "")
8b9ec354
RW
417 (("add_subdirectory\\(external\\)") ""))
418 (substitute* "test/CMakeLists.txt"
419 (("include_directories\\(\\$\\{PROJECT_SOURCE_DIR\\}/external/.*") ""))
420
421 ;; Add install target
422 (substitute* "source/CMakeLists.txt"
423 (("qt5_use_modules")
424 (string-append
425 "install(TARGETS powertabeditor "
426 "RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)\n"
427 "install(FILES data/tunings.json DESTINATION "
428 "${CMAKE_INSTALL_PREFIX}/share/powertabeditor/)\n"
429 "qt5_use_modules")))
430 #t))))
431 (build-system cmake-build-system)
432 (arguments
7e11d113 433 `(#:modules ((guix build cmake-build-system)
8b9ec354
RW
434 (guix build utils)
435 (ice-9 match))
436 #:configure-flags
437 ;; CMake appears to lose the RUNPATH for some reason, so it has to be
438 ;; explicitly set with CMAKE_INSTALL_RPATH.
7e11d113
RW
439 (list "-DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE"
440 "-DCMAKE_ENABLE_PRECOMPILED_HEADERS=OFF" ; if ON pte_tests cannot be built
441 (string-append "-DCMAKE_INSTALL_RPATH="
8b9ec354
RW
442 (string-join (map (match-lambda
443 ((name . directory)
444 (string-append directory "/lib")))
445 %build-inputs) ";")))
446 #:phases
447 (modify-phases %standard-phases
7e11d113
RW
448 (replace
449 'check
450 (lambda _
451 (zero? (system* "bin/pte_tests"
452 ;; Exclude this failing test
453 "~Formats/PowerTabOldImport/Directions"))))
454 (add-before
455 'configure 'fix-tests
456 (lambda _
457 ;; Tests cannot be built with precompiled headers
458 (substitute* "test/CMakeLists.txt"
459 (("cotire\\(pte_tests\\)") ""))
460 #t))
8b9ec354
RW
461 (add-before
462 'configure 'remove-third-party-libs
463 (lambda* (#:key inputs #:allow-other-keys)
464 ;; Link with required static libraries, because we're not
465 ;; using the bundled version of withershins.
466 (substitute* '("source/CMakeLists.txt"
467 "test/CMakeLists.txt")
7e11d113 468 (("target_link_libraries\\((powertabeditor|pte_tests)" _ target)
8b9ec354
RW
469 (string-append "target_link_libraries(" target " "
470 (assoc-ref inputs "binutils")
471 "/lib/libbfd.a "
d6902798 472 (assoc-ref inputs "libiberty")
8b9ec354
RW
473 "/lib/libiberty.a "
474 "dl")))
475 #t)))))
476 (inputs
477 `(("boost" ,boost)
478 ("alsa-lib" ,alsa-lib)
479 ("qt" ,qt)
480 ("withershins" ,withershins)
d6902798 481 ("libiberty" ,libiberty) ;for withershins
8b9ec354
RW
482 ("binutils" ,binutils) ;for -lbfd and -liberty (for withershins)
483 ("timidity" ,timidity++)
484 ("pugixml" ,pugixml)
485 ("rtmidi" ,rtmidi)
486 ("rapidjson" ,rapidjson)
487 ("zlib" ,zlib)))
488 (native-inputs
489 `(("catch" ,catch-framework)
490 ("pkg-config" ,pkg-config)))
491 (home-page "http://powertabs.net")
492 (synopsis "Guitar tablature editor")
493 (description
494 "Power Tab Editor 2.0 is the successor to the famous original Power Tab
495Editor. It is compatible with Power Tab Editor 1.7 and Guitar Pro.")
496 (license license:gpl3+)))
497
ec8da0e2
RW
498(define-public setbfree
499 (package
500 (name "setbfree")
501 (version "0.8.0")
502 (source (origin
503 (method url-fetch)
504 (uri
505 (string-append
506 "https://github.com/pantherb/setBfree/releases/download/v"
507 version "/setbfree-" version ".tar.gz"))
508 (sha256
509 (base32
510 "045bgp7qsigpbrhk7qvgvliwiy26sajifwn7f2jvk90ckfqnlw4b"))))
511 (build-system gnu-build-system)
512 (arguments
513 `(#:tests? #f ; no "check" target
514 #:make-flags
515 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
516 (string-append "FONTFILE="
517 (assoc-ref %build-inputs "font-bitstream-vera")
b42d4508
RW
518 "/share/fonts/truetype/VeraBd.ttf")
519 ;; Disable unsupported optimization flags on non-x86
520 ,@(let ((system (or (%current-target-system)
521 (%current-system))))
522 (if (or (string-prefix? "x86_64" system)
523 (string-prefix? "i686" system))
524 '()
525 '("OPTIMIZATIONS=-ffast-math -fomit-frame-pointer -O3"))))
ec8da0e2
RW
526 #:phases
527 (modify-phases %standard-phases
528 (add-before 'build 'set-CC-variable
529 (lambda _ (setenv "CC" "gcc") #t))
530 (delete 'configure))))
531 (inputs
532 `(("jack" ,jack-1)
533 ("lv2" ,lv2)
534 ("zita-convolver" ,zita-convolver)
535 ("glu" ,glu)
536 ("ftgl" ,ftgl)
537 ("font-bitstream-vera" ,font-bitstream-vera)))
538 (native-inputs
539 `(("help2man" ,help2man)
540 ("pkg-config" ,pkg-config)))
541 (home-page "http://setbfree.org")
542 (synopsis "Tonewheel organ")
543 (description
544 "setBfree is a MIDI-controlled, software synthesizer designed to imitate
545the sound and properties of the electromechanical organs and sound
546modification devices that brought world-wide fame to the names and products of
547Laurens Hammond and Don Leslie.")
548 (license license:gpl2+)))
549
6260d1a8
RW
550(define-public tuxguitar
551 (package
552 (name "tuxguitar")
553 (version "1.2")
554 (source (origin
555 (method url-fetch)
556 (uri (string-append
557 "mirror://sourceforge/tuxguitar/TuxGuitar/TuxGuitar-"
558 version "/tuxguitar-src-" version ".tar.gz"))
559 (sha256
560 (base32
561 "1g1yf2gd06fzdhqb8kb8dmdcmr602s9y24f01kyl4940wimgr944"))))
562 (build-system gnu-build-system)
563 (arguments
564 `(#:make-flags (list (string-append "LDFLAGS=-Wl,-rpath="
565 (assoc-ref %outputs "out") "/lib")
566 (string-append "PREFIX="
567 (assoc-ref %outputs "out"))
568 (string-append "SWT_PATH="
569 (assoc-ref %build-inputs "swt")
570 "/share/java/swt.jar"))
571 #:tests? #f ;no "check" target
572 #:parallel-build? #f ;not supported
573 #:phases
574 (alist-cons-before
575 'build 'enter-dir-set-path-and-pass-ldflags
576 (lambda* (#:key inputs #:allow-other-keys)
577 (chdir "TuxGuitar")
578 (substitute* "GNUmakefile"
579 (("PROPERTIES\\?=")
580 (string-append "PROPERTIES?= -Dswt.library.path="
581 (assoc-ref inputs "swt") "/lib"))
582 (("\\$\\(GCJ\\) -o") "$(GCJ) $(LDFLAGS) -o"))
583 #t)
584 (alist-delete 'configure %standard-phases))))
585 (inputs
586 `(("swt" ,swt)))
587 (native-inputs
588 `(("gcj" ,gcj-4.8)
589 ("pkg-config" ,pkg-config)))
590 (home-page "http://tuxguitar.com.ar")
591 (synopsis "Multitrack tablature editor and player")
592 (description
593 "TuxGuitar is a guitar tablature editor with player support through midi.
594It can display scores and multitrack tabs. TuxGuitar provides various
595additional features, including autoscrolling while playing, note duration
596management, bend/slide/vibrato/hammer-on/pull-off effects, support for
597tuplets, time signature management, tempo management, gp3/gp4/gp5 import and
598export.")
599 (license license:lgpl2.1+)))
2d0fd07b
RW
600
601(define-public pd
602 (package
603 (name "pd")
604 (version "0.45.4")
605 (source (origin
606 (method url-fetch)
607 (uri
608 (string-append "mirror://sourceforge/pure-data/pure-data/"
609 version "/pd-" (version-major+minor version)
610 "-" (last (string-split version #\.))
611 ".src.tar.gz"))
612 (sha256
613 (base32
614 "1ls2ap5yi2zxvmr247621g4jx0hhfds4j5704a050bn2n3l0va2p"))))
615 (build-system gnu-build-system)
616 (arguments
617 `(#:tests? #f ; no "check" target
618 #:phases
619 (modify-phases %standard-phases
620 (add-before
621 'configure 'fix-wish-path
622 (lambda _
623 (substitute* "src/s_inter.c"
624 ((" wish ") (string-append " " (which "wish8.6") " ")))
625 (substitute* "tcl/pd-gui.tcl"
626 (("exec wish ") (string-append "exec " (which "wish8.6") " ")))
627 #t))
628 (add-after
629 'unpack 'autoconf
630 (lambda _ (zero? (system* "autoreconf" "-vfi")))))))
631 (native-inputs
632 `(("autoconf" ,autoconf)
633 ("automake" ,automake)
634 ("libtool" ,libtool)
635 ("gettext" ,gnu-gettext)
636 ("pkg-config" ,pkg-config)))
637 (inputs
638 `(("tk" ,tk)
639 ("alsa-lib" ,alsa-lib)
640 ("jack" ,jack-1)))
641 (home-page "http://puredata.info")
642 (synopsis "Visual programming language for artistic performances")
643 (description
644 "Pure Data (aka Pd) is a visual programming language. Pd enables
645musicians, visual artists, performers, researchers, and developers to create
646software graphically, without writing lines of code. Pd is used to process
647and generate sound, video, 2D/3D graphics, and interface sensors, input
648devices, and MIDI. Pd can easily work over local and remote networks to
649integrate wearable technology, motor systems, lighting rigs, and other
650equipment. Pd is suitable for learning basic multimedia processing and visual
651programming methods as well as for realizing complex systems for large-scale
652projects.")
653 (license license:bsd-3)))
821664f1
RW
654
655(define-public frescobaldi
656 (package
657 (name "frescobaldi")
658 (version "2.18.1")
659 (source (origin
660 (method url-fetch)
661 (uri (string-append
662 "https://github.com/wbsoft/frescobaldi/releases/download/v"
663 version "/frescobaldi-" version ".tar.gz"))
664 (sha256
665 (base32
666 "1hflc6gck6dn17czc2ldai5j0ynfg3df8lqcggdry06qxsdbnns7"))))
667 (build-system python-build-system)
668 (inputs
669 `(("lilypond" ,lilypond)
670 ("python-pyqt-4" ,python-pyqt-4)
671 ("python-ly" ,python-ly)
672 ("poppler" ,poppler)
673 ("python-poppler-qt4" ,python-poppler-qt4)
674 ("python-sip" ,python-sip)))
675 (home-page "http://www.frescobaldi.org/")
676 (synopsis "LilyPond sheet music text editor")
677 (description
678 "Frescobaldi is a LilyPond sheet music text editor with syntax
679highlighting and automatic completion. Among other things, it can render
680scores next to the source, can capture input from MIDI or read MusicXML and
681ABC files, has a MIDI player for proof-listening, and includes a documentation
682browser.")
683 (license license:gpl2+)))
ddfddb0c
RW
684
685(define-public zynaddsubfx
686 (package
687 (name "zynaddsubfx")
688 (version "2.5.1")
689 (source (origin
690 (method url-fetch)
691 (uri (string-append
692 "mirror://sourceforge/zynaddsubfx/zynaddsubfx/"
693 version "/zynaddsubfx-" version ".tar.gz"))
694 (sha256
695 (base32
696 "01c4v5lbzard6y00cjq3b6a50cafqwfwibzng9gdsajczhnbkqz2"))))
697 (build-system cmake-build-system)
698 (inputs
699 `(("liblo" ,liblo)
700 ("ntk" ,ntk)
701 ("alsa-lib" ,alsa-lib)
702 ("jack" ,jack-1)
703 ("fftw" ,fftw)
704 ("minixml" ,minixml)
705 ("libxpm" ,libxpm)
706 ("zlib" ,zlib)))
707 (native-inputs
708 `(("pkg-config" ,pkg-config)))
709 (home-page "http://zynaddsubfx.sf.net/")
710 (synopsis "Software synthesizer")
711 (description
712 "ZynAddSubFX is a feature heavy realtime software synthesizer. It offers
713three synthesizer engines, multitimbral and polyphonic synths, microtonal
714capabilities, custom envelopes, effects, etc.")
715 (license license:gpl2)))