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