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