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