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