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