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