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