gnu: calibre: Update to 2.74.0.
[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>
21f05134 8;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
6d3ef286 9;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net>
23319ed6 10;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
1b6826d3
RW
11;;;
12;;; This file is part of GNU Guix.
13;;;
14;;; GNU Guix is free software; you can redistribute it and/or modify it
15;;; under the terms of the GNU General Public License as published by
16;;; the Free Software Foundation; either version 3 of the License, or (at
17;;; your option) any later version.
18;;;
19;;; GNU Guix is distributed in the hope that it will be useful, but
20;;; WITHOUT ANY WARRANTY; without even the implied warranty of
21;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22;;; GNU General Public License for more details.
23;;;
24;;; You should have received a copy of the GNU General Public License
25;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
26
27(define-module (gnu packages music)
28 #:use-module (guix utils)
29 #:use-module (guix packages)
30 #:use-module (guix download)
8e80244a 31 #:use-module (guix git-download)
1b6826d3
RW
32 #:use-module ((guix licenses) #:prefix license:)
33 #:use-module (guix build-system gnu)
f467c352 34 #:use-module (guix build-system ant)
8b9ec354 35 #:use-module (guix build-system cmake)
821664f1 36 #:use-module (guix build-system python)
8e80244a 37 #:use-module (guix build-system waf)
1b6826d3 38 #:use-module (gnu packages)
ddfddb0c 39 #:use-module (gnu packages algebra)
91595624 40 #:use-module (gnu packages apr)
c267cc15 41 #:use-module (gnu packages audio)
2d0fd07b 42 #:use-module (gnu packages autotools)
b7367762 43 #:use-module (gnu packages backup)
8b9ec354 44 #:use-module (gnu packages base) ;libbdf
1b6826d3 45 #:use-module (gnu packages bison)
b7367762 46 #:use-module (gnu packages boost)
e8069d01 47 #:use-module (gnu packages cdrom)
8b9ec354
RW
48 #:use-module (gnu packages code)
49 #:use-module (gnu packages check)
50 #:use-module (gnu packages compression)
aa0edd3f 51 #:use-module (gnu packages curl)
13416a10 52 #:use-module (gnu packages cyrus-sasl)
1b6826d3 53 #:use-module (gnu packages docbook)
99828fa7 54 #:use-module (gnu packages documentation)
91595624 55 #:use-module (gnu packages emacs)
13416a10 56 #:use-module (gnu packages file)
1b6826d3 57 #:use-module (gnu packages flex)
8e80244a 58 #:use-module (gnu packages fltk)
1b6826d3
RW
59 #:use-module (gnu packages fonts)
60 #:use-module (gnu packages fontutils)
3bf429af 61 #:use-module (gnu packages freedesktop)
6260d1a8 62 #:use-module (gnu packages gcc)
aa0edd3f 63 #:use-module (gnu packages gnupg)
1b6826d3
RW
64 #:use-module (gnu packages gettext)
65 #:use-module (gnu packages ghostscript)
ec8da0e2 66 #:use-module (gnu packages gl)
8e80244a 67 #:use-module (gnu packages glib)
c267cc15 68 #:use-module (gnu packages gnome)
770305f4 69 #:use-module (gnu packages graphics)
1b6826d3
RW
70 #:use-module (gnu packages gtk)
71 #:use-module (gnu packages guile)
c267cc15 72 #:use-module (gnu packages image)
1b6826d3 73 #:use-module (gnu packages imagemagick)
6260d1a8 74 #:use-module (gnu packages java)
c267cc15 75 #:use-module (gnu packages linux) ; for alsa-utils
91595624
RW
76 #:use-module (gnu packages libffi)
77 #:use-module (gnu packages llvm)
c267cc15
RW
78 #:use-module (gnu packages man)
79 #:use-module (gnu packages mp3)
3bf429af 80 #:use-module (gnu packages mpd)
e8069d01 81 #:use-module (gnu packages ncurses)
1b6826d3 82 #:use-module (gnu packages netpbm)
91595624 83 #:use-module (gnu packages pcre)
821664f1 84 #:use-module (gnu packages pdf)
1b6826d3
RW
85 #:use-module (gnu packages perl)
86 #:use-module (gnu packages pkg-config)
d231bb35 87 #:use-module (gnu packages pulseaudio) ;libsndfile
1b6826d3 88 #:use-module (gnu packages python)
8b9ec354 89 #:use-module (gnu packages qt)
d231bb35 90 #:use-module (gnu packages rdf)
c493679f 91 #:use-module (gnu packages readline)
1b6826d3 92 #:use-module (gnu packages rsync)
21d18113 93 #:use-module (gnu packages sdl)
2d0fd07b 94 #:use-module (gnu packages tcl)
1b6826d3 95 #:use-module (gnu packages texinfo)
8f9ac901 96 #:use-module (gnu packages tex)
13416a10 97 #:use-module (gnu packages tls)
e8069d01 98 #:use-module (gnu packages video)
8b9ec354 99 #:use-module (gnu packages web)
c30a66de 100 #:use-module (gnu packages wxwidgets)
c267cc15 101 #:use-module (gnu packages xml)
ddfddb0c 102 #:use-module (gnu packages xorg)
c267cc15 103 #:use-module (gnu packages xiph)
2d0fd07b
RW
104 #:use-module (gnu packages zip)
105 #:use-module ((srfi srfi-1) #:select (last)))
1b6826d3 106
c30a66de
RW
107(define-public aria-maestosa
108 (package
109 (name "aria-maestosa")
110 (version "1.4.11")
111 (source (origin
112 (method url-fetch)
113 (uri (string-append "mirror://sourceforge/ariamaestosa/ariamaestosa/"
114 version "/AriaSrc-" version ".tar.bz2"))
115 (sha256
116 (base32
117 "0gf9z96z83jiabxhpl856j15vl9flfgs6x1r0r6hc7g2xvwag0vy"))))
118 (build-system gnu-build-system)
119 (arguments
120 `(#:tests? #f ;no tests
121 #:phases
122 ;; TODO: Add scons-build-system and use it here.
123 (modify-phases %standard-phases
124 (delete 'configure)
125 (add-after 'unpack 'scons-propagate-environment
126 (lambda _
127 ;; By design, SCons does not, by default, propagate
128 ;; environment variables to subprocesses. See:
129 ;; <http://comments.gmane.org/gmane.linux.distributions.nixos/4969>
130 ;; Here, we modify the SConstruct file to arrange for
131 ;; environment variables to be propagated.
132 (substitute* "SConstruct"
133 (("env = Environment\\(\\)")
134 "env = Environment(ENV=os.environ)")
135 ;; Scons errors out when copying subdirectories from Resources,
136 ;; so we move them instead.
137 (("Copy") "Move")
138 ;; We move the "score" and "Documentation" directories at once,
139 ;; so we have to ignore files contained therein.
140 (("if \".svn\" in file" line)
141 (string-append line
142 " or \"score/\" in file"
143 " or \"Documentation/\" in file")))
144 #t))
145 (replace 'build (lambda _ (zero? (system* "scons"))))
146 (replace 'install
147 (lambda* (#:key outputs #:allow-other-keys)
148 (let ((out (assoc-ref outputs "out")))
149 (and
150 (zero? (system* "scons"
151 (string-append "prefix=" out)
152 "install"))
153 ;; Fix directory permissions
154 (begin
155 (chmod (string-append out "/share/Aria/Documentation") #o555)
156 (chmod (string-append out "/share/Aria/score") #o555)
157 #t))))))))
158 (inputs
159 `(("wxwidgets" ,wxwidgets)
160 ("glib" ,glib)
161 ("alsa-lib" ,alsa-lib)))
162 (native-inputs
163 `(("scons" ,scons)
164 ("pkg-config" ,pkg-config)))
165 (home-page "http://ariamaestosa.sourceforge.net/")
166 (synopsis "MIDI sequencer and editor")
167 (description
168 "Aria Maestosa is a MIDI sequencer and editor. It lets you compose, edit
169and play MIDI files with a few clicks in a user-friendly interface offering
170score, keyboard, guitar, drum and controller views.")
171 (license license:gpl3+)))
172
e8069d01
PW
173(define-public cmus
174 (package
175 (name "cmus")
176 (version "2.7.1")
177 (source (origin
178 (method url-fetch)
179 (uri (string-append
180 "https://github.com/" name "/" name "/archive/v"
181 version ".tar.gz"))
566fc7fa 182 (file-name (string-append name "-" version ".tar.gz"))
e8069d01
PW
183 (sha256
184 (base32
185 "0raixgjavkm7hxppzsc5zqbfbh2bhjcmbiplhnsxsmyj8flafyc1"))))
186 (build-system gnu-build-system)
187 (arguments
188 `(#:tests? #f ; cmus does not include tests
189 #:phases
190 (modify-phases %standard-phases
191 (replace
192 'configure
193 (lambda* (#:key outputs #:allow-other-keys)
194 (let ((out (assoc-ref outputs "out")))
195
196 ;; It's an idiosyncratic configure script that doesn't
197 ;; understand --prefix=..; it wants prefix=.. instead.
198 (zero?
199 (system* "./configure"
200 (string-append "prefix=" out)))))))))
201 ;; TODO: cmus optionally supports the following formats, which haven't yet
202 ;; been added to Guix:
203 ;;
204 ;; - Roar, libroar
205 ;;
206 ;; - DISCID_LIBS, apparently different from cd-discid which is included in
207 ;; Guix. See <http://sourceforge.net/projects/discid/>
208 (native-inputs
209 `(("pkg-config" ,pkg-config)))
210 (inputs
211 `(("alsa-lib" ,alsa-lib)
212 ("ao" ,ao)
213 ("ffmpeg" ,ffmpeg)
214 ("flac" ,flac)
215 ("jack" ,jack-1)
216 ("libcddb" ,libcddb)
217 ("libcdio-paranoia" ,libcdio-paranoia)
218 ("libcue" ,libcue)
219 ("libmad" ,libmad)
220 ("libmodplug" ,libmodplug)
221 ("libmpcdec" ,libmpcdec)
222 ("libsamplerate" ,libsamplerate)
223 ("libvorbis" ,libvorbis)
224 ("ncurses" ,ncurses)
225 ("opusfile" ,opusfile)
226 ("pulseaudio" ,pulseaudio)
227 ("wavpack" ,wavpack)))
228 (home-page "https://cmus.github.io/")
229 (synopsis "Small console music player")
230 (description "Cmus is a small and fast console music player. It supports
231many input formats and provides a customisable Vi-style user interface.")
232 (license license:gpl2+)))
233
edd1652e
KK
234(define-public denemo
235 (package
236 (name "denemo")
237 (version "2.0.14")
238 (source (origin
239 (method url-fetch)
240 (uri (string-append "mirror://gnu/denemo/denemo-"
241 version ".tar.gz"))
242 (sha256
243 (base32
244 "1a7g38695g7jjypx25qp0dx0asrh72xwdj0mdhmb9pfyzlppq0wh"))))
245 (build-system gnu-build-system)
246 (arguments
247 `(#:phases
248 (modify-phases %standard-phases
249 (replace 'check
250 ;; Denemo's documentation says to use this command to run its
251 ;; testsuite.
252 (lambda _
253 (zero? (system* "make" "-C" "tests" "check"))))
254 (add-after 'install 'correct-filename
255 ;; "graft-derivation/shallow" from the (guix grafts) module runs in
256 ;; the C locale, expecting file names to be ASCII encoded. This
257 ;; phase renames a filename with a Unicode character in it to meet
258 ;; the aforementioned condition.
259 (lambda* (#:key outputs #:allow-other-keys)
260 (let* ((out (assoc-ref outputs "out")))
261 (chdir (string-append
262 out
263 "/share/denemo/templates/instruments/woodwind"))
264 (rename-file "Clarinet in B♭.denemo"
265 "Clarinet in Bb.denemo"))
266 #t)))))
267 (native-inputs
268 `(("glib:bin", glib "bin") ; for gtester
269 ("pkg-config" ,pkg-config)))
270 (inputs
271 `(("alsa-lib" ,alsa-lib)
272 ("aubio" ,aubio)
273 ("evince" ,evince)
274 ("fftw" ,fftw)
275 ("fluidsynth" ,fluidsynth)
276 ("glib" ,glib)
277 ("gtk+" ,gtk+)
278 ("gtk-doc" ,gtk-doc)
279 ("gtksourceview" ,gtksourceview)
280 ("guile" ,guile-2.0)
281 ("intltool" ,intltool)
282 ("librsvg" ,librsvg)
283 ("libsndfile" ,libsndfile)
284 ("libtool" ,libtool)
285 ("libxml2" ,libxml2)
286 ("portaudio" ,portaudio)
287 ("portmidi" ,portmidi)
288 ("rubberband" ,rubberband)))
289 (propagated-inputs
290 `(("lilypond", lilypond)))
291 (synopsis "Graphical music notation, front-end to GNU Lilypond")
292 (description
293 "GNU Denemo is a music notation editor that provides a convenient
294interface to the powerful music engraving program Lilypond. Music can be
295typed in using the computer keyboard, played in using a MIDI keyboard, or
296even input via a microphone connected to the sound card. The final product
297is publication-quality music notation that is continuously generated in the
298background while you work.")
299 (home-page "http://www.denemo.org")
300 (license license:gpl3+)))
301
d231bb35
RW
302(define-public hydrogen
303 (package
304 (name "hydrogen")
7276b560 305 (version "0.9.7")
d231bb35
RW
306 (source (origin
307 (method url-fetch)
308 (uri (string-append
b7367762
EF
309 "https://github.com/hydrogen-music/hydrogen/archive/"
310 version ".tar.gz"))
d231bb35
RW
311 (sha256
312 (base32
7276b560 313 "1dy2jfkdw0nchars4xi4isrz66fqn53a9qk13bqza7lhmsg3s3qy"))))
b7367762 314 (build-system cmake-build-system)
d231bb35 315 (arguments
b7367762 316 `(#:test-target "tests"))
d231bb35 317 (native-inputs
b7367762 318 `(("cppunit" ,cppunit)
d231bb35
RW
319 ("pkg-config" ,pkg-config)))
320 (inputs
b7367762 321 `(("alsa-lib" ,alsa-lib)
d231bb35 322 ("jack" ,jack-1)
b7367762 323 ;; ("ladspa" ,ladspa) ; cannot find during configure
d231bb35 324 ("lash" ,lash)
b7367762
EF
325 ("libarchive" ,libarchive)
326 ("libsndfile" ,libsndfile)
327 ("libtar" ,libtar)
328 ("lrdf" ,lrdf)
d231bb35 329 ("qt" ,qt-4)
b7367762 330 ("zlib" ,zlib)))
d231bb35
RW
331 (home-page "http://www.hydrogen-music.org")
332 (synopsis "Drum machine")
333 (description
334 "Hydrogen is an advanced drum machine for GNU/Linux. Its main goal is to
335enable professional yet simple and intuitive pattern-based drum programming.")
336 (license license:gpl2+)))
337
91595624
RW
338(define-public extempore
339 (package
340 (name "extempore")
341 (version "0.7.0")
342 (source (origin
343 (method url-fetch)
344 (uri (string-append
345 "https://github.com/digego/extempore/archive/"
346 version ".tar.gz"))
347 (sha256
348 (base32
349 "1wap1mvsicrhlazikf7l8zxg37fir8bmnh9rin28m1rix730vcch"))
350 (file-name (string-append name "-" version ".tar.gz"))))
351 (build-system cmake-build-system)
352 (arguments
353 `(;; The default target also includes ahead-of-time compilation of the
354 ;; standard libraries. However, during the "install" phase this would
355 ;; happen *again* for unknown reasons. Hence we only build the
356 ;; extempore executable during the build phase.
357 #:make-flags '("extempore")
358 #:configure-flags '("-DJACK=ON"
359 ;; We want to distribute.
360 "-DIN_TREE=OFF"
361 ;; Don't download any dependencies.
362 "-DBUILD_DEPS=OFF")
363 #:modules ((ice-9 match)
364 (guix build cmake-build-system)
365 (guix build utils))
366 #:phases
367 (modify-phases %standard-phases
368 (add-after 'unpack 'patch-directories
369 (lambda* (#:key outputs #:allow-other-keys)
370 ;; Rewrite default path to runtime directory
371 (substitute* "src/Extempore.cpp"
372 (("runtimedir \\+= \"runtime\"")
373 (string-append "runtimedir = \""
374 (assoc-ref outputs "out")
375 "/lib/extempore/runtime\"")))
376 (substitute* "extras/extempore.el"
377 (("\\(runtime-directory \\(concat default-directory \"runtime\"\\)\\)")
378 (string-append "(runtime-directory \""
379 (assoc-ref outputs "out")
380 "/lib/extempore/runtime"
381 "\")")))
382 #t))
383 (add-after 'unpack 'link-with-additional-libs
384 (lambda _
385 ;; The executable must be linked with libffi and zlib.
386 (substitute* "CMakeLists.txt"
387 (("add_dependencies\\(aot_extended extended_deps\\)") "")
388 (("target_link_libraries\\(extempore PRIVATE dl" line)
389 (string-append line " ffi z")))
390 #t))
391 ;; FIXME: AOT compilation of the nanovg bindings fail with the error:
392 ;; "Compiler Error could not bind _nvgLinearGradient"
393 (add-after 'unpack 'disable-nanovg
394 (lambda _
395 (substitute* "CMakeLists.txt"
396 (("aotcompile_lib\\(libs/external/nanovg.xtm.*") ""))
397 #t))
398 ;; FIXME: All examples that are used as tests segfault for some
399 ;; unknown reason.
400 (add-after 'unpack 'disable-broken-tests
401 (lambda _
402 (substitute* "CMakeLists.txt"
403 (("extempore_add_example_as_test\\(.*") ""))
404 #t))
405 (add-after 'unpack 'hardcode-external-lib-paths
406 (lambda* (#:key inputs #:allow-other-keys)
407 (use-modules (ice-9 match))
408 (for-each
409 (match-lambda
410 ((file-name lib pkg-name)
411 (substitute* (string-append "libs/external/" file-name ".xtm")
412 ((lib) (string-append (assoc-ref inputs pkg-name)
413 "/lib/" lib)))))
414 '(("assimp" "libassimp.so" "assimp")
415 ("portmidi" "libportmidi.so" "portmidi")
416 ("sndfile" "libsndfile.so" "libsndfile")
417 ("fft" "libkiss_fft.so" "kiss-fft")
418 ("stb_image" "libstb_image.so" "stb-image")
419 ("nanovg" "libnanovg.so" "nanovg")
420 ("glext" "libGL.so" "mesa")
421 ("glfw3" "libglfw.so" "glfw")
422 ("gl/glcore-directbind" "libGL.so" "mesa")
423 ("gl/glcompat-directbind" "libGL.so" "mesa")))
424 #t))
425 (add-after 'unpack 'use-own-llvm
426 (lambda* (#:key inputs #:allow-other-keys)
427 (setenv "EXT_LLVM_DIR" (assoc-ref inputs "llvm"))
428 ;; Our LLVM builds shared libraries, so Extempore should use
429 ;; those.
430 (substitute* "CMakeLists.txt"
431 (("CMAKE_STATIC_LIBRARY") "CMAKE_SHARED_LIBRARY"))
432 #t))
433 (add-after 'unpack 'fix-aot-compilation
434 (lambda* (#:key outputs #:allow-other-keys)
435 (substitute* "CMakeLists.txt"
436 ;; EXT_SHARE_DIR does not exist before installation, so the
437 ;; working directory should be the source directory instead.
438 (("WORKING_DIRECTORY \\$\\{EXT_SHARE_DIR\\}")
439 "WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}")
440 ;; Extempore needs to be told where the runtime is to be found.
441 ;; While we're at it we disable automatic tuning for a specific
442 ;; CPU to make binary substitution possible.
443 (("COMMAND extempore" prefix)
444 (string-append prefix " --sharedir " (getcwd)
445 " --mcpu=generic --attr=none")))
446 #t)))))
447 (inputs
448 `(("llvm" ,llvm-for-extempore)
449 ("libffi" ,libffi)
450 ("jack" ,jack-1)
451 ("libsndfile" ,libsndfile)
452 ("glfw" ,glfw)
453 ("apr" ,apr)
454 ("stb-image" ,stb-image-for-extempore)
455 ("kiss-fft" ,kiss-fft-for-extempore)
456 ("nanovg" ,nanovg-for-extempore)
457 ("portmidi" ,portmidi-for-extempore)
458 ("assimp" ,assimp)
459 ("alsa-lib" ,alsa-lib)
460 ("portaudio" ,portaudio)
461 ("mesa" ,mesa)
462 ("pcre" ,pcre)
463 ("zlib" ,zlib)))
464 (native-inputs
465 `(("perl" ,perl)
466 ("emacs" ,emacs-no-x)))
39162ee4
RW
467 ;; Extempore refuses to build on architectures other than x86_64
468 (supported-systems '("x86_64-linux"))
91595624
RW
469 (home-page "http://benswift.me/extempore-docs/index.html")
470 (synopsis "Programming environment for live coding of multimedia")
471 (description
472 "Extempore is a programming language and runtime environment designed
473with live programming in mind. It supports interactive programming in a REPL
474style, compiling and binding code just-in-time. Although Extempore has its
475roots in 'live coding' of audiovisual media art, it is suitable for any task
476domain where dynamic run-time modifiability and good numerical performance are
477required. Extempore also has strong timing and concurrency semantics, which
478are helpful when working in problem spaces where timing is important (such as
479audio and video).")
480 (license license:bsd-2)))
481
8c454dcd
RW
482(define-public klick
483 (package
484 (name "klick")
485 (version "0.12.2")
486 (source (origin
487 (method url-fetch)
488 (uri (string-append "http://das.nasophon.de/download/klick-"
489 version ".tar.gz"))
490 (sha256
491 (base32
492 "0hmcaywnwzjci3pp4xpvbijnnwvibz7gf9xzcdjbdca910y5728j"))))
493 (build-system gnu-build-system)
494 (arguments
495 `(#:tests? #f ;no "check" target
496 #:phases
497 ;; TODO: Add scons-build-system and use it here.
498 (modify-phases %standard-phases
499 (delete 'configure)
500 (replace 'build
501 (lambda* (#:key inputs outputs #:allow-other-keys)
502 (let ((out (assoc-ref outputs "out")))
503 (mkdir-p out)
504 (zero? (system* "scons" (string-append "PREFIX=" out))))))
505 (replace 'install (lambda _ (zero? (system* "scons" "install")))))))
506 (inputs
507 `(("boost" ,boost)
508 ("jack" ,jack-1)
509 ("libsndfile" ,libsndfile)
510 ("libsamplerate" ,libsamplerate)
511 ("liblo" ,liblo)
512 ("rubberband" ,rubberband)))
513 (native-inputs
514 `(("scons" ,scons)
515 ("python" ,python-2)
516 ("pkg-config" ,pkg-config)))
517 (home-page "http://das.nasophon.de/klick/")
518 (synopsis "Metronome for JACK")
519 (description
520 "klick is an advanced command-line based metronome for JACK. It allows
521you to define complex tempo maps for entire songs or performances.")
522 (license license:gpl2+)))
523
048bfba1
RW
524(define-public gtklick
525 (package
526 (name "gtklick")
527 (version "0.6.4")
528 (source (origin
529 (method url-fetch)
530 (uri (string-append "http://das.nasophon.de/download/gtklick-"
531 version ".tar.gz"))
532 (sha256
533 (base32
534 "0dq1km6njnzsqdqyf6wzir9g733z0mc9vmxfg2383k3c2a2di6bp"))))
535 (build-system python-build-system)
536 (arguments
537 `(#:tests? #f ; no tests
538 #:python ,python-2
539 #:phases
540 (modify-phases %standard-phases
541 (add-before 'build 'add-sitedirs
542 ;; .pth files are not automatically interpreted unless the
543 ;; directories containing them are added as "sites". The directories
544 ;; are then added to those in the PYTHONPATH. This is required for
545 ;; the operation of pygtk.
546 (lambda _
547 (substitute* "gtklick/gtklick.py"
548 (("import pygtk")
549 "import pygtk, site, sys
550for path in [path for path in sys.path if 'site-packages' in path]: site.addsitedir(path)"))))
551 (add-after 'unpack 'inject-store-path-to-klick
552 (lambda* (#:key inputs #:allow-other-keys)
553 (substitute* "gtklick/klick_backend.py"
554 (("KLICK_PATH = 'klick'")
555 (string-append "KLICK_PATH = '"
556 (assoc-ref inputs "klick")
557 "/bin/klick'")))
558 #t)))))
559 (inputs
560 `(("klick" ,klick)
561 ("python2-pyliblo" ,python2-pyliblo)
562 ("python2-pygtk" ,python2-pygtk)))
563 (native-inputs
b94a6ca0 564 `(("gettext" ,gettext-minimal)))
048bfba1
RW
565 (home-page "http://das.nasophon.de/gtklick/")
566 (synopsis "Simple metronome with an easy-to-use graphical interface")
567 (description
568 "Gtklick is a simple metronome with an easy-to-use graphical user
569interface. It is implemented as a frontend to @code{klick}.")
570 (license license:gpl2+)))
571
1b6826d3
RW
572(define-public lilypond
573 (package
574 (name "lilypond")
43ffe220 575 (version "2.19.51")
1b6826d3
RW
576 (source (origin
577 (method url-fetch)
578 (uri (string-append
579 "http://download.linuxaudio.org/lilypond/sources/v"
580 (version-major+minor version) "/"
581 name "-" version ".tar.gz"))
582 (sha256
583 (base32
43ffe220 584 "1b4jvc0fixbnp8x457fzk5wgb4zd03npwwivp60kc27fmv63w5l1"))))
1b6826d3
RW
585 (build-system gnu-build-system)
586 (arguments
127b04d7 587 `(#:tests? #f ; out-test/collated-files.html fails
1b6826d3 588 #:out-of-source? #t
409be57b 589 #:make-flags '("conf=www") ;to generate images for info manuals
127b04d7 590 #:configure-flags
409be57b
RW
591 (list "CONFIGURATION=www"
592 (string-append "--with-texgyre-dir="
127b04d7
RW
593 (assoc-ref %build-inputs "font-tex-gyre")
594 "/share/fonts/opentype/"))
1b6826d3 595 #:phases
a8bc747a 596 (modify-phases %standard-phases
409be57b
RW
597 (add-after 'unpack 'fix-path-references
598 (lambda _
a8bc747a
RW
599 (substitute* "scm/backend-library.scm"
600 (("\\(search-executable '\\(\"gs\"\\)\\)")
409be57b
RW
601 (string-append "\"" (which "gs") "\""))
602 (("\"/bin/sh\"")
603 (string-append "\"" (which "sh") "\"")))
a8bc747a
RW
604 #t))
605 (add-before 'configure 'prepare-configuration
606 (lambda _
607 (substitute* "configure"
7affb2c1
RW
608 (("SHELL=/bin/sh") "SHELL=sh")
609 ;; When checking the fontforge version do not consider the
610 ;; version string that's part of the directory.
611 (("head -n") "tail -n"))
409be57b
RW
612 (setenv "out" "www")
613 (setenv "conf" "www")
614 #t))
615 (add-after 'install 'install-info
616 (lambda _
617 (zero? (system* "make"
618 "-j" (number->string (parallel-job-count))
619 "conf=www" "install-info")))))))
1b6826d3
RW
620 (inputs
621 `(("guile" ,guile-1.8)
622 ("font-dejavu" ,font-dejavu)
127b04d7 623 ("font-tex-gyre" ,font-tex-gyre)
1b6826d3
RW
624 ("fontconfig" ,fontconfig)
625 ("freetype" ,freetype)
fb0b9ff1 626 ("ghostscript" ,ghostscript)
1b6826d3
RW
627 ("pango" ,pango)
628 ("python" ,python-2)))
629 (native-inputs
630 `(("bison" ,bison)
631 ("perl" ,perl)
632 ("flex" ,flex)
633 ("fontforge" ,fontforge)
634 ("dblatex" ,dblatex)
b94a6ca0 635 ("gettext" ,gettext-minimal)
1b6826d3
RW
636 ("imagemagick" ,imagemagick)
637 ("netpbm" ,netpbm) ;for pngtopnm
638 ("texlive" ,texlive) ;metafont and metapost
639 ("texinfo" ,texinfo)
640 ("texi2html" ,texi2html)
641 ("rsync" ,rsync)
642 ("pkg-config" ,pkg-config)
643 ("zip" ,zip)))
644 (home-page "http://www.lilypond.org/")
645 (synopsis "Music typesetting")
646 (description
647 "GNU LilyPond is a music typesetter, which produces high-quality sheet
648music. Music is input in a text file containing control sequences which are
649interpreted by LilyPond to produce the final document. It is extendable with
650Guile.")
55ca5e80
LC
651 (license license:gpl3+)
652
653 ;; On armhf and mips64el, building the documentation sometimes leads to
654 ;; more than an hour of silence, so double the max silent time.
655 (properties `((max-silent-time . 7200)))))
c267cc15 656
8e80244a
RW
657(define-public non-sequencer
658 ;; The latest tagged release is three years old and uses a custom build
1bbe7959
RW
659 ;; system, so we take the last commit.
660 (let ((commit "a22f33f486a5c6f75b60e36f66504c036c0f6f8c")
661 (revision "2"))
8e80244a
RW
662 (package
663 (name "non-sequencer")
1bbe7959 664 (version (string-append "1.9.5-" revision "." (string-take commit 7)))
8e80244a
RW
665 (source (origin
666 (method git-fetch)
667 (uri (git-reference
668 (url "git://git.tuxfamily.org/gitroot/non/non.git")
669 (commit commit)))
670 (sha256
671 (base32
1bbe7959 672 "09q5x8i4f8mqnl8w6xnsq5zriy4bzdl4x2vq9n34a433rfrk84bg"))
8e80244a
RW
673 (file-name (string-append name "-" version "-checkout"))))
674 (build-system waf-build-system)
675 (arguments
676 `(#:tests? #f ;no "check" target
e591a4d6
RW
677 #:configure-flags
678 (list "--project=sequencer"
679 ;; Disable the use of SSE unless on x86_64.
680 ,@(if (not (string-prefix? "x86_64" (or (%current-target-system)
681 (%current-system))))
682 '("--disable-sse")
683 '()))
d8c317df
SB
684 #:phases
685 (modify-phases %standard-phases
686 (add-before
687 'configure 'set-flags
688 (lambda _
689 ;; Compile with C++11, required by libsigc++.
690 (setenv "CXXFLAGS" "-std=c++11")
691 #t)))
8e80244a
RW
692 #:python ,python-2))
693 (inputs
694 `(("jack" ,jack-1)
695 ("libsigc++" ,libsigc++)
696 ("liblo" ,liblo)
697 ("ntk" ,ntk)))
698 (native-inputs
699 `(("pkg-config" ,pkg-config)))
700 (home-page "http://non.tuxfamily.org/wiki/Non%20Sequencer")
701 (synopsis "Pattern-based MIDI sequencer")
702 (description
703 "The Non Sequencer is a powerful, lightweight, real-time,
704pattern-based MIDI sequencer. It utilizes the JACK Audio Connection Kit for
705MIDI I/O and the NTK GUI toolkit for its user interface. Everything in Non
706Sequencer happens on-line, in real-time. Music can be composed live, while the
707transport is rolling.")
708 (license license:gpl2+))))
709
ded69d6f
RW
710(define-public non-session-manager
711 (package (inherit non-sequencer)
712 (name "non-session-manager")
713 (arguments
714 (substitute-keyword-arguments (package-arguments non-sequencer)
715 ((#:configure-flags flags)
716 `(cons "--project=session-manager"
717 (delete "--project=sequencer" ,flags)))))
718 (inputs
719 `(("jack" ,jack-1)
720 ("liblo" ,liblo)
721 ("ntk" ,ntk)))
722 (native-inputs
723 `(("pkg-config" ,pkg-config)))
724 (home-page "http://non.tuxfamily.org/nsm/")
725 (synopsis "Audio session management")
726 (description
727 "The Non Session Manager is an API and an implementation for audio
728session management. NSM clients use a well-specified OSC protocol to
729communicate with the session management daemon.")
730 (license license:gpl2+)))
731
c267cc15
RW
732(define-public solfege
733 (package
734 (name "solfege")
735 (version "3.22.2")
736 (source (origin
737 (method url-fetch)
738 (uri (string-append
739 "mirror://gnu/solfege/solfege-"
740 version ".tar.xz"))
741 (sha256
742 (base32
743 "1w25rxdbj907nsx285k9nm480pvy12w3yknfh4n1dfv17cwy072i"))))
744 (build-system gnu-build-system)
745 (arguments
746 `(#:tests? #f ; xmllint attempts to download DTD
747 #:test-target "test"
748 #:phases
749 (alist-cons-after
750 'unpack 'fix-configuration
751 (lambda* (#:key inputs #:allow-other-keys)
752 (substitute* "default.config"
753 (("csound=csound")
754 (string-append "csound="
755 (assoc-ref inputs "csound")
756 "/bin/csound"))
757 (("/usr/bin/aplay")
758 (string-append (assoc-ref inputs "aplay")
759 "/bin/aplay"))
760 (("/usr/bin/timidity")
761 (string-append (assoc-ref inputs "timidity")
762 "/bin/timidity"))
763 (("/usr/bin/mpg123")
764 (string-append (assoc-ref inputs "mpg123")
765 "/bin/mpg123"))
766 (("/usr/bin/ogg123")
767 (string-append (assoc-ref inputs "ogg123")
768 "/bin/ogg123"))))
769 (alist-cons-before
770 'build 'patch-python-shebangs
771 (lambda _
772 ;; Two python scripts begin with a Unicode BOM, so patch-shebang
773 ;; has no effect.
774 (substitute* '("solfege/parsetree.py"
775 "solfege/presetup.py")
776 (("#!/usr/bin/python") (string-append "#!" (which "python")))))
777 (alist-cons-before
778 'build 'add-sitedirs
779 ;; .pth files are not automatically interpreted unless the
780 ;; directories containing them are added as "sites". The directories
781 ;; are then added to those in the PYTHONPATH. This is required for
782 ;; the operation of pygtk and pygobject.
783 (lambda _
784 (substitute* "run-solfege.py"
785 (("import os")
786 "import os, site
787for path in [path for path in sys.path if 'site-packages' in path]: site.addsitedir(path)")))
788 (alist-cons-before
789 'build 'adjust-config-file-prefix
790 (lambda* (#:key outputs #:allow-other-keys)
791 (substitute* "run-solfege.py"
792 (("prefix = os.path.*$")
793 (string-append "prefix = " (assoc-ref outputs "out")))))
794 (alist-cons-after
795 'install 'wrap-program
796 (lambda* (#:key inputs outputs #:allow-other-keys)
f3045a5b 797 ;; Make sure 'solfege' runs with the correct PYTHONPATH.
c267cc15 798 (let* ((out (assoc-ref outputs "out"))
f3045a5b 799 (path (getenv "PYTHONPATH")))
c267cc15 800 (wrap-program (string-append out "/bin/solfege")
f3045a5b 801 `("PYTHONPATH" ":" prefix (,path)))))
c267cc15
RW
802 %standard-phases)))))))
803 (inputs
804 `(("python" ,python-2)
805 ("pygtk" ,python2-pygtk)
b94a6ca0 806 ("gettext" ,gettext-minimal)
c267cc15 807 ("gtk" ,gtk+)
e8309291 808 ("lilypond" ,lilypond)
c267cc15
RW
809 ;; players needed at runtime
810 ("aplay" ,alsa-utils)
811 ("csound" ,csound) ; optional, needed for some exercises
812 ("mpg123" ,mpg123)
813 ("ogg123" ,vorbis-tools)
814 ("timidity" ,timidity++)))
815 (native-inputs
816 `(("pkg-config" ,pkg-config)
817 ("txt2man" ,txt2man)
818 ("libxml2" ,libxml2) ; for tests
819 ("ghostscript" ,ghostscript)
c267cc15
RW
820 ("texinfo" ,texinfo)))
821 (home-page "https://www.gnu.org/software/solfege/")
822 (synopsis "Ear training")
823 (description
824 "GNU Solfege is a program for practicing musical ear-training. With it,
825you can practice your recognition of various musical intervals and chords. It
826features a statistics overview so you can monitor your progress across several
827sessions. Solfege is also designed to be extensible so you can easily write
828your own lessons.")
829 (license license:gpl3+)))
6260d1a8 830
8b9ec354
RW
831(define-public powertabeditor
832 (package
833 (name "powertabeditor")
d19cf783 834 (version "2.0.0-alpha8")
8b9ec354
RW
835 (source (origin
836 (method url-fetch)
837 (uri (string-append
838 "https://github.com/powertab/powertabeditor/archive/"
839 version ".tar.gz"))
840 (file-name (string-append name "-" version ".tar.gz"))
841 (sha256
842 (base32
d19cf783 843 "0gaa2x209v3azql8ak3r1n9a9qbxjx2ssirvwdxwklv2lmfqkm82"))
8b9ec354
RW
844 (modules '((guix build utils)))
845 (snippet
846 '(begin
847 ;; Remove bundled sources for external libraries
848 (delete-file-recursively "external")
849 (substitute* "CMakeLists.txt"
850 (("include_directories\\(\\$\\{PROJECT_SOURCE_DIR\\}/external/.*") "")
8b9ec354
RW
851 (("add_subdirectory\\(external\\)") ""))
852 (substitute* "test/CMakeLists.txt"
853 (("include_directories\\(\\$\\{PROJECT_SOURCE_DIR\\}/external/.*") ""))
854
855 ;; Add install target
856 (substitute* "source/CMakeLists.txt"
857 (("qt5_use_modules")
858 (string-append
859 "install(TARGETS powertabeditor "
860 "RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)\n"
861 "install(FILES data/tunings.json DESTINATION "
862 "${CMAKE_INSTALL_PREFIX}/share/powertabeditor/)\n"
863 "qt5_use_modules")))
864 #t))))
865 (build-system cmake-build-system)
866 (arguments
7e11d113 867 `(#:modules ((guix build cmake-build-system)
8b9ec354
RW
868 (guix build utils)
869 (ice-9 match))
870 #:configure-flags
871 ;; CMake appears to lose the RUNPATH for some reason, so it has to be
872 ;; explicitly set with CMAKE_INSTALL_RPATH.
7e11d113
RW
873 (list "-DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE"
874 "-DCMAKE_ENABLE_PRECOMPILED_HEADERS=OFF" ; if ON pte_tests cannot be built
875 (string-append "-DCMAKE_INSTALL_RPATH="
8b9ec354
RW
876 (string-join (map (match-lambda
877 ((name . directory)
878 (string-append directory "/lib")))
879 %build-inputs) ";")))
880 #:phases
881 (modify-phases %standard-phases
7e11d113
RW
882 (replace
883 'check
884 (lambda _
885 (zero? (system* "bin/pte_tests"
886 ;; Exclude this failing test
887 "~Formats/PowerTabOldImport/Directions"))))
888 (add-before
889 'configure 'fix-tests
890 (lambda _
891 ;; Tests cannot be built with precompiled headers
892 (substitute* "test/CMakeLists.txt"
893 (("cotire\\(pte_tests\\)") ""))
894 #t))
8b9ec354
RW
895 (add-before
896 'configure 'remove-third-party-libs
897 (lambda* (#:key inputs #:allow-other-keys)
898 ;; Link with required static libraries, because we're not
899 ;; using the bundled version of withershins.
900 (substitute* '("source/CMakeLists.txt"
901 "test/CMakeLists.txt")
7e11d113 902 (("target_link_libraries\\((powertabeditor|pte_tests)" _ target)
8b9ec354
RW
903 (string-append "target_link_libraries(" target " "
904 (assoc-ref inputs "binutils")
905 "/lib/libbfd.a "
d6902798 906 (assoc-ref inputs "libiberty")
8b9ec354
RW
907 "/lib/libiberty.a "
908 "dl")))
909 #t)))))
910 (inputs
911 `(("boost" ,boost)
912 ("alsa-lib" ,alsa-lib)
0a0bfd68 913 ("qtbase" ,qtbase)
8b9ec354 914 ("withershins" ,withershins)
d6902798 915 ("libiberty" ,libiberty) ;for withershins
8b9ec354
RW
916 ("binutils" ,binutils) ;for -lbfd and -liberty (for withershins)
917 ("timidity" ,timidity++)
918 ("pugixml" ,pugixml)
919 ("rtmidi" ,rtmidi)
920 ("rapidjson" ,rapidjson)
921 ("zlib" ,zlib)))
922 (native-inputs
923 `(("catch" ,catch-framework)
924 ("pkg-config" ,pkg-config)))
925 (home-page "http://powertabs.net")
926 (synopsis "Guitar tablature editor")
927 (description
928 "Power Tab Editor 2.0 is the successor to the famous original Power Tab
929Editor. It is compatible with Power Tab Editor 1.7 and Guitar Pro.")
930 (license license:gpl3+)))
931
3d4b1bb9
RW
932(define-public jalv-select
933 (package
934 (name "jalv-select")
935 (version "0.7")
936 (source (origin
937 (method url-fetch)
938 (uri (string-append "https://github.com/brummer10/jalv_select/"
939 "archive/V" version ".tar.gz"))
940 (sha256
941 (base32
942 "01y93l5c1f8za04a0y4b3v0nhsm1lhj6rny9xpdgd7jz6sl6w581"))))
943 (build-system gnu-build-system)
944 (arguments
945 `(#:make-flags
946 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
947 #:phases
948 (modify-phases %standard-phases
949 (delete 'configure)
950 (add-after 'unpack 'ignore-PATH
951 (lambda* (#:key inputs #:allow-other-keys)
952 (substitute* "jalv.select.cpp"
953 (("echo \\$PATH | tr ':' '\\\n' | xargs ls")
954 (string-append "ls -1 " (assoc-ref inputs "jalv") "/bin")))
955 (substitute* "jalv.select.h"
956 (("gtkmm.h") "gtkmm-2.4/gtkmm.h"))
957 #t)))))
958 (inputs
959 `(("lilv" ,lilv)
960 ("lv2" ,lv2)
961 ("jalv" ,jalv)
962 ("gtkmm" ,gtkmm-2)))
963 (native-inputs
964 `(("pkg-config" ,pkg-config)))
965 (home-page "https://github.com/brummer10/jalv_select")
966 (synopsis "GUI to select LV2 plugins and run them with jalv")
967 (description
968 "The jalv.select package provides a graphical user interface allowing
969users to select LV2 plugins and run them with jalv.")
970 (license license:public-domain)))
971
b095e762
RW
972(define-public synthv1
973 (package
974 (name "synthv1")
f2bd238b 975 (version "0.8.0")
b095e762
RW
976 (source (origin
977 (method url-fetch)
978 (uri
de67e922
LF
979 (string-append "mirror://sourceforge/synthv1/synthv1/" version
980 "/synthv1-" version ".tar.gz"))
b095e762
RW
981 (sha256
982 (base32
f2bd238b 983 "155pfyhr6d35ciw95pbxlqy7751cmij8j5d849rvblqbjzyzb5qx"))))
b095e762 984 (build-system gnu-build-system)
69008d73
DC
985 (arguments
986 `(#:tests? #f ; There are no tests.
987 #:configure-flags
988 '("CXXFLAGS=-std=gnu++11")))
b095e762
RW
989 (inputs
990 `(("jack" ,jack-1)
991 ("lv2" ,lv2)
992 ("alsa-lib" ,alsa-lib)
993 ("liblo" ,liblo)
e5f2afdb
EF
994 ("qtbase" ,qtbase)
995 ("qttools" ,qttools)))
b095e762
RW
996 (home-page "http://synthv1.sourceforge.net")
997 (synopsis "Polyphonic subtractive synthesizer")
998 (description
999 "Synthv1 is an old-school subtractive polyphonic synthesizer with four
1000oscillators and stereo effects.")
1001 (license license:gpl2+)))
2bb00612 1002
cf9af706
RW
1003(define-public drumkv1
1004 (package
1005 (name "drumkv1")
1006 (version "0.8.0")
1007 (source (origin
1008 (method url-fetch)
1009 (uri
1010 (string-append "mirror://sourceforge/drumkv1/drumkv1/" version
1011 "/drumkv1-" version ".tar.gz"))
1012 (sha256
1013 (base32
1014 "1n2kd468kn71yp2asmamprvblmdlvh0zd8lsh3598dwi4b7aa3ga"))))
1015 (build-system gnu-build-system)
1016 (arguments
1017 `(#:tests? #f ; There are no tests.
1018 #:configure-flags
1019 '("CXXFLAGS=-std=gnu++11")))
1020 (inputs
1021 `(("jack" ,jack-1)
1022 ("lv2" ,lv2)
1023 ("libsndfile" ,libsndfile)
1024 ("alsa-lib" ,alsa-lib)
1025 ("liblo" ,liblo)
1026 ("qtbase" ,qtbase)))
1027 (native-inputs
1028 `(("pkg-config" ,pkg-config)
1029 ("qttools" ,qttools)))
1030 (home-page "http://drumkv1.sourceforge.net")
1031 (synopsis "Drum-kit sampler synthesizer with stereo effects")
1032 (description
1033 "Drumkv1 is an old-school drum-kit sampler synthesizer with stereo
1034effects.")
1035 (license license:gpl2+)))
1036
18675264
RW
1037(define-public samplv1
1038 (package
1039 (name "samplv1")
1040 (version "0.8.0")
1041 (source (origin
1042 (method url-fetch)
1043 (uri
1044 (string-append "mirror://sourceforge/samplv1/samplv1/" version
1045 "/samplv1-" version ".tar.gz"))
1046 (sha256
1047 (base32
1048 "0j3hkmd9q0bw9b7nk9cssqywlrishkd1n790a9vq6gh3pdc5sf3r"))))
1049 (build-system gnu-build-system)
1050 (arguments
1051 `(#:tests? #f ; There are no tests.
1052 #:configure-flags
1053 '("CXXFLAGS=-std=gnu++11")))
1054 (inputs
1055 `(("jack" ,jack-1)
1056 ("lv2" ,lv2)
1057 ("libsndfile" ,libsndfile)
1058 ("alsa-lib" ,alsa-lib)
1059 ("liblo" ,liblo)
1060 ("qtbase" ,qtbase)))
1061 (native-inputs
1062 `(("pkg-config" ,pkg-config)
1063 ("qttools" ,qttools)))
1064 (home-page "http://samplv1.sourceforge.net")
1065 (synopsis "Polyphonic sampler synthesizer with stereo effects")
1066 (description
1067 "Samplv1 is an old-school polyphonic sampler synthesizer with stereo
1068effects.")
1069 (license license:gpl2+)))
1070
2bb00612
RW
1071(define-public amsynth
1072 (package
1073 (name "amsynth")
1074 (version "1.6.4")
1075 (source
1076 (origin
1077 (method url-fetch)
1078 (uri (string-append "https://github.com/amsynth/amsynth/releases/"
1079 "download/release-" version
1080 "/amsynth-" version ".tar.bz2"))
1081 (sha256
1082 (base32
1083 "07dp9dl38g9krjqxxh89l2z42z08yzrl57cx95b1l67xnxwjp5k3"))))
1084 (build-system gnu-build-system)
1085 (arguments
1086 `(#:phases
1087 (modify-phases %standard-phases
1088 (add-before 'configure 'set-flags
1089 (lambda _
1090 ;; Compile with C++11, required by gtkmm.
1091 (setenv "CXXFLAGS" "-std=c++11")
1092 #t)))))
1093 (inputs
1094 `(("alsa-lib" ,alsa-lib)
1095 ("jack" ,jack-1)
1096 ("lv2" ,lv2)
1097 ("libsndfile" ,libsndfile)
1098 ("gtk+" ,gtk+-2)
1099 ("gtkmm" ,gtkmm-2)))
1100 (native-inputs
1101 `(("pkg-config" ,pkg-config)))
1102 (home-page "http://amsynth.github.io")
1103 (synopsis "Analog modeling synthesizer")
1104 (description
1105 "amsynth is an easy-to-use software synthesizer with a classic
1106subtractive synthesizer topology. Its features include: dual
1107oscillators (sine, saw, square, noise) with hard sync; 12 and 24 dB/oct
1108resonant filters (low-pass, high-pass, band-pass, notch); mono, poly, legato
1109keyboard modes; dual ADSR envelope generators for filter and amplitude; LFO
1110which can modulate the oscillators, filter, and amplitude; distortion and
1111reverb effects.")
1112 (license license:gpl2+)))
b095e762 1113
ec8da0e2
RW
1114(define-public setbfree
1115 (package
1116 (name "setbfree")
a39f48b8 1117 (version "0.8.1")
ec8da0e2
RW
1118 (source (origin
1119 (method url-fetch)
1120 (uri
a39f48b8
RW
1121 (string-append "https://github.com/pantherb/setBfree/archive/v"
1122 version ".tar.gz"))
1123 (file-name (string-append name "-" version ".tar.gz"))
ec8da0e2
RW
1124 (sha256
1125 (base32
a39f48b8 1126 "0hj0rqk5yd4fzs7bwy6a6nhqgrmcggkjcr4il76rxy92r7nwabf3"))))
ec8da0e2
RW
1127 (build-system gnu-build-system)
1128 (arguments
1129 `(#:tests? #f ; no "check" target
1130 #:make-flags
1131 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
1132 (string-append "FONTFILE="
1133 (assoc-ref %build-inputs "font-bitstream-vera")
b42d4508
RW
1134 "/share/fonts/truetype/VeraBd.ttf")
1135 ;; Disable unsupported optimization flags on non-x86
1136 ,@(let ((system (or (%current-target-system)
1137 (%current-system))))
1138 (if (or (string-prefix? "x86_64" system)
1139 (string-prefix? "i686" system))
1140 '()
1141 '("OPTIMIZATIONS=-ffast-math -fomit-frame-pointer -O3"))))
ec8da0e2
RW
1142 #:phases
1143 (modify-phases %standard-phases
1144 (add-before 'build 'set-CC-variable
1145 (lambda _ (setenv "CC" "gcc") #t))
1146 (delete 'configure))))
1147 (inputs
1148 `(("jack" ,jack-1)
1149 ("lv2" ,lv2)
1150 ("zita-convolver" ,zita-convolver)
1151 ("glu" ,glu)
1152 ("ftgl" ,ftgl)
1153 ("font-bitstream-vera" ,font-bitstream-vera)))
1154 (native-inputs
1155 `(("help2man" ,help2man)
1156 ("pkg-config" ,pkg-config)))
1157 (home-page "http://setbfree.org")
1158 (synopsis "Tonewheel organ")
1159 (description
1160 "setBfree is a MIDI-controlled, software synthesizer designed to imitate
1161the sound and properties of the electromechanical organs and sound
1162modification devices that brought world-wide fame to the names and products of
1163Laurens Hammond and Don Leslie.")
1164 (license license:gpl2+)))
1165
770305f4
RW
1166(define-public beast
1167 (package
1168 (name "beast")
1169 (version "0.10.0")
1170 (source (origin
1171 (method url-fetch)
1172 (uri (string-append "https://testbit.eu/pub/dists/beast/beast-"
1173 version ".tar.xz"))
1174 (sha256
1175 (base32
1176 "1jzzmfwssklzw8fvvil04n8csc0zm99fnd9p2xa7c0xchg37lvhn"))))
1177 (build-system gnu-build-system)
844f4f6e
EF
1178 (arguments
1179 '(#:parallel-build? #f)) ; Race conditions cause build failures
770305f4
RW
1180 (inputs
1181 `(("rapicorn" ,rapicorn)
1182 ("guile" ,guile-1.8)
1183 ("python" ,python-2)
770305f4
RW
1184 ("libgnomecanvas" ,libgnomecanvas)
1185 ("libogg" ,libogg)
1186 ("libmad" ,libmad)
1187 ("flac" ,flac)
1188 ("alsa-lib" ,alsa-lib)
1189 ("libvorbis" ,libvorbis)
b94a6ca0 1190 ("gettext" ,gettext-minimal)))
770305f4
RW
1191 (native-inputs
1192 `(("pkg-config" ,pkg-config)
1193 ("glib:bin" ,glib "bin")
f2516de2 1194 ("cython" ,python2-cython)
770305f4
RW
1195 ("perl" ,perl)
1196 ("perl-xml-parser" ,perl-xml-parser)))
1197 (home-page "https://testbit.eu/wiki/Beast_Home")
1198 (synopsis "Music composition and modular synthesis environment")
1199 (description
1200 "Beast is a music composition and modular synthesis application. It
1201supports a wide range of standards in the field, such as MIDI, various audio
1202file formats and LADSPA modules. It allows for multitrack editing, real-time
1203synthesis, 32bit audio rendering, precise timing down to sample granularity,
1204on-demand and partial loading of wave files, on the fly decoding, stereo
1205mixing, FFT scopes, MIDI automation and full scriptability in Scheme.")
1206 (license license:gpl3+)))
1207
96250294
RW
1208(define-public bristol
1209 (package
1210 (name "bristol")
1211 (version "0.60.11")
1212 (source (origin
1213 (method url-fetch)
1214 (uri (string-append "mirror://sourceforge/bristol/bristol/"
1215 (version-major+minor version)
1216 "/bristol-" version ".tar.gz"))
1217 (sha256
1218 (base32
1219 "1fi2m4gmvxdi260821y09lxsimq82yv4k5bbgk3kyc3x1nyhn7vx"))))
1220 (build-system gnu-build-system)
18ef998b
RW
1221 (arguments
1222 `(#:phases
1223 (modify-phases %standard-phases
1224 (add-after 'unpack 'remove-sse-flags
1225 (lambda* (#:key system #:allow-other-keys)
1226 (when (not (or (string-prefix? "x86_64" system)
1227 (string-prefix? "i686" system)))
1228 (substitute* "bristol/Makefile.in"
1229 (("-msse -mfpmath=sse") "")))
73124d34
RW
1230 #t))
1231 ;; We know that Bristol has been linked with JACK and we don't have
1232 ;; ldd, so we can just skip this check.
1233 (add-after 'unpack 'do-not-grep-for-jack
1234 (lambda _
1235 (substitute* "bin/startBristol.in"
1236 (("ldd `which bristol` | grep jack") "echo guix"))
18ef998b 1237 #t)))))
96250294
RW
1238 (inputs
1239 `(("alsa-lib" ,alsa-lib)
1240 ("jack" ,jack-1)
1241 ("liblo" ,liblo)
1242 ("libx11" ,libx11)))
1243 (native-inputs
1244 `(("pkg-config" ,pkg-config)))
1245 (home-page "http://bristol.sourceforge.net/")
1246 (synopsis "Synthesizer emulator")
1247 (description
1248 "Bristol is an emulation package for a number of different 'classic'
1249synthesizers including additive and subtractive and a few organs. The
1250application consists of the engine, which is called bristol, and its own GUI
1251library called brighton that represents all the emulations. There are
1252currently more than twenty different emulations; each does sound different
1253although the author maintains that the quality and accuracy of each emulation
1254is subjective.")
1255 (license license:gpl3+)))
1256
6260d1a8
RW
1257(define-public tuxguitar
1258 (package
1259 (name "tuxguitar")
f467c352 1260 (version "1.3.2")
6260d1a8
RW
1261 (source (origin
1262 (method url-fetch)
1263 (uri (string-append
1264 "mirror://sourceforge/tuxguitar/TuxGuitar/TuxGuitar-"
f467c352 1265 version "/tuxguitar-" version "-src.tar.gz"))
6260d1a8
RW
1266 (sha256
1267 (base32
f467c352
RW
1268 "0ldml31zvywid1w28mfd65ramyiics55fdl0ch846vm7j7nwv58j"))
1269 (modules '((guix build utils)))
1270 (snippet
1271 ;; Delete pre-built classes
1272 '(delete-file-recursively "TuxGuitar-android/bin"))))
1273 (build-system ant-build-system)
6260d1a8 1274 (arguments
f467c352
RW
1275 `(#:build-target "build"
1276 #:tests? #f ; no tests
6260d1a8 1277 #:phases
5f1c9498 1278 (modify-phases %standard-phases
f467c352
RW
1279 (add-after 'unpack 'enter-dir
1280 (lambda _ (chdir "TuxGuitar-lib") #t))
1281 (add-after 'build 'build-editor-utils
1282 (lambda* (#:key inputs outputs #:allow-other-keys)
1283 (chdir "..")
1284 (let ((cwd (getcwd)))
1285 (setenv "CLASSPATH"
1286 (string-append
1287 cwd "/TuxGuitar-lib/tuxguitar-lib.jar" ":"
1288 cwd "/TuxGuitar-editor-utils/build/jar/tuxguitar-editor-utils.jar" ":"
1289 (getenv "CLASSPATH"))))
1290 (chdir "TuxGuitar-editor-utils")
1291 ;; Generate default build.xml
1292 ((@@ (guix build ant-build-system) default-build.xml)
1293 "tuxguitar-editor-utils.jar"
1294 (string-append (assoc-ref outputs "out")
1295 "/share/java"))
1296 ((assoc-ref %standard-phases 'build))))
1297 (add-after 'build-editor-utils 'build-application
1298 (lambda _
1299 (chdir "../TuxGuitar")
1300 ((assoc-ref %standard-phases 'build)
1301 #:build-target "build")))
1302 (replace 'install
1303 (lambda* (#:key inputs outputs #:allow-other-keys)
1304 (let* ((out (assoc-ref outputs "out"))
1305 (bin (string-append out "/bin"))
1306 (share (string-append out "/share"))
1307 (lib (string-append share "/java"))
1308 (swt (assoc-ref inputs "java-swt")))
1309 (mkdir-p bin)
f467c352
RW
1310 ;; install all jars
1311 (for-each (lambda (file)
1312 (install-file file lib))
1313 (find-files ".." "\\.jar$"))
1314 ;; install all resources
1315 (for-each (lambda (file)
1316 (install-file file share))
1317 (find-files "share" ".*"))
1318 ;; create wrapper
1319 (call-with-output-file (string-append bin "/tuxguitar")
1320 (lambda (port)
1321 (let ((classpath (string-join (append (find-files lib "\\.jar$")
1322 (find-files swt "\\.jar$"))
1323 ":")))
1324 (format
1325 port
1326 (string-append "#!/bin/sh\n"
1327 (which "java")
1328 " -cp " classpath
1329 " -Dtuxguitar.home.path=" out
1330 " -Dtuxguitar.share.path=" out "/share"
1331 " -Dswt.library.path=" swt "/lib"
1332 " org.herac.tuxguitar.app.TGMainSingleton"
1333 " \"$1\" \"$2\"")))))
1334 (chmod (string-append bin "/tuxguitar") #o555)
1335 #t))))))
6260d1a8 1336 (inputs
1ad15c16 1337 `(("java-swt" ,java-swt)))
6260d1a8
RW
1338 (home-page "http://tuxguitar.com.ar")
1339 (synopsis "Multitrack tablature editor and player")
1340 (description
1341 "TuxGuitar is a guitar tablature editor with player support through midi.
1342It can display scores and multitrack tabs. TuxGuitar provides various
1343additional features, including autoscrolling while playing, note duration
1344management, bend/slide/vibrato/hammer-on/pull-off effects, support for
1345tuplets, time signature management, tempo management, gp3/gp4/gp5 import and
1346export.")
1347 (license license:lgpl2.1+)))
2d0fd07b
RW
1348
1349(define-public pd
1350 (package
1351 (name "pd")
1352 (version "0.45.4")
1353 (source (origin
1354 (method url-fetch)
1355 (uri
1356 (string-append "mirror://sourceforge/pure-data/pure-data/"
1357 version "/pd-" (version-major+minor version)
1358 "-" (last (string-split version #\.))
1359 ".src.tar.gz"))
1360 (sha256
1361 (base32
1362 "1ls2ap5yi2zxvmr247621g4jx0hhfds4j5704a050bn2n3l0va2p"))))
1363 (build-system gnu-build-system)
1364 (arguments
1365 `(#:tests? #f ; no "check" target
1366 #:phases
1367 (modify-phases %standard-phases
1368 (add-before
1369 'configure 'fix-wish-path
1370 (lambda _
1371 (substitute* "src/s_inter.c"
1372 ((" wish ") (string-append " " (which "wish8.6") " ")))
1373 (substitute* "tcl/pd-gui.tcl"
1374 (("exec wish ") (string-append "exec " (which "wish8.6") " ")))
1375 #t))
1376 (add-after
1377 'unpack 'autoconf
1378 (lambda _ (zero? (system* "autoreconf" "-vfi")))))))
1379 (native-inputs
1380 `(("autoconf" ,autoconf)
1381 ("automake" ,automake)
1382 ("libtool" ,libtool)
b94a6ca0 1383 ("gettext" ,gettext-minimal)
2d0fd07b
RW
1384 ("pkg-config" ,pkg-config)))
1385 (inputs
1386 `(("tk" ,tk)
1387 ("alsa-lib" ,alsa-lib)
1388 ("jack" ,jack-1)))
1389 (home-page "http://puredata.info")
1390 (synopsis "Visual programming language for artistic performances")
1391 (description
1392 "Pure Data (aka Pd) is a visual programming language. Pd enables
1393musicians, visual artists, performers, researchers, and developers to create
1394software graphically, without writing lines of code. Pd is used to process
1395and generate sound, video, 2D/3D graphics, and interface sensors, input
1396devices, and MIDI. Pd can easily work over local and remote networks to
1397integrate wearable technology, motor systems, lighting rigs, and other
1398equipment. Pd is suitable for learning basic multimedia processing and visual
1399programming methods as well as for realizing complex systems for large-scale
1400projects.")
1401 (license license:bsd-3)))
821664f1 1402
aacb52fb
RW
1403(define-public portmidi
1404 (package
1405 (name "portmidi")
1406 (version "217")
1407 (source (origin
1408 (method url-fetch)
1409 (uri (string-append "mirror://sourceforge/portmedia/portmidi/"
1410 version "/portmidi-src-" version ".zip"))
1411 (sha256
1412 (base32
1413 "03rfsk7z6rdahq2ihy5k13qjzgx757f75yqka88v3gc0pn9ais88"))
1414 (patches (list (search-patch "portmidi-modular-build.patch")))))
1415 (build-system cmake-build-system)
1416 (arguments
1417 `(#:tests? #f ; tests cannot be linked
1418 #:configure-flags
1419 (list "-DPORTMIDI_ENABLE_JAVA=Off"
1420 "-DCMAKE_BUILD_TYPE=Release" ; needed to have PMALSA set
1421 "-DPORTMIDI_ENABLE_TEST=Off"))) ; tests fail linking
1422 (inputs
1423 `(("alsa-lib" ,alsa-lib)))
1424 (native-inputs
1425 `(("unzip" ,unzip)))
1426 (home-page "http://portmedia.sourceforge.net/portmidi/")
1427 (synopsis "Library for MIDI I/O")
1428 (description
1429 "PortMidi is a library supporting real-time input and output of MIDI data
1430using a system-independent interface.")
1431 (license license:expat)))
f65d59fc 1432
38098bf7
RW
1433(define-public portmidi-for-extempore
1434 (package (inherit portmidi)
1435 (name "portmidi-for-extempore")
1436 (version "217")
1437 (source (origin
1438 (method url-fetch)
1439 (uri (string-append "https://github.com/extemporelang/portmidi/"
1440 "archive/" version ".tar.gz"))
1441 (file-name (string-append name "-" version ".tar.gz"))
1442 (sha256
1443 (base32
1444 "0gjikwciyr8kk4y3qiv1pcq58xpgw38ql1m2gs6g0qc1s8sx4235"))))
1445 (build-system cmake-build-system)
1446 (arguments `(#:tests? #f)) ; no tests
1447 (native-inputs '())
39162ee4
RW
1448 ;; Extempore refuses to build on architectures other than x86_64
1449 (supported-systems '("x86_64-linux"))
38098bf7
RW
1450 (home-page "https://github.com/extemporelang/portmidi/")))
1451
f65d59fc
RW
1452(define-public python-pyportmidi
1453 (package
1454 (name "python-pyportmidi")
1455 (version (package-version portmidi))
1456 (source (package-source portmidi))
1457 (build-system python-build-system)
1458 (arguments
1459 `(#:tests? #f ; no tests included
1460 #:phases
1461 (modify-phases %standard-phases
1462 (add-after 'unpack 'enter-dir
1463 (lambda _ (chdir "pm_python") #t))
1464 (add-after 'enter-dir 'fix-setup.py
1465 (lambda _
1466 (substitute* "setup.py"
1467 ;; Use Python 3 syntax
1468 (("print (\".*\")" _ text)
1469 (string-append "print(" text ")\n"))
1470 ;; TODO.txt and CHANGES.txt don't exist
1471 (("CHANGES =.*") "CHANGES = \"\"\n")
1472 (("TODO =.*") "TODO = \"\"\n"))
1473 #t)))))
1474 (inputs
1475 `(("portmidi" ,portmidi)
f2516de2 1476 ("alsa-lib" ,alsa-lib)))
f65d59fc 1477 (native-inputs
f2516de2
HG
1478 `(("python-cython" ,python-cython)
1479 ("unzip" ,unzip)))
f65d59fc
RW
1480 (home-page "http://portmedia.sourceforge.net/portmidi/")
1481 (synopsis "Python bindings to PortMidi")
1482 (description
1483 "This package provides Python bindings to the PortMidi library.")
1484 (license license:expat)))
aacb52fb 1485
821664f1
RW
1486(define-public frescobaldi
1487 (package
1488 (name "frescobaldi")
4b2eede4 1489 (version "2.19.0")
821664f1
RW
1490 (source (origin
1491 (method url-fetch)
1492 (uri (string-append
1493 "https://github.com/wbsoft/frescobaldi/releases/download/v"
1494 version "/frescobaldi-" version ".tar.gz"))
1495 (sha256
1496 (base32
4b2eede4 1497 "1rnk8i8dlshzx16n2qxcsqcs7kywgyazzyzw2vy4vp2gsm9vs9ml"))))
821664f1 1498 (build-system python-build-system)
a19a6d3a 1499 (arguments `(#:tests? #f)) ; no tests included
821664f1
RW
1500 (inputs
1501 `(("lilypond" ,lilypond)
6855b347 1502 ("portmidi" ,portmidi)
821664f1
RW
1503 ("python-pyqt-4" ,python-pyqt-4)
1504 ("python-ly" ,python-ly)
6855b347 1505 ("python-pyportmidi" ,python-pyportmidi)
821664f1
RW
1506 ("poppler" ,poppler)
1507 ("python-poppler-qt4" ,python-poppler-qt4)
1508 ("python-sip" ,python-sip)))
1509 (home-page "http://www.frescobaldi.org/")
1510 (synopsis "LilyPond sheet music text editor")
1511 (description
1512 "Frescobaldi is a LilyPond sheet music text editor with syntax
1513highlighting and automatic completion. Among other things, it can render
1514scores next to the source, can capture input from MIDI or read MusicXML and
1515ABC files, has a MIDI player for proof-listening, and includes a documentation
1516browser.")
1517 (license license:gpl2+)))
ddfddb0c 1518
bf76d780
RW
1519(define-public drumstick
1520 (package
1521 (name "drumstick")
382aacc5 1522 (version "1.1.0")
bf76d780
RW
1523 (source (origin
1524 (method url-fetch)
1525 (uri (string-append "mirror://sourceforge/drumstick/"
1526 version "/drumstick-" version ".tar.bz2"))
1527 (sha256
1528 (base32
382aacc5 1529 "13pkfqrav30bbcddgf1imd7jk6lpqbxkz1qv31718pdl446jq7df"))))
bf76d780
RW
1530 (build-system cmake-build-system)
1531 (arguments
1532 `(#:tests? #f ; no test target
1533 #:configure-flags '("-DLIB_SUFFIX=")
1534 #:phases
1535 (modify-phases %standard-phases
1536 (add-before 'configure 'fix-docbook
1537 (lambda* (#:key inputs #:allow-other-keys)
1538 (substitute* "cmake_admin/CreateManpages.cmake"
1539 (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
1540 (string-append (assoc-ref inputs "docbook-xsl")
1541 "/xml/xsl/docbook-xsl-"
1542 ,(package-version docbook-xsl)
1543 "/manpages/docbook.xsl")))
1544 #t)))))
1545 (inputs
ca1cab82
EF
1546 `(("qtbase" ,qtbase)
1547 ("qtsvg" ,qtsvg)
bf76d780
RW
1548 ("alsa-lib" ,alsa-lib)
1549 ("fluidsynth" ,fluidsynth)))
1550 (native-inputs
1551 `(("pkg-config" ,pkg-config)
1552 ("libxslt" ,libxslt) ;for xsltproc
1553 ("docbook-xsl" ,docbook-xsl)
1554 ("doxygen" ,doxygen)))
1555 (home-page "http://drumstick.sourceforge.net/")
1556 (synopsis "C++ MIDI library")
1557 (description
1558 "Drumstick is a set of MIDI libraries using C++/Qt5 idioms and style. It
1559includes a C++ wrapper around the ALSA library sequencer interface. A
1560complementary library provides classes for processing SMF (Standard MIDI
1561files: .MID/.KAR), Cakewalk (.WRK), and Overture (.OVE) file formats. A
1562multiplatform realtime MIDI I/O library is also provided with various output
1563backends, including ALSA, OSS, Network and FluidSynth.")
1564 (license license:gpl2+)))
1565
ddfddb0c
RW
1566(define-public zynaddsubfx
1567 (package
1568 (name "zynaddsubfx")
4908ae48 1569 (version "3.0.1")
ddfddb0c
RW
1570 (source (origin
1571 (method url-fetch)
1572 (uri (string-append
1573 "mirror://sourceforge/zynaddsubfx/zynaddsubfx/"
138e7697 1574 version "/zynaddsubfx-" version ".tar.bz2"))
ddfddb0c
RW
1575 (sha256
1576 (base32
4908ae48 1577 "1qijvlbv41lnqaqbp6gh1i42xzf1syviyxz8wr39xbz55cw7y0d8"))))
ddfddb0c 1578 (build-system cmake-build-system)
00dfc97c
RW
1579 (arguments
1580 `(#:phases
1581 (modify-phases %standard-phases
1582 ;; Move SSE compiler optimization flags from generic target to
1583 ;; athlon64 and core2 targets, because otherwise the build would fail
1584 ;; on non-Intel machines.
1585 (add-after 'unpack 'remove-sse-flags-from-generic-target
1586 (lambda _
1587 (substitute* "src/CMakeLists.txt"
1588 (("-msse -msse2 -mfpmath=sse") "")
1589 (("-march=(athlon64|core2)" flag)
1590 (string-append flag " -msse -msse2 -mfpmath=sse")))
1591 #t)))))
ddfddb0c
RW
1592 (inputs
1593 `(("liblo" ,liblo)
1594 ("ntk" ,ntk)
1ea7969f 1595 ("mesa" ,mesa)
ddfddb0c
RW
1596 ("alsa-lib" ,alsa-lib)
1597 ("jack" ,jack-1)
1598 ("fftw" ,fftw)
1599 ("minixml" ,minixml)
1600 ("libxpm" ,libxpm)
1601 ("zlib" ,zlib)))
1602 (native-inputs
1603 `(("pkg-config" ,pkg-config)))
1604 (home-page "http://zynaddsubfx.sf.net/")
1605 (synopsis "Software synthesizer")
1606 (description
1607 "ZynAddSubFX is a feature heavy realtime software synthesizer. It offers
1608three synthesizer engines, multitimbral and polyphonic synths, microtonal
1609capabilities, custom envelopes, effects, etc.")
1610 (license license:gpl2)))
c493679f
RW
1611
1612(define-public yoshimi
1613 (package
1614 (name "yoshimi")
7fd30d1b 1615 (version "1.4.1")
c493679f
RW
1616 (source (origin
1617 (method url-fetch)
1618 (uri (string-append "mirror://sourceforge/yoshimi/"
1619 (version-major+minor version)
1620 "/yoshimi-" version ".tar.bz2"))
1621 (sha256
1622 (base32
7fd30d1b 1623 "133sx42wb66g803pcrgdwph40wh94knvab3yfqkgm0001jv4v14y"))))
c493679f
RW
1624 (build-system cmake-build-system)
1625 (arguments
1626 `(#:tests? #f ; there are no tests
1627 #:configure-flags
1628 (list (string-append "-DCMAKE_INSTALL_DATAROOTDIR="
1629 (assoc-ref %outputs "out") "/share"))
1630 #:phases
1631 (modify-phases %standard-phases
1632 (add-before 'configure 'enter-dir
1633 (lambda _ (chdir "src") #t))
1634 ;; Move SSE compiler optimization flags from generic target to
1635 ;; athlon64 and core2 targets, because otherwise the build would fail
1636 ;; on non-Intel machines.
1637 (add-after 'unpack 'remove-sse-flags-from-generic-target
1638 (lambda _
1639 (substitute* "src/CMakeLists.txt"
1640 (("-msse -msse2 -mfpmath=sse") "")
1641 (("-march=(athlon64|core2)" flag)
1642 (string-append flag " -msse -msse2 -mfpmath=sse")))
7fd30d1b
RW
1643 #t))
1644 ;; Yoshimi tries to find ncurses with pkg-config, but our ncurses
1645 ;; package does not install .pc files.
1646 (add-after 'unpack 'find-ncurses
1647 (lambda _
1648 (substitute* "src/CMakeLists.txt"
1649 (("LIBNCURSES REQUIRED") "LIBNCURSES")
1650 (("NCURSES REQUIRED") "NCURSES")
1651 (("FATAL_ERROR \"libncurses") "STATUS \"libncurses")
1652 (("\\$\\{NCURSES_LIBRARIES\\}") "ncurses"))
1653 #t)))))
c493679f
RW
1654 (inputs
1655 `(("boost" ,boost)
1656 ("fftwf" ,fftwf)
1657 ("alsa-lib" ,alsa-lib)
1658 ("jack" ,jack-1)
1659 ("fontconfig" ,fontconfig)
1660 ("minixml" ,minixml)
1661 ("mesa" ,mesa)
1662 ("fltk" ,fltk)
1663 ("lv2" ,lv2)
1664 ("readline" ,readline)
1665 ("ncurses" ,ncurses)
1666 ("cairo" ,cairo)
1667 ("zlib" ,zlib)))
1668 (native-inputs
1669 `(("pkg-config" ,pkg-config)))
1670 (home-page "http://yoshimi.sourceforge.net/")
1671 (synopsis "Multi-paradigm software synthesizer")
1672 (description
1673 "Yoshimi is a fork of ZynAddSubFX, a feature heavy realtime software
1674synthesizer. It offers three synthesizer engines, multitimbral and polyphonic
1675synths, microtonal capabilities, custom envelopes, effects, etc. Yoshimi
1676improves on support for JACK features, such as JACK MIDI.")
1677 (license license:gpl2)))
658212eb 1678
a9f55bf2
RW
1679(define-public jack-keyboard
1680 (package
1681 (name "jack-keyboard")
1682 (version "2.5")
1683 (source
1684 (origin
1685 (method url-fetch)
1686 (uri (string-append "mirror://sourceforge/jack-keyboard/jack-keyboard/"
1687 version "/jack-keyboard-" version ".tar.gz"))
1688 (sha256
1689 (base32
1690 "0mzmg8aavybcfdlq2yd9d0vscqd6is5p6jzrgfpfm5j3xdcvh2s3"))))
1691 (build-system gnu-build-system)
1692 (inputs
1693 `(("jack" ,jack-1)
1694 ("lash" ,lash)
1695 ("gtk+" ,gtk+-2)))
1696 (native-inputs
1697 `(("pkg-config" ,pkg-config)))
1698 (home-page "http://jack-keyboard.sourceforge.net/")
1699 (synopsis "Virtual MIDI keyboard")
1700 (description "Jack-keyboard is a virtual MIDI keyboard, a program that
1701allows you to send JACK MIDI events (i.e. play) using your PC keyboard.")
1702 (license license:bsd-2)))
1703
658212eb
LF
1704(define-public cursynth
1705 (package
1706 (name "cursynth")
1707 (version "1.5")
1708 (source
1709 (origin
1710 (method url-fetch)
1711 (uri (string-append "mirror://gnu/cursynth/cursynth-"
1712 version ".tar.gz"))
1713 (sha256
1714 (base32 "1dhphsya41rv8z6yqcv9l6fwbslsds4zh1y56zizi39nd996d40v"))
fc1adab1 1715 (patches (search-patches "cursynth-wave-rand.patch"))))
658212eb
LF
1716 (build-system gnu-build-system)
1717 (native-inputs `(("pkg-config" ,pkg-config)))
1718 ;; TODO: See https://github.com/iyoko/cursynth/issues/4 which currently
1719 ;; prevents us from using pulseaudio
1720 (inputs `(("ncurses" ,ncurses)
1721 ("alsa" ,alsa-lib)))
1722 (home-page "http://www.gnu.org/software/cursynth")
1723 (synopsis "Polyphonic and MIDI subtractive music synthesizer using curses")
1724 (description "GNU cursynth is a polyphonic synthesizer that runs
1725graphically in the terminal. It is built on a full-featured subtractive
1726synthesis engine. Notes and parameter changes may be entered via MIDI or the
1727computer's keyboard.")
1728 (license license:gpl3+)))
a763ce7d
RW
1729
1730(define-public qtractor
1731 (package
1732 (name "qtractor")
aaaf8b38 1733 (version "0.8.0")
a763ce7d
RW
1734 (source (origin
1735 (method url-fetch)
1736 (uri (string-append "http://downloads.sourceforge.net/qtractor/"
1737 "qtractor-" version ".tar.gz"))
1738 (sha256
1739 (base32
aaaf8b38 1740 "17v563liyqcvil204ry1qfp09d91944nqz2ig33f5c3pyg4z2427"))))
a763ce7d
RW
1741 (build-system gnu-build-system)
1742 (arguments `(#:tests? #f)) ; no "check" target
1743 (inputs
1744 `(("qt" ,qt)
1745 ("alsa-lib" ,alsa-lib)
1746 ("jack" ,jack-1)
1747 ("libsndfile" ,libsndfile)
1748 ("ladspa" ,ladspa)
1749 ("lv2" ,lv2)
1750 ("lilv" ,lilv)
1751 ("suil" ,suil)
1752 ("libsamplerate" ,libsamplerate)
1753 ("libvorbis" ,libvorbis)
1754 ("libmad" ,libmad)
1755 ("rubberband" ,rubberband)
1756 ("liblo" ,liblo)
1757 ("zlib" ,zlib)))
1758 (native-inputs
1759 `(("pkg-config" ,pkg-config)))
1760 (home-page "http://qtractor.sourceforge.net/")
1761 (synopsis "Audio/MIDI multi-track sequencer")
1762 (description
1763 "Qtractor is an Audio/MIDI multi-track sequencer application. It uses
1764JACK for audio and ALSA sequencer for MIDI as multimedia infrastructures and
1765follows a traditional multi-track tape recorder control paradigm.")
1766 (license license:gpl2+)))
aa0edd3f 1767
849c3d03
RW
1768(define-public ams-lv2
1769 (package
1770 (name "ams-lv2")
1771 (version "1.2.0")
1772 (source
1773 (origin
1774 (method url-fetch)
1775 (uri (string-append "https://github.com/blablack/ams-lv2/"
1776 "archive/" version ".tar.gz"))
1777 (file-name (string-append name "-" version ".tar.gz"))
1778 (sha256
1779 (base32
1780 "1392spswkhfd38fggf584wb3m8aqpg7csfrs9zxnzyvhgmp0fgqk"))))
1781 (build-system waf-build-system)
8a3ce2c7
EF
1782 (arguments
1783 `(#:phases
1784 (modify-phases %standard-phases
1785 (add-after 'unpack 'remove-sse-flags
1786 (lambda* (#:key system #:allow-other-keys)
1787 (when (not (or (string-prefix? "x86_64" system)
1788 (string-prefix? "i686" system)))
1789 (substitute* "wscript"
1790 (("'-msse', '-mfpmath=sse', ") ""))
1791 #t))))
1792 #:tests? #f)) ; no tests
849c3d03
RW
1793 (inputs
1794 `(("lv2" ,lv2)
1795 ("lvtk" ,lvtk)
1796 ("gtkmm" ,gtkmm-2)
1797 ("gtk" ,gtk+-2)
1798 ("cairo" ,cairo)
1799 ("fftw" ,fftw)))
1800 (native-inputs
1801 `(("pkg-config" ,pkg-config)))
1802 (home-page "https://objectivewave.wordpress.com/ams-lv2/")
1803 (synopsis "Port of Alsa Modular Synth internal modules into LV2")
1804 (description "This set of LV2 plugins is a port of the internal modules
1805found in Alsa Modular Synth. These plugins are used to create modular
1806synthesizers and contain: VCO, VCF, VCA, LFO, slew limiter, envelopes, sample
1807and hold, etc.")
1808 (license license:gpl2)))
1809
aed023ff
RW
1810(define-public gxtuner
1811 (package
1812 (name "gxtuner")
1813 (version "2.3")
1814 (source (origin
1815 (method url-fetch)
1816 (uri (string-append "https://github.com/brummer10/gxtuner/"
1817 "archive/v" version ".tar.gz"))
1818 (file-name (string-append name "-" version ".tar.gz"))
1819 (sha256
1820 (base32
1821 "1abpxiydn4c9wssz6895hnad9ipkcy3rkgzbnanvwb46nm44x6if"))))
1822 (build-system gnu-build-system)
1823 (arguments
1824 `(#:make-flags
1825 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
1826 (string-append "INCLUDE_L_DIR="
1827 (assoc-ref %build-inputs "zita-resampler")
1828 "/include/"))
1829 #:phases
1830 (modify-phases %standard-phases
1831 (delete 'configure))))
1832 (inputs
1833 `(("gtk+" ,gtk+-2)
1834 ("jack" ,jack-1)
1835 ("fftwf" ,fftwf)
1836 ("cairo" ,cairo)
1837 ("zita-resampler" ,zita-resampler)))
1838 (native-inputs
1839 `(("pkg-config" ,pkg-config)))
1840 (home-page "https://github.com/brummer10/gxtuner")
1841 (synopsis "Guitar tuner")
1842 (description "GXtuner is a simple guitar tuner for JACK with an
1843analogue-like user interface.")
1844 (license license:gpl2+)))
1845
c2c9e748
RW
1846(define-public mod-host
1847 ;; The last release was in 2014 but since then more than 140 commits have
1848 ;; been made.
1849 (let ((commit "72aca771e3a4e3889641b9bab84985586c9bb926")
1850 (revision "1"))
1851 (package
1852 (name "mod-host")
1853 (version (string-append "0.10.6-" revision "." (string-take commit 9)))
1854 (source (origin
1855 (method git-fetch)
1856 (uri (git-reference
1857 (url "https://github.com/moddevices/mod-host")
1858 (commit commit)))
1859 (sha256
1860 (base32
1861 "19szi8cy65jlchbrmbjbma03g6gxj9zyyp4dgw1k06r0cxbx82gq"))
1862 (file-name (string-append name "-" version "-checkout"))))
1863 (build-system gnu-build-system)
1864 (arguments
1865 `(#:tests? #f ; no tests included
1866 #:make-flags
1867 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
1868 "CC=gcc")
1869 #:phases
1870 (modify-phases %standard-phases
1871 (delete 'configure)
1872 (add-after 'unpack 'fix-jack-installation-directory
1873 (lambda _
1874 ;; Do not attempt to install files to output of "jack" package.
1875 (substitute* "Makefile"
1876 (("\\$\\(shell pkg-config --variable=libdir jack\\)")
1877 "lib"))
1878 #t)))))
1879 (inputs
1880 `(("lilv" ,lilv)
45591fd7
RW
1881 ("fftw" ,fftw-with-threads)
1882 ("fftwf" ,fftwf-with-threads)
c2c9e748
RW
1883 ("lv2" ,lv2)
1884 ("jack" ,jack-1)
1885 ("readline" ,readline)))
1886 (native-inputs
1887 `(("pkg-config" ,pkg-config)
1888 ("python" ,python-2)))
1889 (home-page "https://github.com/moddevices/mod-host")
1890 (synopsis "LV2 host for Jack controllable via socket or command line")
1891 (description "mod-host is an LV2 plugin host for JACK, controllable via
1892socket or command line.")
1893 (license license:gpl3+))))
1894
aa0edd3f
AM
1895(define-public pianobar
1896 (package
1897 (name "pianobar")
1898 (version "2015.11.22")
1899 (source (origin
1900 (method url-fetch)
1901 (uri (string-append "https://github.com/PromyLOPh/"
1902 name "/archive/" version ".tar.gz"))
1903 (file-name (string-append name "-" version ".tar.gz"))
1904 (sha256
1905 (base32
1906 "022df19bhxqvkhy0qy21xahba5s1fm17b13y0p9p9dnf2yl44wfv"))))
1907 (build-system gnu-build-system)
1908 (arguments
1909 `(#:tests? #f ; no tests
1910 #:make-flags (list "CC=gcc" "CFLAGS=-std=c99"
1911 (string-append "PREFIX=" %output))
1912 #:phases (modify-phases %standard-phases
1913 (delete 'configure))))
1914 (inputs
1915 `(("ao" ,ao)
1916 ("curl" ,curl)
1917 ("libgcrypt" ,libgcrypt)
1918 ("json-c" ,json-c)
1919 ("ffmpeg" ,ffmpeg)))
1920 (native-inputs
1921 `(("pkg-config" ,pkg-config)))
1922 (home-page "http://6xq.net/projects/pianobar/")
1923 (synopsis "Console-based pandora.com player")
1924 (description "pianobar is a console-based music player for the
1925personalized online radio pandora.com. It has configurable keys for playing
1926and managing stations, can be controlled remotely via fifo, and can run
1927event-based scripts for scrobbling, notifications, etc.")
1928 (license license:expat)))
3f7a182d
LF
1929
1930(define-public python-mutagen
1931 (package
1932 (name "python-mutagen")
4228a79e 1933 (version "1.35.1")
3f7a182d
LF
1934 (source (origin
1935 (method url-fetch)
1936 (uri (pypi-uri "mutagen" version))
1937 (sha256
1938 (base32
4228a79e 1939 "0klk68c1n3285vvm2xzk8ii7mlqp1dxii04askan0gi1wlpagka9"))))
3f7a182d 1940 (build-system python-build-system)
4228a79e
LF
1941 (native-inputs
1942 `(("python-pytest" ,python-pytest)))
3f7a182d
LF
1943 (home-page "https://bitbucket.org/lazka/mutagen")
1944 (synopsis "Read and write audio tags")
1945 (description "Mutagen is a Python module to handle audio metadata. It
1946supports ASF, FLAC, M4A, Monkey’s Audio, MP3, Musepack, Ogg FLAC, Ogg Speex, Ogg
1947Theora, Ogg Vorbis, True Audio, WavPack and OptimFROG audio files. All versions
1948of ID3v2 are supported, and all standard ID3v2.4 frames are parsed. It can read
1949Xing headers to accurately calculate the bitrate and length of MP3s. ID3 and
1950APEv2 tags can be edited regardless of audio format. It can also manipulate Ogg
1951streams on an individual packet/page level.")
1952 (license license:gpl2))) ; "later version" never mentioned
1953
1954(define-public python2-mutagen
1955 (package-with-python2 python-mutagen))
8975de88
LF
1956
1957(define-public python-musicbrainzngs
1958 (package
1959 (name "python-musicbrainzngs")
daedf34d 1960 (version "0.6")
8975de88
LF
1961 (source (origin
1962 (method url-fetch)
1963 (uri (pypi-uri "musicbrainzngs" version))
1964 (sha256
1965 (base32
daedf34d 1966 "1dddarpjawryll2wss65xq3v9q8ln8dan7984l5dxzqx88d2dvr8"))))
8975de88 1967 (build-system python-build-system)
daedf34d
LF
1968 (arguments
1969 '(;; The tests fail suffer from race conditions:
1970 ;; https://github.com/alastair/python-musicbrainzngs/issues/211
1971 #:tests? #f))
8975de88
LF
1972 (home-page "https://python-musicbrainzngs.readthedocs.org/")
1973 (synopsis "Python bindings for MusicBrainz NGS webservice")
1974 (description "Musicbrainzngs implements Python bindings of the MusicBrainz
1975web service. This library can be used to retrieve music metadata from the
1976MusicBrainz database.")
1977 ;; 'musicbrainzngs/compat.py' is ISC licensed.
1978 (license (list license:bsd-2 license:isc))))
1979
1980(define-public python2-musicbrainzngs
1981 (package-with-python2 python-musicbrainzngs))
e8fee648 1982
a2eab422 1983(define-public python2-pyechonest
e8fee648 1984 (package
a2eab422 1985 (name "python2-pyechonest")
e8fee648
LF
1986 (version "9.0.0")
1987 (source (origin
1988 (method url-fetch)
1989 (uri (pypi-uri "pyechonest" version))
1990 (sha256
1991 (base32
1992 "1584nira3rkiman9dm81kdshihmkj21s8navndz2l8spnjwb790x"))))
1993 (build-system python-build-system)
a2eab422
LF
1994 (arguments
1995 `(;; Python 3 is not supported:
1996 ;; https://github.com/echonest/pyechonest/issues/42
1997 #:python ,python-2))
e8fee648
LF
1998 (home-page "https://github.com/echonest/pyechonest")
1999 (synopsis "Python interface to The Echo Nest APIs")
d3e3468f
LF
2000 (description "Pyechonest is a Python library for the Echo Nest API. With
2001Pyechonest you have Python access to the entire set of API methods including:
e8fee648
LF
2002
2003@enumerate
2004@item artist - search for artists by name, description, or attribute, and get
2005back detailed information about any artist including audio, similar artists,
2006blogs, familiarity, hotttnesss, news, reviews, urls and video.
2007@item song - search songs by artist, title, description, or attribute (tempo,
2008duration, etc) and get detailed information back about each song, such as
2009hotttnesss, audio_summary, or tracks.
2010@item track - upload a track to the Echo Nest and receive summary information
2011about the track including key, duration, mode, tempo, time signature along with
2012detailed track info including timbre, pitch, rhythm and loudness information.
2013@end enumerate\n")
a2eab422 2014 (license license:bsd-3)))
acd7351f
LF
2015
2016(define-public python-pylast
2017 (package
2018 (name "python-pylast")
b04d9b97 2019 (version "1.6.0")
acd7351f
LF
2020 (source (origin
2021 (method url-fetch)
2022 (uri (pypi-uri "pylast" version))
2023 (sha256
2024 (base32
b04d9b97 2025 "0bml11gfkxqd3i2jxkn5k2xllc4rvxjcyhs8an05gcyy1zp2bwvb"))))
acd7351f
LF
2026 (build-system python-build-system)
2027 (native-inputs
2028 `(("python-coverage" ,python-coverage)
2029 ("python-mock" ,python-mock)
2030 ("python-pep8" ,python-pep8)
2031 ("python-pytest" ,python-pytest)
2032 ("python-pyflakes" ,python-pyflakes)
2033 ("python-pyyaml" ,python-pyyaml)))
2034 (propagated-inputs
2035 `(("python-six" ,python-six)))
2036 (home-page "https://github.com/pylast/pylast")
2037 (synopsis "Python interface to Last.fm and Libre.fm")
2038 (description "A Python interface to Last.fm and other API-compatible
2039websites such as Libre.fm.")
5c31f4aa 2040 (license license:asl2.0)))
acd7351f
LF
2041
2042(define-public python2-pylast
5c31f4aa 2043 (package-with-python2 python-pylast))
3bf429af
LF
2044
2045(define-public beets
2046 (package
2047 (name "beets")
f27ec24d 2048 (version "1.4.1")
3bf429af
LF
2049 (source (origin
2050 (method url-fetch)
23319ed6 2051 (uri (pypi-uri "beets" version))
3bf429af
LF
2052 (sha256
2053 (base32
f27ec24d 2054 "14yn88xrcinpdg3ic285ar0wmwldzyjfd3ll6clmp3z3r4iqffip"))))
3bf429af
LF
2055 (build-system python-build-system)
2056 (arguments
f27ec24d
LF
2057 `(;; Python 3 support is still "alpha", and the upstream maintainers ask
2058 ;; packagers not to use it yet:
2059 ;; https://github.com/beetbox/beets/releases/tag/v1.4.1
2060 ;; TODO Check this again for the next release.
2061 #:python ,python-2
3bf429af
LF
2062 #:phases
2063 (modify-phases %standard-phases
2064 (add-after 'unpack 'set-HOME
36c2c8c8
LF
2065 (lambda _ (setenv "HOME" (string-append (getcwd) "/tmp"))))
2066 (replace 'check
2067 (lambda _ (zero? (system* "nosetests" "-v")))))))
3bf429af
LF
2068 (native-inputs
2069 `(("python2-beautifulsoup4" ,python2-beautifulsoup4)
2070 ("python2-flask" ,python2-flask)
3bf429af
LF
2071 ("python2-mock" ,python2-mock)
2072 ("python2-mpd2" ,python2-mpd2)
36c2c8c8 2073 ("python2-nose" ,python2-nose)
3bf429af
LF
2074 ("python2-pathlib" ,python2-pathlib)
2075 ("python2-pyxdg" ,python2-pyxdg)
2076 ("python2-pyechonest" ,python2-pyechonest)
2077 ("python2-pylast" ,python2-pylast)
2078 ("python2-rarfile" ,python2-rarfile)
2079 ("python2-responses" ,python2-responses)))
2080 ;; TODO: Install optional plugins and dependencies.
b3470031 2081 (inputs
f27ec24d
LF
2082 `(("python2-discogs-client" ,python2-discogs-client)
2083 ("python2-enum34" ,python2-enum34)
3bf429af
LF
2084 ("python2-jellyfish" ,python2-jellyfish)
2085 ("python2-munkres" ,python2-munkres)
2086 ("python2-musicbrainzngs" ,python2-musicbrainzngs)
2087 ("python2-mutagen" ,python2-mutagen)
2088 ("python2-pyyaml" ,python2-pyyaml)
2089 ("python2-unidecode" ,python2-unidecode)))
2090 (home-page "http://beets.io")
2091 (synopsis "Music organizer")
2092 (description "The purpose of beets is to get your music collection right
2093once and for all. It catalogs your collection, automatically improving its
2094metadata as it goes using the MusicBrainz database. Then it provides a variety
2095of tools for manipulating and accessing your music.")
2096 (license license:expat)))
21d18113
KY
2097
2098(define-public milkytracker
2099 (package
2100 (name "milkytracker")
2101 (version "0.90.86")
2102 (source (origin
2103 (method url-fetch)
1b35fea1 2104 (uri (string-append "http://milkytracker.titandemo.org/files/"
21d18113
KY
2105 name "-" version ".tar.bz2"))
2106 (sha256
2107 (base32
2108 "1v9vp8vi24lkagfpr92c128whvakwgrm9pq2zf6ijpl5sh7014zb"))))
2109 (build-system gnu-build-system)
2110 (arguments
2111 `(#:make-flags '("CXXFLAGS=-lasound")))
2112 (inputs
2113 `(("alsa-lib" ,alsa-lib)
2114 ("jack" ,jack-1)
2115 ("sdl" ,sdl)
2116 ("zlib" ,zlib)))
2117 (native-inputs
2118 `(("pkg-config" ,pkg-config)))
2119 (synopsis "Music tracker for working with .MOD/.XM module files")
2120 (description "MilkyTracker is a music application for creating .MOD and .XM
2121module files. It attempts to recreate the module replay and user experience of
2122the popular DOS program Fasttracker II, with special playback modes available
2123for improved Amiga ProTracker 2/3 compatibility.")
1b35fea1 2124 (home-page "http://milkytracker.titandemo.org/")
21d18113
KY
2125 ;; 'src/milkyplay' is under Modified BSD, the rest is under GPL3 or later.
2126 (license (list license:bsd-3 license:gpl3+))))
13416a10 2127
89bcf3fc
KK
2128(define-public schismtracker
2129 (package
2130 (name "schismtracker")
2131 (version "20160521")
2132 (source (origin
2133 (method url-fetch)
2134 (uri (string-append
2135 "https://github.com/" name "/" name "/archive/"
2136 version ".tar.gz"))
2137 (file-name (string-append name "-" version ".tar.gz"))
2138 (sha256
2139 (base32
2140 "0c6r24wm3rldm4j8cskl9xnixj3rwi3lnrhckw5gv43wpy6h4jcz"))
2141 (modules '((guix build utils)))
2142 (snippet
2143 ;; Remove use of __DATE__ and __TIME__ for reproducibility.
2144 `(substitute* "schism/version.c"
2145 (("Schism Tracker build %s %s.*$")
2146 (string-append "Schism Tracker version " ,version "\");"))))))
2147 (build-system gnu-build-system)
2148 (arguments
2149 `(#:phases
2150 (modify-phases %standard-phases
2151 (add-after 'unpack 'autoconf
2152 (lambda _ (zero? (system* "autoreconf" "-vfi"))))
2153 (add-before 'configure 'link-libm
2154 (lambda _ (setenv "LIBS" "-lm") #t)))))
2155 (native-inputs
2156 `(("autoconf" ,autoconf)
2157 ("automake" ,automake)
2158 ("python" ,python)))
2159 (inputs
2160 `(("alsa-lib" ,alsa-lib) ; for asound dependency
2161 ("libx11" ,libx11)
2162 ("libxext" ,libxext)
2163 ("sdl" ,sdl)))
2164 (home-page "http://schismtracker.org")
2165 (synopsis "Oldschool sample-based music composition tool")
2166 (description
2167 "Schism Tracker is a reimplementation of Impulse Tracker, a program used to
2168create high quality music without the requirements of specialized, expensive
2169equipment, and with a unique \"finger feel\" that is difficult to replicate in
2170part. The player is based on a highly modified version of the ModPlug engine,
2171with a number of bugfixes and changes to improve IT playback.")
2172 (license license:gpl2+)))
2173
13416a10
KY
2174(define-public moc
2175 (package
2176 (name "moc")
2177 (version "2.5.1")
2178 (source (origin
2179 (method url-fetch)
2180 (uri (string-append "http://ftp.daper.net/pub/soft/"
2181 name "/stable/"
2182 name "-" version ".tar.bz2"))
2183 (sha256
2184 (base32
2185 "1wn4za08z64bhsgfhr9c0crfyvy8c3b6a337wx7gz19am5srqh8v"))))
2186 (build-system gnu-build-system)
2187 (inputs
2188 `(("alsa-lib" ,alsa-lib)
2189 ("curl" ,curl)
2190 ("faad2" ,faad2)
2191 ("ffmpeg" ,ffmpeg)
2192 ("file" ,file)
2193 ("jack" ,jack-1)
2194 ("libid3tag" ,libid3tag)
2195 ("libltdl" ,libltdl)
2196 ("libmodplug" ,libmodplug)
2197 ("libmpcdec" ,libmpcdec)
2198 ("libmad" ,libmad)
2199 ("ncurses" ,ncurses)
2200 ("openssl" ,openssl)
2201 ("sasl" ,cyrus-sasl)
2202 ("speex" ,speex)
2203 ("taglib" ,taglib)
2204 ("wavpack" ,wavpack)
2205 ("zlib" ,zlib)))
2206 (native-inputs
2207 `(("pkg-config" ,pkg-config)))
2208 (synopsis "Console audio player designed to be powerful and easy to use")
2209 (description
2210 "Music on Console is a console audio player that supports many file
2211formats, including most audio formats recognized by FFMpeg.")
2212 (home-page "http://moc.daper.net")
2213 (license license:gpl2+)))
6d3ef286
JF
2214
2215(define-public midicsv
2216 (package
2217 (name "midicsv")
2218 (version "1.1")
2219 (source (origin
2220 (method url-fetch)
2221 (uri (string-append "http://www.fourmilab.ch/webtools/midicsv/"
2222 name "-" version ".tar.gz"))
2223 (sha256
2224 (base32
2225 "1vvhk2nf9ilfw0wchmxy8l13hbw9cnpz079nsx5srsy4nnd78nkw"))))
2226 (build-system gnu-build-system)
2227 (arguments
2228 `(#:phases (modify-phases %standard-phases (delete 'configure))
2229 #:make-flags (list "CC=gcc" (string-append "INSTALL_DEST=" %output))))
2230 (synopsis "Convert MIDI files to and from CSV")
2231 (description
2232 "Midicsv reads a standard MIDI file and decodes it into a comma-separated
2233value file (CSV), which preserves all the information in the MIDI file. The
2234ASCII CSV file may be loaded into a spreadsheet or database application, or
2235processed by a program to transform the MIDI data (for example, to key
2236transpose a composition or extract a track from a multi-track sequence). A
2237CSV file in the format created by midicsv may be converted back into a
2238standard MIDI file with the csvmidi program.")
2239 (home-page "http://www.fourmilab.ch/webtools/midicsv/")
2240 (license license:public-domain)))
49604680
RW
2241
2242(define-public gx-guvnor-lv2
2243 (let ((commit "9f528a7623a201383e119bb6a2df32b18396a9d5")
2244 (revision "1"))
2245 (package
2246 (name "gx-guvnor-lv2")
2247 (version (string-append "0-" revision "." (string-take commit 9)))
2248 (source (origin
2249 (method git-fetch)
2250 (uri (git-reference
2251 (url "https://github.com/brummer10/GxGuvnor.lv2")
2252 (commit commit)))
2253 (sha256
2254 (base32
2255 "10zx84p2vd7i1yqc5ma9p17927265j4g0zfwv9rxladw0nm8y45k"))
2256 (file-name (string-append name "-" version "-checkout"))))
2257 (build-system gnu-build-system)
2258 (arguments
2259 `(;; The check target is used only to output a warning.
2260 #:tests? #f
2261 #:make-flags
2262 (list (string-append "DESTDIR=" (assoc-ref %outputs "out")))
2263 #:phases
2264 (modify-phases %standard-phases
2265 (replace 'configure
2266 (lambda _
2267 (substitute* "Makefile"
2268 (("INSTALL_DIR = .*") "INSTALL_DIR=/lib/lv2\n")
2269 ;; Avoid rebuilding everything
2270 (("install : all") "install:"))
2271 #t)))))
2272 (inputs
2273 `(("lv2" ,lv2)))
2274 (home-page "https://github.com/brummer10/GxGuvnor.lv2")
2275 (synopsis "Overdrive/distortion pedal simulation")
2276 (description "This package provides the LV2 plugin \"GxGuvnor\", a
2277simulation of an overdrive or distortion pedal for guitars.")
2278 ;; The LICENSE file says GPLv3 but the license headers in the files say
2279 ;; GPLv2 or later.
2280 (license license:gpl2+))))
85ae347e
RW
2281
2282(define-public gx-vbass-preamp-lv2
2283 (let ((commit "0e599abab10c7669dd444e5d06f671c2fc1b9c6c")
2284 (revision "1"))
2285 (package (inherit gx-guvnor-lv2)
2286 (name "gx-vbass-preamp-lv2")
2287 (version (string-append "0-" revision "." (string-take commit 9)))
2288 (source (origin
2289 (method git-fetch)
2290 (uri (git-reference
2291 (url "https://github.com/brummer10/GxVBassPreAmp.lv2")
2292 (commit commit)))
2293 (sha256
2294 (base32
2295 "1dzksdfrva666gpi62fd2ni9rhf18sl917f1894qr0b17pbdh9k1"))
2296 (file-name (string-append name "-" version "-checkout"))))
2297 (home-page "https://github.com/brummer10/GxVBassPreAmp.lv2")
2298 (synopsis "Simulation of the Vox Venue Bass 100 Pre Amp Section")
2299 (description "This package provides the LV2 plugin \"GxVBassPreAmp\", a
2300pre-amplifier simulation modelled after the 1984 Vox Venue Bass 100 Pre Amp
2301Section."))))
cdc7a021
RW
2302
2303(define-public gx-overdriver-lv2
2304 (let ((commit "ed71801987449414bf3adaa0dbfac68e8775f1ce")
2305 (revision "1"))
2306 (package (inherit gx-guvnor-lv2)
2307 (name "gx-overdriver-lv2")
2308 (version (string-append "0-" revision "." (string-take commit 9)))
2309 (source (origin
2310 (method git-fetch)
2311 (uri (git-reference
2312 (url "https://github.com/brummer10/GxOverDriver.lv2")
2313 (commit commit)))
2314 (sha256
2315 (base32
2316 "13j614jh525fbkby79nnzwj0z1ac0c9wclyn5pfqvkmx6a7j24r8"))
2317 (file-name (string-append name "-" version "-checkout"))))
2318 (home-page "https://github.com/brummer10/GxOverDriver.lv2")
2319 (synopsis "Overdrive effect with level and tone control")
2320 (description "This package provides the LV2 plugin \"GxOverDriver\", an
2321overdrive effect."))))
4d95cd30
RW
2322
2323(define-public gx-tone-mender-lv2
2324 (let ((commit "b6780b4a3e4782b3ed0e5882d6788f178aed138f")
2325 (revision "1"))
2326 (package (inherit gx-guvnor-lv2)
2327 (name "gx-tone-mender-lv2")
2328 (version (string-append "0-" revision "." (string-take commit 9)))
2329 (source (origin
2330 (method git-fetch)
2331 (uri (git-reference
2332 (url "https://github.com/brummer10/GxToneMender.lv2")
2333 (commit commit)))
2334 (sha256
2335 (base32
2336 "07qdcfsvv2vdnfnjh91pfgvjdcs5y91nvwfm8c0z8fp6b4bk7a9q"))
2337 (file-name (string-append name "-" version "-checkout"))))
2338 (home-page "https://github.com/brummer10/GxToneMender.lv2")
2339 (synopsis "Clean boost with a 3-knob tonestack")
2340 (description "This package provides the LV2 plugin \"GxToneMender\", a
2341clean boost effect with a 3-knob tonestack."))))
4d4bfdc2
RW
2342
2343(define-public gx-push-pull-lv2
2344 (let ((commit "7f76ae2068498643ac8671ee0930b13ee3fd8eb5")
2345 (revision "1"))
2346 (package (inherit gx-guvnor-lv2)
2347 (name "gx-push-pull-lv2")
2348 (version (string-append "0-" revision "." (string-take commit 9)))
2349 (source (origin
2350 (method git-fetch)
2351 (uri (git-reference
2352 (url "https://github.com/brummer10/GxPushPull.lv2")
2353 (commit commit)))
2354 (sha256
2355 (base32
2356 "12f5hwck2irph0gjbj8xy8jqcqdwb8l1hlwf29k0clz52h1jhb5q"))
2357 (file-name (string-append name "-" version "-checkout"))))
2358 (home-page "https://github.com/brummer10/GxPushPull.lv2")
2359 (synopsis "Octave up push pull transistor fuzz simulation")
2360 (description "This package provides the LV2 plugin \"GxPushPull\", a
2361simulation of a push pull transistor fuzz effect with added high octave."))))
3eb1a964
RW
2362
2363(define-public gx-suppa-tone-bender-lv2
2364 (let ((commit "4e6dc713ec24e7fcf5ea23b7e685af627c01b9c9")
2365 (revision "1"))
2366 (package (inherit gx-guvnor-lv2)
2367 (name "gx-suppa-tone-bender-lv2")
2368 (version (string-append "0-" revision "." (string-take commit 9)))
2369 (source (origin
2370 (method git-fetch)
2371 (uri (git-reference
2372 (url "https://github.com/brummer10/GxSuppaToneBender.lv2")
2373 (commit commit)))
2374 (sha256
2375 (base32
2376 "1i22xr252nkbazkwidll2zb3i96610gx65qn5djdkijlz7j77138"))
2377 (file-name (string-append name "-" version "-checkout"))))
2378 (home-page "https://github.com/brummer10/GxSuppaToneBender.lv2")
2379 (synopsis "Simulation of the Vox Suppa Tone Bender pedal")
2380 (description "This package provides the LV2 plugin
2381\"GxSuppaToneBender\", a simulation modelled after the Vox Suppa Tone Bender
2382pedal."))))
664f677f
RW
2383
2384(define-public gx-saturator-lv2
31de5e22
RW
2385 (let ((commit "0b581ac85c515325b9f16e51937cae6e1bf81a0a")
2386 (revision "2"))
664f677f
RW
2387 (package (inherit gx-guvnor-lv2)
2388 (name "gx-saturator-lv2")
2389 (version (string-append "0-" revision "." (string-take commit 9)))
2390 (source (origin
2391 (method git-fetch)
2392 (uri (git-reference
2393 (url "https://github.com/brummer10/GxSaturator.lv2")
2394 (commit commit)))
2395 (sha256
2396 (base32
31de5e22 2397 "1cl785pzq8zk55m1rnhfd6qsabci6kpf4pf002gwr91vagyq246z"))
664f677f
RW
2398 (file-name (string-append name "-" version "-checkout"))))
2399 (home-page "https://github.com/brummer10/GxSaturator.lv2")
2400 (synopsis "Saturation effect")
2401 (description "This package provides the LV2 plugin \"GxSaturator\", a
2402saturation effect."))))
89412238
RW
2403
2404(define-public gx-hyperion-lv2
dad6cb50
RW
2405 (let ((commit "6a096a664e553e551e179e85cf390bd1683410fb")
2406 (revision "2"))
89412238
RW
2407 (package (inherit gx-guvnor-lv2)
2408 (name "gx-hyperion-lv2")
2409 (version (string-append "0-" revision "." (string-take commit 9)))
2410 (source (origin
2411 (method git-fetch)
2412 (uri (git-reference
2413 (url "https://github.com/brummer10/GxHyperion.lv2")
2414 (commit commit)))
2415 (sha256
2416 (base32
dad6cb50 2417 "1ksv3wmylhwbf6kjl2lnhr14h9rfl291cfm21471gnb1r68yqfxh"))
89412238
RW
2418 (file-name (string-append name "-" version "-checkout"))))
2419 (home-page "https://github.com/brummer10/GxHyperion.lv2")
2420 (synopsis "Simulation of the Hyperion Fuzz pedal")
2421 (description "This package provides the LV2 plugin \"GxHyperion\", a
2422simulation of the Hyperion Fuzz pedal."))))
32536f00
RW
2423
2424(define-public gx-voodoo-fuzz-lv2
c1802b08
RW
2425 (let ((commit "aec7889b489385e8add06126e7a36ae2e26254b1")
2426 (revision "2"))
32536f00
RW
2427 (package (inherit gx-guvnor-lv2)
2428 (name "gx-voodoo-fuzz-lv2")
2429 (version (string-append "0-" revision "." (string-take commit 9)))
2430 (source (origin
2431 (method git-fetch)
2432 (uri (git-reference
2433 (url "https://github.com/brummer10/GxVoodoFuzz.lv2")
2434 (commit commit)))
2435 (sha256
2436 (base32
c1802b08 2437 "0mc41ldlv89069iaysnfiqxy5h5sr8mdi5cxm3ij5q5v4jv3viwx"))
32536f00
RW
2438 (file-name (string-append name "-" version "-checkout"))))
2439 (home-page "https://github.com/brummer10/GxVoodoFuzz.lv2")
2440 (synopsis "Fuzz effect modelled after the Voodoo Lab SuperFuzz")
2441 (description "This package provides the LV2 plugin \"GxVoodooFuzz\", a
2442simulation modelled after the Voodoo Lab SuperFuzz pedal. It's basically a
2443Bosstone circuit, followed by the tone control of the FoxToneMachine in
2444parallel with a DarkBooster, followed by a volume control."))))
29f63222
RW
2445
2446(define-public gx-super-fuzz-lv2
1df4d85f
RW
2447 (let ((commit "f40389575812c909007d140d327ce579930b71f7")
2448 (revision "2"))
29f63222
RW
2449 (package (inherit gx-guvnor-lv2)
2450 (name "gx-super-fuzz-lv2")
2451 (version (string-append "0-" revision "." (string-take commit 9)))
2452 (source (origin
2453 (method git-fetch)
2454 (uri (git-reference
2455 (url "https://github.com/brummer10/GxSuperFuzz.lv2")
2456 (commit commit)))
2457 (sha256
2458 (base32
1df4d85f 2459 "174bibj8qzm8zr6f5h8bcj94iry17zravk8flpdy84n6yg7cixji"))
29f63222
RW
2460 (file-name (string-append name "-" version "-checkout"))))
2461 (home-page "https://github.com/brummer10/GxSuperFuzz.lv2")
2462 (synopsis "Fuzz effect modelled after the UniVox SuperFuzz")
2463 (description "This package provides the LV2 plugin \"GxVoodooFuzz\", an
2464analog simulation of the UniVox SuperFuzz pedal. In this simulation the trim
2465pot, which is usualy in the housing, is exposed as a control parameter. It
2466adjusts the amount of harmonics."))))
40bffdfa
RW
2467
2468(define-public gx-vintage-fuzz-master-lv2
a7cd2d44
RW
2469 (let ((commit "0fec0bc1e8a8ba909a68e916e036138a3425d7db")
2470 (revision "2"))
40bffdfa
RW
2471 (package (inherit gx-guvnor-lv2)
2472 (name "gx-vintage-fuzz-master-lv2")
2473 (version (string-append "0-" revision "." (string-take commit 9)))
2474 (source (origin
2475 (method git-fetch)
2476 (uri (git-reference
2477 (url "https://github.com/brummer10/GxVintageFuzzMaster.lv2")
2478 (commit commit)))
2479 (sha256
2480 (base32
a7cd2d44 2481 "06szi6d2iwkygbw5azhwzhcl2as4lmk2gs9hanngsf46a1zbdcp7"))
40bffdfa
RW
2482 (file-name (string-append name "-" version "-checkout"))))
2483 (home-page "https://github.com/brummer10/GxVintageFuzzMaster.lv2")
2484 (synopsis "Fuzz effect simulation of the vintage Fuzz Master")
2485 (description "This package provides the LV2 plugin
2486\"GxVintageFuzzMaster\", a simulation of the vintage Fuzz Master pedal."))))
631f8175
RW
2487
2488(define-public gx-slow-gear-lv2
8e6f6503
RW
2489 (let ((commit "cb852e0426f4e6fe077e7f1ede73a4da335cfc5e")
2490 (revision "2"))
631f8175
RW
2491 (package (inherit gx-guvnor-lv2)
2492 (name "gx-slow-gear-lv2")
2493 (version (string-append "0-" revision "." (string-take commit 9)))
2494 (source (origin
2495 (method git-fetch)
2496 (uri (git-reference
2497 (url "https://github.com/brummer10/GxSlowGear.lv2")
2498 (commit commit)))
2499 (sha256
2500 (base32
8e6f6503 2501 "0dp7afi1r3kzciiyn1hrkz6arsq47ys9sx5g4b7xa9k1dv92ishp"))
631f8175
RW
2502 (file-name (string-append name "-" version "-checkout"))))
2503 (home-page "https://github.com/brummer10/GxSlowGear.lv2")
2504 (synopsis "Slow gear audio effect")
2505 (description "This package provides the LV2 plugin \"GxSlowGear\", a
2506slow gear audio effect to produce volume swells."))))
d75e8f5a
RW
2507
2508(define-public gx-switchless-wah-lv2
cfcef2c2
RW
2509 (let ((commit "7b08691203314612999f0ce2328cdc1161cd6665")
2510 (revision "2"))
d75e8f5a
RW
2511 (package (inherit gx-guvnor-lv2)
2512 (name "gx-switchless-wah-lv2")
2513 (version (string-append "0-" revision "." (string-take commit 9)))
2514 (source (origin
2515 (method git-fetch)
2516 (uri (git-reference
2517 (url "https://github.com/brummer10/GxSwitchlessWah.lv2")
2518 (commit commit)))
2519 (sha256
2520 (base32
cfcef2c2 2521 "04jqfpncmrrqn34p21w4v9m2x5a5wsqwbm4f3byxvq4vcibwxzk2"))
d75e8f5a
RW
2522 (file-name (string-append name "-" version "-checkout"))))
2523 (home-page "https://github.com/brummer10/GxSwitchlessWah.lv2")
2524 (synopsis "Wah emulation with switchless activation")
2525 (description "This package provides the LV2 plugin \"GxSwitchlessWah\",
2526a simulation of an analog Wah pedal with switchless activation."))))
84d53724
RW
2527
2528(define-public mod-utilities
2529 (let ((commit "7cdeeac26ae682730740105ece121d4dddb8ba3f")
2530 (revision "1"))
2531 (package
2532 (name "mod-utilities")
2533 (version (string-append "0-" revision "." (string-take commit 9)))
2534 (source (origin
2535 (method git-fetch)
2536 (uri (git-reference
2537 (url "https://github.com/moddevices/mod-utilities.git")
2538 (commit commit)))
2539 (sha256
2540 (base32
2541 "1ilnkbrmwrszxvc21qlb86h29yz7cnc6rcp0jmna1y693ny2qhf4"))
2542 (file-name (string-append name "-" version "-checkout"))))
2543 (build-system gnu-build-system)
2544 (arguments
2545 `(#:tests? #f ; there are no tests
2546 #:make-flags
2547 (list (string-append "INSTALL_PATH="
2548 (assoc-ref %outputs "out")
2549 "/lib/lv2"))
2550 #:phases
2551 (modify-phases %standard-phases
2552 (delete 'configure))))
2553 (inputs
2554 `(("lv2" ,lv2)))
2555 (home-page "https://github.com/moddevices/mod-utilities")
2556 (synopsis "LV2 utility plugins")
2557 (description "This package provides LV2 audio utility plugins, such as
2558filters, crossovers, simple gain plugins without zipper noise, switch box
2559plugins, a switch trigger, a toggle switch, and a peakmeter.")
2560 (license license:gpl2+))))
d3db5efb 2561
951581a2
RW
2562(define-public ingen
2563 (let ((commit "fd147d0b888090bfb897505852c1f25dbdf77e18")
2564 (revision "1"))
2565 (package
2566 (name "ingen")
2567 (version (string-append "0.0.0-" revision "."
2568 (string-take commit 9)))
2569 (source
2570 (origin
2571 (method git-fetch)
2572 (uri (git-reference
2573 (url "http://git.drobilla.net/ingen.git")
2574 (commit commit)))
2575 (file-name (string-append name "-" version "-checkout"))
2576 (sha256
2577 (base32
2578 "1qmg79962my82c43vyrv5sxbqci9c7gc2s9bwaaqd0fcf08xcz1z"))))
2579 (build-system waf-build-system)
2580 (arguments
2581 `(#:tests? #f ; no "check" target
2582 #:configure-flags (list "--no-webkit")
2583 #:phases
2584 (modify-phases %standard-phases
2585 (add-after 'unpack 'patch-wscript
2586 (lambda* (#:key outputs #:allow-other-keys)
2587 (let ((out (assoc-ref outputs "out")))
2588 (substitute* "wscript"
2589 ;; FIXME: Our version of lv2specgen.py does not behave as
2590 ;; expected. Maybe this requires a development version of
2591 ;; LV2.
2592 (("lv2specgen.py") "touch ingen.lv2/ingen.html; echo")
2593 ;; Add libraries to RUNPATH.
2594 (("^(.+)target.*= 'src/ingen/ingen'," line prefix)
2595 (string-append prefix
2596 "linkflags=[\"-Wl,-rpath="
2597 out "/lib" "\"]," line)))
2598 (substitute* '("src/wscript"
2599 "src/server/wscript")
2600 ;; Add libraries to RUNPATH.
2601 (("bld.env.PTHREAD_LINKFLAGS" line)
2602 (string-append line
2603 " + [\"-Wl,-rpath=" out "/lib" "\"]")))
2604 (substitute* "src/client/wscript"
2605 ;; Add libraries to RUNPATH.
2606 (("^(.+)target.*= 'ingen_client'," line prefix)
2607 (string-append prefix
2608 "linkflags=[\"-Wl,-rpath="
2609 out "/lib" "\"]," line)))
2610 (substitute* "src/gui/wscript"
2611 ;; Add libraries to RUNPATH.
2612 (("^(.+)target.* = 'ingen_gui.*" line prefix)
2613 (string-append prefix
2614 "linkflags=[\"-Wl,-rpath="
2615 out "/lib" "\"]," line))))
2616 #t)))))
2617 (inputs
2618 `(("boost" ,boost)
2619 ("python-rdflib" ,python-rdflib)
2620 ("python" ,python)
2621 ("jack" ,jack-1)
2622 ("lv2" ,lv2)
2623 ("lilv" ,lilv)
2624 ("raul" ,raul-devel)
2625 ("ganv" ,ganv-devel)
2626 ("suil" ,suil)
2627 ("serd" ,serd)
2628 ("sord" ,sord)
2629 ("sratom" ,sratom)
2630 ("gtkmm" ,gtkmm-2)))
2631 (native-inputs
2632 `(("pkg-config" ,pkg-config)
2633 ("python-pygments" ,python-pygments)))
2634 (home-page "http://drobilla.net/software/ingen")
2635 (synopsis "Modular audio processing system")
2636 (description "Ingen is a modular audio processing system for JACK and
2637LV2 based systems. Ingen is built around LV2 technology and a strict
2638separation of engine from user interface. The engine is controlled
2639exclusively through a protocol, and can execute as a headless process, with an
2640in-process GUI, or as an LV2 plugin. The GUI can run as a program which
2641communicates over a Unix or TCP/IP socket, or as an embeddable LV2 GUI which
2642communicates via LV2 ports. Any saved Ingen graph can be loaded as an LV2
2643plugin on any system where Ingen is installed. This allows users to visually
2644develop custom plugins for use in other applications without programming.")
2645 (license license:agpl3+))))
2646
b3410b44
RW
2647(define-public qmidiarp
2648 (package
2649 (name "qmidiarp")
2650 (version "0.6.4")
2651 (source (origin
2652 (method url-fetch)
2653 (uri (string-append "mirror://sourceforge/qmidiarp/qmidiarp/"
2654 version "/qmidiarp-" version ".tar.bz2"))
2655 (sha256
2656 (base32
2657 "1gkfv8ajgf86kbn6j5ilfc1zlz17gdi9yxzywqd6jwff4xlm75hx"))))
2658 (build-system gnu-build-system)
2659 (arguments
2660 `(#:configure-flags
2661 (list "--enable-qt5"
2662 "CXXFLAGS=-std=gnu++11")))
2663 (inputs
2664 `(("qtbase" ,qtbase)
2665 ("alsa-lib" ,alsa-lib)
2666 ("jack" ,jack-1)
2667 ("liblo" ,liblo)
2668 ("lv2" ,lv2)))
2669 (native-inputs
2670 `(("pkg-config" ,pkg-config)
2671 ("qttools" ,qttools)))
2672 (home-page "http://qmidiarp.sourceforge.net/")
2673 (synopsis "MIDI arpeggiator")
2674 (description "QMidiArp is an advanced MIDI arpeggiator, programmable step
2675sequencer and LFO. It can hold any number of arpeggiator, sequencer, or LFO
2676modules running in parallel.")
2677 (license license:gpl2+)))
2678
5a66e25c
RW
2679(define-public seq24
2680 (package
2681 (name "seq24")
2682 (version "0.9.3")
2683 (source (origin
2684 (method url-fetch)
2685 (uri (string-append "https://launchpad.net/seq24/trunk/"
2686 version "/+download/seq24-"
2687 version ".tar.bz2"))
2688 (sha256
2689 (base32
2690 "12dphdhnvfk1k0vmagi1v2lhyxjyj1j3cz6ksjw0ydcvid1x8ap2"))
2691 (patches (search-patches "seq24-rename-mutex.patch"))))
2692 (build-system gnu-build-system)
2693 (arguments
2694 `(#:configure-flags
2695 (list "CXXFLAGS=-std=gnu++11")))
2696 (inputs
2697 `(("gtkmm" ,gtkmm-2)
2698 ("alsa-lib" ,alsa-lib)
2699 ("jack" ,jack-1)
2700 ("lash" ,lash)))
2701 (native-inputs
2702 `(("pkg-config" ,pkg-config)))
2703 (home-page "https://edge.launchpad.net/seq24/")
2704 (synopsis "Real-time MIDI sequencer")
2705 (description "Seq24 is a real-time MIDI sequencer. It was created to
2706provide a very simple interface for editing and playing MIDI loops.")
2707 (license license:gpl2+)))
2708
d3db5efb
LF
2709(define-public python-discogs-client
2710 (package
2711 (name "python-discogs-client")
2712 (version "2.2.1")
2713 (source (origin
2714 (method url-fetch)
2715 (uri (pypi-uri "discogs-client" version))
2716 (sha256
2717 (base32
2718 "053ld2psh0yj3z0kg6z5bn4y3cr562m727494n0ayhgzbkjbacly"))))
2719 (build-system python-build-system)
2720 (propagated-inputs
2721 `(("python-oauthlib" ,python-oauthlib)
2722 ("python-requests" ,python-requests)))
2723 (native-inputs
2724 `(("python-six" ,python-six)))
2725 (home-page "https://github.com/discogs/discogs_client")
2726 (synopsis "Official Python client for the Discogs API")
2727 (description "This is the official Discogs API client for Python. It enables
2728you to query the Discogs database for information on artists, releases, labels,
2729users, Marketplace listings, and more. It also supports OAuth 1.0a
2730authorization, which allows you to change user data such as profile information,
2731collections and wantlists, inventory, and orders.")
80983df3 2732 (license license:bsd-2)))
d3db5efb
LF
2733
2734(define-public python2-discogs-client
80983df3 2735 (package-with-python2 python-discogs-client))