gnu: Add python-flask.
[jackhill/guix/guix.git] / gnu / packages / music.scm
CommitLineData
1b6826d3 1;;; GNU Guix --- Functional package management for GNU
658212eb 2;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
a763ce7d 3;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
e8069d01 4;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
aa0edd3f 5;;; Copyright © 2016 Al McElrath <hello@yrns.org>
b7367762 6;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
3f7a182d 7;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
1b6826d3
RW
8;;;
9;;; This file is part of GNU Guix.
10;;;
11;;; GNU Guix is free software; you can redistribute it and/or modify it
12;;; under the terms of the GNU General Public License as published by
13;;; the Free Software Foundation; either version 3 of the License, or (at
14;;; your option) any later version.
15;;;
16;;; GNU Guix is distributed in the hope that it will be useful, but
17;;; WITHOUT ANY WARRANTY; without even the implied warranty of
18;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19;;; GNU General Public License for more details.
20;;;
21;;; You should have received a copy of the GNU General Public License
22;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
23
24(define-module (gnu packages music)
25 #:use-module (guix utils)
26 #:use-module (guix packages)
27 #:use-module (guix download)
8e80244a 28 #:use-module (guix git-download)
1b6826d3
RW
29 #:use-module ((guix licenses) #:prefix license:)
30 #:use-module (guix build-system gnu)
8b9ec354 31 #:use-module (guix build-system cmake)
821664f1 32 #:use-module (guix build-system python)
8e80244a 33 #:use-module (guix build-system waf)
1b6826d3 34 #:use-module (gnu packages)
ddfddb0c 35 #:use-module (gnu packages algebra)
c267cc15 36 #:use-module (gnu packages audio)
2d0fd07b 37 #:use-module (gnu packages autotools)
b7367762 38 #:use-module (gnu packages backup)
8b9ec354 39 #:use-module (gnu packages base) ;libbdf
1b6826d3 40 #:use-module (gnu packages bison)
b7367762 41 #:use-module (gnu packages boost)
e8069d01 42 #:use-module (gnu packages cdrom)
8b9ec354
RW
43 #:use-module (gnu packages code)
44 #:use-module (gnu packages check)
45 #:use-module (gnu packages compression)
aa0edd3f 46 #:use-module (gnu packages curl)
1b6826d3 47 #:use-module (gnu packages docbook)
bf76d780 48 #:use-module (gnu packages doxygen)
1b6826d3 49 #:use-module (gnu packages flex)
8e80244a 50 #:use-module (gnu packages fltk)
1b6826d3
RW
51 #:use-module (gnu packages fonts)
52 #:use-module (gnu packages fontutils)
6260d1a8 53 #:use-module (gnu packages gcc)
aa0edd3f 54 #:use-module (gnu packages gnupg)
1b6826d3
RW
55 #:use-module (gnu packages gettext)
56 #:use-module (gnu packages ghostscript)
ec8da0e2 57 #:use-module (gnu packages gl)
8e80244a 58 #:use-module (gnu packages glib)
c267cc15 59 #:use-module (gnu packages gnome)
1b6826d3
RW
60 #:use-module (gnu packages gtk)
61 #:use-module (gnu packages guile)
c267cc15 62 #:use-module (gnu packages image)
1b6826d3 63 #:use-module (gnu packages imagemagick)
6260d1a8 64 #:use-module (gnu packages java)
c267cc15
RW
65 #:use-module (gnu packages linux) ; for alsa-utils
66 #:use-module (gnu packages man)
67 #:use-module (gnu packages mp3)
e8069d01 68 #:use-module (gnu packages ncurses)
1b6826d3 69 #:use-module (gnu packages netpbm)
821664f1 70 #:use-module (gnu packages pdf)
1b6826d3
RW
71 #:use-module (gnu packages perl)
72 #:use-module (gnu packages pkg-config)
d231bb35 73 #:use-module (gnu packages pulseaudio) ;libsndfile
1b6826d3 74 #:use-module (gnu packages python)
8b9ec354 75 #:use-module (gnu packages qt)
d231bb35 76 #:use-module (gnu packages rdf)
c493679f 77 #:use-module (gnu packages readline)
1b6826d3 78 #:use-module (gnu packages rsync)
2d0fd07b 79 #:use-module (gnu packages tcl)
1b6826d3
RW
80 #:use-module (gnu packages texinfo)
81 #:use-module (gnu packages texlive)
e8069d01 82 #:use-module (gnu packages video)
8b9ec354 83 #:use-module (gnu packages web)
c267cc15 84 #:use-module (gnu packages xml)
ddfddb0c 85 #:use-module (gnu packages xorg)
c267cc15 86 #:use-module (gnu packages xiph)
2d0fd07b
RW
87 #:use-module (gnu packages zip)
88 #:use-module ((srfi srfi-1) #:select (last)))
1b6826d3 89
e8069d01
PW
90(define-public cmus
91 (package
92 (name "cmus")
93 (version "2.7.1")
94 (source (origin
95 (method url-fetch)
96 (uri (string-append
97 "https://github.com/" name "/" name "/archive/v"
98 version ".tar.gz"))
566fc7fa 99 (file-name (string-append name "-" version ".tar.gz"))
e8069d01
PW
100 (sha256
101 (base32
102 "0raixgjavkm7hxppzsc5zqbfbh2bhjcmbiplhnsxsmyj8flafyc1"))))
103 (build-system gnu-build-system)
104 (arguments
105 `(#:tests? #f ; cmus does not include tests
106 #:phases
107 (modify-phases %standard-phases
108 (replace
109 'configure
110 (lambda* (#:key outputs #:allow-other-keys)
111 (let ((out (assoc-ref outputs "out")))
112
113 ;; It's an idiosyncratic configure script that doesn't
114 ;; understand --prefix=..; it wants prefix=.. instead.
115 (zero?
116 (system* "./configure"
117 (string-append "prefix=" out)))))))))
118 ;; TODO: cmus optionally supports the following formats, which haven't yet
119 ;; been added to Guix:
120 ;;
121 ;; - Roar, libroar
122 ;;
123 ;; - DISCID_LIBS, apparently different from cd-discid which is included in
124 ;; Guix. See <http://sourceforge.net/projects/discid/>
125 (native-inputs
126 `(("pkg-config" ,pkg-config)))
127 (inputs
128 `(("alsa-lib" ,alsa-lib)
129 ("ao" ,ao)
130 ("ffmpeg" ,ffmpeg)
131 ("flac" ,flac)
132 ("jack" ,jack-1)
133 ("libcddb" ,libcddb)
134 ("libcdio-paranoia" ,libcdio-paranoia)
135 ("libcue" ,libcue)
136 ("libmad" ,libmad)
137 ("libmodplug" ,libmodplug)
138 ("libmpcdec" ,libmpcdec)
139 ("libsamplerate" ,libsamplerate)
140 ("libvorbis" ,libvorbis)
141 ("ncurses" ,ncurses)
142 ("opusfile" ,opusfile)
143 ("pulseaudio" ,pulseaudio)
144 ("wavpack" ,wavpack)))
145 (home-page "https://cmus.github.io/")
146 (synopsis "Small console music player")
147 (description "Cmus is a small and fast console music player. It supports
148many input formats and provides a customisable Vi-style user interface.")
149 (license license:gpl2+)))
150
d231bb35
RW
151(define-public hydrogen
152 (package
153 (name "hydrogen")
b7367762 154 (version "0.9.6.1")
d231bb35
RW
155 (source (origin
156 (method url-fetch)
157 (uri (string-append
b7367762
EF
158 "https://github.com/hydrogen-music/hydrogen/archive/"
159 version ".tar.gz"))
d231bb35
RW
160 (sha256
161 (base32
b7367762
EF
162 "0vxnaqfmcv7hhk0cj67imdcqngspnck7f0wfmvhfgfqa7x1xznll"))))
163 (build-system cmake-build-system)
d231bb35 164 (arguments
b7367762 165 `(#:test-target "tests"))
d231bb35 166 (native-inputs
b7367762 167 `(("cppunit" ,cppunit)
d231bb35
RW
168 ("pkg-config" ,pkg-config)))
169 (inputs
b7367762 170 `(("alsa-lib" ,alsa-lib)
d231bb35 171 ("jack" ,jack-1)
b7367762 172 ;; ("ladspa" ,ladspa) ; cannot find during configure
d231bb35 173 ("lash" ,lash)
b7367762
EF
174 ("libarchive" ,libarchive)
175 ("libsndfile" ,libsndfile)
176 ("libtar" ,libtar)
177 ("lrdf" ,lrdf)
d231bb35 178 ("qt" ,qt-4)
b7367762 179 ("zlib" ,zlib)))
d231bb35
RW
180 (home-page "http://www.hydrogen-music.org")
181 (synopsis "Drum machine")
182 (description
183 "Hydrogen is an advanced drum machine for GNU/Linux. Its main goal is to
184enable professional yet simple and intuitive pattern-based drum programming.")
185 (license license:gpl2+)))
186
8c454dcd
RW
187(define-public klick
188 (package
189 (name "klick")
190 (version "0.12.2")
191 (source (origin
192 (method url-fetch)
193 (uri (string-append "http://das.nasophon.de/download/klick-"
194 version ".tar.gz"))
195 (sha256
196 (base32
197 "0hmcaywnwzjci3pp4xpvbijnnwvibz7gf9xzcdjbdca910y5728j"))))
198 (build-system gnu-build-system)
199 (arguments
200 `(#:tests? #f ;no "check" target
201 #:phases
202 ;; TODO: Add scons-build-system and use it here.
203 (modify-phases %standard-phases
204 (delete 'configure)
205 (replace 'build
206 (lambda* (#:key inputs outputs #:allow-other-keys)
207 (let ((out (assoc-ref outputs "out")))
208 (mkdir-p out)
209 (zero? (system* "scons" (string-append "PREFIX=" out))))))
210 (replace 'install (lambda _ (zero? (system* "scons" "install")))))))
211 (inputs
212 `(("boost" ,boost)
213 ("jack" ,jack-1)
214 ("libsndfile" ,libsndfile)
215 ("libsamplerate" ,libsamplerate)
216 ("liblo" ,liblo)
217 ("rubberband" ,rubberband)))
218 (native-inputs
219 `(("scons" ,scons)
220 ("python" ,python-2)
221 ("pkg-config" ,pkg-config)))
222 (home-page "http://das.nasophon.de/klick/")
223 (synopsis "Metronome for JACK")
224 (description
225 "klick is an advanced command-line based metronome for JACK. It allows
226you to define complex tempo maps for entire songs or performances.")
227 (license license:gpl2+)))
228
048bfba1
RW
229(define-public gtklick
230 (package
231 (name "gtklick")
232 (version "0.6.4")
233 (source (origin
234 (method url-fetch)
235 (uri (string-append "http://das.nasophon.de/download/gtklick-"
236 version ".tar.gz"))
237 (sha256
238 (base32
239 "0dq1km6njnzsqdqyf6wzir9g733z0mc9vmxfg2383k3c2a2di6bp"))))
240 (build-system python-build-system)
241 (arguments
242 `(#:tests? #f ; no tests
243 #:python ,python-2
244 #:phases
245 (modify-phases %standard-phases
246 (add-before 'build 'add-sitedirs
247 ;; .pth files are not automatically interpreted unless the
248 ;; directories containing them are added as "sites". The directories
249 ;; are then added to those in the PYTHONPATH. This is required for
250 ;; the operation of pygtk.
251 (lambda _
252 (substitute* "gtklick/gtklick.py"
253 (("import pygtk")
254 "import pygtk, site, sys
255for path in [path for path in sys.path if 'site-packages' in path]: site.addsitedir(path)"))))
256 (add-after 'unpack 'inject-store-path-to-klick
257 (lambda* (#:key inputs #:allow-other-keys)
258 (substitute* "gtklick/klick_backend.py"
259 (("KLICK_PATH = 'klick'")
260 (string-append "KLICK_PATH = '"
261 (assoc-ref inputs "klick")
262 "/bin/klick'")))
263 #t)))))
264 (inputs
265 `(("klick" ,klick)
266 ("python2-pyliblo" ,python2-pyliblo)
267 ("python2-pygtk" ,python2-pygtk)))
268 (native-inputs
269 `(("gettext" ,gnu-gettext)))
270 (home-page "http://das.nasophon.de/gtklick/")
271 (synopsis "Simple metronome with an easy-to-use graphical interface")
272 (description
273 "Gtklick is a simple metronome with an easy-to-use graphical user
274interface. It is implemented as a frontend to @code{klick}.")
275 (license license:gpl2+)))
276
1b6826d3
RW
277(define-public lilypond
278 (package
279 (name "lilypond")
398abcf8 280 (version "2.19.33")
1b6826d3
RW
281 (source (origin
282 (method url-fetch)
283 (uri (string-append
284 "http://download.linuxaudio.org/lilypond/sources/v"
285 (version-major+minor version) "/"
286 name "-" version ".tar.gz"))
287 (sha256
288 (base32
398abcf8 289 "0s4vbbfy4xwq4da4kmlnndalmcyx2jaz7y8praah2146qbnr90xh"))))
1b6826d3
RW
290 (build-system gnu-build-system)
291 (arguments
127b04d7 292 `(#:tests? #f ; out-test/collated-files.html fails
1b6826d3 293 #:out-of-source? #t
409be57b 294 #:make-flags '("conf=www") ;to generate images for info manuals
127b04d7 295 #:configure-flags
409be57b
RW
296 (list "CONFIGURATION=www"
297 (string-append "--with-texgyre-dir="
127b04d7
RW
298 (assoc-ref %build-inputs "font-tex-gyre")
299 "/share/fonts/opentype/"))
1b6826d3 300 #:phases
a8bc747a 301 (modify-phases %standard-phases
409be57b
RW
302 (add-after 'unpack 'fix-path-references
303 (lambda _
a8bc747a
RW
304 (substitute* "scm/backend-library.scm"
305 (("\\(search-executable '\\(\"gs\"\\)\\)")
409be57b
RW
306 (string-append "\"" (which "gs") "\""))
307 (("\"/bin/sh\"")
308 (string-append "\"" (which "sh") "\"")))
a8bc747a
RW
309 #t))
310 (add-before 'configure 'prepare-configuration
311 (lambda _
312 (substitute* "configure"
313 (("SHELL=/bin/sh") "SHELL=sh"))
409be57b
RW
314 (setenv "out" "www")
315 (setenv "conf" "www")
316 #t))
317 (add-after 'install 'install-info
318 (lambda _
319 (zero? (system* "make"
320 "-j" (number->string (parallel-job-count))
321 "conf=www" "install-info")))))))
1b6826d3
RW
322 (inputs
323 `(("guile" ,guile-1.8)
324 ("font-dejavu" ,font-dejavu)
127b04d7 325 ("font-tex-gyre" ,font-tex-gyre)
1b6826d3
RW
326 ("fontconfig" ,fontconfig)
327 ("freetype" ,freetype)
328 ("ghostscript" ,ghostscript)
329 ("pango" ,pango)
330 ("python" ,python-2)))
331 (native-inputs
332 `(("bison" ,bison)
333 ("perl" ,perl)
334 ("flex" ,flex)
335 ("fontforge" ,fontforge)
336 ("dblatex" ,dblatex)
337 ("gettext" ,gnu-gettext)
338 ("imagemagick" ,imagemagick)
339 ("netpbm" ,netpbm) ;for pngtopnm
340 ("texlive" ,texlive) ;metafont and metapost
341 ("texinfo" ,texinfo)
342 ("texi2html" ,texi2html)
343 ("rsync" ,rsync)
344 ("pkg-config" ,pkg-config)
345 ("zip" ,zip)))
346 (home-page "http://www.lilypond.org/")
347 (synopsis "Music typesetting")
348 (description
349 "GNU LilyPond is a music typesetter, which produces high-quality sheet
350music. Music is input in a text file containing control sequences which are
351interpreted by LilyPond to produce the final document. It is extendable with
352Guile.")
55ca5e80
LC
353 (license license:gpl3+)
354
355 ;; On armhf and mips64el, building the documentation sometimes leads to
356 ;; more than an hour of silence, so double the max silent time.
357 (properties `((max-silent-time . 7200)))))
c267cc15 358
8e80244a
RW
359(define-public non-sequencer
360 ;; The latest tagged release is three years old and uses a custom build
361 ;; system, so we take the last commit affecting the "sequencer" directory.
362 (let ((commit "1d9bd576"))
363 (package
364 (name "non-sequencer")
365 (version (string-append "1.9.5-" commit))
366 (source (origin
367 (method git-fetch)
368 (uri (git-reference
369 (url "git://git.tuxfamily.org/gitroot/non/non.git")
370 (commit commit)))
371 (sha256
372 (base32
373 "0pkkw8q6d55j38xm7r4rwpdv1wy00a44h8c4wrn7vbgpq9nij46y"))
374 (file-name (string-append name "-" version "-checkout"))))
375 (build-system waf-build-system)
376 (arguments
377 `(#:tests? #f ;no "check" target
e591a4d6
RW
378 #:configure-flags
379 (list "--project=sequencer"
380 ;; Disable the use of SSE unless on x86_64.
381 ,@(if (not (string-prefix? "x86_64" (or (%current-target-system)
382 (%current-system))))
383 '("--disable-sse")
384 '()))
d8c317df
SB
385 #:phases
386 (modify-phases %standard-phases
387 (add-before
388 'configure 'set-flags
389 (lambda _
390 ;; Compile with C++11, required by libsigc++.
391 (setenv "CXXFLAGS" "-std=c++11")
392 #t)))
8e80244a
RW
393 #:python ,python-2))
394 (inputs
395 `(("jack" ,jack-1)
396 ("libsigc++" ,libsigc++)
397 ("liblo" ,liblo)
398 ("ntk" ,ntk)))
399 (native-inputs
400 `(("pkg-config" ,pkg-config)))
401 (home-page "http://non.tuxfamily.org/wiki/Non%20Sequencer")
402 (synopsis "Pattern-based MIDI sequencer")
403 (description
404 "The Non Sequencer is a powerful, lightweight, real-time,
405pattern-based MIDI sequencer. It utilizes the JACK Audio Connection Kit for
406MIDI I/O and the NTK GUI toolkit for its user interface. Everything in Non
407Sequencer happens on-line, in real-time. Music can be composed live, while the
408transport is rolling.")
409 (license license:gpl2+))))
410
c267cc15
RW
411(define-public solfege
412 (package
413 (name "solfege")
414 (version "3.22.2")
415 (source (origin
416 (method url-fetch)
417 (uri (string-append
418 "mirror://gnu/solfege/solfege-"
419 version ".tar.xz"))
420 (sha256
421 (base32
422 "1w25rxdbj907nsx285k9nm480pvy12w3yknfh4n1dfv17cwy072i"))))
423 (build-system gnu-build-system)
424 (arguments
425 `(#:tests? #f ; xmllint attempts to download DTD
426 #:test-target "test"
427 #:phases
428 (alist-cons-after
429 'unpack 'fix-configuration
430 (lambda* (#:key inputs #:allow-other-keys)
431 (substitute* "default.config"
432 (("csound=csound")
433 (string-append "csound="
434 (assoc-ref inputs "csound")
435 "/bin/csound"))
436 (("/usr/bin/aplay")
437 (string-append (assoc-ref inputs "aplay")
438 "/bin/aplay"))
439 (("/usr/bin/timidity")
440 (string-append (assoc-ref inputs "timidity")
441 "/bin/timidity"))
442 (("/usr/bin/mpg123")
443 (string-append (assoc-ref inputs "mpg123")
444 "/bin/mpg123"))
445 (("/usr/bin/ogg123")
446 (string-append (assoc-ref inputs "ogg123")
447 "/bin/ogg123"))))
448 (alist-cons-before
449 'build 'patch-python-shebangs
450 (lambda _
451 ;; Two python scripts begin with a Unicode BOM, so patch-shebang
452 ;; has no effect.
453 (substitute* '("solfege/parsetree.py"
454 "solfege/presetup.py")
455 (("#!/usr/bin/python") (string-append "#!" (which "python")))))
456 (alist-cons-before
457 'build 'add-sitedirs
458 ;; .pth files are not automatically interpreted unless the
459 ;; directories containing them are added as "sites". The directories
460 ;; are then added to those in the PYTHONPATH. This is required for
461 ;; the operation of pygtk and pygobject.
462 (lambda _
463 (substitute* "run-solfege.py"
464 (("import os")
465 "import os, site
466for path in [path for path in sys.path if 'site-packages' in path]: site.addsitedir(path)")))
467 (alist-cons-before
468 'build 'adjust-config-file-prefix
469 (lambda* (#:key outputs #:allow-other-keys)
470 (substitute* "run-solfege.py"
471 (("prefix = os.path.*$")
472 (string-append "prefix = " (assoc-ref outputs "out")))))
473 (alist-cons-after
474 'install 'wrap-program
475 (lambda* (#:key inputs outputs #:allow-other-keys)
476 ;; Make sure 'solfege' runs with the correct PYTHONPATH. We
477 ;; also need to modify GDK_PIXBUF_MODULE_FILE for SVG support.
478 (let* ((out (assoc-ref outputs "out"))
479 (path (getenv "PYTHONPATH"))
480 (rsvg (assoc-ref inputs "librsvg"))
481 (pixbuf (find-files rsvg "^loaders\\.cache$")))
482 (wrap-program (string-append out "/bin/solfege")
483 `("PYTHONPATH" ":" prefix (,path))
484 `("GDK_PIXBUF_MODULE_FILE" ":" prefix ,pixbuf))))
485 %standard-phases)))))))
486 (inputs
487 `(("python" ,python-2)
488 ("pygtk" ,python2-pygtk)
489 ("gettext" ,gnu-gettext)
490 ("gtk" ,gtk+)
e8309291 491 ("lilypond" ,lilypond)
c267cc15
RW
492 ("librsvg" ,librsvg) ; needed at runtime for icons
493 ("libpng" ,libpng) ; needed at runtime for icons
494 ;; players needed at runtime
495 ("aplay" ,alsa-utils)
496 ("csound" ,csound) ; optional, needed for some exercises
497 ("mpg123" ,mpg123)
498 ("ogg123" ,vorbis-tools)
499 ("timidity" ,timidity++)))
500 (native-inputs
501 `(("pkg-config" ,pkg-config)
502 ("txt2man" ,txt2man)
503 ("libxml2" ,libxml2) ; for tests
504 ("ghostscript" ,ghostscript)
c267cc15
RW
505 ("texinfo" ,texinfo)))
506 (home-page "https://www.gnu.org/software/solfege/")
507 (synopsis "Ear training")
508 (description
509 "GNU Solfege is a program for practicing musical ear-training. With it,
510you can practice your recognition of various musical intervals and chords. It
511features a statistics overview so you can monitor your progress across several
512sessions. Solfege is also designed to be extensible so you can easily write
513your own lessons.")
514 (license license:gpl3+)))
6260d1a8 515
8b9ec354
RW
516(define-public powertabeditor
517 (package
518 (name "powertabeditor")
d19cf783 519 (version "2.0.0-alpha8")
8b9ec354
RW
520 (source (origin
521 (method url-fetch)
522 (uri (string-append
523 "https://github.com/powertab/powertabeditor/archive/"
524 version ".tar.gz"))
525 (file-name (string-append name "-" version ".tar.gz"))
526 (sha256
527 (base32
d19cf783 528 "0gaa2x209v3azql8ak3r1n9a9qbxjx2ssirvwdxwklv2lmfqkm82"))
8b9ec354
RW
529 (modules '((guix build utils)))
530 (snippet
531 '(begin
532 ;; Remove bundled sources for external libraries
533 (delete-file-recursively "external")
534 (substitute* "CMakeLists.txt"
535 (("include_directories\\(\\$\\{PROJECT_SOURCE_DIR\\}/external/.*") "")
8b9ec354
RW
536 (("add_subdirectory\\(external\\)") ""))
537 (substitute* "test/CMakeLists.txt"
538 (("include_directories\\(\\$\\{PROJECT_SOURCE_DIR\\}/external/.*") ""))
539
540 ;; Add install target
541 (substitute* "source/CMakeLists.txt"
542 (("qt5_use_modules")
543 (string-append
544 "install(TARGETS powertabeditor "
545 "RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)\n"
546 "install(FILES data/tunings.json DESTINATION "
547 "${CMAKE_INSTALL_PREFIX}/share/powertabeditor/)\n"
548 "qt5_use_modules")))
549 #t))))
550 (build-system cmake-build-system)
551 (arguments
7e11d113 552 `(#:modules ((guix build cmake-build-system)
8b9ec354
RW
553 (guix build utils)
554 (ice-9 match))
555 #:configure-flags
556 ;; CMake appears to lose the RUNPATH for some reason, so it has to be
557 ;; explicitly set with CMAKE_INSTALL_RPATH.
7e11d113
RW
558 (list "-DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE"
559 "-DCMAKE_ENABLE_PRECOMPILED_HEADERS=OFF" ; if ON pte_tests cannot be built
560 (string-append "-DCMAKE_INSTALL_RPATH="
8b9ec354
RW
561 (string-join (map (match-lambda
562 ((name . directory)
563 (string-append directory "/lib")))
564 %build-inputs) ";")))
565 #:phases
566 (modify-phases %standard-phases
7e11d113
RW
567 (replace
568 'check
569 (lambda _
570 (zero? (system* "bin/pte_tests"
571 ;; Exclude this failing test
572 "~Formats/PowerTabOldImport/Directions"))))
573 (add-before
574 'configure 'fix-tests
575 (lambda _
576 ;; Tests cannot be built with precompiled headers
577 (substitute* "test/CMakeLists.txt"
578 (("cotire\\(pte_tests\\)") ""))
579 #t))
8b9ec354
RW
580 (add-before
581 'configure 'remove-third-party-libs
582 (lambda* (#:key inputs #:allow-other-keys)
583 ;; Link with required static libraries, because we're not
584 ;; using the bundled version of withershins.
585 (substitute* '("source/CMakeLists.txt"
586 "test/CMakeLists.txt")
7e11d113 587 (("target_link_libraries\\((powertabeditor|pte_tests)" _ target)
8b9ec354
RW
588 (string-append "target_link_libraries(" target " "
589 (assoc-ref inputs "binutils")
590 "/lib/libbfd.a "
d6902798 591 (assoc-ref inputs "libiberty")
8b9ec354
RW
592 "/lib/libiberty.a "
593 "dl")))
594 #t)))))
595 (inputs
596 `(("boost" ,boost)
597 ("alsa-lib" ,alsa-lib)
598 ("qt" ,qt)
599 ("withershins" ,withershins)
d6902798 600 ("libiberty" ,libiberty) ;for withershins
8b9ec354
RW
601 ("binutils" ,binutils) ;for -lbfd and -liberty (for withershins)
602 ("timidity" ,timidity++)
603 ("pugixml" ,pugixml)
604 ("rtmidi" ,rtmidi)
605 ("rapidjson" ,rapidjson)
606 ("zlib" ,zlib)))
607 (native-inputs
608 `(("catch" ,catch-framework)
609 ("pkg-config" ,pkg-config)))
610 (home-page "http://powertabs.net")
611 (synopsis "Guitar tablature editor")
612 (description
613 "Power Tab Editor 2.0 is the successor to the famous original Power Tab
614Editor. It is compatible with Power Tab Editor 1.7 and Guitar Pro.")
615 (license license:gpl3+)))
616
ec8da0e2
RW
617(define-public setbfree
618 (package
619 (name "setbfree")
620 (version "0.8.0")
621 (source (origin
622 (method url-fetch)
623 (uri
624 (string-append
625 "https://github.com/pantherb/setBfree/releases/download/v"
626 version "/setbfree-" version ".tar.gz"))
627 (sha256
628 (base32
629 "045bgp7qsigpbrhk7qvgvliwiy26sajifwn7f2jvk90ckfqnlw4b"))))
630 (build-system gnu-build-system)
631 (arguments
632 `(#:tests? #f ; no "check" target
633 #:make-flags
634 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
635 (string-append "FONTFILE="
636 (assoc-ref %build-inputs "font-bitstream-vera")
b42d4508
RW
637 "/share/fonts/truetype/VeraBd.ttf")
638 ;; Disable unsupported optimization flags on non-x86
639 ,@(let ((system (or (%current-target-system)
640 (%current-system))))
641 (if (or (string-prefix? "x86_64" system)
642 (string-prefix? "i686" system))
643 '()
644 '("OPTIMIZATIONS=-ffast-math -fomit-frame-pointer -O3"))))
ec8da0e2
RW
645 #:phases
646 (modify-phases %standard-phases
647 (add-before 'build 'set-CC-variable
648 (lambda _ (setenv "CC" "gcc") #t))
649 (delete 'configure))))
650 (inputs
651 `(("jack" ,jack-1)
652 ("lv2" ,lv2)
653 ("zita-convolver" ,zita-convolver)
654 ("glu" ,glu)
655 ("ftgl" ,ftgl)
656 ("font-bitstream-vera" ,font-bitstream-vera)))
657 (native-inputs
658 `(("help2man" ,help2man)
659 ("pkg-config" ,pkg-config)))
660 (home-page "http://setbfree.org")
661 (synopsis "Tonewheel organ")
662 (description
663 "setBfree is a MIDI-controlled, software synthesizer designed to imitate
664the sound and properties of the electromechanical organs and sound
665modification devices that brought world-wide fame to the names and products of
666Laurens Hammond and Don Leslie.")
667 (license license:gpl2+)))
668
96250294
RW
669(define-public bristol
670 (package
671 (name "bristol")
672 (version "0.60.11")
673 (source (origin
674 (method url-fetch)
675 (uri (string-append "mirror://sourceforge/bristol/bristol/"
676 (version-major+minor version)
677 "/bristol-" version ".tar.gz"))
678 (sha256
679 (base32
680 "1fi2m4gmvxdi260821y09lxsimq82yv4k5bbgk3kyc3x1nyhn7vx"))))
681 (build-system gnu-build-system)
18ef998b
RW
682 (arguments
683 `(#:phases
684 (modify-phases %standard-phases
685 (add-after 'unpack 'remove-sse-flags
686 (lambda* (#:key system #:allow-other-keys)
687 (when (not (or (string-prefix? "x86_64" system)
688 (string-prefix? "i686" system)))
689 (substitute* "bristol/Makefile.in"
690 (("-msse -mfpmath=sse") "")))
691 #t)))))
96250294
RW
692 (inputs
693 `(("alsa-lib" ,alsa-lib)
694 ("jack" ,jack-1)
695 ("liblo" ,liblo)
696 ("libx11" ,libx11)))
697 (native-inputs
698 `(("pkg-config" ,pkg-config)))
699 (home-page "http://bristol.sourceforge.net/")
700 (synopsis "Synthesizer emulator")
701 (description
702 "Bristol is an emulation package for a number of different 'classic'
703synthesizers including additive and subtractive and a few organs. The
704application consists of the engine, which is called bristol, and its own GUI
705library called brighton that represents all the emulations. There are
706currently more than twenty different emulations; each does sound different
707although the author maintains that the quality and accuracy of each emulation
708is subjective.")
709 (license license:gpl3+)))
710
6260d1a8
RW
711(define-public tuxguitar
712 (package
713 (name "tuxguitar")
714 (version "1.2")
715 (source (origin
716 (method url-fetch)
717 (uri (string-append
718 "mirror://sourceforge/tuxguitar/TuxGuitar/TuxGuitar-"
719 version "/tuxguitar-src-" version ".tar.gz"))
720 (sha256
721 (base32
722 "1g1yf2gd06fzdhqb8kb8dmdcmr602s9y24f01kyl4940wimgr944"))))
723 (build-system gnu-build-system)
724 (arguments
725 `(#:make-flags (list (string-append "LDFLAGS=-Wl,-rpath="
726 (assoc-ref %outputs "out") "/lib")
727 (string-append "PREFIX="
728 (assoc-ref %outputs "out"))
729 (string-append "SWT_PATH="
730 (assoc-ref %build-inputs "swt")
731 "/share/java/swt.jar"))
732 #:tests? #f ;no "check" target
733 #:parallel-build? #f ;not supported
734 #:phases
5f1c9498
RW
735 (modify-phases %standard-phases
736 (delete 'configure)
737 (add-before 'build 'enter-dir-and-set-flags
738 (lambda* (#:key inputs #:allow-other-keys)
739 (chdir "TuxGuitar")
740 (substitute* "GNUmakefile"
6da2e99e
RW
741 (("GCJFLAGS\\+=(.*)" _ rest)
742 (string-append "GCJFLAGS=-fsource=1.4 -fPIC " rest))
5f1c9498
RW
743 (("PROPERTIES\\?=")
744 (string-append "PROPERTIES?= -Dswt.library.path="
745 (assoc-ref inputs "swt") "/lib"))
746 (("\\$\\(GCJ\\) -o") "$(GCJ) $(LDFLAGS) -o"))
747 #t)))))
6260d1a8
RW
748 (inputs
749 `(("swt" ,swt)))
750 (native-inputs
397dbde8 751 `(("gcj" ,gcj)
6260d1a8
RW
752 ("pkg-config" ,pkg-config)))
753 (home-page "http://tuxguitar.com.ar")
754 (synopsis "Multitrack tablature editor and player")
755 (description
756 "TuxGuitar is a guitar tablature editor with player support through midi.
757It can display scores and multitrack tabs. TuxGuitar provides various
758additional features, including autoscrolling while playing, note duration
759management, bend/slide/vibrato/hammer-on/pull-off effects, support for
760tuplets, time signature management, tempo management, gp3/gp4/gp5 import and
761export.")
762 (license license:lgpl2.1+)))
2d0fd07b
RW
763
764(define-public pd
765 (package
766 (name "pd")
767 (version "0.45.4")
768 (source (origin
769 (method url-fetch)
770 (uri
771 (string-append "mirror://sourceforge/pure-data/pure-data/"
772 version "/pd-" (version-major+minor version)
773 "-" (last (string-split version #\.))
774 ".src.tar.gz"))
775 (sha256
776 (base32
777 "1ls2ap5yi2zxvmr247621g4jx0hhfds4j5704a050bn2n3l0va2p"))))
778 (build-system gnu-build-system)
779 (arguments
780 `(#:tests? #f ; no "check" target
781 #:phases
782 (modify-phases %standard-phases
783 (add-before
784 'configure 'fix-wish-path
785 (lambda _
786 (substitute* "src/s_inter.c"
787 ((" wish ") (string-append " " (which "wish8.6") " ")))
788 (substitute* "tcl/pd-gui.tcl"
789 (("exec wish ") (string-append "exec " (which "wish8.6") " ")))
790 #t))
791 (add-after
792 'unpack 'autoconf
793 (lambda _ (zero? (system* "autoreconf" "-vfi")))))))
794 (native-inputs
795 `(("autoconf" ,autoconf)
796 ("automake" ,automake)
797 ("libtool" ,libtool)
798 ("gettext" ,gnu-gettext)
799 ("pkg-config" ,pkg-config)))
800 (inputs
801 `(("tk" ,tk)
802 ("alsa-lib" ,alsa-lib)
803 ("jack" ,jack-1)))
804 (home-page "http://puredata.info")
805 (synopsis "Visual programming language for artistic performances")
806 (description
807 "Pure Data (aka Pd) is a visual programming language. Pd enables
808musicians, visual artists, performers, researchers, and developers to create
809software graphically, without writing lines of code. Pd is used to process
810and generate sound, video, 2D/3D graphics, and interface sensors, input
811devices, and MIDI. Pd can easily work over local and remote networks to
812integrate wearable technology, motor systems, lighting rigs, and other
813equipment. Pd is suitable for learning basic multimedia processing and visual
814programming methods as well as for realizing complex systems for large-scale
815projects.")
816 (license license:bsd-3)))
821664f1
RW
817
818(define-public frescobaldi
819 (package
820 (name "frescobaldi")
7ff165da 821 (version "2.18.2")
821664f1
RW
822 (source (origin
823 (method url-fetch)
824 (uri (string-append
825 "https://github.com/wbsoft/frescobaldi/releases/download/v"
826 version "/frescobaldi-" version ".tar.gz"))
827 (sha256
828 (base32
7ff165da 829 "1yns7nq2a2hz5rv4xjp21bgcdi1xj6fq48lqjrld7ypqqi5nfjp5"))))
821664f1
RW
830 (build-system python-build-system)
831 (inputs
832 `(("lilypond" ,lilypond)
833 ("python-pyqt-4" ,python-pyqt-4)
834 ("python-ly" ,python-ly)
835 ("poppler" ,poppler)
836 ("python-poppler-qt4" ,python-poppler-qt4)
837 ("python-sip" ,python-sip)))
838 (home-page "http://www.frescobaldi.org/")
839 (synopsis "LilyPond sheet music text editor")
840 (description
841 "Frescobaldi is a LilyPond sheet music text editor with syntax
842highlighting and automatic completion. Among other things, it can render
843scores next to the source, can capture input from MIDI or read MusicXML and
844ABC files, has a MIDI player for proof-listening, and includes a documentation
845browser.")
846 (license license:gpl2+)))
ddfddb0c 847
bf76d780
RW
848(define-public drumstick
849 (package
850 (name "drumstick")
cfac1272 851 (version "1.0.2")
bf76d780
RW
852 (source (origin
853 (method url-fetch)
854 (uri (string-append "mirror://sourceforge/drumstick/"
855 version "/drumstick-" version ".tar.bz2"))
856 (sha256
857 (base32
cfac1272 858 "0l47gy9yywrc860db5g3wdqg8yc8qdb2lqq6wvw1dfim5j0vbail"))))
bf76d780
RW
859 (build-system cmake-build-system)
860 (arguments
861 `(#:tests? #f ; no test target
862 #:configure-flags '("-DLIB_SUFFIX=")
863 #:phases
864 (modify-phases %standard-phases
865 (add-before 'configure 'fix-docbook
866 (lambda* (#:key inputs #:allow-other-keys)
867 (substitute* "cmake_admin/CreateManpages.cmake"
868 (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
869 (string-append (assoc-ref inputs "docbook-xsl")
870 "/xml/xsl/docbook-xsl-"
871 ,(package-version docbook-xsl)
872 "/manpages/docbook.xsl")))
873 #t)))))
874 (inputs
875 `(("qt" ,qt)
876 ("alsa-lib" ,alsa-lib)
877 ("fluidsynth" ,fluidsynth)))
878 (native-inputs
879 `(("pkg-config" ,pkg-config)
880 ("libxslt" ,libxslt) ;for xsltproc
881 ("docbook-xsl" ,docbook-xsl)
882 ("doxygen" ,doxygen)))
883 (home-page "http://drumstick.sourceforge.net/")
884 (synopsis "C++ MIDI library")
885 (description
886 "Drumstick is a set of MIDI libraries using C++/Qt5 idioms and style. It
887includes a C++ wrapper around the ALSA library sequencer interface. A
888complementary library provides classes for processing SMF (Standard MIDI
889files: .MID/.KAR), Cakewalk (.WRK), and Overture (.OVE) file formats. A
890multiplatform realtime MIDI I/O library is also provided with various output
891backends, including ALSA, OSS, Network and FluidSynth.")
892 (license license:gpl2+)))
893
8e92cfb1
RW
894(define-public vmpk
895 (package
896 (name "vmpk")
fb492b9a 897 (version "0.6.2a")
8e92cfb1
RW
898 (source (origin
899 (method url-fetch)
900 (uri (string-append "mirror://sourceforge/vmpk/vmpk/"
fb492b9a
RW
901 (string-drop-right version 1)
902 "/vmpk-" version ".tar.bz2"))
8e92cfb1
RW
903 (sha256
904 (base32
fb492b9a 905 "0259iikvxnfdiifrh02g8xgcxikrkca4nhd3an8xzx0bd6bk8ifi"))))
8e92cfb1
RW
906 (build-system cmake-build-system)
907 (arguments
908 `(#:tests? #f ; no test target
909 #:phases
910 (modify-phases %standard-phases
911 (add-before 'configure 'fix-docbook
912 (lambda* (#:key inputs #:allow-other-keys)
913 (substitute* "cmake_admin/CreateManpages.cmake"
914 (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
915 (string-append (assoc-ref inputs "docbook-xsl")
916 "/xml/xsl/docbook-xsl-"
917 ,(package-version docbook-xsl)
918 "/manpages/docbook.xsl")))
919 #t)))))
920 (inputs
921 `(("drumstick" ,drumstick)
922 ("qt" ,qt)))
923 (native-inputs
924 `(("libxslt" ,libxslt) ;for xsltproc
925 ("docbook-xsl" ,docbook-xsl)
926 ("pkg-config" ,pkg-config)))
927 (home-page "http://vmpk.sourceforge.net")
928 (synopsis "Virtual MIDI piano keyboard")
929 (description
930 "Virtual MIDI Piano Keyboard is a MIDI events generator and receiver. It
931doesn't produce any sound by itself, but can be used to drive a MIDI
932synthesizer (either hardware or software, internal or external). You can use
933the computer's keyboard to play MIDI notes, and also the mouse. You can use
934the Virtual MIDI Piano Keyboard to display the played MIDI notes from another
935instrument or MIDI file player.")
936 (license license:gpl3+)))
937
ddfddb0c
RW
938(define-public zynaddsubfx
939 (package
940 (name "zynaddsubfx")
138e7697 941 (version "2.5.3")
ddfddb0c
RW
942 (source (origin
943 (method url-fetch)
944 (uri (string-append
945 "mirror://sourceforge/zynaddsubfx/zynaddsubfx/"
138e7697 946 version "/zynaddsubfx-" version ".tar.bz2"))
ddfddb0c
RW
947 (sha256
948 (base32
138e7697 949 "04da54p19p7f5wm6vm7abbjbsil1qf7n5f4adj01jm6b0wqigvgb"))))
ddfddb0c 950 (build-system cmake-build-system)
00dfc97c
RW
951 (arguments
952 `(#:phases
953 (modify-phases %standard-phases
954 ;; Move SSE compiler optimization flags from generic target to
955 ;; athlon64 and core2 targets, because otherwise the build would fail
956 ;; on non-Intel machines.
957 (add-after 'unpack 'remove-sse-flags-from-generic-target
958 (lambda _
959 (substitute* "src/CMakeLists.txt"
960 (("-msse -msse2 -mfpmath=sse") "")
961 (("-march=(athlon64|core2)" flag)
962 (string-append flag " -msse -msse2 -mfpmath=sse")))
963 #t)))))
ddfddb0c
RW
964 (inputs
965 `(("liblo" ,liblo)
966 ("ntk" ,ntk)
967 ("alsa-lib" ,alsa-lib)
968 ("jack" ,jack-1)
969 ("fftw" ,fftw)
970 ("minixml" ,minixml)
971 ("libxpm" ,libxpm)
972 ("zlib" ,zlib)))
973 (native-inputs
974 `(("pkg-config" ,pkg-config)))
975 (home-page "http://zynaddsubfx.sf.net/")
976 (synopsis "Software synthesizer")
977 (description
978 "ZynAddSubFX is a feature heavy realtime software synthesizer. It offers
979three synthesizer engines, multitimbral and polyphonic synths, microtonal
980capabilities, custom envelopes, effects, etc.")
981 (license license:gpl2)))
c493679f
RW
982
983(define-public yoshimi
984 (package
985 (name "yoshimi")
8ddc5d57 986 (version "1.3.8.2")
c493679f
RW
987 (source (origin
988 (method url-fetch)
989 (uri (string-append "mirror://sourceforge/yoshimi/"
990 (version-major+minor version)
991 "/yoshimi-" version ".tar.bz2"))
992 (sha256
993 (base32
8ddc5d57 994 "0wl4ln6v1nkkx56kfah23chyrhga2vi93i82g0s200c4s4184xr8"))))
c493679f
RW
995 (build-system cmake-build-system)
996 (arguments
997 `(#:tests? #f ; there are no tests
998 #:configure-flags
999 (list (string-append "-DCMAKE_INSTALL_DATAROOTDIR="
1000 (assoc-ref %outputs "out") "/share"))
1001 #:phases
1002 (modify-phases %standard-phases
1003 (add-before 'configure 'enter-dir
1004 (lambda _ (chdir "src") #t))
1005 ;; Move SSE compiler optimization flags from generic target to
1006 ;; athlon64 and core2 targets, because otherwise the build would fail
1007 ;; on non-Intel machines.
1008 (add-after 'unpack 'remove-sse-flags-from-generic-target
1009 (lambda _
1010 (substitute* "src/CMakeLists.txt"
1011 (("-msse -msse2 -mfpmath=sse") "")
1012 (("-march=(athlon64|core2)" flag)
1013 (string-append flag " -msse -msse2 -mfpmath=sse")))
1014 #t)))))
1015 (inputs
1016 `(("boost" ,boost)
1017 ("fftwf" ,fftwf)
1018 ("alsa-lib" ,alsa-lib)
1019 ("jack" ,jack-1)
1020 ("fontconfig" ,fontconfig)
1021 ("minixml" ,minixml)
1022 ("mesa" ,mesa)
1023 ("fltk" ,fltk)
1024 ("lv2" ,lv2)
1025 ("readline" ,readline)
1026 ("ncurses" ,ncurses)
1027 ("cairo" ,cairo)
1028 ("zlib" ,zlib)))
1029 (native-inputs
1030 `(("pkg-config" ,pkg-config)))
1031 (home-page "http://yoshimi.sourceforge.net/")
1032 (synopsis "Multi-paradigm software synthesizer")
1033 (description
1034 "Yoshimi is a fork of ZynAddSubFX, a feature heavy realtime software
1035synthesizer. It offers three synthesizer engines, multitimbral and polyphonic
1036synths, microtonal capabilities, custom envelopes, effects, etc. Yoshimi
1037improves on support for JACK features, such as JACK MIDI.")
1038 (license license:gpl2)))
658212eb
LF
1039
1040(define-public cursynth
1041 (package
1042 (name "cursynth")
1043 (version "1.5")
1044 (source
1045 (origin
1046 (method url-fetch)
1047 (uri (string-append "mirror://gnu/cursynth/cursynth-"
1048 version ".tar.gz"))
1049 (sha256
1050 (base32 "1dhphsya41rv8z6yqcv9l6fwbslsds4zh1y56zizi39nd996d40v"))
1051 (patches (list (search-patch "cursynth-wave-rand.patch")))))
1052 (build-system gnu-build-system)
1053 (native-inputs `(("pkg-config" ,pkg-config)))
1054 ;; TODO: See https://github.com/iyoko/cursynth/issues/4 which currently
1055 ;; prevents us from using pulseaudio
1056 (inputs `(("ncurses" ,ncurses)
1057 ("alsa" ,alsa-lib)))
1058 (home-page "http://www.gnu.org/software/cursynth")
1059 (synopsis "Polyphonic and MIDI subtractive music synthesizer using curses")
1060 (description "GNU cursynth is a polyphonic synthesizer that runs
1061graphically in the terminal. It is built on a full-featured subtractive
1062synthesis engine. Notes and parameter changes may be entered via MIDI or the
1063computer's keyboard.")
1064 (license license:gpl3+)))
a763ce7d
RW
1065
1066(define-public qtractor
1067 (package
1068 (name "qtractor")
1069 (version "0.7.3")
1070 (source (origin
1071 (method url-fetch)
1072 (uri (string-append "http://downloads.sourceforge.net/qtractor/"
1073 "qtractor-" version ".tar.gz"))
1074 (sha256
1075 (base32
1076 "1vy4297myyqk0k58nzybgvgklckhngpdcnmp98k0rq98dirclbl7"))))
1077 (build-system gnu-build-system)
1078 (arguments `(#:tests? #f)) ; no "check" target
1079 (inputs
1080 `(("qt" ,qt)
1081 ("alsa-lib" ,alsa-lib)
1082 ("jack" ,jack-1)
1083 ("libsndfile" ,libsndfile)
1084 ("ladspa" ,ladspa)
1085 ("lv2" ,lv2)
1086 ("lilv" ,lilv)
1087 ("suil" ,suil)
1088 ("libsamplerate" ,libsamplerate)
1089 ("libvorbis" ,libvorbis)
1090 ("libmad" ,libmad)
1091 ("rubberband" ,rubberband)
1092 ("liblo" ,liblo)
1093 ("zlib" ,zlib)))
1094 (native-inputs
1095 `(("pkg-config" ,pkg-config)))
1096 (home-page "http://qtractor.sourceforge.net/")
1097 (synopsis "Audio/MIDI multi-track sequencer")
1098 (description
1099 "Qtractor is an Audio/MIDI multi-track sequencer application. It uses
1100JACK for audio and ALSA sequencer for MIDI as multimedia infrastructures and
1101follows a traditional multi-track tape recorder control paradigm.")
1102 (license license:gpl2+)))
aa0edd3f
AM
1103
1104(define-public pianobar
1105 (package
1106 (name "pianobar")
1107 (version "2015.11.22")
1108 (source (origin
1109 (method url-fetch)
1110 (uri (string-append "https://github.com/PromyLOPh/"
1111 name "/archive/" version ".tar.gz"))
1112 (file-name (string-append name "-" version ".tar.gz"))
1113 (sha256
1114 (base32
1115 "022df19bhxqvkhy0qy21xahba5s1fm17b13y0p9p9dnf2yl44wfv"))))
1116 (build-system gnu-build-system)
1117 (arguments
1118 `(#:tests? #f ; no tests
1119 #:make-flags (list "CC=gcc" "CFLAGS=-std=c99"
1120 (string-append "PREFIX=" %output))
1121 #:phases (modify-phases %standard-phases
1122 (delete 'configure))))
1123 (inputs
1124 `(("ao" ,ao)
1125 ("curl" ,curl)
1126 ("libgcrypt" ,libgcrypt)
1127 ("json-c" ,json-c)
1128 ("ffmpeg" ,ffmpeg)))
1129 (native-inputs
1130 `(("pkg-config" ,pkg-config)))
1131 (home-page "http://6xq.net/projects/pianobar/")
1132 (synopsis "Console-based pandora.com player")
1133 (description "pianobar is a console-based music player for the
1134personalized online radio pandora.com. It has configurable keys for playing
1135and managing stations, can be controlled remotely via fifo, and can run
1136event-based scripts for scrobbling, notifications, etc.")
1137 (license license:expat)))
3f7a182d
LF
1138
1139(define-public python-mutagen
1140 (package
1141 (name "python-mutagen")
1142 (version "1.31")
1143 (source (origin
1144 (method url-fetch)
1145 (uri (pypi-uri "mutagen" version))
1146 (sha256
1147 (base32
1148 "16fnnhspniac2i7qswxafawsh2x2a803hmc6bn9k1zl5fxq1380a"))))
1149 (build-system python-build-system)
1150 (home-page "https://bitbucket.org/lazka/mutagen")
1151 (synopsis "Read and write audio tags")
1152 (description "Mutagen is a Python module to handle audio metadata. It
1153supports ASF, FLAC, M4A, Monkey’s Audio, MP3, Musepack, Ogg FLAC, Ogg Speex, Ogg
1154Theora, Ogg Vorbis, True Audio, WavPack and OptimFROG audio files. All versions
1155of ID3v2 are supported, and all standard ID3v2.4 frames are parsed. It can read
1156Xing headers to accurately calculate the bitrate and length of MP3s. ID3 and
1157APEv2 tags can be edited regardless of audio format. It can also manipulate Ogg
1158streams on an individual packet/page level.")
1159 (license license:gpl2))) ; "later version" never mentioned
1160
1161(define-public python2-mutagen
1162 (package-with-python2 python-mutagen))
8975de88
LF
1163
1164(define-public python-musicbrainzngs
1165 (package
1166 (name "python-musicbrainzngs")
1167 (version "0.5")
1168 (source (origin
1169 (method url-fetch)
1170 (uri (pypi-uri "musicbrainzngs" version))
1171 (sha256
1172 (base32
1173 "12f48llmdf5rkiqxcb70k2k1dmhm8byq0ifazvlrca8dfnmqh4r8"))))
1174 (build-system python-build-system)
1175 (home-page "https://python-musicbrainzngs.readthedocs.org/")
1176 (synopsis "Python bindings for MusicBrainz NGS webservice")
1177 (description "Musicbrainzngs implements Python bindings of the MusicBrainz
1178web service. This library can be used to retrieve music metadata from the
1179MusicBrainz database.")
1180 ;; 'musicbrainzngs/compat.py' is ISC licensed.
1181 (license (list license:bsd-2 license:isc))))
1182
1183(define-public python2-musicbrainzngs
1184 (package-with-python2 python-musicbrainzngs))