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