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