gnu: emacs-xelb: Update to 0.18.
[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>
6ec95a00 3;;; Copyright © 2015, 2016, 2017, 2018, 2019 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>
e42ba3da 7;;; Copyright © 2016, 2018 Leo Famulari <leo@famulari.name>
72385c34 8;;; Copyright © 2016, 2017, 2019 Kei Kebreau <kkebreau@posteo.net>
6d3ef286 9;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net>
23319ed6 10;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
47956fa0 11;;; Copyright © 2017 ng0 <ng0@n0.is>
a42619e5 12;;; Copyright © 2017 Rodger Fox <thylakoid@openmailbox.org>
8204ec8d 13;;; Copyright © 2017, 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
d09e31bd 14;;; Copyright © 2017, 2018 Pierre Langlois <pierre.langlois@gmx.com>
bc27eb3b 15;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
4fa37ce2 16;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
6b445c57 17;;; Copyright © 2018 nee <nee.git@hidamari.blue>
b0dea60c 18;;; Copyright © 2018 Stefan Reichör <stefan@xsteve.at>
4715f92e 19;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
b0c2c5ab 20;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
e029d90f 21;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
1331a6c0 22;;; Copyright © 2019 Gabriel Hondet <gabrielhondet@gmail.com>
455e6a31 23;;; Copyright © 2019 Timotej Lazar <timotej.lazar@araneo.si>
4ee2cce3 24;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.lonestar.org>
7fcc2f93 25;;; Copyright © 2019 raingloom <raingloom@protonmail.com>
1b6826d3
RW
26;;;
27;;; This file is part of GNU Guix.
28;;;
29;;; GNU Guix is free software; you can redistribute it and/or modify it
30;;; under the terms of the GNU General Public License as published by
31;;; the Free Software Foundation; either version 3 of the License, or (at
32;;; your option) any later version.
33;;;
34;;; GNU Guix is distributed in the hope that it will be useful, but
35;;; WITHOUT ANY WARRANTY; without even the implied warranty of
36;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
37;;; GNU General Public License for more details.
38;;;
39;;; You should have received a copy of the GNU General Public License
40;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
41
42(define-module (gnu packages music)
43 #:use-module (guix utils)
44 #:use-module (guix packages)
45 #:use-module (guix download)
8e80244a 46 #:use-module (guix git-download)
1b6826d3
RW
47 #:use-module ((guix licenses) #:prefix license:)
48 #:use-module (guix build-system gnu)
f467c352 49 #:use-module (guix build-system ant)
8b9ec354 50 #:use-module (guix build-system cmake)
2394afa4 51 #:use-module (guix build-system meson)
b0c2c5ab 52 #:use-module (guix build-system perl)
821664f1 53 #:use-module (guix build-system python)
bc27eb3b 54 #:use-module (guix build-system scons)
58301682 55 #:use-module (guix build-system glib-or-gtk)
8e80244a 56 #:use-module (guix build-system waf)
87d1b7b0 57 #:use-module (guix build-system trivial)
5703380b 58 #:use-module (guix build-system go)
1b6826d3 59 #:use-module (gnu packages)
7f559045 60 #:use-module (gnu packages admin)
ddfddb0c 61 #:use-module (gnu packages algebra)
91595624 62 #:use-module (gnu packages apr)
c267cc15 63 #:use-module (gnu packages audio)
2d0fd07b 64 #:use-module (gnu packages autotools)
b7367762 65 #:use-module (gnu packages backup)
8b9ec354 66 #:use-module (gnu packages base) ;libbdf
7bac8196 67 #:use-module (gnu packages bash)
1b6826d3 68 #:use-module (gnu packages bison)
b7367762 69 #:use-module (gnu packages boost)
e8069d01 70 #:use-module (gnu packages cdrom)
8b9ec354
RW
71 #:use-module (gnu packages code)
72 #:use-module (gnu packages check)
a7a7186c 73 #:use-module (gnu packages cmake)
8b9ec354 74 #:use-module (gnu packages compression)
d20b7384 75 #:use-module (gnu packages crypto)
aa0edd3f 76 #:use-module (gnu packages curl)
13416a10 77 #:use-module (gnu packages cyrus-sasl)
d20b7384 78 #:use-module (gnu packages datastructures)
1b6826d3 79 #:use-module (gnu packages docbook)
99828fa7 80 #:use-module (gnu packages documentation)
91595624 81 #:use-module (gnu packages emacs)
13416a10 82 #:use-module (gnu packages file)
1b6826d3 83 #:use-module (gnu packages flex)
8e80244a 84 #:use-module (gnu packages fltk)
1b6826d3
RW
85 #:use-module (gnu packages fonts)
86 #:use-module (gnu packages fontutils)
3bf429af 87 #:use-module (gnu packages freedesktop)
72385c34 88 #:use-module (gnu packages game-development)
6260d1a8 89 #:use-module (gnu packages gcc)
aa0edd3f 90 #:use-module (gnu packages gnupg)
1b6826d3
RW
91 #:use-module (gnu packages gettext)
92 #:use-module (gnu packages ghostscript)
ec8da0e2 93 #:use-module (gnu packages gl)
8e80244a 94 #:use-module (gnu packages glib)
c267cc15 95 #:use-module (gnu packages gnome)
a9f847ad 96 #:use-module (gnu packages gpodder)
770305f4 97 #:use-module (gnu packages graphics)
d20b7384 98 #:use-module (gnu packages gstreamer)
1b6826d3
RW
99 #:use-module (gnu packages gtk)
100 #:use-module (gnu packages guile)
7f559045 101 #:use-module (gnu packages haskell)
c267cc15 102 #:use-module (gnu packages image)
1b6826d3 103 #:use-module (gnu packages imagemagick)
6260d1a8 104 #:use-module (gnu packages java)
91595624 105 #:use-module (gnu packages libffi)
d20b7384 106 #:use-module (gnu packages libusb)
7bac8196
LF
107 #:use-module (gnu packages linux) ; for alsa-utils
108 #:use-module (gnu packages lirc)
91595624 109 #:use-module (gnu packages llvm)
c267cc15
RW
110 #:use-module (gnu packages man)
111 #:use-module (gnu packages mp3)
3bf429af 112 #:use-module (gnu packages mpd)
e8069d01 113 #:use-module (gnu packages ncurses)
1b6826d3 114 #:use-module (gnu packages netpbm)
91595624 115 #:use-module (gnu packages pcre)
821664f1 116 #:use-module (gnu packages pdf)
1b6826d3 117 #:use-module (gnu packages perl)
b2961dda 118 #:use-module (gnu packages perl-web)
1b6826d3 119 #:use-module (gnu packages pkg-config)
d20b7384 120 #:use-module (gnu packages protobuf)
d231bb35 121 #:use-module (gnu packages pulseaudio) ;libsndfile
1b6826d3 122 #:use-module (gnu packages python)
1b2f753d 123 #:use-module (gnu packages python-web)
44d10b1f 124 #:use-module (gnu packages python-xyz)
8b9ec354 125 #:use-module (gnu packages qt)
d231bb35 126 #:use-module (gnu packages rdf)
c493679f 127 #:use-module (gnu packages readline)
1b6826d3 128 #:use-module (gnu packages rsync)
21d18113 129 #:use-module (gnu packages sdl)
cd0322a3 130 #:use-module (gnu packages sqlite)
2d0fd07b 131 #:use-module (gnu packages tcl)
1b6826d3 132 #:use-module (gnu packages texinfo)
8f9ac901 133 #:use-module (gnu packages tex)
4ee2cce3 134 #:use-module (gnu packages time)
13416a10 135 #:use-module (gnu packages tls)
1ea29aa0 136 #:use-module (gnu packages version-control)
e8069d01 137 #:use-module (gnu packages video)
8b9ec354 138 #:use-module (gnu packages web)
c30a66de 139 #:use-module (gnu packages wxwidgets)
c267cc15 140 #:use-module (gnu packages xml)
ddfddb0c 141 #:use-module (gnu packages xorg)
c267cc15 142 #:use-module (gnu packages xiph)
5703380b
PN
143 #:use-module (gnu packages golang)
144 #:use-module (gnu packages lua)
2d0fd07b 145 #:use-module ((srfi srfi-1) #:select (last)))
1b6826d3 146
c30a66de
RW
147(define-public aria-maestosa
148 (package
149 (name "aria-maestosa")
0a151351 150 (version "1.4.13")
c30a66de
RW
151 (source (origin
152 (method url-fetch)
153 (uri (string-append "mirror://sourceforge/ariamaestosa/ariamaestosa/"
154 version "/AriaSrc-" version ".tar.bz2"))
155 (sha256
156 (base32
0a151351 157 "1cs3z6frx2ch7rm5ammx9p0rxcjrbj1vq14hvcbimpaw39rdsn3d"))))
30812446 158 (build-system scons-build-system)
c30a66de
RW
159 (arguments
160 `(#:tests? #f ;no tests
20e42d1e
DM
161 #:scons-flags
162 (list (string-append "prefix=" (assoc-ref %outputs "out")))
30812446 163 #:scons ,scons-python2
c30a66de 164 #:phases
c30a66de
RW
165 (modify-phases %standard-phases
166 (delete 'configure)
167 (add-after 'unpack 'scons-propagate-environment
168 (lambda _
169 ;; By design, SCons does not, by default, propagate
170 ;; environment variables to subprocesses. See:
171 ;; <http://comments.gmane.org/gmane.linux.distributions.nixos/4969>
172 ;; Here, we modify the SConstruct file to arrange for
173 ;; environment variables to be propagated.
174 (substitute* "SConstruct"
175 (("env = Environment\\(\\)")
176 "env = Environment(ENV=os.environ)")
177 ;; Scons errors out when copying subdirectories from Resources,
178 ;; so we move them instead.
179 (("Copy") "Move")
180 ;; We move the "score" and "Documentation" directories at once,
181 ;; so we have to ignore files contained therein.
182 (("if \".svn\" in file" line)
183 (string-append line
184 " or \"score/\" in file"
185 " or \"Documentation/\" in file")))
186 #t))
30812446 187 (add-after 'install 'fix-directory-permissions
c30a66de
RW
188 (lambda* (#:key outputs #:allow-other-keys)
189 (let ((out (assoc-ref outputs "out")))
30812446
DM
190 (chmod (string-append out "/share/Aria/Documentation") #o555)
191 (chmod (string-append out "/share/Aria/score") #o555)
192 #t))))))
c30a66de
RW
193 (inputs
194 `(("wxwidgets" ,wxwidgets)
195 ("glib" ,glib)
196 ("alsa-lib" ,alsa-lib)))
197 (native-inputs
30812446 198 `(("pkg-config" ,pkg-config)))
c30a66de
RW
199 (home-page "http://ariamaestosa.sourceforge.net/")
200 (synopsis "MIDI sequencer and editor")
201 (description
202 "Aria Maestosa is a MIDI sequencer and editor. It lets you compose, edit
203and play MIDI files with a few clicks in a user-friendly interface offering
204score, keyboard, guitar, drum and controller views.")
205 (license license:gpl3+)))
206
d20b7384
PL
207;; We don't use the latest release because it depends on Qt4. Instead we
208;; download the sources from the tip of the "qt5" branch.
209(define-public clementine
8a6d16b8
PL
210 (let ((commit "4619a4c1ab3b17b13d4b2327ad477912917eaf36")
211 (revision "2"))
d20b7384
PL
212 (package
213 (name "clementine")
8a6d16b8 214 (version (git-version "1.3.1" revision commit))
d20b7384
PL
215 (source (origin
216 (method git-fetch)
217 (uri (git-reference
218 (url "https://github.com/clementine-player/Clementine.git")
219 (commit commit)))
8a6d16b8 220 (file-name (git-file-name name version))
d20b7384
PL
221 (sha256
222 (base32
8a6d16b8 223 "1hximk3q0p8nw8is5w7215xgkb7k4flnfyr0pdz9svfwvcm05w1i"))
d20b7384
PL
224 (modules '((guix build utils)))
225 (snippet
6cbee49d
MW
226 '(begin
227 (for-each
d20b7384
PL
228 (lambda (dir)
229 (delete-file-recursively
6cbee49d 230 (string-append "3rdparty/" dir)))
d20b7384 231 (list
6cbee49d
MW
232 ;; TODO: The following dependencies are still bundled:
233 ;; - "qxt": Appears to be unmaintained upstream.
234 ;; - "qsqlite"
235 ;; - "qtsingleapplication"
236 ;; - "qocoa"
237 ;; - "qtiocompressor"
238 ;; - "gmock": The tests crash when using our googletest
239 ;; package instead of the bundled gmock.
240 "SPMediaKeyTap"
241 "fancytabwidget"
242 "google-breakpad"
243 "libmygpo-qt"
244 "libmygpo-qt5"
245 "libprojectm"
246 "qtwin"
247 "sha2" ;; Replaced by openssl.
248 "taglib"
249 "tinysvcmdns"))
250 #t))
af414f34 251 (patches (search-patches "clementine-use-openssl.patch"
7bcc3405
PL
252 "clementine-remove-crypto++-dependency.patch"
253 "clementine-fix-sqlite.patch"))))
d20b7384
PL
254 (build-system cmake-build-system)
255 (arguments
256 '(#:test-target "clementine_test"
257 #:configure-flags
af414f34
PL
258 (list ;; Requires unpackaged "projectm"
259 "-DENABLE_VISUALISATIONS=OFF"
260 ;; Otherwise it may try to download a non-free library at run-time.
261 ;; TODO In an origin snippet, remove the code that performs the
262 ;; download.
263 "-DHAVE_SPOTIFY_DOWNLOADER=FALSE"
264 "-DUSE_SYSTEM_SHA2=TRUE")
d20b7384
PL
265 #:phases
266 (modify-phases %standard-phases
267 (add-after 'install 'wrap-program
268 (lambda* (#:key inputs outputs #:allow-other-keys)
269 (let ((out (assoc-ref outputs "out"))
270 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
271 (wrap-program (string-append out "/bin/clementine")
272 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path)))
273 #t))))))
274 (native-inputs
275 `(("gettext" ,gettext-minimal)
276 ("pkg-config" ,pkg-config)
277 ("qtlinguist" ,qttools)))
278 (inputs
279 `(("boost" ,boost)
280 ("chromaprint" ,chromaprint)
d20b7384
PL
281 ("fftw" ,fftw)
282 ("glib" ,glib)
283 ("glu" ,glu)
284 ("gstreamer" ,gstreamer)
285 ("gst-plugins-base" ,gst-plugins-base)
8473f802
LF
286 ("gst-plugins-good" ,gst-plugins-good)
287 ("gst-libav" ,gst-libav)
d20b7384
PL
288 ("libcdio" ,libcdio)
289 ("libmygpo-qt" ,libmygpo-qt)
d20b7384
PL
290 ;; TODO: Package libgpod.
291 ("libmtp" ,libmtp)
292 ("libxml2" ,libxml2)
293 ("openssl" ,openssl)
294 ("protobuf" ,protobuf)
295 ("pulseaudio" ,pulseaudio)
296 ("qtbase" ,qtbase)
297 ("qtx11extras" ,qtx11extras)
f09e8abc 298 ("sqlite" ,sqlite-with-column-metadata)
d20b7384
PL
299 ("sparsehash" ,sparsehash)
300 ("taglib" ,taglib)))
88491097 301 (home-page "https://clementine-player.org")
d20b7384
PL
302 (synopsis "Music player and library organizer")
303 (description "Clementine is a multiplatform music player. It is inspired
304by Amarok 1.4, focusing on a fast and easy-to-use interface for searching and
305playing your music.")
306 (license (list
307 ;; clementine and qtiocompressor are under GPLv3.
308 license:gpl3+
309 ;; gmock is under BSD-3.
310 license:bsd-3
311 ;; qxt is under CPL1.0.
312 license:cpl1.0
313 ;; qsqlite and qtsingleapplication are under LGPL2.1+.
314 license:lgpl2.1+
315 ;; qocoa is under MIT and CC by-sa for the icons.
316 license:cc-by-sa3.0)))))
317
e8069d01
PW
318(define-public cmus
319 (package
320 (name "cmus")
455e6a31 321 (version "2.8.0")
e8069d01 322 (source (origin
4e829468
RW
323 (method git-fetch)
324 (uri (git-reference
325 (url "https://github.com/cmus/cmus.git")
326 (commit (string-append "v" version))))
327 (file-name (git-file-name name version))
e8069d01
PW
328 (sha256
329 (base32
455e6a31 330 "1ydnvq13ay8b8mfmmgwi5qsgyf220yi1d01acbnxqn775dghmwar"))))
e8069d01
PW
331 (build-system gnu-build-system)
332 (arguments
333 `(#:tests? #f ; cmus does not include tests
334 #:phases
335 (modify-phases %standard-phases
ec618c20
RW
336 (replace 'configure
337 (lambda* (#:key outputs #:allow-other-keys)
338 (let ((out (assoc-ref outputs "out")))
339 ;; It's an idiosyncratic configure script that doesn't
340 ;; understand --prefix=..; it wants prefix=.. instead.
341 (invoke "./configure"
342 (string-append "prefix=" out))
343 #t))))))
e8069d01
PW
344 ;; TODO: cmus optionally supports the following formats, which haven't yet
345 ;; been added to Guix:
346 ;;
347 ;; - Roar, libroar
348 ;;
349 ;; - DISCID_LIBS, apparently different from cd-discid which is included in
350 ;; Guix. See <http://sourceforge.net/projects/discid/>
351 (native-inputs
352 `(("pkg-config" ,pkg-config)))
353 (inputs
354 `(("alsa-lib" ,alsa-lib)
355 ("ao" ,ao)
9d34cc13 356 ("faad2" ,faad2)
e8069d01
PW
357 ("ffmpeg" ,ffmpeg)
358 ("flac" ,flac)
359 ("jack" ,jack-1)
360 ("libcddb" ,libcddb)
361 ("libcdio-paranoia" ,libcdio-paranoia)
362 ("libcue" ,libcue)
363 ("libmad" ,libmad)
364 ("libmodplug" ,libmodplug)
365 ("libmpcdec" ,libmpcdec)
366 ("libsamplerate" ,libsamplerate)
367 ("libvorbis" ,libvorbis)
368 ("ncurses" ,ncurses)
369 ("opusfile" ,opusfile)
370 ("pulseaudio" ,pulseaudio)
371 ("wavpack" ,wavpack)))
372 (home-page "https://cmus.github.io/")
373 (synopsis "Small console music player")
374 (description "Cmus is a small and fast console music player. It supports
375many input formats and provides a customisable Vi-style user interface.")
376 (license license:gpl2+)))
377
edd1652e
KK
378(define-public denemo
379 (package
380 (name "denemo")
6ff5e9ba 381 (version "2.1")
edd1652e
KK
382 (source (origin
383 (method url-fetch)
384 (uri (string-append "mirror://gnu/denemo/denemo-"
385 version ".tar.gz"))
386 (sha256
387 (base32
6ff5e9ba 388 "0hggf8c4xcrjcxd5m00r788r7jg7g8ff54w2idfaqpj5j2ix3299"))))
edd1652e
KK
389 (build-system gnu-build-system)
390 (arguments
391 `(#:phases
392 (modify-phases %standard-phases
393 (replace 'check
394 ;; Denemo's documentation says to use this command to run its
395 ;; testsuite.
396 (lambda _
f6181921 397 (invoke "make" "-C" "tests" "check")))
b43ec33b
KK
398 (add-before 'build 'set-lilypond
399 ;; This phase sets the default path for lilypond to its current
400 ;; location in the store.
401 (lambda* (#:key inputs #:allow-other-keys)
402 (let* ((lilypond (string-append (assoc-ref inputs "lilypond")
403 "/bin/lilypond")))
404 (substitute* "src/core/prefops.c"
405 (("g_string_new \\(\"lilypond\"\\);")
406 (string-append "g_string_new (\""
407 lilypond
408 "\");"))))
409 #t))
edd1652e
KK
410 (add-after 'install 'correct-filename
411 ;; "graft-derivation/shallow" from the (guix grafts) module runs in
412 ;; the C locale, expecting file names to be ASCII encoded. This
413 ;; phase renames a filename with a Unicode character in it to meet
414 ;; the aforementioned condition.
415 (lambda* (#:key outputs #:allow-other-keys)
416 (let* ((out (assoc-ref outputs "out")))
417 (chdir (string-append
418 out
419 "/share/denemo/templates/instruments/woodwind"))
420 (rename-file "Clarinet in B♭.denemo"
421 "Clarinet in Bb.denemo"))
422 #t)))))
423 (native-inputs
f6181921 424 `(("glib:bin" ,glib "bin") ; for gtester
edd1652e
KK
425 ("pkg-config" ,pkg-config)))
426 (inputs
427 `(("alsa-lib" ,alsa-lib)
428 ("aubio" ,aubio)
429 ("evince" ,evince)
430 ("fftw" ,fftw)
431 ("fluidsynth" ,fluidsynth)
432 ("glib" ,glib)
433 ("gtk+" ,gtk+)
434 ("gtk-doc" ,gtk-doc)
6bf79532 435 ("gtksourceview" ,gtksourceview-3)
edd1652e
KK
436 ("guile" ,guile-2.0)
437 ("intltool" ,intltool)
438 ("librsvg" ,librsvg)
439 ("libsndfile" ,libsndfile)
440 ("libtool" ,libtool)
441 ("libxml2" ,libxml2)
c695fb76 442 ("lilypond" ,lilypond)
edd1652e
KK
443 ("portaudio" ,portaudio)
444 ("portmidi" ,portmidi)
445 ("rubberband" ,rubberband)))
edd1652e
KK
446 (synopsis "Graphical music notation, front-end to GNU Lilypond")
447 (description
448 "GNU Denemo is a music notation editor that provides a convenient
449interface to the powerful music engraving program Lilypond. Music can be
450typed in using the computer keyboard, played in using a MIDI keyboard, or
451even input via a microphone connected to the sound card. The final product
452is publication-quality music notation that is continuously generated in the
453background while you work.")
454 (home-page "http://www.denemo.org")
455 (license license:gpl3+)))
456
72385c34
KK
457(define-public dumb
458 (package
459 (name "dumb")
460 (version "2.0.3")
461 (source
462 (origin
463 (method git-fetch)
464 (uri (git-reference
465 (url "https://github.com/kode54/dumb.git")
466 (commit version)))
467 (sha256
468 (base32 "1cnq6rb14d4yllr0yi32p9jmcig8avs3f43bvdjrx4r1mpawspi6"))
469 (file-name (git-file-name name version))))
470 (build-system cmake-build-system)
471 (arguments
472 '(#:tests? #f ; no check target
473 #:configure-flags
474 (list "-DBUILD_SHARED_LIBS=ON"
475 "-DBUILD_EXAMPLES=OFF")))
476 (home-page "https://github.com/kode54/dumb")
477 (synopsis "Module audio renderer library")
478 (description
479 "DUMB is a tracker library with support for IT, XM, S3M and MOD files. It
480targets maximum accuracy to the original formats, with low-pass resonant filters
481for the IT files, accurate timing and pitching, and three resampling quality
482settings (aliasing, linear interpolation and cubic interpolation).")
483 ;; The DUMB license is a bit peculiar.
484 ;; Clause 8 states that clauses 4, 5 and 6 are null and void, leaving only
485 ;; the first three clauses for genuine consideration.
486 ;; Clauses 1, 2 and 3 are analogous to clauses 1, 2 and 3 of the zlib
487 ;; license, a known free software license.
488 ;; Therefore, the DUMB license may be considered a free software license.
489 (license (license:fsf-free "file://LICENSE"))))
490
d61dcb1b
KK
491(define-public dumb-allegro4
492 (package
493 (inherit dumb)
494 (name "dumb-allegro4")
495 (arguments
496 (substitute-keyword-arguments (package-arguments dumb)
497 ((#:configure-flags flags)
498 `(cons "-DBUILD_ALLEGRO4=ON" ,flags))))
499 (inputs
500 `(("allegro" ,allegro-4)))))
501
d231bb35
RW
502(define-public hydrogen
503 (package
504 (name "hydrogen")
80808d67 505 (version "1.0.0-beta1")
d231bb35 506 (source (origin
80808d67
RW
507 (method git-fetch)
508 (uri (git-reference
509 (url "https://github.com/hydrogen-music/hydrogen.git")
510 (commit version)))
511 (file-name (string-append name "-" version "-checkout"))
d231bb35
RW
512 (sha256
513 (base32
80808d67 514 "0nv83l70j5bjz2wd6n3a8cq3bmgrvdvg6g2hjhc1g5h6xnbqsh9x"))))
b7367762 515 (build-system cmake-build-system)
d231bb35 516 (arguments
80808d67
RW
517 `(#:test-target "tests"
518 #:phases
519 (modify-phases %standard-phases
520 (add-after 'unpack 'fix-data-directory
521 (lambda* (#:key outputs #:allow-other-keys)
522 (substitute* "CMakeLists.txt"
523 (("/usr/share/pixmaps")
524 (string-append (assoc-ref outputs "out")
525 "/share/pixmaps")))
526 #t)))))
d231bb35 527 (native-inputs
b7367762 528 `(("cppunit" ,cppunit)
d231bb35
RW
529 ("pkg-config" ,pkg-config)))
530 (inputs
b7367762 531 `(("alsa-lib" ,alsa-lib)
d231bb35 532 ("jack" ,jack-1)
b7367762 533 ;; ("ladspa" ,ladspa) ; cannot find during configure
d231bb35 534 ("lash" ,lash)
b7367762
EF
535 ("libarchive" ,libarchive)
536 ("libsndfile" ,libsndfile)
537 ("libtar" ,libtar)
538 ("lrdf" ,lrdf)
80808d67
RW
539 ("qtbase" ,qtbase)
540 ("qtxmlpatterns" ,qtxmlpatterns)
b7367762 541 ("zlib" ,zlib)))
d231bb35
RW
542 (home-page "http://www.hydrogen-music.org")
543 (synopsis "Drum machine")
544 (description
545 "Hydrogen is an advanced drum machine for GNU/Linux. Its main goal is to
546enable professional yet simple and intuitive pattern-based drum programming.")
547 (license license:gpl2+)))
548
58301682
PL
549(define-public easytag
550 (package
551 (name "easytag")
552 (version "2.4.3")
553 (source (origin
554 (method url-fetch)
555 (uri (string-append "mirror://gnome/sources/easytag/2.4/easytag-"
556 version ".tar.xz"))
557 (sha256
558 (base32
559 "1mbxnqrw1fwcgraa1bgik25vdzvf97vma5pzknbwbqq5ly9fwlgw"))))
560 (build-system glib-or-gtk-build-system)
561 (native-inputs
562 `(("desktop-file-utils" ,desktop-file-utils)
563 ("glib" ,glib "bin")
564 ("intltool" ,intltool)
565 ("itstool" ,itstool)
566 ("pkg-config" ,pkg-config)
567 ("xmllint" ,libxml2)))
568 (inputs
569 `(("flac" ,flac)
570 ("gtk+" ,gtk+)
571 ("id3lib" ,id3lib)
572 ("libid3tag" ,libid3tag)
573 ("libvorbis" ,libvorbis)
574 ("opusfile" ,opusfile)
575 ("speex" ,speex)
576 ("taglib" ,taglib)
577 ("wavpack" ,wavpack)
578 ("yelp" ,yelp)))
579 (arguments
580 '(#:phases
581 (modify-phases %standard-phases
582 (add-before 'configure 'configure-libid3tag
583 (lambda* (#:key inputs #:allow-other-keys)
584 ;; libid3tag does not provide a .pc file and EasyTAG's configure
585 ;; script healivy relies on pkg-config. Providing a temporary
586 ;; local .pc file is easier than patching the configure script.
587 (let* ((libid3tag (assoc-ref inputs "libid3tag")))
588 (mkdir-p "pkgconfig")
589 (with-output-to-file
590 "pkgconfig/id3tag.pc"
591 (lambda _
592 (format #t
593 "prefix=~@*~a~@
594 libdir=${prefix}/lib~@
595 includedir=${prefix}/include~@
596 Libs: -L${libdir} -lid3tag -lz~@
597 Cflags: -I${includedir}~%"
598 libid3tag)))
599 (setenv "PKG_CONFIG_PATH"
600 (string-append (getenv "PKG_CONFIG_PATH")
601 ":" (getcwd) "/pkgconfig")))))
602 (add-after 'unpack 'patch-makefile
603 (lambda _
604 (substitute* "Makefile.in"
605 ;; The Makefile generates a test-desktop-file-validate.sh
606 ;; script with /bin/sh hard-coded.
607 (("/bin/sh") (which "sh"))
608 ;; Don't create 'icon-theme.cache'.
609 (("gtk-update-icon-cache") "true")))))))
610 (home-page "https://wiki.gnome.org/Apps/EasyTAG")
611 (synopsis "Simple application for viewing and editing tags in audio files")
612 (description
613 "EasyTAG is an application for viewing and editing tags in audio files.
614It supports MP3, MP2, MP4/AAC, FLAC, Ogg Opus, Ogg Speex, Ogg Vorbis,
615MusePack, Monkey's Audio, and WavPack files.")
616 (license license:gpl2+)))
617
91595624
RW
618(define-public extempore
619 (package
620 (name "extempore")
621 (version "0.7.0")
622 (source (origin
8b0f6917
RW
623 (method git-fetch)
624 (uri (git-reference
625 (url "https://github.com/digego/extempore.git")
626 (commit version)))
91595624
RW
627 (sha256
628 (base32
8b0f6917
RW
629 "12fsp7zkfxb9kykwq46l88kcbbici9arczrrsl4qn87m6vm5349l"))
630 (file-name (string-append name "-" version "-checkout"))))
91595624
RW
631 (build-system cmake-build-system)
632 (arguments
633 `(;; The default target also includes ahead-of-time compilation of the
634 ;; standard libraries. However, during the "install" phase this would
635 ;; happen *again* for unknown reasons. Hence we only build the
636 ;; extempore executable during the build phase.
637 #:make-flags '("extempore")
638 #:configure-flags '("-DJACK=ON"
639 ;; We want to distribute.
640 "-DIN_TREE=OFF"
641 ;; Don't download any dependencies.
642 "-DBUILD_DEPS=OFF")
643 #:modules ((ice-9 match)
644 (guix build cmake-build-system)
645 (guix build utils))
646 #:phases
647 (modify-phases %standard-phases
648 (add-after 'unpack 'patch-directories
649 (lambda* (#:key outputs #:allow-other-keys)
650 ;; Rewrite default path to runtime directory
651 (substitute* "src/Extempore.cpp"
652 (("runtimedir \\+= \"runtime\"")
653 (string-append "runtimedir = \""
654 (assoc-ref outputs "out")
655 "/lib/extempore/runtime\"")))
656 (substitute* "extras/extempore.el"
657 (("\\(runtime-directory \\(concat default-directory \"runtime\"\\)\\)")
658 (string-append "(runtime-directory \""
659 (assoc-ref outputs "out")
660 "/lib/extempore/runtime"
661 "\")")))
662 #t))
663 (add-after 'unpack 'link-with-additional-libs
664 (lambda _
665 ;; The executable must be linked with libffi and zlib.
666 (substitute* "CMakeLists.txt"
667 (("add_dependencies\\(aot_extended extended_deps\\)") "")
668 (("target_link_libraries\\(extempore PRIVATE dl" line)
669 (string-append line " ffi z")))
670 #t))
671 ;; FIXME: AOT compilation of the nanovg bindings fail with the error:
672 ;; "Compiler Error could not bind _nvgLinearGradient"
673 (add-after 'unpack 'disable-nanovg
674 (lambda _
675 (substitute* "CMakeLists.txt"
676 (("aotcompile_lib\\(libs/external/nanovg.xtm.*") ""))
677 #t))
678 ;; FIXME: All examples that are used as tests segfault for some
679 ;; unknown reason.
680 (add-after 'unpack 'disable-broken-tests
681 (lambda _
682 (substitute* "CMakeLists.txt"
683 (("extempore_add_example_as_test\\(.*") ""))
684 #t))
685 (add-after 'unpack 'hardcode-external-lib-paths
686 (lambda* (#:key inputs #:allow-other-keys)
687 (use-modules (ice-9 match))
688 (for-each
689 (match-lambda
690 ((file-name lib pkg-name)
691 (substitute* (string-append "libs/external/" file-name ".xtm")
692 ((lib) (string-append (assoc-ref inputs pkg-name)
693 "/lib/" lib)))))
694 '(("assimp" "libassimp.so" "assimp")
695 ("portmidi" "libportmidi.so" "portmidi")
696 ("sndfile" "libsndfile.so" "libsndfile")
697 ("fft" "libkiss_fft.so" "kiss-fft")
698 ("stb_image" "libstb_image.so" "stb-image")
699 ("nanovg" "libnanovg.so" "nanovg")
700 ("glext" "libGL.so" "mesa")
701 ("glfw3" "libglfw.so" "glfw")
702 ("gl/glcore-directbind" "libGL.so" "mesa")
703 ("gl/glcompat-directbind" "libGL.so" "mesa")))
704 #t))
705 (add-after 'unpack 'use-own-llvm
706 (lambda* (#:key inputs #:allow-other-keys)
707 (setenv "EXT_LLVM_DIR" (assoc-ref inputs "llvm"))
708 ;; Our LLVM builds shared libraries, so Extempore should use
709 ;; those.
710 (substitute* "CMakeLists.txt"
711 (("CMAKE_STATIC_LIBRARY") "CMAKE_SHARED_LIBRARY"))
712 #t))
713 (add-after 'unpack 'fix-aot-compilation
714 (lambda* (#:key outputs #:allow-other-keys)
715 (substitute* "CMakeLists.txt"
716 ;; EXT_SHARE_DIR does not exist before installation, so the
717 ;; working directory should be the source directory instead.
718 (("WORKING_DIRECTORY \\$\\{EXT_SHARE_DIR\\}")
719 "WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}")
720 ;; Extempore needs to be told where the runtime is to be found.
721 ;; While we're at it we disable automatic tuning for a specific
722 ;; CPU to make binary substitution possible.
723 (("COMMAND extempore" prefix)
724 (string-append prefix " --sharedir " (getcwd)
725 " --mcpu=generic --attr=none")))
726 #t)))))
727 (inputs
728 `(("llvm" ,llvm-for-extempore)
729 ("libffi" ,libffi)
730 ("jack" ,jack-1)
731 ("libsndfile" ,libsndfile)
732 ("glfw" ,glfw)
733 ("apr" ,apr)
734 ("stb-image" ,stb-image-for-extempore)
735 ("kiss-fft" ,kiss-fft-for-extempore)
736 ("nanovg" ,nanovg-for-extempore)
737 ("portmidi" ,portmidi-for-extempore)
738 ("assimp" ,assimp)
739 ("alsa-lib" ,alsa-lib)
740 ("portaudio" ,portaudio)
741 ("mesa" ,mesa)
742 ("pcre" ,pcre)
743 ("zlib" ,zlib)))
744 (native-inputs
745 `(("perl" ,perl)
746 ("emacs" ,emacs-no-x)))
39162ee4
RW
747 ;; Extempore refuses to build on architectures other than x86_64
748 (supported-systems '("x86_64-linux"))
95708ed8 749 (home-page "http://digego.github.io/extempore/")
91595624
RW
750 (synopsis "Programming environment for live coding of multimedia")
751 (description
752 "Extempore is a programming language and runtime environment designed
753with live programming in mind. It supports interactive programming in a REPL
754style, compiling and binding code just-in-time. Although Extempore has its
755roots in 'live coding' of audiovisual media art, it is suitable for any task
756domain where dynamic run-time modifiability and good numerical performance are
757required. Extempore also has strong timing and concurrency semantics, which
758are helpful when working in problem spaces where timing is important (such as
759audio and video).")
760 (license license:bsd-2)))
761
8c454dcd
RW
762(define-public klick
763 (package
764 (name "klick")
765 (version "0.12.2")
766 (source (origin
767 (method url-fetch)
768 (uri (string-append "http://das.nasophon.de/download/klick-"
769 version ".tar.gz"))
770 (sha256
771 (base32
772 "0hmcaywnwzjci3pp4xpvbijnnwvibz7gf9xzcdjbdca910y5728j"))))
bc27eb3b 773 (build-system scons-build-system)
8c454dcd 774 (arguments
bc27eb3b 775 `(#:scons-flags (list (string-append "PREFIX=" %output))
ecc604ba 776 #:scons ,scons-python2
f00067db
RW
777 #:tests? #f ; no "check" target
778 #:phases
779 (modify-phases %standard-phases
780 (add-after 'unpack 'replace-removed-scons-syntax
781 (lambda _
782 (substitute* "SConstruct"
783 (("BoolOption") "BoolVariable")
784 (("PathOption") "PathVariable")
785 (("Options") "Variables"))
786 #t)))))
8c454dcd
RW
787 (inputs
788 `(("boost" ,boost)
789 ("jack" ,jack-1)
790 ("libsndfile" ,libsndfile)
791 ("libsamplerate" ,libsamplerate)
792 ("liblo" ,liblo)
793 ("rubberband" ,rubberband)))
794 (native-inputs
bc27eb3b 795 `(("pkg-config" ,pkg-config)))
8c454dcd
RW
796 (home-page "http://das.nasophon.de/klick/")
797 (synopsis "Metronome for JACK")
798 (description
799 "klick is an advanced command-line based metronome for JACK. It allows
800you to define complex tempo maps for entire songs or performances.")
801 (license license:gpl2+)))
802
048bfba1
RW
803(define-public gtklick
804 (package
805 (name "gtklick")
806 (version "0.6.4")
807 (source (origin
808 (method url-fetch)
809 (uri (string-append "http://das.nasophon.de/download/gtklick-"
810 version ".tar.gz"))
811 (sha256
812 (base32
813 "0dq1km6njnzsqdqyf6wzir9g733z0mc9vmxfg2383k3c2a2di6bp"))))
814 (build-system python-build-system)
815 (arguments
816 `(#:tests? #f ; no tests
817 #:python ,python-2
818 #:phases
819 (modify-phases %standard-phases
820 (add-before 'build 'add-sitedirs
821 ;; .pth files are not automatically interpreted unless the
822 ;; directories containing them are added as "sites". The directories
823 ;; are then added to those in the PYTHONPATH. This is required for
824 ;; the operation of pygtk.
825 (lambda _
826 (substitute* "gtklick/gtklick.py"
827 (("import pygtk")
828 "import pygtk, site, sys
829for path in [path for path in sys.path if 'site-packages' in path]: site.addsitedir(path)"))))
830 (add-after 'unpack 'inject-store-path-to-klick
831 (lambda* (#:key inputs #:allow-other-keys)
832 (substitute* "gtklick/klick_backend.py"
833 (("KLICK_PATH = 'klick'")
834 (string-append "KLICK_PATH = '"
835 (assoc-ref inputs "klick")
836 "/bin/klick'")))
837 #t)))))
838 (inputs
839 `(("klick" ,klick)
840 ("python2-pyliblo" ,python2-pyliblo)
841 ("python2-pygtk" ,python2-pygtk)))
842 (native-inputs
b94a6ca0 843 `(("gettext" ,gettext-minimal)))
048bfba1
RW
844 (home-page "http://das.nasophon.de/gtklick/")
845 (synopsis "Simple metronome with an easy-to-use graphical interface")
846 (description
847 "Gtklick is a simple metronome with an easy-to-use graphical user
848interface. It is implemented as a frontend to @code{klick}.")
849 (license license:gpl2+)))
850
a3b10217
KK
851(define-public libgme
852 (package
853 (name "libgme")
21f5f351 854 (version "0.6.2")
a3b10217
KK
855 (source (origin
856 (method url-fetch)
857 (uri (string-append "https://bitbucket.org/mpyne/game-music-emu/"
858 "downloads/game-music-emu-" version
21f5f351 859 ".tar.xz"))
a3b10217
KK
860 (sha256
861 (base32
21f5f351 862 "0hkkmxbaas2sirlb5i4r10mgbbiaapjx8pazifabwba23m3wnijh"))))
a3b10217
KK
863 (build-system cmake-build-system)
864 (arguments
865 '(#:tests? #f)) ; no check target
21f5f351
KK
866 (native-inputs
867 `(;; Use gcc-4.9 to work around an internal compiler error that happens
868 ;; when using gcc-5.5.0. FIXME: Try removing this when the default
869 ;; compiler is no longer gcc-5.5.0.
870 ("gcc" ,gcc-4.9)))
a3b10217
KK
871 (home-page "https://bitbucket.org/mpyne/game-music-emu")
872 (synopsis "Video game music file playback library")
873 (description
874 "Game-music-emu is a collection of video game music file emulators that
875support the following formats and systems:
876@table @code
877@item AY
878ZX Spectrum/Asmtrad CPC
879@item GBS
880Nintendo Game Boy
881@item GYM
882Sega Genesis/Mega Drive
883@item HES
884NEC TurboGrafx-16/PC Engine
885@item KSS
886MSX Home Computer/other Z80 systems (doesn't support FM sound)
887@item NSF/NSFE
888Nintendo NES/Famicom (with VRC 6, Namco 106, and FME-7 sound)
889@item SAP
890Atari systems using POKEY sound chip
891@item SPC
892Super Nintendo/Super Famicom
893@item VGM/VGZ
894Sega Master System/Mark III, Sega Genesis/Mega Drive, BBC Micro
895@end table")
896 (license (list license:lgpl2.1+
897 ;; demo and player directories are under the Expat license
898 license:expat))))
899
1b6826d3
RW
900(define-public lilypond
901 (package
902 (name "lilypond")
85f075a0 903 (version "2.19.80")
1b6826d3
RW
904 (source (origin
905 (method url-fetch)
906 (uri (string-append
907 "http://download.linuxaudio.org/lilypond/sources/v"
908 (version-major+minor version) "/"
909 name "-" version ".tar.gz"))
910 (sha256
911 (base32
85f075a0 912 "0lql4q946gna2pl1g409mmmsvn2qvnq2z5cihrkfhk7plcqdny9n"))))
1b6826d3
RW
913 (build-system gnu-build-system)
914 (arguments
127b04d7 915 `(#:tests? #f ; out-test/collated-files.html fails
1b6826d3 916 #:out-of-source? #t
409be57b 917 #:make-flags '("conf=www") ;to generate images for info manuals
127b04d7 918 #:configure-flags
409be57b
RW
919 (list "CONFIGURATION=www"
920 (string-append "--with-texgyre-dir="
127b04d7
RW
921 (assoc-ref %build-inputs "font-tex-gyre")
922 "/share/fonts/opentype/"))
1b6826d3 923 #:phases
a8bc747a 924 (modify-phases %standard-phases
9cc823f5
RW
925 (add-after 'unpack 'use-texlive-union
926 (lambda _
927 ;; FIXME: fonts are not found and have to be generated in HOME.
928 (setenv "HOME" "/tmp")
929 ;; The test for the "lh" package fails, even though it is among
930 ;; the inputs.
931 (substitute* "configure"
932 (("TEX_FIKPARM=.*") "TEX_FIKPARM=found\n"))
933 #t))
409be57b
RW
934 (add-after 'unpack 'fix-path-references
935 (lambda _
a8bc747a
RW
936 (substitute* "scm/backend-library.scm"
937 (("\\(search-executable '\\(\"gs\"\\)\\)")
409be57b
RW
938 (string-append "\"" (which "gs") "\""))
939 (("\"/bin/sh\"")
940 (string-append "\"" (which "sh") "\"")))
a8bc747a
RW
941 #t))
942 (add-before 'configure 'prepare-configuration
943 (lambda _
944 (substitute* "configure"
7affb2c1
RW
945 (("SHELL=/bin/sh") "SHELL=sh")
946 ;; When checking the fontforge version do not consider the
947 ;; version string that's part of the directory.
31ec5228
EF
948 (("head -n") "tail -n")
949 ;; Also allow for SOURCE_DATE_EPOCH = 0 in fontforge.
950 (("20110222") "19700101"))
409be57b
RW
951 (setenv "out" "www")
952 (setenv "conf" "www")
953 #t))
954 (add-after 'install 'install-info
955 (lambda _
88659738
RW
956 (invoke "make"
957 "-j" (number->string (parallel-job-count))
958 "conf=www" "install-info")
959 #t)))))
1b6826d3
RW
960 (inputs
961 `(("guile" ,guile-1.8)
962 ("font-dejavu" ,font-dejavu)
127b04d7 963 ("font-tex-gyre" ,font-tex-gyre)
1b6826d3
RW
964 ("fontconfig" ,fontconfig)
965 ("freetype" ,freetype)
fb0b9ff1 966 ("ghostscript" ,ghostscript)
1b6826d3
RW
967 ("pango" ,pango)
968 ("python" ,python-2)))
969 (native-inputs
970 `(("bison" ,bison)
971 ("perl" ,perl)
972 ("flex" ,flex)
973 ("fontforge" ,fontforge)
974 ("dblatex" ,dblatex)
b94a6ca0 975 ("gettext" ,gettext-minimal)
1b6826d3
RW
976 ("imagemagick" ,imagemagick)
977 ("netpbm" ,netpbm) ;for pngtopnm
9cc823f5
RW
978 ("texlive" ,(texlive-union (list texlive-metapost
979 texlive-generic-epsf
980 texlive-latex-lh
981 texlive-latex-cyrillic)))
1b6826d3
RW
982 ("texinfo" ,texinfo)
983 ("texi2html" ,texi2html)
984 ("rsync" ,rsync)
985 ("pkg-config" ,pkg-config)
986 ("zip" ,zip)))
987 (home-page "http://www.lilypond.org/")
988 (synopsis "Music typesetting")
989 (description
990 "GNU LilyPond is a music typesetter, which produces high-quality sheet
991music. Music is input in a text file containing control sequences which are
992interpreted by LilyPond to produce the final document. It is extendable with
993Guile.")
55ca5e80
LC
994 (license license:gpl3+)
995
996 ;; On armhf and mips64el, building the documentation sometimes leads to
997 ;; more than an hour of silence, so double the max silent time.
998 (properties `((max-silent-time . 7200)))))
c267cc15 999
8e80244a
RW
1000(define-public non-sequencer
1001 ;; The latest tagged release is three years old and uses a custom build
1bbe7959 1002 ;; system, so we take the last commit.
a6b5e1fb
RW
1003 (let ((commit "5ae43bb27c42387052a73e5ffc5d33efb9d946a9")
1004 (revision "4"))
8e80244a
RW
1005 (package
1006 (name "non-sequencer")
1bbe7959 1007 (version (string-append "1.9.5-" revision "." (string-take commit 7)))
8e80244a
RW
1008 (source (origin
1009 (method git-fetch)
1010 (uri (git-reference
1011 (url "git://git.tuxfamily.org/gitroot/non/non.git")
1012 (commit commit)))
1013 (sha256
1014 (base32
a6b5e1fb 1015 "1cljkkyi9dxqpqhx8y6l2ja4zjmlya26m26kqxml8gx08vyvddhx"))
8e80244a
RW
1016 (file-name (string-append name "-" version "-checkout"))))
1017 (build-system waf-build-system)
1018 (arguments
1019 `(#:tests? #f ;no "check" target
e591a4d6
RW
1020 #:configure-flags
1021 (list "--project=sequencer"
1022 ;; Disable the use of SSE unless on x86_64.
1023 ,@(if (not (string-prefix? "x86_64" (or (%current-target-system)
1024 (%current-system))))
1025 '("--disable-sse")
1026 '()))
d8c317df
SB
1027 #:phases
1028 (modify-phases %standard-phases
1029 (add-before
1030 'configure 'set-flags
1031 (lambda _
1032 ;; Compile with C++11, required by libsigc++.
1033 (setenv "CXXFLAGS" "-std=c++11")
1034 #t)))
8e80244a
RW
1035 #:python ,python-2))
1036 (inputs
1037 `(("jack" ,jack-1)
1038 ("libsigc++" ,libsigc++)
1039 ("liblo" ,liblo)
1040 ("ntk" ,ntk)))
1041 (native-inputs
1042 `(("pkg-config" ,pkg-config)))
1043 (home-page "http://non.tuxfamily.org/wiki/Non%20Sequencer")
1044 (synopsis "Pattern-based MIDI sequencer")
1045 (description
1046 "The Non Sequencer is a powerful, lightweight, real-time,
1047pattern-based MIDI sequencer. It utilizes the JACK Audio Connection Kit for
1048MIDI I/O and the NTK GUI toolkit for its user interface. Everything in Non
1049Sequencer happens on-line, in real-time. Music can be composed live, while the
1050transport is rolling.")
1051 (license license:gpl2+))))
1052
ded69d6f
RW
1053(define-public non-session-manager
1054 (package (inherit non-sequencer)
1055 (name "non-session-manager")
1056 (arguments
1057 (substitute-keyword-arguments (package-arguments non-sequencer)
1058 ((#:configure-flags flags)
1059 `(cons "--project=session-manager"
1060 (delete "--project=sequencer" ,flags)))))
1061 (inputs
1062 `(("jack" ,jack-1)
1063 ("liblo" ,liblo)
1064 ("ntk" ,ntk)))
1065 (native-inputs
1066 `(("pkg-config" ,pkg-config)))
1067 (home-page "http://non.tuxfamily.org/nsm/")
1068 (synopsis "Audio session management")
1069 (description
1070 "The Non Session Manager is an API and an implementation for audio
1071session management. NSM clients use a well-specified OSC protocol to
1072communicate with the session management daemon.")
1073 (license license:gpl2+)))
1074
46bb58b8
RW
1075(define-public non-mixer
1076 (package (inherit non-sequencer)
1077 (name "non-mixer")
1078 (arguments
1079 (substitute-keyword-arguments (package-arguments non-sequencer)
1080 ((#:configure-flags flags)
1081 `(cons "--project=mixer"
1082 (delete "--project=sequencer" ,flags)))))
1083 (inputs
1084 `(("jack" ,jack-1)
1085 ("liblo" ,liblo)
1086 ("ladspa" ,ladspa)
1087 ("lrdf" ,lrdf)
1088 ("ntk" ,ntk)))
1089 (native-inputs
1090 `(("pkg-config" ,pkg-config)))
1091 (home-page "http://non.tuxfamily.org/wiki/Non%20Mixer")
1092 (synopsis "Modular digital audio mixer")
1093 (description
1094 "The Non Mixer is a powerful, reliable and fast modular digital audio
1095mixer. It utilizes JACK for inter-application audio I/O and the NTK GUI
1096toolkit for a fast and lightweight user interface. Non Mixer can be used
1097alone or in concert with Non Timeline and Non Sequencer to form a complete
1098studio.")
1099 (license license:gpl2+)))
1100
4511e0db
RW
1101(define-public non-timeline
1102 (package (inherit non-sequencer)
1103 (name "non-timeline")
1104 (arguments
1105 (substitute-keyword-arguments (package-arguments non-sequencer)
1106 ((#:configure-flags flags)
1107 `(cons "--project=timeline"
1108 (delete "--project=sequencer" ,flags)))))
1109 (inputs
1110 `(("jack" ,jack-1)
1111 ("liblo" ,liblo)
1112 ("libsndfile" ,libsndfile)
1113 ("ntk" ,ntk)))
1114 (native-inputs
1115 `(("pkg-config" ,pkg-config)))
1116 (home-page "http://non.tuxfamily.org/wiki/Non%20Timeline")
1117 (synopsis "Modular digital audio timeline arranger")
1118 (description
1119 "The Non Timeline is a powerful, reliable and fast modular digital audio
1120timeline arranger. It utilizes JACK for inter-application audio I/O and the
1121NTK GUI toolkit for a fast and lightweight user interface. Non Timeline can
1122be used alone or in concert with Non Mixer and Non Sequencer to form a
1123complete studio.")
1124 (license license:gpl2+)))
1125
c267cc15
RW
1126(define-public solfege
1127 (package
1128 (name "solfege")
1129 (version "3.22.2")
1130 (source (origin
1131 (method url-fetch)
1132 (uri (string-append
1133 "mirror://gnu/solfege/solfege-"
1134 version ".tar.xz"))
1135 (sha256
1136 (base32
1137 "1w25rxdbj907nsx285k9nm480pvy12w3yknfh4n1dfv17cwy072i"))))
1138 (build-system gnu-build-system)
1139 (arguments
1140 `(#:tests? #f ; xmllint attempts to download DTD
1141 #:test-target "test"
1142 #:phases
dc1d3cde
KK
1143 (modify-phases %standard-phases
1144 (add-after 'unpack 'fix-configuration
1145 (lambda* (#:key inputs #:allow-other-keys)
1146 (substitute* "default.config"
20c65aa1 1147 (("/usr/bin/aplay") "aplay")
95e545a4
NG
1148 (("/usr/bin/timidity") "timidity")
1149 (("/usr/bin/mpg123") "mpg123")
1150 (("/usr/bin/ogg123") "ogg123"))
dc1d3cde
KK
1151 #t))
1152 (add-before 'build 'patch-python-shebangs
1153 (lambda _
1154 ;; Two python scripts begin with a Unicode BOM, so patch-shebang
1155 ;; has no effect.
1156 (substitute* '("solfege/parsetree.py"
1157 "solfege/presetup.py")
1158 (("#!/usr/bin/python") (string-append "#!" (which "python"))))
1159 #t))
1160 (add-before 'build 'add-sitedirs
1161 ;; .pth files are not automatically interpreted unless the
1162 ;; directories containing them are added as "sites". The directories
1163 ;; are then added to those in the PYTHONPATH. This is required for
1164 ;; the operation of pygtk and pygobject.
1165 (lambda _
1166 (substitute* "run-solfege.py"
1167 (("import os")
1168 "import os, site
1169for path in [path for path in sys.path if 'site-packages' in path]: site.addsitedir(path)"))
1170 #t))
1171 (add-before 'build 'adjust-config-file-prefix
c267cc15
RW
1172 (lambda* (#:key outputs #:allow-other-keys)
1173 (substitute* "run-solfege.py"
1174 (("prefix = os.path.*$")
dc1d3cde
KK
1175 (string-append "prefix = " (assoc-ref outputs "out"))))
1176 #t))
1177 (add-after 'install 'wrap-program
1178 (lambda* (#:key inputs outputs #:allow-other-keys)
1179 ;; Make sure 'solfege' runs with the correct PYTHONPATH.
1180 (let* ((out (assoc-ref outputs "out"))
1181 (path (getenv "PYTHONPATH")))
1182 (wrap-program (string-append out "/bin/solfege")
1183 `("PYTHONPATH" ":" prefix (,path))))
1184 #t)))))
c267cc15
RW
1185 (inputs
1186 `(("python" ,python-2)
1187 ("pygtk" ,python2-pygtk)
b94a6ca0 1188 ("gettext" ,gettext-minimal)
c267cc15 1189 ("gtk" ,gtk+)
95e545a4 1190 ("lilypond" ,lilypond)))
c267cc15
RW
1191 (native-inputs
1192 `(("pkg-config" ,pkg-config)
1193 ("txt2man" ,txt2man)
1194 ("libxml2" ,libxml2) ; for tests
1195 ("ghostscript" ,ghostscript)
c267cc15
RW
1196 ("texinfo" ,texinfo)))
1197 (home-page "https://www.gnu.org/software/solfege/")
1198 (synopsis "Ear training")
1199 (description
1200 "GNU Solfege is a program for practicing musical ear-training. With it,
1201you can practice your recognition of various musical intervals and chords. It
1202features a statistics overview so you can monitor your progress across several
1203sessions. Solfege is also designed to be extensible so you can easily write
1204your own lessons.")
1205 (license license:gpl3+)))
6260d1a8 1206
8b9ec354
RW
1207(define-public powertabeditor
1208 (package
1209 (name "powertabeditor")
92a1cb92 1210 (version "2.0.0-alpha10")
8b9ec354 1211 (source (origin
1b12b572
RW
1212 (method git-fetch)
1213 (uri (git-reference
1214 (url "https://github.com/powertab/powertabeditor.git")
1215 (commit version)))
1216 (file-name (git-file-name name version))
8b9ec354
RW
1217 (sha256
1218 (base32
1b12b572 1219 "1z4fhdp71ck9synr12rg1p6365xnypd8ih40c5icj4si36khvksk"))
8b9ec354
RW
1220 (modules '((guix build utils)))
1221 (snippet
1222 '(begin
1223 ;; Remove bundled sources for external libraries
1224 (delete-file-recursively "external")
40effef7 1225 ;; Use only system libraries
8b9ec354 1226 (substitute* "CMakeLists.txt"
40effef7
RW
1227 (("include\\( PTE_ThirdParty \\)")
1228 "\
1229include(third_party/Qt)
1230include(third_party/boost)
1231add_library( Catch INTERFACE IMPORTED )
1232add_library( rapidjson INTERFACE IMPORTED )"))
8b9ec354
RW
1233 #t))))
1234 (build-system cmake-build-system)
1235 (arguments
7e11d113 1236 `(#:modules ((guix build cmake-build-system)
8b9ec354
RW
1237 (guix build utils)
1238 (ice-9 match))
1239 #:configure-flags
1240 ;; CMake appears to lose the RUNPATH for some reason, so it has to be
1241 ;; explicitly set with CMAKE_INSTALL_RPATH.
7e11d113 1242 (list "-DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE"
7e11d113 1243 (string-append "-DCMAKE_INSTALL_RPATH="
8b9ec354
RW
1244 (string-join (map (match-lambda
1245 ((name . directory)
1246 (string-append directory "/lib")))
40effef7
RW
1247 %build-inputs) ";"))
1248 "-DPTE_DATA_DIR=share/powertabeditor")
8b9ec354
RW
1249 #:phases
1250 (modify-phases %standard-phases
40effef7
RW
1251 (replace 'check
1252 (lambda _
b1b82aed
RW
1253 (invoke "bin/pte_tests"
1254 ;; FIXME: these tests fail
1255 "exclude:Actions/EditStaff"
1256 "exclude:Formats/PowerTabOldImport/MergeMultiBarRests"
1257 "exclude:Score/ViewFilter/FilterRule"
1258 "exclude:Score/ViewFilter/ViewFilter"
1259 "exclude:Formats/PowerTabOldImport/Directions")
1260 #t))
04ba7a9d
RW
1261 ;; FIXME: This bug has been fixed upstream, but no release has been
1262 ;; made yet. See https://github.com/powertab/powertabeditor/issues/257
1263 (add-after 'unpack 'fix-boost-bug
1264 (lambda _
1265 (substitute* "source/score/voiceutils.cpp"
1266 (("boost::rational<int> duration\\(4, pos.getDurationType\\(\\)\\);")
1267 "boost::rational<int> duration(4, static_cast<int>(pos.getDurationType()));"))
1268 #t))
1e341fa5
RW
1269 ;; Fix build with Qt 5.11.
1270 (add-after 'unpack 'add-missing-headers
1271 (lambda _
1272 (substitute* (find-files "source/dialogs/" "\\.h$")
1273 (("#include <QDialog>" m)
1274 (string-append m "\n#include <QButtonGroup>")))
1275 (substitute* "source/widgets/mixer/mixeritem.h"
1276 (("#include <QWidget>" m)
1277 (string-append m "\n#include <QStyle>")))
1278 (substitute* "source/widgets/playback/playbackwidget.h"
1279 (("#include <QWidget>" m)
1280 (string-append m "\n#include <QButtonGroup>\n#include <QAction>")))
1281 #t))
40effef7
RW
1282 (add-before 'configure 'remove-third-party-libs
1283 (lambda* (#:key inputs #:allow-other-keys)
1284 ;; Link with required static libraries, because we're not
1285 ;; using the bundled version of withershins.
c3913fac 1286 ;; Also add pthread for fixing a linker error.
40effef7
RW
1287 (substitute* "source/build/CMakeLists.txt"
1288 (("withershins" line)
1289 (string-append line "\n"
1290 (assoc-ref inputs "binutils")
1291 "/lib/libbfd.a\n"
1292 (assoc-ref inputs "libiberty")
1293 "/lib/libiberty.a\n"
1294 "dl\n"
c3913fac 1295 "pthread\n"
40effef7
RW
1296 "z\n")))
1297 #t)))))
8b9ec354
RW
1298 (inputs
1299 `(("boost" ,boost)
1300 ("alsa-lib" ,alsa-lib)
0a0bfd68 1301 ("qtbase" ,qtbase)
8b9ec354 1302 ("withershins" ,withershins)
d6902798 1303 ("libiberty" ,libiberty) ;for withershins
8b9ec354
RW
1304 ("binutils" ,binutils) ;for -lbfd and -liberty (for withershins)
1305 ("timidity" ,timidity++)
1306 ("pugixml" ,pugixml)
1307 ("rtmidi" ,rtmidi)
1308 ("rapidjson" ,rapidjson)
1309 ("zlib" ,zlib)))
1310 (native-inputs
1311 `(("catch" ,catch-framework)
1312 ("pkg-config" ,pkg-config)))
1313 (home-page "http://powertabs.net")
1314 (synopsis "Guitar tablature editor")
1315 (description
1316 "Power Tab Editor 2.0 is the successor to the famous original Power Tab
1317Editor. It is compatible with Power Tab Editor 1.7 and Guitar Pro.")
1318 (license license:gpl3+)))
1319
3d4b1bb9
RW
1320(define-public jalv-select
1321 (package
1322 (name "jalv-select")
fc1ff7fc 1323 (version "1.3")
3d4b1bb9 1324 (source (origin
ca364e7a
RW
1325 (method git-fetch)
1326 (uri (git-reference
1327 (url "https://github.com/brummer10/jalv_select.git")
fc1ff7fc 1328 (commit (string-append "v" version))))
ca364e7a 1329 (file-name (git-file-name name version))
3d4b1bb9
RW
1330 (sha256
1331 (base32
fc1ff7fc 1332 "15yanq1wra0hyh6x72ji7pk562iddg476g3vksj495x91zhnl6vm"))))
3d4b1bb9
RW
1333 (build-system gnu-build-system)
1334 (arguments
1335 `(#:make-flags
1336 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
1337 #:phases
1338 (modify-phases %standard-phases
1339 (delete 'configure)
1340 (add-after 'unpack 'ignore-PATH
1341 (lambda* (#:key inputs #:allow-other-keys)
1342 (substitute* "jalv.select.cpp"
ad7f6e5f 1343 (("echo \\$PATH.*tr ':'.*xargs ls")
3d4b1bb9 1344 (string-append "ls -1 " (assoc-ref inputs "jalv") "/bin")))
ca364e7a
RW
1345 #t))
1346 (add-before 'reset-gzip-timestamps 'make-manpages-writable
1347 (lambda* (#:key outputs #:allow-other-keys)
1348 (for-each make-file-writable
1349 (find-files (string-append (assoc-ref outputs "out")
1350 "/share/man")
1351 ".*\\.gz$"))
3d4b1bb9
RW
1352 #t)))))
1353 (inputs
1354 `(("lilv" ,lilv)
1355 ("lv2" ,lv2)
1356 ("jalv" ,jalv)
1357 ("gtkmm" ,gtkmm-2)))
1358 (native-inputs
1359 `(("pkg-config" ,pkg-config)))
1360 (home-page "https://github.com/brummer10/jalv_select")
1361 (synopsis "GUI to select LV2 plugins and run them with jalv")
1362 (description
1363 "The jalv.select package provides a graphical user interface allowing
1364users to select LV2 plugins and run them with jalv.")
1365 (license license:public-domain)))
1366
b095e762
RW
1367(define-public synthv1
1368 (package
1369 (name "synthv1")
8c7c7687 1370 (version "0.9.8")
b095e762
RW
1371 (source (origin
1372 (method url-fetch)
1373 (uri
de67e922
LF
1374 (string-append "mirror://sourceforge/synthv1/synthv1/" version
1375 "/synthv1-" version ".tar.gz"))
b095e762
RW
1376 (sha256
1377 (base32
8c7c7687 1378 "15kabmxp38wqvavs5hr1dqasjjf1j977kzqggxfmzyi3y5fan3hj"))))
b095e762 1379 (build-system gnu-build-system)
69008d73 1380 (arguments
8c7c7687 1381 `(#:tests? #f)) ; there are no tests
b095e762
RW
1382 (inputs
1383 `(("jack" ,jack-1)
1384 ("lv2" ,lv2)
1385 ("alsa-lib" ,alsa-lib)
b45aa39b 1386 ("non-session-manager" ,non-session-manager)
b095e762 1387 ("liblo" ,liblo)
e5f2afdb
EF
1388 ("qtbase" ,qtbase)
1389 ("qttools" ,qttools)))
b45aa39b
RW
1390 (native-inputs
1391 `(("pkg-config" ,pkg-config)))
9459216a 1392 (home-page "https://synthv1.sourceforge.io")
b095e762
RW
1393 (synopsis "Polyphonic subtractive synthesizer")
1394 (description
1395 "Synthv1 is an old-school subtractive polyphonic synthesizer with four
1396oscillators and stereo effects.")
1397 (license license:gpl2+)))
2bb00612 1398
cf9af706
RW
1399(define-public drumkv1
1400 (package
1401 (name "drumkv1")
8b78ba2b 1402 (version "0.9.8")
cf9af706
RW
1403 (source (origin
1404 (method url-fetch)
1405 (uri
1406 (string-append "mirror://sourceforge/drumkv1/drumkv1/" version
1407 "/drumkv1-" version ".tar.gz"))
1408 (sha256
1409 (base32
8b78ba2b 1410 "010p8nwnmqgj5mw324psig3hxi1g2gylxrigd6sj6sgcpy3kdm23"))))
cf9af706
RW
1411 (build-system gnu-build-system)
1412 (arguments
8b78ba2b 1413 `(#:tests? #f)) ; there are no tests
cf9af706
RW
1414 (inputs
1415 `(("jack" ,jack-1)
1416 ("lv2" ,lv2)
1417 ("libsndfile" ,libsndfile)
1418 ("alsa-lib" ,alsa-lib)
41e2a731 1419 ("non-session-manager" ,non-session-manager)
cf9af706
RW
1420 ("liblo" ,liblo)
1421 ("qtbase" ,qtbase)))
1422 (native-inputs
1423 `(("pkg-config" ,pkg-config)
1424 ("qttools" ,qttools)))
9459216a 1425 (home-page "https://drumkv1.sourceforge.io")
cf9af706
RW
1426 (synopsis "Drum-kit sampler synthesizer with stereo effects")
1427 (description
1428 "Drumkv1 is an old-school drum-kit sampler synthesizer with stereo
1429effects.")
1430 (license license:gpl2+)))
1431
18675264
RW
1432(define-public samplv1
1433 (package
1434 (name "samplv1")
d32f2aa3 1435 (version "0.9.8")
18675264
RW
1436 (source (origin
1437 (method url-fetch)
1438 (uri
1439 (string-append "mirror://sourceforge/samplv1/samplv1/" version
1440 "/samplv1-" version ".tar.gz"))
1441 (sha256
1442 (base32
d32f2aa3 1443 "138kd9szgn3b97s7crhsyj8pgwb0bn4l9knd4zliqjgj2f1bs9x0"))))
18675264
RW
1444 (build-system gnu-build-system)
1445 (arguments
d32f2aa3 1446 `(#:tests? #f)) ; there are no tests
18675264
RW
1447 (inputs
1448 `(("jack" ,jack-1)
1449 ("lv2" ,lv2)
1450 ("libsndfile" ,libsndfile)
1451 ("alsa-lib" ,alsa-lib)
92b70c6f 1452 ("non-session-manager" ,non-session-manager)
18675264
RW
1453 ("liblo" ,liblo)
1454 ("qtbase" ,qtbase)))
1455 (native-inputs
1456 `(("pkg-config" ,pkg-config)
1457 ("qttools" ,qttools)))
9459216a 1458 (home-page "https://samplv1.sourceforge.io")
18675264
RW
1459 (synopsis "Polyphonic sampler synthesizer with stereo effects")
1460 (description
1461 "Samplv1 is an old-school polyphonic sampler synthesizer with stereo
1462effects.")
1463 (license license:gpl2+)))
1464
2702e12e
RW
1465(define-public padthv1
1466 (package
1467 (name "padthv1")
0246bfc0 1468 (version "0.9.8")
2702e12e
RW
1469 (source (origin
1470 (method url-fetch)
1471 (uri
1472 (string-append "mirror://sourceforge/padthv1/padthv1/" version
1473 "/padthv1-" version ".tar.gz"))
1474 (sha256
1475 (base32
0246bfc0 1476 "1k4p2ir12qjcs62knvw2s6qyvb46203yx22fnwp341cjk171cxji"))))
2702e12e
RW
1477 (build-system gnu-build-system)
1478 (arguments
0246bfc0 1479 `(#:tests? #f)) ; there are no tests
2702e12e
RW
1480 (inputs
1481 `(("jack" ,jack-1)
1482 ("lv2" ,lv2)
1483 ("alsa-lib" ,alsa-lib)
1484 ("non-session-manager" ,non-session-manager)
1485 ("liblo" ,liblo)
1486 ("fftw" ,fftw)
1487 ("qtbase" ,qtbase)))
1488 (native-inputs
1489 `(("pkg-config" ,pkg-config)
1490 ("qttools" ,qttools)))
9459216a 1491 (home-page "https://padthv1.sourceforge.io")
2702e12e
RW
1492 (synopsis "Polyphonic additive synthesizer")
1493 (description
1494 "Padthv1 is an old-school polyphonic additive synthesizer with stereo
1495effects. Padthv1 is based on the PADsynth algorithm by Paul Nasca, as a
1496special variant of additive synthesis.")
1497 (license license:gpl2+)))
1498
2bb00612
RW
1499(define-public amsynth
1500 (package
1501 (name "amsynth")
7e0befd4 1502 (version "1.7.1")
2bb00612
RW
1503 (source
1504 (origin
1505 (method url-fetch)
1506 (uri (string-append "https://github.com/amsynth/amsynth/releases/"
1507 "download/release-" version
1508 "/amsynth-" version ".tar.bz2"))
1509 (sha256
1510 (base32
7e0befd4 1511 "1882pfcmf3rqg3vd4qflzkppcv158d748i603spqjbxqi8z7x7w0"))))
2bb00612
RW
1512 (build-system gnu-build-system)
1513 (arguments
1514 `(#:phases
1515 (modify-phases %standard-phases
1516 (add-before 'configure 'set-flags
1517 (lambda _
1518 ;; Compile with C++11, required by gtkmm.
1519 (setenv "CXXFLAGS" "-std=c++11")
1520 #t)))))
1521 (inputs
1522 `(("alsa-lib" ,alsa-lib)
1523 ("jack" ,jack-1)
1524 ("lv2" ,lv2)
7175f4c2 1525 ("lash" ,lash)
2bb00612
RW
1526 ("libsndfile" ,libsndfile)
1527 ("gtk+" ,gtk+-2)
1528 ("gtkmm" ,gtkmm-2)))
1529 (native-inputs
7e0befd4
RW
1530 `(("pkg-config" ,pkg-config)
1531 ("intltool" ,intltool)))
2bb00612
RW
1532 (home-page "http://amsynth.github.io")
1533 (synopsis "Analog modeling synthesizer")
1534 (description
1535 "amsynth is an easy-to-use software synthesizer with a classic
1536subtractive synthesizer topology. Its features include: dual
1537oscillators (sine, saw, square, noise) with hard sync; 12 and 24 dB/oct
1538resonant filters (low-pass, high-pass, band-pass, notch); mono, poly, legato
1539keyboard modes; dual ADSR envelope generators for filter and amplitude; LFO
1540which can modulate the oscillators, filter, and amplitude; distortion and
1541reverb effects.")
1542 (license license:gpl2+)))
b095e762 1543
ec8da0e2
RW
1544(define-public setbfree
1545 (package
1546 (name "setbfree")
8ce1b78b 1547 (version "0.8.9")
ec8da0e2 1548 (source (origin
e0674840
TGR
1549 (method git-fetch)
1550 (uri (git-reference
1551 (url "https://github.com/pantherb/setBfree")
1552 (commit (string-append "v" version))))
1553 (file-name (git-file-name name version))
ec8da0e2
RW
1554 (sha256
1555 (base32
8ce1b78b 1556 "1lpsa64xvwa9xbbp8zcwxy5w0daffc7fziny2pizabqh7m9xqjl2"))))
ec8da0e2
RW
1557 (build-system gnu-build-system)
1558 (arguments
d7caf8b8 1559 `(#:tests? #f ; no "check" target
ec8da0e2
RW
1560 #:make-flags
1561 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
1562 (string-append "FONTFILE="
1563 (assoc-ref %build-inputs "font-bitstream-vera")
b42d4508
RW
1564 "/share/fonts/truetype/VeraBd.ttf")
1565 ;; Disable unsupported optimization flags on non-x86
1566 ,@(let ((system (or (%current-target-system)
1567 (%current-system))))
1568 (if (or (string-prefix? "x86_64" system)
1569 (string-prefix? "i686" system))
1570 '()
1571 '("OPTIMIZATIONS=-ffast-math -fomit-frame-pointer -O3"))))
ec8da0e2
RW
1572 #:phases
1573 (modify-phases %standard-phases
1574 (add-before 'build 'set-CC-variable
d7caf8b8 1575 (lambda _ (setenv "CC" "gcc") #t))
ec8da0e2
RW
1576 (delete 'configure))))
1577 (inputs
1578 `(("jack" ,jack-1)
1579 ("lv2" ,lv2)
1580 ("zita-convolver" ,zita-convolver)
1581 ("glu" ,glu)
1582 ("ftgl" ,ftgl)
1583 ("font-bitstream-vera" ,font-bitstream-vera)))
1584 (native-inputs
1585 `(("help2man" ,help2man)
1586 ("pkg-config" ,pkg-config)))
1587 (home-page "http://setbfree.org")
1588 (synopsis "Tonewheel organ")
1589 (description
1590 "setBfree is a MIDI-controlled, software synthesizer designed to imitate
1591the sound and properties of the electromechanical organs and sound
1592modification devices that brought world-wide fame to the names and products of
1593Laurens Hammond and Don Leslie.")
1594 (license license:gpl2+)))
1595
770305f4
RW
1596(define-public beast
1597 (package
1598 (name "beast")
1599 (version "0.10.0")
1600 (source (origin
1601 (method url-fetch)
1602 (uri (string-append "https://testbit.eu/pub/dists/beast/beast-"
1603 version ".tar.xz"))
1604 (sha256
1605 (base32
1606 "1jzzmfwssklzw8fvvil04n8csc0zm99fnd9p2xa7c0xchg37lvhn"))))
1607 (build-system gnu-build-system)
844f4f6e
EF
1608 (arguments
1609 '(#:parallel-build? #f)) ; Race conditions cause build failures
770305f4
RW
1610 (inputs
1611 `(("rapicorn" ,rapicorn)
1612 ("guile" ,guile-1.8)
1613 ("python" ,python-2)
770305f4
RW
1614 ("libgnomecanvas" ,libgnomecanvas)
1615 ("libogg" ,libogg)
1616 ("libmad" ,libmad)
1617 ("flac" ,flac)
1618 ("alsa-lib" ,alsa-lib)
1619 ("libvorbis" ,libvorbis)
b94a6ca0 1620 ("gettext" ,gettext-minimal)))
770305f4
RW
1621 (native-inputs
1622 `(("pkg-config" ,pkg-config)
1623 ("glib:bin" ,glib "bin")
f2516de2 1624 ("cython" ,python2-cython)
770305f4
RW
1625 ("perl" ,perl)
1626 ("perl-xml-parser" ,perl-xml-parser)))
1627 (home-page "https://testbit.eu/wiki/Beast_Home")
1628 (synopsis "Music composition and modular synthesis environment")
1629 (description
1630 "Beast is a music composition and modular synthesis application. It
1631supports a wide range of standards in the field, such as MIDI, various audio
1632file formats and LADSPA modules. It allows for multitrack editing, real-time
1633synthesis, 32bit audio rendering, precise timing down to sample granularity,
1634on-demand and partial loading of wave files, on the fly decoding, stereo
1635mixing, FFT scopes, MIDI automation and full scriptability in Scheme.")
1636 (license license:gpl3+)))
1637
96250294
RW
1638(define-public bristol
1639 (package
1640 (name "bristol")
1641 (version "0.60.11")
1642 (source (origin
1643 (method url-fetch)
1644 (uri (string-append "mirror://sourceforge/bristol/bristol/"
1645 (version-major+minor version)
1646 "/bristol-" version ".tar.gz"))
1647 (sha256
1648 (base32
1649 "1fi2m4gmvxdi260821y09lxsimq82yv4k5bbgk3kyc3x1nyhn7vx"))))
1650 (build-system gnu-build-system)
18ef998b
RW
1651 (arguments
1652 `(#:phases
1653 (modify-phases %standard-phases
1654 (add-after 'unpack 'remove-sse-flags
1655 (lambda* (#:key system #:allow-other-keys)
1656 (when (not (or (string-prefix? "x86_64" system)
1657 (string-prefix? "i686" system)))
1658 (substitute* "bristol/Makefile.in"
1659 (("-msse -mfpmath=sse") "")))
73124d34 1660 #t))
bd0c6231
RW
1661 ;; alsa-lib 1.1.x no longer provides iatomic.h. That's okay because
1662 ;; bristol actually doesn't use it.
1663 (add-after 'unpack 'do-not-use-alsa-iatomic
1664 (lambda _
1665 (substitute* "libbristolaudio/audioEngineJack.c"
1666 (("#include <alsa/iatomic.h>") ""))
1667 #t))
73124d34
RW
1668 ;; We know that Bristol has been linked with JACK and we don't have
1669 ;; ldd, so we can just skip this check.
1670 (add-after 'unpack 'do-not-grep-for-jack
1671 (lambda _
1672 (substitute* "bin/startBristol.in"
1673 (("ldd `which bristol` | grep jack") "echo guix"))
18ef998b 1674 #t)))))
96250294
RW
1675 (inputs
1676 `(("alsa-lib" ,alsa-lib)
1677 ("jack" ,jack-1)
1678 ("liblo" ,liblo)
1679 ("libx11" ,libx11)))
1680 (native-inputs
1681 `(("pkg-config" ,pkg-config)))
1682 (home-page "http://bristol.sourceforge.net/")
1683 (synopsis "Synthesizer emulator")
1684 (description
36a4366d 1685 "Bristol is an emulation package for a number of different @code{classic}
96250294
RW
1686synthesizers including additive and subtractive and a few organs. The
1687application consists of the engine, which is called bristol, and its own GUI
1688library called brighton that represents all the emulations. There are
1689currently more than twenty different emulations; each does sound different
1690although the author maintains that the quality and accuracy of each emulation
1691is subjective.")
1692 (license license:gpl3+)))
1693
6260d1a8
RW
1694(define-public tuxguitar
1695 (package
1696 (name "tuxguitar")
a0a7e425 1697 (version "1.5.2")
6260d1a8
RW
1698 (source (origin
1699 (method url-fetch)
1700 (uri (string-append
1701 "mirror://sourceforge/tuxguitar/TuxGuitar/TuxGuitar-"
f467c352 1702 version "/tuxguitar-" version "-src.tar.gz"))
6260d1a8
RW
1703 (sha256
1704 (base32
a0a7e425 1705 "10arfpgm2pw7mn922klklzn05lw5ifqx070shdrar81afmkfbbd9"))))
f467c352 1706 (build-system ant-build-system)
6260d1a8 1707 (arguments
f467c352 1708 `(#:build-target "build"
40f372af 1709 #:jdk ,icedtea-8
a0a7e425 1710 #:tests? #f ; no tests
6260d1a8 1711 #:phases
5f1c9498 1712 (modify-phases %standard-phases
f467c352
RW
1713 (add-after 'unpack 'enter-dir
1714 (lambda _ (chdir "TuxGuitar-lib") #t))
750e54ec 1715 (add-after 'build 'build-libraries
f467c352 1716 (lambda* (#:key inputs outputs #:allow-other-keys)
750e54ec
RW
1717 (let* ((initial-classpath (getenv "CLASSPATH"))
1718 (build-dir (lambda (dir)
1719 (chdir "..")
1720 (setenv "CLASSPATH"
1721 (string-join (cons initial-classpath
1722 (find-files (getcwd) "\\.jar$"))
1723 ":"))
1724 (chdir dir)
1725 (if (file-exists? "build.xml")
1726 ((assoc-ref %standard-phases 'build)
1727 #:build-target "build")
1728 (begin
a0a7e425 1729 ;; Generate default build.xml.
750e54ec
RW
1730 ((@@ (guix build ant-build-system) default-build.xml)
1731 (string-append (string-downcase dir) ".jar")
1732 (string-append (assoc-ref outputs "out")
1733 "/share/java"))
1734 ((assoc-ref %standard-phases 'build)))))))
1735 (map build-dir '("TuxGuitar-editor-utils"
1736 "TuxGuitar-ui-toolkit"
1737 "TuxGuitar-ui-toolkit-swt"
1738 "TuxGuitar-awt-graphics")))))
1739 (add-after 'build-libraries 'build-application
f467c352
RW
1740 (lambda _
1741 (chdir "../TuxGuitar")
1742 ((assoc-ref %standard-phases 'build)
1743 #:build-target "build")))
1744 (replace 'install
1745 (lambda* (#:key inputs outputs #:allow-other-keys)
1746 (let* ((out (assoc-ref outputs "out"))
1747 (bin (string-append out "/bin"))
1748 (share (string-append out "/share"))
1749 (lib (string-append share "/java"))
1750 (swt (assoc-ref inputs "java-swt")))
1751 (mkdir-p bin)
a0a7e425 1752 ;; Install all jars.
f467c352
RW
1753 (for-each (lambda (file)
1754 (install-file file lib))
1755 (find-files ".." "\\.jar$"))
750e54ec 1756
a0a7e425 1757 ;; Install all resources.
750e54ec
RW
1758 (copy-recursively "share" share)
1759
a0a7e425 1760 ;; Create wrapper.
f467c352
RW
1761 (call-with-output-file (string-append bin "/tuxguitar")
1762 (lambda (port)
1763 (let ((classpath (string-join (append (find-files lib "\\.jar$")
1764 (find-files swt "\\.jar$"))
1765 ":")))
1766 (format
1767 port
1768 (string-append "#!/bin/sh\n"
1769 (which "java")
1770 " -cp " classpath
1771 " -Dtuxguitar.home.path=" out
1772 " -Dtuxguitar.share.path=" out "/share"
1773 " -Dswt.library.path=" swt "/lib"
1774 " org.herac.tuxguitar.app.TGMainSingleton"
1775 " \"$1\" \"$2\"")))))
1776 (chmod (string-append bin "/tuxguitar") #o555)
1777 #t))))))
6260d1a8 1778 (inputs
1ad15c16 1779 `(("java-swt" ,java-swt)))
d4eae3f7 1780 (home-page "http://tuxguitar.com.ar/")
6260d1a8
RW
1781 (synopsis "Multitrack tablature editor and player")
1782 (description
1783 "TuxGuitar is a guitar tablature editor with player support through midi.
1784It can display scores and multitrack tabs. TuxGuitar provides various
1785additional features, including autoscrolling while playing, note duration
1786management, bend/slide/vibrato/hammer-on/pull-off effects, support for
1787tuplets, time signature management, tempo management, gp3/gp4/gp5 import and
1788export.")
1789 (license license:lgpl2.1+)))
2d0fd07b
RW
1790
1791(define-public pd
1792 (package
1793 (name "pd")
4bad41e0 1794 (version "0.50-0")
2d0fd07b
RW
1795 (source (origin
1796 (method url-fetch)
1797 (uri
037bf4f4
RW
1798 (string-append "http://msp.ucsd.edu/Software/pd-"
1799 version ".src.tar.gz"))
2d0fd07b
RW
1800 (sha256
1801 (base32
4bad41e0 1802 "0hg4n5b55f650qsc0mjx559072dp7vfza7w0pvk6rk2l831cvsps"))))
2d0fd07b
RW
1803 (build-system gnu-build-system)
1804 (arguments
4bad41e0 1805 `(#:tests? #f ; no "check" target
96808b39
SB
1806 #:configure-flags
1807 (list
1808 "--enable-jack"
1809 (string-append "--with-wish=" (string-append
1810 (assoc-ref %build-inputs "tk")
1811 "/bin/wish8.6")))
2d0fd07b
RW
1812 #:phases
1813 (modify-phases %standard-phases
96808b39 1814 (add-before 'configure 'fix-with-path
4712cbb0 1815 (lambda _
4712cbb0
RW
1816 (substitute* "tcl/pd-gui.tcl"
1817 (("exec wish ") (string-append "exec " (which "wish8.6") " ")))
9ab90ead 1818 #t)))))
2d0fd07b
RW
1819 (native-inputs
1820 `(("autoconf" ,autoconf)
1821 ("automake" ,automake)
1822 ("libtool" ,libtool)
b94a6ca0 1823 ("gettext" ,gettext-minimal)
2d0fd07b
RW
1824 ("pkg-config" ,pkg-config)))
1825 (inputs
1826 `(("tk" ,tk)
1827 ("alsa-lib" ,alsa-lib)
1828 ("jack" ,jack-1)))
1829 (home-page "http://puredata.info")
1830 (synopsis "Visual programming language for artistic performances")
1831 (description
1832 "Pure Data (aka Pd) is a visual programming language. Pd enables
1833musicians, visual artists, performers, researchers, and developers to create
1834software graphically, without writing lines of code. Pd is used to process
1835and generate sound, video, 2D/3D graphics, and interface sensors, input
1836devices, and MIDI. Pd can easily work over local and remote networks to
1837integrate wearable technology, motor systems, lighting rigs, and other
1838equipment. Pd is suitable for learning basic multimedia processing and visual
1839programming methods as well as for realizing complex systems for large-scale
1840projects.")
1841 (license license:bsd-3)))
821664f1 1842
6826f1e1
SB
1843(define-public libpd
1844 (package
1845 (name "libpd")
1846 (version "0.11.0")
1847 (source (origin
1848 (method git-fetch)
1849 (uri (git-reference
1850 (url "https://github.com/libpd/libpd.git")
1851 (commit version)
1852 (recursive? #t))) ; for the 'pure-data' submodule
1853 (file-name (string-append name "-" version "-checkout"))
1854 (sha256
1855 (base32
1856 "1bcg1d9iyf9n37hwwphmih0c8rd1xcqykil5z1cax6xfs76552nk"))))
1857 (build-system gnu-build-system)
1858 (arguments
1859 '(#:tests? #f ; no tests
1860 #:make-flags '("CC=gcc")
1861 #:phases
1862 (modify-phases %standard-phases
1863 (delete 'configure) ; no configure script
1864 (replace 'install
1865 (lambda* (#:key outputs #:allow-other-keys)
1866 (let ((out (assoc-ref outputs "out")))
1867 (invoke "make" "install"
1868 (string-append "prefix=" out)
1869 ;; XXX: Fix the last 2 lines of 'install' target.
1870 "LIBPD_IMPLIB=NO"
1871 "LIBPD_DEF=NO")))))))
1872 (home-page "http://libpd.cc/")
1873 (synopsis "Pure Data as an embeddable audio synthesis library")
1874 (description
1875 "Libpd provides Pure Data as an embeddable audio synthesis library. Its
1876main purpose is to liberate raw audio rendering from audio and MIDI drivers.")
1877 (license license:bsd-3)))
1878
aacb52fb
RW
1879(define-public portmidi
1880 (package
1881 (name "portmidi")
1882 (version "217")
1883 (source (origin
1884 (method url-fetch)
1885 (uri (string-append "mirror://sourceforge/portmedia/portmidi/"
1886 version "/portmidi-src-" version ".zip"))
1887 (sha256
1888 (base32
1889 "03rfsk7z6rdahq2ihy5k13qjzgx757f75yqka88v3gc0pn9ais88"))
1890 (patches (list (search-patch "portmidi-modular-build.patch")))))
1891 (build-system cmake-build-system)
1892 (arguments
3def739d
TGR
1893 `(#:tests? #f ; tests cannot be linked
1894 #:build-type "Release" ; needed to have PMALSA set
aacb52fb
RW
1895 #:configure-flags
1896 (list "-DPORTMIDI_ENABLE_JAVA=Off"
a374d9c9
NG
1897 "-DPORTMIDI_ENABLE_TEST=Off") ; tests fail linking
1898 #:phases
1899 (modify-phases %standard-phases
1900 ;; Some packages, e.g., MuseScore, expect "libporttime.so" instead of
1901 ;; "libportmidi.so". Distributions get away with it by creating an
1902 ;; appropriate symlink.
1903 (add-after 'install 'add-porttime
1904 (lambda* (#:key outputs #:allow-other-keys)
1905 (let* ((out (assoc-ref outputs "out"))
1906 (lib (string-append out "/lib")))
1907 (with-directory-excursion lib
1908 (symlink "libportmidi.so" "libporttime.so")))
1909 #t)))))
aacb52fb
RW
1910 (inputs
1911 `(("alsa-lib" ,alsa-lib)))
1912 (native-inputs
1913 `(("unzip" ,unzip)))
1914 (home-page "http://portmedia.sourceforge.net/portmidi/")
1915 (synopsis "Library for MIDI I/O")
1916 (description
1917 "PortMidi is a library supporting real-time input and output of MIDI data
1918using a system-independent interface.")
1919 (license license:expat)))
f65d59fc 1920
38098bf7
RW
1921(define-public portmidi-for-extempore
1922 (package (inherit portmidi)
1923 (name "portmidi-for-extempore")
1924 (version "217")
1925 (source (origin
57906fad
RW
1926 (method git-fetch)
1927 (uri (git-reference
1928 (url "https://github.com/extemporelang/portmidi.git")
1929 (commit version)))
1930 (file-name (git-file-name name version))
38098bf7
RW
1931 (sha256
1932 (base32
57906fad 1933 "1inriyrjf7xx2b7r54x0vmf9ngyqgr7g5060c22bwkbsgg53apzv"))))
38098bf7
RW
1934 (build-system cmake-build-system)
1935 (arguments `(#:tests? #f)) ; no tests
1936 (native-inputs '())
39162ee4
RW
1937 ;; Extempore refuses to build on architectures other than x86_64
1938 (supported-systems '("x86_64-linux"))
38098bf7
RW
1939 (home-page "https://github.com/extemporelang/portmidi/")))
1940
f65d59fc
RW
1941(define-public python-pyportmidi
1942 (package
1943 (name "python-pyportmidi")
1944 (version (package-version portmidi))
1945 (source (package-source portmidi))
1946 (build-system python-build-system)
1947 (arguments
1948 `(#:tests? #f ; no tests included
1949 #:phases
1950 (modify-phases %standard-phases
1951 (add-after 'unpack 'enter-dir
1952 (lambda _ (chdir "pm_python") #t))
1953 (add-after 'enter-dir 'fix-setup.py
1954 (lambda _
1955 (substitute* "setup.py"
1956 ;; Use Python 3 syntax
1957 (("print (\".*\")" _ text)
1958 (string-append "print(" text ")\n"))
1959 ;; TODO.txt and CHANGES.txt don't exist
1960 (("CHANGES =.*") "CHANGES = \"\"\n")
1961 (("TODO =.*") "TODO = \"\"\n"))
1962 #t)))))
1963 (inputs
1964 `(("portmidi" ,portmidi)
f2516de2 1965 ("alsa-lib" ,alsa-lib)))
f65d59fc 1966 (native-inputs
f2516de2
HG
1967 `(("python-cython" ,python-cython)
1968 ("unzip" ,unzip)))
f65d59fc
RW
1969 (home-page "http://portmedia.sourceforge.net/portmidi/")
1970 (synopsis "Python bindings to PortMidi")
1971 (description
1972 "This package provides Python bindings to the PortMidi library.")
1973 (license license:expat)))
aacb52fb 1974
821664f1
RW
1975(define-public frescobaldi
1976 (package
1977 (name "frescobaldi")
e40335b2 1978 (version "3.0.0")
821664f1
RW
1979 (source (origin
1980 (method url-fetch)
1981 (uri (string-append
1982 "https://github.com/wbsoft/frescobaldi/releases/download/v"
1983 version "/frescobaldi-" version ".tar.gz"))
1984 (sha256
1985 (base32
e40335b2 1986 "15cqhbjbjikr7ljgiq56bz2gxrr38j8p0f78p2vhyzydaviy9a2z"))))
821664f1 1987 (build-system python-build-system)
a19a6d3a 1988 (arguments `(#:tests? #f)) ; no tests included
821664f1
RW
1989 (inputs
1990 `(("lilypond" ,lilypond)
6855b347 1991 ("portmidi" ,portmidi)
e40335b2 1992 ("python-pyqt" ,python-pyqt)
821664f1 1993 ("python-ly" ,python-ly)
6855b347 1994 ("python-pyportmidi" ,python-pyportmidi)
821664f1 1995 ("poppler" ,poppler)
e40335b2 1996 ("python-poppler-qt5" ,python-poppler-qt5)
821664f1
RW
1997 ("python-sip" ,python-sip)))
1998 (home-page "http://www.frescobaldi.org/")
1999 (synopsis "LilyPond sheet music text editor")
2000 (description
2001 "Frescobaldi is a LilyPond sheet music text editor with syntax
2002highlighting and automatic completion. Among other things, it can render
2003scores next to the source, can capture input from MIDI or read MusicXML and
2004ABC files, has a MIDI player for proof-listening, and includes a documentation
2005browser.")
2006 (license license:gpl2+)))
ddfddb0c 2007
bf76d780
RW
2008(define-public drumstick
2009 (package
2010 (name "drumstick")
6fd7e0cc 2011 (version "1.1.3")
bf76d780
RW
2012 (source (origin
2013 (method url-fetch)
2014 (uri (string-append "mirror://sourceforge/drumstick/"
2015 version "/drumstick-" version ".tar.bz2"))
2016 (sha256
2017 (base32
6fd7e0cc 2018 "1n9wvg79yvkygrkc8xd8pgrd3d7hqmr7gh24dccf0px23lla9b3m"))))
bf76d780
RW
2019 (build-system cmake-build-system)
2020 (arguments
7adaf5b5 2021 `(#:tests? #f ; no test target
bf76d780
RW
2022 #:configure-flags '("-DLIB_SUFFIX=")
2023 #:phases
2024 (modify-phases %standard-phases
2025 (add-before 'configure 'fix-docbook
2026 (lambda* (#:key inputs #:allow-other-keys)
2027 (substitute* "cmake_admin/CreateManpages.cmake"
2028 (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
2029 (string-append (assoc-ref inputs "docbook-xsl")
2030 "/xml/xsl/docbook-xsl-"
2031 ,(package-version docbook-xsl)
2032 "/manpages/docbook.xsl")))
2033 #t)))))
2034 (inputs
ca1cab82
EF
2035 `(("qtbase" ,qtbase)
2036 ("qtsvg" ,qtsvg)
7adaf5b5 2037 ("alsa-lib" ,alsa-lib)))
bf76d780
RW
2038 (native-inputs
2039 `(("pkg-config" ,pkg-config)
7adaf5b5 2040 ("libxslt" ,libxslt) ; for xsltproc
bf76d780
RW
2041 ("docbook-xsl" ,docbook-xsl)
2042 ("doxygen" ,doxygen)))
2043 (home-page "http://drumstick.sourceforge.net/")
2044 (synopsis "C++ MIDI library")
2045 (description
2046 "Drumstick is a set of MIDI libraries using C++/Qt5 idioms and style. It
2047includes a C++ wrapper around the ALSA library sequencer interface. A
2048complementary library provides classes for processing SMF (Standard MIDI
2049files: .MID/.KAR), Cakewalk (.WRK), and Overture (.OVE) file formats. A
2050multiplatform realtime MIDI I/O library is also provided with various output
2051backends, including ALSA, OSS, Network and FluidSynth.")
2052 (license license:gpl2+)))
2053
14b9203d
RW
2054(define-public vmpk
2055 (package
2056 (name "vmpk")
2057 (version "0.7.2")
2058 (source (origin
2059 (method url-fetch)
2060 (uri (string-append "mirror://sourceforge/vmpk/vmpk/"
2061 version "/vmpk-" version ".tar.bz2"))
2062 (sha256
2063 (base32
2064 "1i3hnvdgz46n4k5v0q4jhgh7nkh0s390ix4nqr69z0q3026yp0p6"))))
2065 (build-system cmake-build-system)
2066 (arguments
2067 `(#:tests? #f ; no test target
2068 #:phases
2069 (modify-phases %standard-phases
2070 (add-before 'configure 'fix-docbook
2071 (lambda* (#:key inputs #:allow-other-keys)
2072 (substitute* "cmake_admin/CreateManpages.cmake"
2073 (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
2074 (string-append (assoc-ref inputs "docbook-xsl")
2075 "/xml/xsl/docbook-xsl-"
2076 ,(package-version docbook-xsl)
2077 "/manpages/docbook.xsl")))
2078 #t)))))
2079 (inputs
2080 `(("drumstick" ,drumstick)
2081 ("qtbase" ,qtbase)
2082 ("qtsvg" ,qtsvg)
2083 ("qttools" ,qttools)
2084 ("qtx11extras" ,qtx11extras)))
2085 (native-inputs
2086 `(("libxslt" ,libxslt) ;for xsltproc
2087 ("docbook-xsl" ,docbook-xsl)
2088 ("pkg-config" ,pkg-config)))
2089 (home-page "http://vmpk.sourceforge.net")
2090 (synopsis "Virtual MIDI piano keyboard")
2091 (description
2092 "Virtual MIDI Piano Keyboard is a MIDI events generator and receiver. It
2093doesn't produce any sound by itself, but can be used to drive a MIDI
2094synthesizer (either hardware or software, internal or external). You can use
2095the computer's keyboard to play MIDI notes, and also the mouse. You can use
2096the Virtual MIDI Piano Keyboard to display the played MIDI notes from another
2097instrument or MIDI file player.")
2098 (license license:gpl3+)))
2099
ddfddb0c
RW
2100(define-public zynaddsubfx
2101 (package
2102 (name "zynaddsubfx")
5f88d81f 2103 (version "3.0.5")
ddfddb0c
RW
2104 (source (origin
2105 (method url-fetch)
2106 (uri (string-append
2107 "mirror://sourceforge/zynaddsubfx/zynaddsubfx/"
138e7697 2108 version "/zynaddsubfx-" version ".tar.bz2"))
ddfddb0c
RW
2109 (sha256
2110 (base32
5f88d81f 2111 "0qwzg14h043rmyf9jqdylxhyfy4sl0vsr0gjql51wjhid0i34ivl"))))
ddfddb0c 2112 (build-system cmake-build-system)
00dfc97c
RW
2113 (arguments
2114 `(#:phases
2115 (modify-phases %standard-phases
2116 ;; Move SSE compiler optimization flags from generic target to
2117 ;; athlon64 and core2 targets, because otherwise the build would fail
2118 ;; on non-Intel machines.
2119 (add-after 'unpack 'remove-sse-flags-from-generic-target
2120 (lambda _
2121 (substitute* "src/CMakeLists.txt"
2122 (("-msse -msse2 -mfpmath=sse") "")
2123 (("-march=(athlon64|core2)" flag)
2124 (string-append flag " -msse -msse2 -mfpmath=sse")))
2125 #t)))))
ddfddb0c
RW
2126 (inputs
2127 `(("liblo" ,liblo)
2128 ("ntk" ,ntk)
1ea7969f 2129 ("mesa" ,mesa)
ddfddb0c
RW
2130 ("alsa-lib" ,alsa-lib)
2131 ("jack" ,jack-1)
2132 ("fftw" ,fftw)
2133 ("minixml" ,minixml)
2134 ("libxpm" ,libxpm)
2135 ("zlib" ,zlib)))
2136 (native-inputs
2137 `(("pkg-config" ,pkg-config)))
2138 (home-page "http://zynaddsubfx.sf.net/")
2139 (synopsis "Software synthesizer")
2140 (description
2141 "ZynAddSubFX is a feature heavy realtime software synthesizer. It offers
2142three synthesizer engines, multitimbral and polyphonic synths, microtonal
2143capabilities, custom envelopes, effects, etc.")
2144 (license license:gpl2)))
c493679f
RW
2145
2146(define-public yoshimi
2147 (package
2148 (name "yoshimi")
886534b4 2149 (version "1.6.0.1")
c493679f
RW
2150 (source (origin
2151 (method url-fetch)
2152 (uri (string-append "mirror://sourceforge/yoshimi/"
2153 (version-major+minor version)
2154 "/yoshimi-" version ".tar.bz2"))
2155 (sha256
2156 (base32
886534b4 2157 "140f2k4akj39pny8c7i794q125415gyvmy4rday0il5ncp3glik4"))))
c493679f
RW
2158 (build-system cmake-build-system)
2159 (arguments
886534b4 2160 `(#:tests? #f ; there are no tests
c493679f
RW
2161 #:configure-flags
2162 (list (string-append "-DCMAKE_INSTALL_DATAROOTDIR="
2163 (assoc-ref %outputs "out") "/share"))
2164 #:phases
2165 (modify-phases %standard-phases
2166 (add-before 'configure 'enter-dir
2167 (lambda _ (chdir "src") #t))
2168 ;; Move SSE compiler optimization flags from generic target to
2169 ;; athlon64 and core2 targets, because otherwise the build would fail
2170 ;; on non-Intel machines.
2171 (add-after 'unpack 'remove-sse-flags-from-generic-target
2172 (lambda _
2173 (substitute* "src/CMakeLists.txt"
2174 (("-msse -msse2 -mfpmath=sse") "")
2175 (("-march=(athlon64|core2)" flag)
2176 (string-append flag " -msse -msse2 -mfpmath=sse")))
5edc8682 2177 #t)))))
c493679f
RW
2178 (inputs
2179 `(("boost" ,boost)
2180 ("fftwf" ,fftwf)
2181 ("alsa-lib" ,alsa-lib)
2182 ("jack" ,jack-1)
2183 ("fontconfig" ,fontconfig)
2184 ("minixml" ,minixml)
2185 ("mesa" ,mesa)
2186 ("fltk" ,fltk)
2187 ("lv2" ,lv2)
2188 ("readline" ,readline)
2189 ("ncurses" ,ncurses)
2190 ("cairo" ,cairo)
2191 ("zlib" ,zlib)))
2192 (native-inputs
2193 `(("pkg-config" ,pkg-config)))
2194 (home-page "http://yoshimi.sourceforge.net/")
2195 (synopsis "Multi-paradigm software synthesizer")
2196 (description
edfa2eee 2197 "Yoshimi is a fork of ZynAddSubFX, a feature-heavy real-time software
c493679f
RW
2198synthesizer. It offers three synthesizer engines, multitimbral and polyphonic
2199synths, microtonal capabilities, custom envelopes, effects, etc. Yoshimi
2200improves on support for JACK features, such as JACK MIDI.")
2201 (license license:gpl2)))
658212eb 2202
e87cb754
RW
2203(define-public libgig
2204 (package
2205 (name "libgig")
38146797 2206 (version "4.1.0")
e87cb754
RW
2207 (source (origin
2208 (method url-fetch)
2209 (uri (string-append "http://download.linuxsampler.org/packages/"
2210 "libgig-" version ".tar.bz2"))
2211 (sha256
2212 (base32
38146797 2213 "02xx6bqxzgkvrawwnzrnxx1ypk244q4kpwfd58266f9ji8kq18h6"))))
e87cb754
RW
2214 (build-system gnu-build-system)
2215 (inputs
2216 `(("libuuid" ,util-linux)
2217 ("libsndfile" ,libsndfile)))
2218 (native-inputs
2219 `(("pkg-config" ,pkg-config)))
2220 (home-page "http://linuxsampler.org/libgig/")
2221 (synopsis "C++ library for working with Gigasampler (.gig) files")
2222 (description
2223 "Libgig is a C++ library for loading, modifying existing and creating new
2224Gigasampler (.gig) files and DLS (Downloadable Sounds) Level 1/2 files, KORG
2225sample based instruments (.KSF and .KMP files), SoundFont v2 (.sf2) files and
2226AKAI sampler data. The package includes a couple of command line tools based
2227on the library.")
2228 ;; The library and tools are released under the GPL, except the AKAI
2229 ;; classes which are released under the LGPL.
2230 (license (list license:gpl2+ license:lgpl2.1+))))
2231
a9f55bf2
RW
2232(define-public jack-keyboard
2233 (package
2234 (name "jack-keyboard")
2235 (version "2.5")
2236 (source
2237 (origin
2238 (method url-fetch)
2239 (uri (string-append "mirror://sourceforge/jack-keyboard/jack-keyboard/"
2240 version "/jack-keyboard-" version ".tar.gz"))
2241 (sha256
2242 (base32
2243 "0mzmg8aavybcfdlq2yd9d0vscqd6is5p6jzrgfpfm5j3xdcvh2s3"))))
2244 (build-system gnu-build-system)
2245 (inputs
2246 `(("jack" ,jack-1)
2247 ("lash" ,lash)
2248 ("gtk+" ,gtk+-2)))
2249 (native-inputs
2250 `(("pkg-config" ,pkg-config)))
2251 (home-page "http://jack-keyboard.sourceforge.net/")
2252 (synopsis "Virtual MIDI keyboard")
2253 (description "Jack-keyboard is a virtual MIDI keyboard, a program that
2254allows you to send JACK MIDI events (i.e. play) using your PC keyboard.")
2255 (license license:bsd-2)))
2256
39b33584
RW
2257(define-public jack-capture
2258 (package
2259 (name "jack-capture")
2260 (version "0.9.73")
2261 (source (origin
2262 (method git-fetch)
2263 (uri (git-reference
2264 (url "https://github.com/kmatheussen/jack_capture.git")
2265 (commit version)))
2266 (file-name (string-append name "-" version "-checkout"))
2267 (sha256
2268 (base32
2269 "0jcqky96q8xgya6wqv1p8pj9fkf2wh7ynl67ah7x5bn3basgfclf"))))
2270 (build-system gnu-build-system)
2271 (arguments
2272 `(#:make-flags
2273 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
2274 #:tests? #f ; there are none
2275 #:phases
2276 (modify-phases %standard-phases
2277 (delete 'configure))))
2278 (native-inputs
2279 `(("pkg-config" ,pkg-config)
2280 ("which" ,which)))
2281 (inputs
2282 `(("gtk+" ,gtk+-2)
2283 ("jack" ,jack-1)
2284 ("libogg" ,libogg)
2285 ("liblo" ,liblo)
2286 ("lame" ,lame)
2287 ("libsndfile" ,libsndfile)))
2288 (home-page "https://github.com/kmatheussen/jack_capture")
2289 (synopsis "Program for recording sound files with JACK")
2290 (description "This is a program for recording sound files with JACK. It
2291can connect to any JACK port and record the output into a stereo WAV file.")
2292 (license license:gpl2+)))
2293
658212eb
LF
2294(define-public cursynth
2295 (package
2296 (name "cursynth")
2297 (version "1.5")
2298 (source
2299 (origin
2300 (method url-fetch)
2301 (uri (string-append "mirror://gnu/cursynth/cursynth-"
2302 version ".tar.gz"))
2303 (sha256
2304 (base32 "1dhphsya41rv8z6yqcv9l6fwbslsds4zh1y56zizi39nd996d40v"))
fc1adab1 2305 (patches (search-patches "cursynth-wave-rand.patch"))))
658212eb
LF
2306 (build-system gnu-build-system)
2307 (native-inputs `(("pkg-config" ,pkg-config)))
2308 ;; TODO: See https://github.com/iyoko/cursynth/issues/4 which currently
2309 ;; prevents us from using pulseaudio
2310 (inputs `(("ncurses" ,ncurses)
2311 ("alsa" ,alsa-lib)))
6fd52309 2312 (home-page "https://www.gnu.org/software/cursynth/")
658212eb
LF
2313 (synopsis "Polyphonic and MIDI subtractive music synthesizer using curses")
2314 (description "GNU cursynth is a polyphonic synthesizer that runs
2315graphically in the terminal. It is built on a full-featured subtractive
2316synthesis engine. Notes and parameter changes may be entered via MIDI or the
2317computer's keyboard.")
2318 (license license:gpl3+)))
a763ce7d 2319
13edf1b9
RW
2320(define-public aj-snapshot
2321 (package
2322 (name "aj-snapshot")
bc03fe69 2323 (version "0.9.9")
13edf1b9
RW
2324 (source (origin
2325 (method url-fetch)
2326 (uri (string-append "mirror://sourceforge/aj-snapshot/"
2327 "aj-snapshot-" version ".tar.bz2"))
2328 (sha256
2329 (base32
bc03fe69 2330 "0z8wd5yvxdmw1h1rj6km9h01xd4xmp4d86gczlix7hsc7zrf0wil"))))
13edf1b9
RW
2331 (build-system gnu-build-system)
2332 (inputs
2333 `(("minixml" ,minixml)
2334 ("jack" ,jack-1)
2335 ("alsa-lib" ,alsa-lib)))
2336 (native-inputs
2337 `(("pkg-config" ,pkg-config)))
2338 (home-page "http://aj-snapshot.sourceforge.net/")
2339 (synopsis "Snapshot connections between ALSA and JACK clients")
2340 (description "Aj-snapshot is a small program that can be used to make
2341snapshots of the connections made between JACK and/or ALSA clients. Because
2342JACK can provide both audio and MIDI support to programs, aj-snapshot can
2343store both types of connections for JACK. ALSA, on the other hand, only
2344provides routing facilities for MIDI clients. Aj-snapshot is meant to be used
2345from the command line.")
2346 (license license:gpl3+)))
2347
a763ce7d
RW
2348(define-public qtractor
2349 (package
2350 (name "qtractor")
95bf4508 2351 (version "0.9.6")
a763ce7d
RW
2352 (source (origin
2353 (method url-fetch)
2354 (uri (string-append "http://downloads.sourceforge.net/qtractor/"
2355 "qtractor-" version ".tar.gz"))
2356 (sha256
2357 (base32
95bf4508 2358 "06sa4wl8zr0k8dnjiil0gjwnhrkq95h50xv56ih1y8jgyzxchaxp"))))
a763ce7d 2359 (build-system gnu-build-system)
42639cc9 2360 (arguments
d56eee86 2361 `(#:tests? #f)) ; no "check" target
a763ce7d 2362 (inputs
523544d3
RW
2363 `(("qt" ,qtbase)
2364 ("qtx11extras" ,qtx11extras)
a763ce7d
RW
2365 ("alsa-lib" ,alsa-lib)
2366 ("jack" ,jack-1)
2367 ("libsndfile" ,libsndfile)
2368 ("ladspa" ,ladspa)
2369 ("lv2" ,lv2)
2370 ("lilv" ,lilv)
2371 ("suil" ,suil)
2372 ("libsamplerate" ,libsamplerate)
2373 ("libvorbis" ,libvorbis)
2374 ("libmad" ,libmad)
2375 ("rubberband" ,rubberband)
2376 ("liblo" ,liblo)
2377 ("zlib" ,zlib)))
2378 (native-inputs
523544d3
RW
2379 `(("pkg-config" ,pkg-config)
2380 ("qttools" ,qttools)))
8071bbbc 2381 (home-page "http://qtractor.org/")
a763ce7d
RW
2382 (synopsis "Audio/MIDI multi-track sequencer")
2383 (description
2384 "Qtractor is an Audio/MIDI multi-track sequencer application. It uses
2385JACK for audio and ALSA sequencer for MIDI as multimedia infrastructures and
2386follows a traditional multi-track tape recorder control paradigm.")
2387 (license license:gpl2+)))
aa0edd3f 2388
849c3d03 2389(define-public ams-lv2
e029d90f
BH
2390 ;; Version 1.2.1 built with Python 3.7 raises an error in the waf-script.
2391 ;; Therefore, we take two more commmits than 1.2.1 that introduce an updated
2392 ;; waf-script and fix one error.
2393 (let ((commit "377d166db54a787b48979171c5652d2eb4f1bbb5")
2394 (revision "1"))
2395 (package
2396 (name "ams-lv2")
2397 (version (git-version "1.2.1" revision commit))
2398 (source
2399 (origin
2400 (method git-fetch)
2401 (uri (git-reference
2402 (url "https://github.com/blablack/ams-lv2.git")
2403 (commit commit)))
2404 (file-name (git-file-name name version))
2405 (sha256
2406 (base32
2407 "1ndgxcxjxwidg7436k0nb5clxkyi878k1j999sbbd1gk2fm0kcqm"))))
2408 (build-system waf-build-system)
2409 (arguments
2410 `(#:phases
2411 (modify-phases %standard-phases
2412 (add-after 'unpack 'remove-sse-flags
2413 (lambda* (#:key system #:allow-other-keys)
6cbb2c87
BH
2414 (unless (or (string-prefix? "x86_64" system)
2415 (string-prefix? "i686" system))
e029d90f 2416 (substitute* "wscript"
6cbb2c87
BH
2417 (("'-msse', '-mfpmath=sse', ") "")))
2418 #t)))
e029d90f
BH
2419 #:tests? #f)) ; no tests
2420 (inputs
2421 `(("lv2" ,lv2)
2422 ("lvtk" ,lvtk)
2423 ("gtkmm" ,gtkmm-2)
2424 ("gtk" ,gtk+-2)
2425 ("cairo" ,cairo)
2426 ("fftw" ,fftw)))
2427 (native-inputs
2428 `(("pkg-config" ,pkg-config)))
2429 (home-page "https://objectivewave.wordpress.com/ams-lv2/")
2430 (synopsis "Port of Alsa Modular Synth internal modules into LV2")
2431 (description "This set of LV2 plugins is a port of the internal modules
849c3d03
RW
2432found in Alsa Modular Synth. These plugins are used to create modular
2433synthesizers and contain: VCO, VCF, VCA, LFO, slew limiter, envelopes, sample
2434and hold, etc.")
e029d90f 2435 (license license:gpl2))))
849c3d03 2436
aed023ff
RW
2437(define-public gxtuner
2438 (package
2439 (name "gxtuner")
f5e0ff0f 2440 (version "2.4")
aed023ff 2441 (source (origin
bed4eb37
RW
2442 (method git-fetch)
2443 (uri (git-reference
2444 (url "https://github.com/brummer10/gxtuner.git")
2445 (commit (string-append "v" version))))
2446 (file-name (git-file-name name version))
aed023ff
RW
2447 (sha256
2448 (base32
bed4eb37 2449 "1fxd2akan2njlr7fpkh84830783qhh1gg7yakswqk5dd466dcn96"))))
aed023ff
RW
2450 (build-system gnu-build-system)
2451 (arguments
2452 `(#:make-flags
2453 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
2454 (string-append "INCLUDE_L_DIR="
2455 (assoc-ref %build-inputs "zita-resampler")
2456 "/include/"))
2457 #:phases
2458 (modify-phases %standard-phases
2459 (delete 'configure))))
2460 (inputs
f5e0ff0f 2461 `(("gtk+" ,gtk+)
aed023ff
RW
2462 ("jack" ,jack-1)
2463 ("fftwf" ,fftwf)
2464 ("cairo" ,cairo)
2465 ("zita-resampler" ,zita-resampler)))
2466 (native-inputs
2467 `(("pkg-config" ,pkg-config)))
2468 (home-page "https://github.com/brummer10/gxtuner")
2469 (synopsis "Guitar tuner")
2470 (description "GXtuner is a simple guitar tuner for JACK with an
2471analogue-like user interface.")
2472 (license license:gpl2+)))
2473
c2c9e748 2474(define-public mod-host
9f1ac4fa 2475 ;; The last release was in 2014 but since then hundreds of commits have
c2c9e748 2476 ;; been made.
9f1ac4fa
RW
2477 (let ((commit "1726ad06b11323da7e1aaed690ff8aef91f702b5")
2478 (revision "3"))
c2c9e748
RW
2479 (package
2480 (name "mod-host")
2481 (version (string-append "0.10.6-" revision "." (string-take commit 9)))
2482 (source (origin
2483 (method git-fetch)
2484 (uri (git-reference
2485 (url "https://github.com/moddevices/mod-host")
2486 (commit commit)))
2487 (sha256
2488 (base32
9f1ac4fa 2489 "1nrd37c35w6z6ldczgrwmmd9hx1n3zyvcjcgb3mi4cygqdanvspv"))
c2c9e748
RW
2490 (file-name (string-append name "-" version "-checkout"))))
2491 (build-system gnu-build-system)
2492 (arguments
2493 `(#:tests? #f ; no tests included
2494 #:make-flags
2495 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
2496 "CC=gcc")
2497 #:phases
2498 (modify-phases %standard-phases
2499 (delete 'configure)
2500 (add-after 'unpack 'fix-jack-installation-directory
2501 (lambda _
2502 ;; Do not attempt to install files to output of "jack" package.
2503 (substitute* "Makefile"
2504 (("\\$\\(shell pkg-config --variable=libdir jack\\)")
2505 "lib"))
2506 #t)))))
2507 (inputs
2508 `(("lilv" ,lilv)
c96cb01a
DC
2509 ("fftw" ,fftw)
2510 ("fftwf" ,fftwf)
c2c9e748
RW
2511 ("lv2" ,lv2)
2512 ("jack" ,jack-1)
2513 ("readline" ,readline)))
2514 (native-inputs
2515 `(("pkg-config" ,pkg-config)
2516 ("python" ,python-2)))
2517 (home-page "https://github.com/moddevices/mod-host")
2518 (synopsis "LV2 host for Jack controllable via socket or command line")
2519 (description "mod-host is an LV2 plugin host for JACK, controllable via
2520socket or command line.")
2521 (license license:gpl3+))))
2522
19d93ef5
SR
2523(define-public curseradio
2524 (let ((commit "1bd4bd0faeec675e0647bac9a100b526cba19f8d")
2525 (revision "1"))
2526 (package
2527 (name "curseradio")
2528 (version (git-version "0" revision commit))
2529 (source (origin
2530 (method git-fetch)
2531 (uri (git-reference
2532 (url "https://github.com/chronitis/curseradio.git")
2533 (commit commit)))
2534 (file-name (git-file-name name version))
2535 (sha256
2536 (base32
2537 "11bf0jnj8h2fxhpdp498189r4s6b47vy4wripv0z4nx7lxajl88i"))))
2538 (build-system python-build-system)
2539 (propagated-inputs
2540 `(("python-lxml" ,python-lxml)
2541 ("python-requests" ,python-requests)
2542 ("python-pyxdg" ,python-pyxdg)
2543 ("mpv" ,mpv)))
2544 (home-page "https://github.com/chronitis/curseradio")
2545 (synopsis "Command-line Internet radio player")
2546 (description "Curseradio is a Curses-based radio player that uses a
2547tune-in sender list from @url{http://opml.radiotime.com}.")
2548 (license license:expat))))
2549
aa0edd3f
AM
2550(define-public pianobar
2551 (package
2552 (name "pianobar")
3999b664 2553 (version "2016.06.02")
aa0edd3f 2554 (source (origin
1410e178
RW
2555 (method git-fetch)
2556 (uri (git-reference
2557 (url "https://github.com/PromyLOPh/pianobar.git")
2558 (commit version)))
2559 (file-name (git-file-name name version))
aa0edd3f
AM
2560 (sha256
2561 (base32
1410e178 2562 "058fbdxp7n35hxwy3b8slfy4pb4n63cb173vfmywqa06wh1dv6f6"))))
aa0edd3f
AM
2563 (build-system gnu-build-system)
2564 (arguments
2565 `(#:tests? #f ; no tests
2566 #:make-flags (list "CC=gcc" "CFLAGS=-std=c99"
2567 (string-append "PREFIX=" %output))
2568 #:phases (modify-phases %standard-phases
2569 (delete 'configure))))
2570 (inputs
2571 `(("ao" ,ao)
2572 ("curl" ,curl)
2573 ("libgcrypt" ,libgcrypt)
2574 ("json-c" ,json-c)
bb5c508c 2575 ("ffmpeg" ,ffmpeg-3.4)))
aa0edd3f
AM
2576 (native-inputs
2577 `(("pkg-config" ,pkg-config)))
2578 (home-page "http://6xq.net/projects/pianobar/")
2579 (synopsis "Console-based pandora.com player")
2580 (description "pianobar is a console-based music player for the
2581personalized online radio pandora.com. It has configurable keys for playing
2582and managing stations, can be controlled remotely via fifo, and can run
2583event-based scripts for scrobbling, notifications, etc.")
2584 (license license:expat)))
3f7a182d 2585
1deab8cb
CB
2586(define-public picard
2587 (package
2588 (name "picard")
b421e915 2589 (version "2.1.3")
1deab8cb
CB
2590 (source (origin
2591 (method url-fetch)
2592 (uri (string-append
2593 "https://musicbrainz.osuosl.org/pub/musicbrainz/"
2594 "picard/picard-" version ".tar.gz"))
2595 (sha256
2596 (base32
b421e915 2597 "19w5k3bf4886gdycxjds9nkjvir0gwy2r5cqkz0lbls4ikk4y14f"))))
1deab8cb
CB
2598 (build-system python-build-system)
2599 (arguments
251448f7
TGR
2600 '(#:use-setuptools? #f
2601 #:configure-flags
e28b0798
TGR
2602 (list "--root=/"
2603 ;; Don't phone home or show ‘Check for Update…’ in the Help menu.
2604 "--disable-autoupdate")
251448f7 2605 #:phases
1deab8cb
CB
2606 (modify-phases %standard-phases
2607 (add-after 'unpack 'patch-source
2608 (lambda* (#:key inputs #:allow-other-keys)
2609 (substitute* "picard/const/__init__.py"
2610 (("pyfpcalc")
2611 (string-append
2612 "pyfpcalc', '"
e247244e
TGR
2613 (assoc-ref inputs "chromaprint") "/bin/fpcalc")))
2614 #t)))))
1deab8cb
CB
2615 (native-inputs
2616 `(("gettext" ,gettext-minimal)))
2617 (inputs
2618 `(("chromaprint" ,chromaprint)
7d9fa5f3 2619 ("python-discid" ,python-discid)
1deab8cb
CB
2620 ("python-pyqt" ,python-pyqt)
2621 ("python-mutagen" ,python-mutagen)))
2622 (home-page "https://picard.musicbrainz.org/")
2623 (synopsis "Graphical music tagging application")
2624 (description
2625 "MusicBrainz Picard is a music tagging application, supporting multiple
2626formats, looking up tracks through metadata and audio fingerprints.")
2627 (license license:gpl2+)))
2628
3f7a182d
LF
2629(define-public python-mutagen
2630 (package
2631 (name "python-mutagen")
e39aae4f 2632 (version "1.38")
3f7a182d
LF
2633 (source (origin
2634 (method url-fetch)
2635 (uri (pypi-uri "mutagen" version))
2636 (sha256
2637 (base32
e39aae4f 2638 "0rl7sxn1rcjl48fwga3dqf9f6pzspsny4ngxyf6pp337mrq0z693"))))
3f7a182d 2639 (build-system python-build-system)
4228a79e
LF
2640 (native-inputs
2641 `(("python-pytest" ,python-pytest)))
3f7a182d
LF
2642 (home-page "https://bitbucket.org/lazka/mutagen")
2643 (synopsis "Read and write audio tags")
2644 (description "Mutagen is a Python module to handle audio metadata. It
2645supports ASF, FLAC, M4A, Monkey’s Audio, MP3, Musepack, Ogg FLAC, Ogg Speex, Ogg
2646Theora, Ogg Vorbis, True Audio, WavPack and OptimFROG audio files. All versions
2647of ID3v2 are supported, and all standard ID3v2.4 frames are parsed. It can read
2648Xing headers to accurately calculate the bitrate and length of MP3s. ID3 and
2649APEv2 tags can be edited regardless of audio format. It can also manipulate Ogg
2650streams on an individual packet/page level.")
2651 (license license:gpl2))) ; "later version" never mentioned
2652
2653(define-public python2-mutagen
2654 (package-with-python2 python-mutagen))
8975de88
LF
2655
2656(define-public python-musicbrainzngs
2657 (package
2658 (name "python-musicbrainzngs")
daedf34d 2659 (version "0.6")
8975de88
LF
2660 (source (origin
2661 (method url-fetch)
2662 (uri (pypi-uri "musicbrainzngs" version))
2663 (sha256
2664 (base32
daedf34d 2665 "1dddarpjawryll2wss65xq3v9q8ln8dan7984l5dxzqx88d2dvr8"))))
8975de88 2666 (build-system python-build-system)
daedf34d
LF
2667 (arguments
2668 '(;; The tests fail suffer from race conditions:
2669 ;; https://github.com/alastair/python-musicbrainzngs/issues/211
2670 #:tests? #f))
8975de88
LF
2671 (home-page "https://python-musicbrainzngs.readthedocs.org/")
2672 (synopsis "Python bindings for MusicBrainz NGS webservice")
2673 (description "Musicbrainzngs implements Python bindings of the MusicBrainz
2674web service. This library can be used to retrieve music metadata from the
2675MusicBrainz database.")
2676 ;; 'musicbrainzngs/compat.py' is ISC licensed.
2677 (license (list license:bsd-2 license:isc))))
2678
2679(define-public python2-musicbrainzngs
2680 (package-with-python2 python-musicbrainzngs))
e8fee648 2681
07c82daa
GH
2682(define-public python-isrcsubmit
2683 (package
2684 (name "python-isrcsubmit")
2685 (version "2.0.1")
2686 (source
2687 (origin
2688 (method url-fetch)
2689 (uri (pypi-uri "isrcsubmit" version))
2690 (sha256
2691 (base32
2692 "0jh4cni8qhri6dh83cmp0i0m0384vv0vznlygv49wj9xzh1d99qv"))))
2693 (build-system python-build-system)
2694 (propagated-inputs
2695 `(("python-discid" ,python-discid)
2696 ("python-musicbrainzngs" ,python-musicbrainzngs)))
2697 (home-page "https://github.com/JonnyJD/musicbrainz-isrcsubmit")
2698 (synopsis "Submit ISRCs from CDs to MusicBrainz")
2699 (description "@code{isrcsubmit} is a tool to extract @dfn{International
2700Standard Recording Code} (ISRCs) from audio CDs and submit them to
2701@url{https://musicbrainz.org/, MusicBrainz}.")
2702 (license license:gpl3+)))
2703
a2eab422 2704(define-public python2-pyechonest
e8fee648 2705 (package
a2eab422 2706 (name "python2-pyechonest")
e8fee648
LF
2707 (version "9.0.0")
2708 (source (origin
2709 (method url-fetch)
2710 (uri (pypi-uri "pyechonest" version))
2711 (sha256
2712 (base32
2713 "1584nira3rkiman9dm81kdshihmkj21s8navndz2l8spnjwb790x"))))
2714 (build-system python-build-system)
a2eab422
LF
2715 (arguments
2716 `(;; Python 3 is not supported:
2717 ;; https://github.com/echonest/pyechonest/issues/42
2718 #:python ,python-2))
e8fee648
LF
2719 (home-page "https://github.com/echonest/pyechonest")
2720 (synopsis "Python interface to The Echo Nest APIs")
d3e3468f
LF
2721 (description "Pyechonest is a Python library for the Echo Nest API. With
2722Pyechonest you have Python access to the entire set of API methods including:
e8fee648
LF
2723
2724@enumerate
2725@item artist - search for artists by name, description, or attribute, and get
2726back detailed information about any artist including audio, similar artists,
2727blogs, familiarity, hotttnesss, news, reviews, urls and video.
2728@item song - search songs by artist, title, description, or attribute (tempo,
2729duration, etc) and get detailed information back about each song, such as
2730hotttnesss, audio_summary, or tracks.
2731@item track - upload a track to the Echo Nest and receive summary information
2732about the track including key, duration, mode, tempo, time signature along with
2733detailed track info including timbre, pitch, rhythm and loudness information.
2734@end enumerate\n")
a2eab422 2735 (license license:bsd-3)))
acd7351f
LF
2736
2737(define-public python-pylast
2738 (package
2739 (name "python-pylast")
653f2b92 2740 (version "2.0.0")
acd7351f
LF
2741 (source (origin
2742 (method url-fetch)
2743 (uri (pypi-uri "pylast" version))
2744 (sha256
2745 (base32
653f2b92 2746 "0r9h7g8i8l2mgqjwkda3v6prfbkb2im5kap1az9ppmhjm9i4jkcf"))))
acd7351f 2747 (build-system python-build-system)
653f2b92
RW
2748 ;; Tests require network access. See
2749 ;; https://github.com/pylast/pylast/issues/105
2750 (arguments '(#:tests? #f))
acd7351f
LF
2751 (native-inputs
2752 `(("python-coverage" ,python-coverage)
653f2b92 2753 ("python-pycodestyle" ,python-pycodestyle)
acd7351f
LF
2754 ("python-mock" ,python-mock)
2755 ("python-pep8" ,python-pep8)
2756 ("python-pytest" ,python-pytest)
653f2b92 2757 ("python-flaky" ,python-flaky)
acd7351f
LF
2758 ("python-pyflakes" ,python-pyflakes)
2759 ("python-pyyaml" ,python-pyyaml)))
2760 (propagated-inputs
2761 `(("python-six" ,python-six)))
2762 (home-page "https://github.com/pylast/pylast")
2763 (synopsis "Python interface to Last.fm and Libre.fm")
2764 (description "A Python interface to Last.fm and other API-compatible
2765websites such as Libre.fm.")
5c31f4aa 2766 (license license:asl2.0)))
acd7351f
LF
2767
2768(define-public python2-pylast
5c31f4aa 2769 (package-with-python2 python-pylast))
3bf429af 2770
b0dea60c
SR
2771(define-public instantmusic
2772 (let ((commit "300891d09c703525215fa5a116b9294af1c923c8")
2773 (revision "1"))
2774 (package
2775 (name "instantmusic")
2776 (version (git-version "1.0" revision commit))
2777 (source (origin
2778 (method git-fetch)
2779 (uri (git-reference
2780 (url "https://github.com/yask123/Instant-Music-Downloader.git")
2781 (commit commit)))
2782 (file-name (git-file-name name version))
2783 (sha256
2784 (base32
2785 "0j7qivaa04bpdz3anmgci5833dgiyfqqwq9fdrpl9m68b34gl773"))))
2786 (build-system python-build-system)
2787 (propagated-inputs
2788 `(("python-requests" ,python-requests)
c695fb76 2789 ("eyed3" ,eyed3)
b0dea60c
SR
2790 ("python-beautifulsoup4" ,python-beautifulsoup4)
2791 ("youtube-dl" ,youtube-dl)))
2792 (arguments
2793 '(#:modules ((guix build python-build-system)
2794 (guix build utils)
2795 (srfi srfi-26))
2796 #:phases (modify-phases %standard-phases
2797 (add-before 'build 'change-directory
2798 (lambda _
2799 (chdir "instantmusic-0.1") #t))
2800 (add-before 'check 'fix-file-permissions
2801 (lambda _
2802 ;; Fix some read-only files that would cause a build failure
2803 (for-each (cut chmod <> #o644)
2804 (find-files "instantmusic.egg-info"
2805 "PKG-INFO|.*\\.txt"))
2806 #t)))))
2807 (home-page "http://iyask.me/Instant-Music-Downloader/")
2808 (synopsis "Command-line program to download a song from YouTube")
2809 (description "InstantMusic downloads a song from YouTube in MP3 format.
2810Songs can be searched by artist, name or even by a part of the song text.")
2811 (license license:expat))))
2812
3bf429af
LF
2813(define-public beets
2814 (package
2815 (name "beets")
191c439e 2816 (version "1.4.7")
3bf429af
LF
2817 (source (origin
2818 (method url-fetch)
23319ed6 2819 (uri (pypi-uri "beets" version))
c05c1910 2820 (patches (search-patches "beets-python-3.7-fix.patch"))
3bf429af
LF
2821 (sha256
2822 (base32
191c439e 2823 "0w3gz69s9gf5ih69d4sddgh7ndj7658m621bp742zldvjakdncrs"))))
3bf429af
LF
2824 (build-system python-build-system)
2825 (arguments
0d48ff81 2826 `(#:phases
3bf429af
LF
2827 (modify-phases %standard-phases
2828 (add-after 'unpack 'set-HOME
46fce968
TGR
2829 (lambda _
2830 (setenv "HOME" (string-append (getcwd) "/tmp"))
2831 #t))
aa007978
DM
2832 (add-after 'unpack 'make-python3.7-compatible
2833 (lambda _
2834 ;; See <https://github.com/beetbox/beets/issues/2978>.
2835 (substitute* "beets/autotag/hooks.py"
2836 (("re\\._pattern_type") "re.Pattern"))
2837 #t))
36c2c8c8 2838 (replace 'check
46fce968
TGR
2839 (lambda _
2840 (invoke "nosetests" "-v"))))))
3bf429af 2841 (native-inputs
0d48ff81
LF
2842 `(("python-beautifulsoup4" ,python-beautifulsoup4)
2843 ("python-flask" ,python-flask)
2844 ("python-mock" ,python-mock)
2845 ("python-mpd2" ,python-mpd2)
2846 ("python-nose" ,python-nose)
2847 ("python-pathlib" ,python-pathlib)
2848 ("python-pyxdg" ,python-pyxdg)
2849 ("python-pylast" ,python-pylast)
2850 ("python-rarfile" ,python-rarfile)
2851 ("python-responses" ,python-responses)))
3bf429af 2852 ;; TODO: Install optional plugins and dependencies.
b3470031 2853 (inputs
0d48ff81 2854 `(("python-discogs-client" ,python-discogs-client)
0d48ff81
LF
2855 ("python-jellyfish" ,python-jellyfish)
2856 ("python-munkres" ,python-munkres)
2857 ("python-musicbrainzngs" ,python-musicbrainzngs)
2858 ("python-mutagen" ,python-mutagen)
2859 ("python-pyyaml" ,python-pyyaml)
2860 ("python-unidecode" ,python-unidecode)))
3bf429af
LF
2861 (home-page "http://beets.io")
2862 (synopsis "Music organizer")
2863 (description "The purpose of beets is to get your music collection right
2864once and for all. It catalogs your collection, automatically improving its
2865metadata as it goes using the MusicBrainz database. Then it provides a variety
2866of tools for manipulating and accessing your music.")
2867 (license license:expat)))
21d18113 2868
4ee2cce3
JK
2869(define-public beets-bandcamp
2870 (package
2871 (name "beets-bandcamp")
2872 (version "0.1.3")
2873 (source (origin
2874 (method url-fetch)
2875 (uri (pypi-uri "beets-bandcamp" version))
2876 (sha256
2877 (base32
2878 "04awg0zdhhg5h510fc1p3qkvr2l1qm6nf85hlr9z8im8a7xlka0i"))))
2879 (build-system python-build-system)
2880 (arguments '(#:tests? #f)) ; there are no tests
2881 (propagated-inputs
2882 `(("beets" ,beets)
2883 ("python-isodate" ,python-isodate)))
2884 (inputs
2885 `(("python-beautifulsoup4" ,python-beautifulsoup4)
2886 ("python-requests" ,python-requests)
2887 ("python-six" ,python-six)))
2888 (home-page "https://github.com/unrblt/beets-bandcamp")
2889 (synopsis "Bandcamp plugin for beets")
2890 (description
2891 "This plugin for beets automatically obtains tag data from @uref{Bandcamp,
2892https://bandcamp.com/}. It's also capable of getting song lyrics and album art
2893using the beets FetchArt plugin.")
2894 (license license:gpl2)))
2895
21d18113
KY
2896(define-public milkytracker
2897 (package
2898 (name "milkytracker")
b7e2fcf0 2899 (version "1.02.00")
21d18113 2900 (source (origin
caa39e56
RW
2901 (method git-fetch)
2902 (uri (git-reference
2903 (url "https://github.com/milkytracker/MilkyTracker.git")
2904 (commit (string-append "v" version))))
2905 (file-name (git-file-name name version))
21d18113
KY
2906 (sha256
2907 (base32
caa39e56 2908 "05a6d7l98k9i82dwrgi855dnccm3f2lkb144gi244vhk1156n0ca"))
e3b2e943
KK
2909 (modules '((guix build utils)))
2910 ;; Remove non-FSDG compliant sample songs.
2911 (snippet
2912 '(begin
2913 (delete-file-recursively "resources/music")
2914 (substitute* "CMakeLists.txt"
6cbee49d
MW
2915 (("add_subdirectory\\(resources/music\\)") ""))
2916 #t))))
e3b2e943 2917 (build-system cmake-build-system)
21d18113 2918 (arguments
7f2f8345
KK
2919 '(#:tests? #f ; no check target
2920 ;; This flag ensures that MilkyTracker links with the JACK library.
2921 #:configure-flags '("-DCMAKE_CXX_FLAGS=-ljack")))
21d18113
KY
2922 (inputs
2923 `(("alsa-lib" ,alsa-lib)
ba259bad 2924 ("lhasa" ,lhasa)
21d18113 2925 ("jack" ,jack-1)
f1618a0f 2926 ("rtmidi" ,rtmidi)
e3b2e943 2927 ("sdl" ,sdl2)
f1618a0f
KK
2928 ("zlib" ,zlib)
2929 ("zziplib" ,zziplib)))
21d18113
KY
2930 (native-inputs
2931 `(("pkg-config" ,pkg-config)))
2932 (synopsis "Music tracker for working with .MOD/.XM module files")
2933 (description "MilkyTracker is a music application for creating .MOD and .XM
2934module files. It attempts to recreate the module replay and user experience of
2935the popular DOS program Fasttracker II, with special playback modes available
2936for improved Amiga ProTracker 2/3 compatibility.")
1b35fea1 2937 (home-page "http://milkytracker.titandemo.org/")
21d18113
KY
2938 ;; 'src/milkyplay' is under Modified BSD, the rest is under GPL3 or later.
2939 (license (list license:bsd-3 license:gpl3+))))
13416a10 2940
89bcf3fc
KK
2941(define-public schismtracker
2942 (package
2943 (name "schismtracker")
e526db51 2944 (version "20190614")
89bcf3fc 2945 (source (origin
3b9e9415
RW
2946 (method git-fetch)
2947 (uri (git-reference
2948 (url "https://github.com/schismtracker/schismtracker.git")
2949 (commit version)))
2950 (file-name (git-file-name name version))
89bcf3fc
KK
2951 (sha256
2952 (base32
e526db51 2953 "0cg0q5bkn8a06v03vmj69xyhi4xxpl729k4008q4hiakh9gy2x49"))
89bcf3fc
KK
2954 (modules '((guix build utils)))
2955 (snippet
2956 ;; Remove use of __DATE__ and __TIME__ for reproducibility.
6cbee49d
MW
2957 `(begin
2958 (substitute* "schism/version.c"
2959 (("Schism Tracker built %s %s.*$")
2960 (string-append "Schism Tracker version " ,version "\");")))
2961 #t))))
89bcf3fc
KK
2962 (build-system gnu-build-system)
2963 (arguments
2964 `(#:phases
2965 (modify-phases %standard-phases
89bcf3fc
KK
2966 (add-before 'configure 'link-libm
2967 (lambda _ (setenv "LIBS" "-lm") #t)))))
2968 (native-inputs
2969 `(("autoconf" ,autoconf)
2970 ("automake" ,automake)
2971 ("python" ,python)))
2972 (inputs
e526db51 2973 `(("alsa-lib" ,alsa-lib) ; for asound dependency
89bcf3fc
KK
2974 ("libx11" ,libx11)
2975 ("libxext" ,libxext)
2976 ("sdl" ,sdl)))
2977 (home-page "http://schismtracker.org")
2978 (synopsis "Oldschool sample-based music composition tool")
2979 (description
2980 "Schism Tracker is a reimplementation of Impulse Tracker, a program used to
2981create high quality music without the requirements of specialized, expensive
2982equipment, and with a unique \"finger feel\" that is difficult to replicate in
2983part. The player is based on a highly modified version of the ModPlug engine,
2984with a number of bugfixes and changes to improve IT playback.")
2985 (license license:gpl2+)))
2986
5beecc32
RW
2987(define-public sooperlooper
2988 (package
2989 (name "sooperlooper")
2990 (version "1.7.3")
2991 (source (origin
2992 (method url-fetch)
2993 (uri (string-append "http://essej.net/sooperlooper/sooperlooper-"
2994 version ".tar.gz"))
2995 (sha256
2996 (base32
2997 "0n2gdxw1fx8nxxnpzf4sj0kp6k6zi1yq59cbz6qqzcnsnpnvszbs"))
2998 (patches (search-patches "sooperlooper-build-with-wx-30.patch"))))
2999 (build-system gnu-build-system)
3000 (arguments
3001 `(#:make-flags (list "CXXFLAGS=-std=gnu++11")
3002 #:phases
3003 (modify-phases %standard-phases
3004 (add-after 'unpack 'add-sigc++-includes
3005 (lambda* (#:key inputs #:allow-other-keys)
3006 (let ((sig (assoc-ref inputs "libsigc++"))
3007 (xml (assoc-ref inputs "libxml2"))
3008 (cwd (getcwd)))
3009 (setenv "CPATH"
3010 (string-append sig "/include/sigc++-2.0:"
3011 sig "/lib/sigc++-2.0/include:"
3012 xml "/include/libxml2/:"
3013 cwd "/libs/pbd:"
3014 cwd "/libs/midi++")))
3015 (substitute* '("src/control_osc.hpp"
3016 "src/gui/app_frame.hpp"
3017 "src/gui/config_panel.hpp"
3018 "src/gui/keys_panel.hpp"
3019 "src/gui/latency_panel.hpp"
3020 "src/gui/main_panel.hpp"
3021 "src/gui/midi_bind_panel.hpp"
3022 "src/gui/prefs_dialog.hpp")
3023 (("sigc\\+\\+/object.h")
3024 "sigc++/sigc++.h"))
3025 (substitute* '("src/engine.cpp"
3026 "src/gui/latency_panel.cpp"
3027 "src/gui/looper_panel.cpp"
3028 "src/gui/main_panel.cpp")
3029 (("(\\(| )bind " _ pre)
3030 (string-append pre "sigc::bind ")))
3031 #t))
3032 (add-after 'unpack 'fix-xpm-warnings
3033 (lambda _
3034 (substitute* (find-files "." "\\.xpm$")
3035 (("static char") "static const char"))
3036 #t)))))
3037 (inputs
3038 `(("jack" ,jack-1)
3039 ("alsa-lib" ,alsa-lib)
3040 ("wxwidgets" ,wxwidgets-gtk2)
3041 ("libsndfile" ,libsndfile)
3042 ("libsamplerate" ,libsamplerate)
3043 ("liblo" ,liblo)
3044 ("rubberband" ,rubberband)
3045 ("libxml2" ,libxml2)
3046 ("libsigc++" ,libsigc++)
3047 ("ncurses" ,ncurses)))
3048 (native-inputs
3049 `(("pkg-config" ,pkg-config)))
3050 (home-page "http://essej.net/sooperlooper/")
3051 (synopsis "Live looping sampler")
3052 (description
3053 "SooperLooper is a live looping sampler capable of immediate loop
3054recording, overdubbing, multiplying, reversing and more. It allows for
3055multiple simultaneous multi-channel loops limited only by your computer's
3056available memory.")
3057 (license license:gpl2+)))
3058
13416a10
KY
3059(define-public moc
3060 (package
3061 (name "moc")
2fbc004f 3062 (version "2.5.2")
13416a10
KY
3063 (source (origin
3064 (method url-fetch)
3065 (uri (string-append "http://ftp.daper.net/pub/soft/"
3066 name "/stable/"
3067 name "-" version ".tar.bz2"))
3068 (sha256
3069 (base32
2784b35f 3070 "026v977kwb0wbmlmf6mnik328plxg8wykfx9ryvqhirac0aq39pk"))))
13416a10
KY
3071 (build-system gnu-build-system)
3072 (inputs
3073 `(("alsa-lib" ,alsa-lib)
3074 ("curl" ,curl)
3075 ("faad2" ,faad2)
bb5c508c 3076 ("ffmpeg" ,ffmpeg-3.4)
13416a10
KY
3077 ("file" ,file)
3078 ("jack" ,jack-1)
3079 ("libid3tag" ,libid3tag)
3080 ("libltdl" ,libltdl)
3081 ("libmodplug" ,libmodplug)
3082 ("libmpcdec" ,libmpcdec)
3083 ("libmad" ,libmad)
6beaa5a0
MM
3084 ("libogg" ,libogg)
3085 ("libvorbis" ,libvorbis)
13416a10
KY
3086 ("ncurses" ,ncurses)
3087 ("openssl" ,openssl)
3088 ("sasl" ,cyrus-sasl)
3089 ("speex" ,speex)
3090 ("taglib" ,taglib)
3091 ("wavpack" ,wavpack)
3092 ("zlib" ,zlib)))
3093 (native-inputs
3094 `(("pkg-config" ,pkg-config)))
3095 (synopsis "Console audio player designed to be powerful and easy to use")
3096 (description
3097 "Music on Console is a console audio player that supports many file
3098formats, including most audio formats recognized by FFMpeg.")
3099 (home-page "http://moc.daper.net")
3100 (license license:gpl2+)))
6d3ef286
JF
3101
3102(define-public midicsv
3103 (package
3104 (name "midicsv")
3105 (version "1.1")
3106 (source (origin
3107 (method url-fetch)
3108 (uri (string-append "http://www.fourmilab.ch/webtools/midicsv/"
3109 name "-" version ".tar.gz"))
3110 (sha256
3111 (base32
3112 "1vvhk2nf9ilfw0wchmxy8l13hbw9cnpz079nsx5srsy4nnd78nkw"))))
3113 (build-system gnu-build-system)
3114 (arguments
3115 `(#:phases (modify-phases %standard-phases (delete 'configure))
3116 #:make-flags (list "CC=gcc" (string-append "INSTALL_DEST=" %output))))
3117 (synopsis "Convert MIDI files to and from CSV")
3118 (description
3119 "Midicsv reads a standard MIDI file and decodes it into a comma-separated
3120value file (CSV), which preserves all the information in the MIDI file. The
3121ASCII CSV file may be loaded into a spreadsheet or database application, or
3122processed by a program to transform the MIDI data (for example, to key
3123transpose a composition or extract a track from a multi-track sequence). A
3124CSV file in the format created by midicsv may be converted back into a
3125standard MIDI file with the csvmidi program.")
3126 (home-page "http://www.fourmilab.ch/webtools/midicsv/")
3127 (license license:public-domain)))
49604680
RW
3128
3129(define-public gx-guvnor-lv2
35f909d4
RW
3130 (package
3131 (name "gx-guvnor-lv2")
3132 (version "0.1")
3133 (source (origin
6ac8c78c
RW
3134 (method git-fetch)
3135 (uri (git-reference
3136 (url "https://github.com/brummer10/GxGuvnor.lv2.git")
3137 (commit (string-append "v" version))))
3138 (file-name (string-append name "-" version "-checkout"))
35f909d4
RW
3139 (sha256
3140 (base32
6ac8c78c 3141 "1wa5070j40p7f0b3kr259pzm99xb6cf2badr2capayjvgayd6gnm"))))
35f909d4
RW
3142 (build-system gnu-build-system)
3143 (arguments
3144 `(;; The check target is used only to output a warning.
3145 #:tests? #f
3146 #:make-flags
3147 (list (string-append "DESTDIR=" (assoc-ref %outputs "out")))
3148 #:phases
3149 (modify-phases %standard-phases
3150 (replace 'configure
3151 (lambda _
3152 (substitute* "Makefile"
6ac8c78c
RW
3153 (("INSTALL_DIR = .*") "INSTALL_DIR=/lib/lv2\n")
3154 (("install : all") "install :"))
35f909d4
RW
3155 #t)))))
3156 (inputs
3157 `(("lv2" ,lv2)))
3158 (home-page "https://github.com/brummer10/GxGuvnor.lv2")
3159 (synopsis "Overdrive/distortion pedal simulation")
3160 (description "This package provides the LV2 plugin \"GxGuvnor\", a
49604680 3161simulation of an overdrive or distortion pedal for guitars.")
35f909d4 3162 ;; The LICENSE file says GPLv3 but the license headers in the files say
4b359532
RW
3163 ;; GPLv2 or later. The whole project is released under GPLv3 or later
3164 ;; according to https://github.com/brummer10/GxGuvnor.lv2/issues/1
3165 (license license:gpl3+)))
85ae347e
RW
3166
3167(define-public gx-vbass-preamp-lv2
1b74b126
RW
3168 (let ((commit "eb999b0ca0ef4da40a59e458a9ab6e7042b96c99")
3169 (revision "2"))
85ae347e
RW
3170 (package (inherit gx-guvnor-lv2)
3171 (name "gx-vbass-preamp-lv2")
3172 (version (string-append "0-" revision "." (string-take commit 9)))
3173 (source (origin
3174 (method git-fetch)
3175 (uri (git-reference
3176 (url "https://github.com/brummer10/GxVBassPreAmp.lv2")
3177 (commit commit)))
3178 (sha256
3179 (base32
1b74b126 3180 "0firap073ldw4nrykkd7jvyyj0jbl1nslxyzjj4kswazp99x7d9h"))
85ae347e 3181 (file-name (string-append name "-" version "-checkout"))))
1b74b126
RW
3182 (inputs
3183 `(("lv2" ,lv2)
3184 ("gtk+" ,gtk+-2)))
3185 (native-inputs
3186 `(("pkg-config" ,pkg-config)))
85ae347e
RW
3187 (home-page "https://github.com/brummer10/GxVBassPreAmp.lv2")
3188 (synopsis "Simulation of the Vox Venue Bass 100 Pre Amp Section")
3189 (description "This package provides the LV2 plugin \"GxVBassPreAmp\", a
3190pre-amplifier simulation modelled after the 1984 Vox Venue Bass 100 Pre Amp
3191Section."))))
cdc7a021
RW
3192
3193(define-public gx-overdriver-lv2
3194 (let ((commit "ed71801987449414bf3adaa0dbfac68e8775f1ce")
3195 (revision "1"))
1b74b126 3196 (package (inherit gx-guvnor-lv2)
cdc7a021
RW
3197 (name "gx-overdriver-lv2")
3198 (version (string-append "0-" revision "." (string-take commit 9)))
3199 (source (origin
3200 (method git-fetch)
3201 (uri (git-reference
3202 (url "https://github.com/brummer10/GxOverDriver.lv2")
3203 (commit commit)))
3204 (sha256
3205 (base32
3206 "13j614jh525fbkby79nnzwj0z1ac0c9wclyn5pfqvkmx6a7j24r8"))
3207 (file-name (string-append name "-" version "-checkout"))))
3208 (home-page "https://github.com/brummer10/GxOverDriver.lv2")
3209 (synopsis "Overdrive effect with level and tone control")
3210 (description "This package provides the LV2 plugin \"GxOverDriver\", an
3211overdrive effect."))))
4d95cd30
RW
3212
3213(define-public gx-tone-mender-lv2
3214 (let ((commit "b6780b4a3e4782b3ed0e5882d6788f178aed138f")
3215 (revision "1"))
1b74b126 3216 (package (inherit gx-guvnor-lv2)
4d95cd30
RW
3217 (name "gx-tone-mender-lv2")
3218 (version (string-append "0-" revision "." (string-take commit 9)))
3219 (source (origin
3220 (method git-fetch)
3221 (uri (git-reference
3222 (url "https://github.com/brummer10/GxToneMender.lv2")
3223 (commit commit)))
3224 (sha256
3225 (base32
3226 "07qdcfsvv2vdnfnjh91pfgvjdcs5y91nvwfm8c0z8fp6b4bk7a9q"))
3227 (file-name (string-append name "-" version "-checkout"))))
3228 (home-page "https://github.com/brummer10/GxToneMender.lv2")
3229 (synopsis "Clean boost with a 3-knob tonestack")
3230 (description "This package provides the LV2 plugin \"GxToneMender\", a
3231clean boost effect with a 3-knob tonestack."))))
4d4bfdc2
RW
3232
3233(define-public gx-push-pull-lv2
3234 (let ((commit "7f76ae2068498643ac8671ee0930b13ee3fd8eb5")
3235 (revision "1"))
1b74b126 3236 (package (inherit gx-guvnor-lv2)
4d4bfdc2
RW
3237 (name "gx-push-pull-lv2")
3238 (version (string-append "0-" revision "." (string-take commit 9)))
3239 (source (origin
3240 (method git-fetch)
3241 (uri (git-reference
3242 (url "https://github.com/brummer10/GxPushPull.lv2")
3243 (commit commit)))
3244 (sha256
3245 (base32
3246 "12f5hwck2irph0gjbj8xy8jqcqdwb8l1hlwf29k0clz52h1jhb5q"))
3247 (file-name (string-append name "-" version "-checkout"))))
3248 (home-page "https://github.com/brummer10/GxPushPull.lv2")
3249 (synopsis "Octave up push pull transistor fuzz simulation")
3250 (description "This package provides the LV2 plugin \"GxPushPull\", a
3251simulation of a push pull transistor fuzz effect with added high octave."))))
3eb1a964
RW
3252
3253(define-public gx-suppa-tone-bender-lv2
f959991d
RW
3254 (package (inherit gx-guvnor-lv2)
3255 (name "gx-suppa-tone-bender-lv2")
3256 (version "0.1")
3257 (source (origin
48b95a19
RW
3258 (method git-fetch)
3259 (uri (git-reference
3260 (url "https://github.com/brummer10/GxSuppaToneBender.lv2.git")
3261 (commit (string-append "v" version))))
3262 (file-name (string-append name "-" version "-checkout"))
f959991d
RW
3263 (sha256
3264 (base32
48b95a19 3265 "01x6bjmllkmvxfzc5xwdix7w021j26js71awv728cxsmkxgqw0zy"))))
f959991d
RW
3266 (home-page "https://github.com/brummer10/GxSuppaToneBender.lv2")
3267 (synopsis "Simulation of the Vox Suppa Tone Bender pedal")
3268 (description "This package provides the LV2 plugin
3eb1a964 3269\"GxSuppaToneBender\", a simulation modelled after the Vox Suppa Tone Bender
f959991d 3270pedal.")))
664f677f
RW
3271
3272(define-public gx-saturator-lv2
d9f65bd3
RW
3273 (let ((commit "605330f432c94b6eb3f8203cbe472befae959532")
3274 (revision "3"))
ad67ca3d 3275 (package (inherit gx-vbass-preamp-lv2)
664f677f
RW
3276 (name "gx-saturator-lv2")
3277 (version (string-append "0-" revision "." (string-take commit 9)))
3278 (source (origin
3279 (method git-fetch)
3280 (uri (git-reference
3281 (url "https://github.com/brummer10/GxSaturator.lv2")
3282 (commit commit)))
3283 (sha256
3284 (base32
d9f65bd3 3285 "1w4nvh0rmxrv3s3hmh4fs74f3hc0jn31v00j769j7v68mqr7kawy"))
664f677f
RW
3286 (file-name (string-append name "-" version "-checkout"))))
3287 (home-page "https://github.com/brummer10/GxSaturator.lv2")
3288 (synopsis "Saturation effect")
3289 (description "This package provides the LV2 plugin \"GxSaturator\", a
3290saturation effect."))))
89412238
RW
3291
3292(define-public gx-hyperion-lv2
4396e9b5
RW
3293 (package (inherit gx-guvnor-lv2)
3294 (name "gx-hyperion-lv2")
3295 (version "0.1")
3296 (source (origin
37519239
RW
3297 (method git-fetch)
3298 (uri (git-reference
3299 (url "https://github.com/brummer10/GxHyperion.lv2.git")
3300 (commit (string-append "v" version))))
3301 (file-name (string-append name "-" version "-checkout"))
4396e9b5
RW
3302 (sha256
3303 (base32
37519239 3304 "1vx79s6s9if117y2g0ppdja2sv2wcny6xcfl3j1z4cipahnildxf"))))
4396e9b5
RW
3305 (home-page "https://github.com/brummer10/GxHyperion.lv2")
3306 (synopsis "Simulation of the Hyperion Fuzz pedal")
3307 (description "This package provides the LV2 plugin \"GxHyperion\", a
3308simulation of the Hyperion Fuzz pedal.")))
32536f00
RW
3309
3310(define-public gx-voodoo-fuzz-lv2
cf44ebeb
RW
3311 (package (inherit gx-guvnor-lv2)
3312 (name "gx-voodoo-fuzz-lv2")
3313 (version "0.1")
3314 (source (origin
d42c6613
RW
3315 (method git-fetch)
3316 (uri (git-reference
3317 (url "https://github.com/brummer10/GxVoodoFuzz.lv2.git")
3318 (commit (string-append "v" version))))
3319 (file-name (string-append name "-" version "-checkout"))
cf44ebeb
RW
3320 (sha256
3321 (base32
d42c6613 3322 "1v0scphivri1fk4hl20j13f92i48mnx1zsil4hgnadsmm4nsfw43"))))
cf44ebeb
RW
3323 (home-page "https://github.com/brummer10/GxVoodoFuzz.lv2")
3324 (synopsis "Fuzz effect modelled after the Voodoo Lab SuperFuzz")
3325 (description "This package provides the LV2 plugin \"GxVoodooFuzz\", a
32536f00
RW
3326simulation modelled after the Voodoo Lab SuperFuzz pedal. It's basically a
3327Bosstone circuit, followed by the tone control of the FoxToneMachine in
cf44ebeb 3328parallel with a DarkBooster, followed by a volume control.")))
29f63222
RW
3329
3330(define-public gx-super-fuzz-lv2
34a3ecfe
RW
3331 (package (inherit gx-guvnor-lv2)
3332 (name "gx-super-fuzz-lv2")
3333 (version "0.1")
3334 (source (origin
5057535f
RW
3335 (method git-fetch)
3336 (uri (git-reference
3337 (url "https://github.com/brummer10/GxSuperFuzz.lv2.git")
3338 (commit (string-append "v" version))))
3339 (file-name (string-append name "-" version "-checkout"))
34a3ecfe
RW
3340 (sha256
3341 (base32
5057535f 3342 "1jlljd9hlgfflbiizq47lv1xbbgjyx3v835mf24zmh1q5zsw4np4"))))
34a3ecfe
RW
3343 (home-page "https://github.com/brummer10/GxSuperFuzz.lv2")
3344 (synopsis "Fuzz effect modelled after the UniVox SuperFuzz")
a6f39d7c 3345 (description "This package provides the LV2 plugin \"GxSuperFuzz\", an
29f63222 3346analog simulation of the UniVox SuperFuzz pedal. In this simulation the trim
d1e4ad1b 3347pot, which is usually in the housing, is exposed as a control parameter. It
34a3ecfe 3348adjusts the amount of harmonics.")))
40bffdfa
RW
3349
3350(define-public gx-vintage-fuzz-master-lv2
38050923
RW
3351 (package (inherit gx-guvnor-lv2)
3352 (name "gx-vintage-fuzz-master-lv2")
3353 (version "0.1")
3354 (source (origin
0febd673
RW
3355 (method git-fetch)
3356 (uri (git-reference
3357 (url "https://github.com/brummer10/GxVintageFuzzMaster.lv2.git")
3358 (commit (string-append "v" version))))
3359 (file-name (string-append name "-" version "-checkout"))
38050923
RW
3360 (sha256
3361 (base32
0febd673 3362 "02jb211z8rw2qr5r1z5mdxlqgiw6cbc319xpqplvn6k21c59mskv"))))
38050923
RW
3363 (home-page "https://github.com/brummer10/GxVintageFuzzMaster.lv2")
3364 (synopsis "Fuzz effect simulation of the vintage Fuzz Master")
3365 (description "This package provides the LV2 plugin
3366\"GxVintageFuzzMaster\", a simulation of the vintage Fuzz Master pedal.")))
631f8175
RW
3367
3368(define-public gx-slow-gear-lv2
d921a1f4
RW
3369 (let ((commit "5d37e775b0feef1d82feee94e2a7a2d7e57efe2d")
3370 (revision "3"))
ad67ca3d 3371 (package (inherit gx-vbass-preamp-lv2)
631f8175
RW
3372 (name "gx-slow-gear-lv2")
3373 (version (string-append "0-" revision "." (string-take commit 9)))
3374 (source (origin
3375 (method git-fetch)
3376 (uri (git-reference
3377 (url "https://github.com/brummer10/GxSlowGear.lv2")
3378 (commit commit)))
3379 (sha256
3380 (base32
d921a1f4 3381 "141mz69zkhk3lm54bb6wgpnghb92zm1ig7fv07240cmhydqji1q1"))
631f8175
RW
3382 (file-name (string-append name "-" version "-checkout"))))
3383 (home-page "https://github.com/brummer10/GxSlowGear.lv2")
3384 (synopsis "Slow gear audio effect")
3385 (description "This package provides the LV2 plugin \"GxSlowGear\", a
3386slow gear audio effect to produce volume swells."))))
d75e8f5a
RW
3387
3388(define-public gx-switchless-wah-lv2
cfcef2c2
RW
3389 (let ((commit "7b08691203314612999f0ce2328cdc1161cd6665")
3390 (revision "2"))
1b74b126 3391 (package (inherit gx-guvnor-lv2)
d75e8f5a
RW
3392 (name "gx-switchless-wah-lv2")
3393 (version (string-append "0-" revision "." (string-take commit 9)))
3394 (source (origin
3395 (method git-fetch)
3396 (uri (git-reference
3397 (url "https://github.com/brummer10/GxSwitchlessWah.lv2")
3398 (commit commit)))
3399 (sha256
3400 (base32
cfcef2c2 3401 "04jqfpncmrrqn34p21w4v9m2x5a5wsqwbm4f3byxvq4vcibwxzk2"))
d75e8f5a
RW
3402 (file-name (string-append name "-" version "-checkout"))))
3403 (home-page "https://github.com/brummer10/GxSwitchlessWah.lv2")
3404 (synopsis "Wah emulation with switchless activation")
3405 (description "This package provides the LV2 plugin \"GxSwitchlessWah\",
3406a simulation of an analog Wah pedal with switchless activation."))))
84d53724 3407
a734da86
RW
3408(define-public rkrlv2
3409 (let ((commit "d8c17d3c976107e5c012970276d7cf0aa059f15b")
3410 (revision "1"))
3411 (package
3412 (name "rkrlv2")
3413 (version (git-version "0" revision commit))
3414 (source (origin
3415 (method git-fetch)
3416 (uri (git-reference
3417 (url "https://github.com/ssj71/rkrlv2.git")
3418 (commit commit)))
3419 (sha256
3420 (base32
3421 "035z068rlafb7ibgqf34ck2lm4fab8yzlx41qh061x2xi4hxkvp0"))
3422 (file-name (git-file-name name version))))
3423 (build-system cmake-build-system)
3424 (arguments '(#:tests? #f)) ; there are no tests
3425 (inputs
3426 `(("fftw" ,fftw)
3427 ("libsamplerate" ,libsamplerate)
3428 ("lv2" ,lv2)))
3429 (native-inputs
3430 `(("pkg-config" ,pkg-config)))
3431 (home-page "https://github.com/ssj71/rkrlv2")
3432 (synopsis "Rakarrack effects ported to LV2 plugins")
3433 (description "This package provides the Rakarrack effects as LV2
3434plugins. The ports are done such that hopefully when Rakarrack gets an active
3435maintainer these will get merged into the original project.")
3436 (license license:gpl2))))
3437
84d53724 3438(define-public mod-utilities
fe049d21
RW
3439 (let ((commit "80ea3ea9f52fab7f191671f4810bf90fc955a046")
3440 (revision "2"))
84d53724
RW
3441 (package
3442 (name "mod-utilities")
3443 (version (string-append "0-" revision "." (string-take commit 9)))
3444 (source (origin
3445 (method git-fetch)
3446 (uri (git-reference
3447 (url "https://github.com/moddevices/mod-utilities.git")
3448 (commit commit)))
fe049d21 3449 (file-name (string-append name "-" version "-checkout"))
84d53724
RW
3450 (sha256
3451 (base32
fe049d21 3452 "1v55zmzmlg0ka7341x5lsvb44amy17vk27s669ps1basd1bk5s5v"))))
84d53724
RW
3453 (build-system gnu-build-system)
3454 (arguments
3455 `(#:tests? #f ; there are no tests
3456 #:make-flags
3457 (list (string-append "INSTALL_PATH="
3458 (assoc-ref %outputs "out")
fe049d21
RW
3459 "/lib/lv2")
3460 (string-append "PREFIX=" (assoc-ref %outputs "out"))
3461 "CC=gcc")
84d53724
RW
3462 #:phases
3463 (modify-phases %standard-phases
3464 (delete 'configure))))
3465 (inputs
3466 `(("lv2" ,lv2)))
3467 (home-page "https://github.com/moddevices/mod-utilities")
3468 (synopsis "LV2 utility plugins")
3469 (description "This package provides LV2 audio utility plugins, such as
3470filters, crossovers, simple gain plugins without zipper noise, switch box
3471plugins, a switch trigger, a toggle switch, and a peakmeter.")
3472 (license license:gpl2+))))
d3db5efb 3473
951581a2 3474(define-public ingen
19748414
RW
3475 (let ((commit "cc4a4db33f4d126a07a4a498e053c5fb9a883be3")
3476 (revision "2"))
951581a2
RW
3477 (package
3478 (name "ingen")
3479 (version (string-append "0.0.0-" revision "."
3480 (string-take commit 9)))
3481 (source
3482 (origin
3483 (method git-fetch)
3484 (uri (git-reference
0d0252e4 3485 (url "https://git.drobilla.net/ingen.git")
951581a2
RW
3486 (commit commit)))
3487 (file-name (string-append name "-" version "-checkout"))
3488 (sha256
3489 (base32
19748414 3490 "1wg47vjw9djn99gbnsl2bcwj4xhdid61m4wrbn2nlp797flj91ic"))))
951581a2
RW
3491 (build-system waf-build-system)
3492 (arguments
f9dcf79f
RW
3493 `(#:python ,python-2
3494 #:tests? #f ; no "check" target
951581a2
RW
3495 #:configure-flags (list "--no-webkit")
3496 #:phases
3497 (modify-phases %standard-phases
3498 (add-after 'unpack 'patch-wscript
3499 (lambda* (#:key outputs #:allow-other-keys)
3500 (let ((out (assoc-ref outputs "out")))
3501 (substitute* "wscript"
3502 ;; FIXME: Our version of lv2specgen.py does not behave as
3503 ;; expected. Maybe this requires a development version of
3504 ;; LV2.
3505 (("lv2specgen.py") "touch ingen.lv2/ingen.html; echo")
3506 ;; Add libraries to RUNPATH.
3507 (("^(.+)target.*= 'src/ingen/ingen'," line prefix)
3508 (string-append prefix
3509 "linkflags=[\"-Wl,-rpath="
3510 out "/lib" "\"]," line)))
3511 (substitute* '("src/wscript"
3512 "src/server/wscript")
3513 ;; Add libraries to RUNPATH.
3514 (("bld.env.PTHREAD_LINKFLAGS" line)
3515 (string-append line
3516 " + [\"-Wl,-rpath=" out "/lib" "\"]")))
3517 (substitute* "src/client/wscript"
3518 ;; Add libraries to RUNPATH.
3519 (("^(.+)target.*= 'ingen_client'," line prefix)
3520 (string-append prefix
3521 "linkflags=[\"-Wl,-rpath="
3522 out "/lib" "\"]," line)))
3523 (substitute* "src/gui/wscript"
3524 ;; Add libraries to RUNPATH.
3525 (("^(.+)target.* = 'ingen_gui.*" line prefix)
3526 (string-append prefix
3527 "linkflags=[\"-Wl,-rpath="
3528 out "/lib" "\"]," line))))
3529 #t)))))
3530 (inputs
3531 `(("boost" ,boost)
3532 ("python-rdflib" ,python-rdflib)
3533 ("python" ,python)
3534 ("jack" ,jack-1)
a2467954 3535 ("lv2" ,lv2)
951581a2
RW
3536 ("lilv" ,lilv)
3537 ("raul" ,raul-devel)
3538 ("ganv" ,ganv-devel)
3539 ("suil" ,suil)
3540 ("serd" ,serd)
3541 ("sord" ,sord)
3542 ("sratom" ,sratom)
3543 ("gtkmm" ,gtkmm-2)))
3544 (native-inputs
3545 `(("pkg-config" ,pkg-config)
3546 ("python-pygments" ,python-pygments)))
0d0252e4 3547 (home-page "https://drobilla.net/software/ingen")
951581a2
RW
3548 (synopsis "Modular audio processing system")
3549 (description "Ingen is a modular audio processing system for JACK and
3550LV2 based systems. Ingen is built around LV2 technology and a strict
3551separation of engine from user interface. The engine is controlled
3552exclusively through a protocol, and can execute as a headless process, with an
3553in-process GUI, or as an LV2 plugin. The GUI can run as a program which
3554communicates over a Unix or TCP/IP socket, or as an embeddable LV2 GUI which
3555communicates via LV2 ports. Any saved Ingen graph can be loaded as an LV2
3556plugin on any system where Ingen is installed. This allows users to visually
3557develop custom plugins for use in other applications without programming.")
3558 (license license:agpl3+))))
3559
b3410b44
RW
3560(define-public qmidiarp
3561 (package
3562 (name "qmidiarp")
b6313997 3563 (version "0.6.5")
b3410b44
RW
3564 (source (origin
3565 (method url-fetch)
3566 (uri (string-append "mirror://sourceforge/qmidiarp/qmidiarp/"
3567 version "/qmidiarp-" version ".tar.bz2"))
3568 (sha256
3569 (base32
b6313997 3570 "043yh1p0rrbj1v840y27529m9260g55gvh1km8az4jxy7mns58r2"))))
b3410b44
RW
3571 (build-system gnu-build-system)
3572 (arguments
3573 `(#:configure-flags
3574 (list "--enable-qt5"
3575 "CXXFLAGS=-std=gnu++11")))
3576 (inputs
3577 `(("qtbase" ,qtbase)
3578 ("alsa-lib" ,alsa-lib)
3579 ("jack" ,jack-1)
3580 ("liblo" ,liblo)
3581 ("lv2" ,lv2)))
3582 (native-inputs
3583 `(("pkg-config" ,pkg-config)
3584 ("qttools" ,qttools)))
3585 (home-page "http://qmidiarp.sourceforge.net/")
3586 (synopsis "MIDI arpeggiator")
3587 (description "QMidiArp is an advanced MIDI arpeggiator, programmable step
3588sequencer and LFO. It can hold any number of arpeggiator, sequencer, or LFO
3589modules running in parallel.")
3590 (license license:gpl2+)))
3591
ff49437d
RW
3592(define-public qmidiroute
3593 (package
3594 (name "qmidiroute")
3595 (version "0.4.0")
3596 (source (origin
3597 (method url-fetch)
3598 (uri (string-append "mirror://sourceforge/alsamodular/QMidiRoute/"
3599 version "/qmidiroute-" version ".tar.bz2"))
3600 (sha256
3601 (base32
3602 "19v1ppbglgl3z9v7xdqc0k33w71cqq8a7d6ihvfs7iz77dygrih9"))))
3603 (build-system gnu-build-system)
3604 (arguments
3605 `(#:configure-flags
3606 (list "--enable-qt5"
3607 "CXXFLAGS=-std=gnu++11")))
3608 (inputs
3609 `(("qtbase" ,qtbase)
3610 ("alsa-lib" ,alsa-lib)))
3611 (native-inputs
3612 `(("pkg-config" ,pkg-config)
3613 ("qttools" ,qttools)))
3614 (home-page "http://alsamodular.sourceforge.net/")
3615 (synopsis "MIDI event router and filter")
3616 (description "QMidiRoute is a MIDI event router and filter. MIDI note,
3617control change, program change and pitch bend events are logged, and can be
3618filtered, redirected and transformed into other events according to MIDI maps
3619defined as tabs in the main control surface.")
3620 (license license:gpl2+)))
3621
5a66e25c
RW
3622(define-public seq24
3623 (package
3624 (name "seq24")
3625 (version "0.9.3")
3626 (source (origin
3627 (method url-fetch)
3628 (uri (string-append "https://launchpad.net/seq24/trunk/"
3629 version "/+download/seq24-"
3630 version ".tar.bz2"))
3631 (sha256
3632 (base32
3633 "12dphdhnvfk1k0vmagi1v2lhyxjyj1j3cz6ksjw0ydcvid1x8ap2"))
3634 (patches (search-patches "seq24-rename-mutex.patch"))))
3635 (build-system gnu-build-system)
3636 (arguments
3637 `(#:configure-flags
3638 (list "CXXFLAGS=-std=gnu++11")))
3639 (inputs
3640 `(("gtkmm" ,gtkmm-2)
3641 ("alsa-lib" ,alsa-lib)
3642 ("jack" ,jack-1)
3643 ("lash" ,lash)))
3644 (native-inputs
3645 `(("pkg-config" ,pkg-config)))
3646 (home-page "https://edge.launchpad.net/seq24/")
3647 (synopsis "Real-time MIDI sequencer")
3648 (description "Seq24 is a real-time MIDI sequencer. It was created to
3649provide a very simple interface for editing and playing MIDI loops.")
3650 (license license:gpl2+)))
3651
d3db5efb
LF
3652(define-public python-discogs-client
3653 (package
3654 (name "python-discogs-client")
3655 (version "2.2.1")
3656 (source (origin
3657 (method url-fetch)
3658 (uri (pypi-uri "discogs-client" version))
3659 (sha256
3660 (base32
3661 "053ld2psh0yj3z0kg6z5bn4y3cr562m727494n0ayhgzbkjbacly"))))
3662 (build-system python-build-system)
3663 (propagated-inputs
3664 `(("python-oauthlib" ,python-oauthlib)
3665 ("python-requests" ,python-requests)))
3666 (native-inputs
3667 `(("python-six" ,python-six)))
3668 (home-page "https://github.com/discogs/discogs_client")
3669 (synopsis "Official Python client for the Discogs API")
3670 (description "This is the official Discogs API client for Python. It enables
3671you to query the Discogs database for information on artists, releases, labels,
3672users, Marketplace listings, and more. It also supports OAuth 1.0a
3673authorization, which allows you to change user data such as profile information,
3674collections and wantlists, inventory, and orders.")
80983df3 3675 (license license:bsd-2)))
d3db5efb
LF
3676
3677(define-public python2-discogs-client
80983df3 3678 (package-with-python2 python-discogs-client))
a4f05b46 3679
3680(define-public libsmf
3681 (package
3682 (name "libsmf")
3683 (version "1.3")
3684 (source
3685 (origin
3686 (method url-fetch)
3687 ;; SF download page says development moved, but the link it points to
3688 ;; is gone (https://github.com/nilsgey/libsmf). Someone else adopted
3689 ;; it but made no release so far (https://github.com/stump/libsmf).
3690 (uri (string-append "mirror://sourceforge/libsmf/libsmf/"
3691 version "/libsmf-" version ".tar.gz"))
3692 (sha256
3693 (base32
3694 "16c0n40h0r56gzbh5ypxa4dwp296dan3jminml2qkb4lvqarym6k"))))
3695 (build-system gnu-build-system)
3696 (outputs '("out"
3697 "static")) ; 88KiB of .a files
3698 (arguments
3699 `(#:phases
3700 (modify-phases %standard-phases
3701 (add-after 'install 'move-static-libraries
3702 (lambda* (#:key outputs #:allow-other-keys)
3703 ;; Move static libraries to the "static" output.
3704 (let* ((out (assoc-ref outputs "out"))
3705 (lib (string-append out "/lib"))
3706 (static (assoc-ref outputs "static"))
3707 (slib (string-append static "/lib")))
3708 (mkdir-p slib)
3709 (for-each (lambda (file)
3710 (install-file file slib)
3711 (delete-file file))
3712 (find-files lib "\\.a$"))
3713 #t))))))
3714 (inputs
3715 `(("readline" ,readline)
3716 ("glib" ,glib)))
3717 (native-inputs
3718 `(("doxygen" ,doxygen)
3719 ("pkg-config" ,pkg-config)))
3720 (home-page "http://libsmf.sourceforge.net/")
3721 (synopsis "Standard MIDI File format library")
3722 (description
3723 "LibSMF is a C library for handling SMF (\"*.mid\") files. It transparently handles
3724conversions between time and pulses, tempo map handling and more. The only dependencies
3725are a C compiler and glib. Full API documentation and examples are included.")
3726 (license license:bsd-2)))
a42619e5
RF
3727
3728(define-public lmms
3729 (package
3730 (name "lmms")
3731 (version "1.1.3")
3732 (source
3733 (origin
3a0592ae
RW
3734 (method git-fetch)
3735 (uri (git-reference
3736 (url "https://github.com/LMMS/lmms.git")
3737 (commit (string-append "v" version))))
3738 (file-name (git-file-name name version))
a42619e5
RF
3739 (sha256
3740 (base32
3a0592ae 3741 "03hhymc6d73fa3wbcqb7rm1l03zkw605k5i9kvkvjmv488bqh3pd"))))
a42619e5
RF
3742 (build-system cmake-build-system)
3743 (arguments
3744 `(#:tests? #f ; no tests
3745 #:phases
3746 (modify-phases %standard-phases
ab2ccf4c
KK
3747 (add-before 'configure 'set-ldflags
3748 (lambda* (#:key outputs #:allow-other-keys)
3749 (setenv "LDFLAGS"
3750 (string-append
3751 "-Wl,-rpath=\""
3752 (assoc-ref outputs "out") "/lib/lmms"
3753 ":"
3754 (assoc-ref outputs "out") "/lib/lmms/ladspa"
3755 "\""))
3756 #t))
3757 (add-before 'configure 'remove-Werror
3758 (lambda _
3759 (substitute* "CMakeLists.txt"
3760 (("SET\\(WERROR_FLAGS \"\\$\\{WERROR_FLAGS\\} -Werror")
3761 "SET(WERROR_FLAGS \"${WERROR_FLAGS}"))
3762 #t))
3763 (add-before 'reset-gzip-timestamps 'make-manpages-writable
3764 (lambda* (#:key outputs #:allow-other-keys)
3765 (map (lambda (file)
3766 (make-file-writable file))
3767 (find-files (string-append (assoc-ref outputs "out")
3768 "/share/man")
3769 ".*\\.gz$"))
3770 #t)))))
a42619e5
RF
3771 (native-inputs
3772 `(("pkg-config" ,pkg-config)))
3773 (inputs
3774 `(("sdl" ,sdl)
3775 ("qt" ,qt-4)
3776 ("fltk" ,fltk)
3777 ("libogg" ,libogg)
3778 ("libsamplerate" ,libsamplerate)
9b6dc31b 3779 ("fluidsynth" ,fluidsynth-1) ;XXX: try using 2.x when updating
a42619e5
RF
3780 ("libvorbis" ,libvorbis)
3781 ("alsa-lib" ,alsa-lib)
3782 ("portaudio" ,portaudio)
3783 ("ladspa" ,ladspa)
3784 ("libsndfile1" ,libsndfile)
3785 ("libxft" ,libxft)
3786 ("freetype2" ,freetype)
3787 ("fftw3f" ,fftwf)))
3788 (home-page "https://lmms.io/")
3789 (synopsis "Music composition tool")
3790 (description "LMMS is a digital audio workstation. It includes tools for sequencing
3791melodies and beats and for mixing and arranging songs. LMMS includes instruments based on
3792audio samples and various soft sythesizers. It can receive input from a MIDI keyboard.")
3793 (license license:gpl2+)))
a7a7186c
NG
3794
3795(define-public musescore
3796 (package
3797 (name "musescore")
032ca4ba 3798 (version "3.2.3")
a7a7186c 3799 (source (origin
545ceac8
NG
3800 (method git-fetch)
3801 (uri (git-reference
3802 (url "https://github.com/musescore/MuseScore.git")
3803 (commit (string-append "v" version))))
3804 (file-name (git-file-name name version))
a7a7186c
NG
3805 (sha256
3806 (base32
032ca4ba 3807 "17wx1wl8ns2k31qvrr888dxnrsa13vazg04zh2sn2q4vzd869a7v"))
a7a7186c
NG
3808 (modules '((guix build utils)))
3809 (snippet
3810 ;; Un-bundle OpenSSL and remove unused libraries.
3811 '(begin
3812 (substitute* "thirdparty/kQOAuth/CMakeLists.txt"
3813 (("-I \\$\\{PROJECT_SOURCE_DIR\\}/thirdparty/openssl/include ")
3814 ""))
3815 (substitute* "thirdparty/kQOAuth/kqoauthutils.cpp"
3816 (("#include <openssl/.*") ""))
3817 (for-each delete-file-recursively
3818 '("thirdparty/freetype"
3819 "thirdparty/openssl"
3820 "thirdparty/portmidi"))
8d611ef0 3821 #t))))
11d44d0b 3822 (build-system cmake-build-system)
a7a7186c 3823 (arguments
11d44d0b 3824 `(#:configure-flags
8d611ef0 3825 `("-DBUILD_CRASH_REPORTER=OFF"
11d44d0b 3826 "-DBUILD_WEBENGINE=OFF"
8d611ef0
NG
3827 "-DDOWNLOAD_SOUNDFONT=OFF"
3828 "-DUSE_SYSTEM_FREETYPE=ON")
11d44d0b
NG
3829 ;; There are tests, but no simple target to run. The command used to
3830 ;; run them is:
a7a7186c
NG
3831 ;;
3832 ;; make debug && sudo make installdebug && cd \
3833 ;; build.debug/mtest && make && ctest
3834 ;;
3835 ;; Basically, it requires to start a whole new build process.
3836 ;; So we simply skip them.
11d44d0b 3837 #:tests? #f))
a7a7186c
NG
3838 (inputs
3839 `(("alsa-lib" ,alsa-lib)
3840 ("freetype" ,freetype)
3841 ("gtk+-bin" ,gtk+ "bin") ;for gtk-update-icon-cache
3842 ("jack" ,jack-1)
3843 ("lame" ,lame)
3844 ("libogg" ,libogg)
3845 ("libsndfile" ,libsndfile)
3846 ("libvorbis" ,libvorbis)
3847 ("portaudio" ,portaudio)
b3891a25 3848 ("portmidi" ,portmidi)
a7a7186c
NG
3849 ("pulseaudio" ,pulseaudio)
3850 ("qtbase" ,qtbase)
3851 ("qtdeclarative" ,qtdeclarative)
3852 ("qtscript" ,qtscript)
3853 ("qtsvg" ,qtsvg)
a7a7186c
NG
3854 ("qtxmlpatterns" ,qtxmlpatterns)))
3855 (native-inputs
11d44d0b 3856 `(("pkg-config" ,pkg-config)
a7a7186c
NG
3857 ("qttools" ,qttools)))
3858 (synopsis "Music composition and notation software")
3859 (description "MuseScore is a music score typesetter. Its main purpose is
3860the creation of high-quality engraved musical scores in a WYSIWYG environment.
3861
3862It supports unlimited staves, linked parts and part extraction, tablature,
3863MIDI input, percussion notation, cross-staff beaming, automatic transposition,
3864lyrics (multiple verses), fretboard diagrams, and in general everything
3865commonly used in sheet music. Style options and style sheets to change the
3866appearance and layout are provided.
3867
3868MuseScore can also play back scores through the built-in sequencer and SoundFont
3869sample library.")
3870 (home-page "https://musescore.org")
3871 (license license:gpl2)))
2434f5ce 3872
43188faf
RW
3873(define-public muse-sequencer
3874 (package
3875 (name "muse-sequencer")
3876 (version "3.0.0")
3877 (source (origin
3878 (method git-fetch)
3879 (uri (git-reference
3880 (url "https://github.com/muse-sequencer/muse.git")
3881 (commit (string-append "muse_"
3882 (string-map (lambda (c)
3883 (if (char=? c #\.)
3884 #\_ c)) version)))))
3885 (file-name (string-append name "-" version "-checkout"))
3886 (sha256
3887 (base32
3888 "1nninz8qyqlxxjdnrm79y3gr3056pga9l2fsqh674jd3cjvafya3"))))
3889 (build-system cmake-build-system)
3890 (arguments
3891 `(#:tests? #f ; there is no test target
3892 #:configure-flags
3893 (list "-DENABLE_LV2_SUPPLIED=OFF"
3894 "-DENABLE_RTAUDIO=OFF" ; FIXME: not packaged
3895 "-DENABLE_INSTPATCH=OFF" ; FIXME: not packaged
3896 "-DENABLE_VST_NATIVE=OFF")
3897 #:phases
3898 (modify-phases %standard-phases
3899 (add-after 'unpack 'chdir
3900 (lambda _ (chdir "muse3"))))))
3901 (inputs
3902 `(("alsa-lib" ,alsa-lib)
3903 ("lash" ,lash)
3904 ("jack" ,jack-1)
3905 ("liblo" ,liblo)
3906 ("dssi" ,dssi)
3907 ("ladspa" ,ladspa)
3908 ("lv2" ,lv2)
3909 ("lilv" ,lilv)
3910 ("sord" ,sord)
3911 ("libsndfile" ,libsndfile)
3912 ("libsamplerate" ,libsamplerate)
3913 ("fluidsynth" ,fluidsynth)
3914 ("pcre" ,pcre)
3915 ("qtbase" ,qtbase)
3916 ("qtsvg" ,qtsvg)))
3917 (native-inputs
3918 `(("pkg-config" ,pkg-config)
3919 ("qttools" ,qttools)))
3920 (home-page "http://muse-sequencer.org")
3921 (synopsis "MIDI/Audio sequencer")
3922 (description "MusE is a MIDI/Audio sequencer with recording and editing
3923capabilities. Its audio sequencer supports the LADSPA, DSSI, and LV2 audio
3924plugin formats; the MIDI sequencer provides a piano roll, a drum editor, a
3925list view, and a score editor. MusE aims to be a complete multitrack virtual
3926studio.")
3927 (license license:gpl2+)))
3928
2434f5ce
DM
3929(define-public dssi
3930 (package
3931 (name "dssi")
3932 (version "1.1.1")
3933 (source (origin
3934 (method url-fetch)
3935 (uri (string-append
3936 "mirror://sourceforge/dssi/dssi/" version
3937 "/dssi-" version ".tar.gz"))
3938 (sha256
3939 (base32
3940 "0kl1hzhb7cykzkrqcqgq1dk4xcgrcxv0jja251aq4z4l783jpj7j"))))
3941 (build-system gnu-build-system)
3942 (inputs
3943 `(("alsa-lib" ,alsa-lib)
0e78801a 3944 ("jack" ,jack-1)
2434f5ce
DM
3945 ("ladspa" ,ladspa)
3946 ("libsamplerate" ,libsamplerate)
3947 ("libsndfile" ,libsndfile)
3948 ("liblo" ,liblo)))
3949 (native-inputs
3950 `(("pkg-config" ,pkg-config)))
3951 (synopsis "Audio plugin API for soft synths and effects")
3952 (description "DSSI is a plugin API for software instruments with user
3953interfaces, permitting them to be hosted in-process by audio applications.
3954It is intended to be simple, GUI-toolkit-agnostic, and slightly biased
3955towards familiarity with MIDI. The DSSI distribution package contains
3956a JACK/ALSA-sequencer reference host and some plugins as well as the
3957specification and header.")
3958 (home-page "http://dssi.sourceforge.net/")
3959 ;; The DSSI interface is LGPL2.1+, some tests and examples are GPL2+.
3960 ;; The vast majority of examples are in the public domain.
3961 (license (list license:lgpl2.1+ license:gpl2+))))
9bc38f28
DM
3962
3963(define-public rosegarden
3964 (package
3965 (name "rosegarden")
0d5101c3 3966 (version "18.12")
9bc38f28
DM
3967 (source (origin
3968 (method url-fetch)
3969 (uri (string-append
3970 "mirror://sourceforge/rosegarden/rosegarden/"
3971 version "/rosegarden-" version ".tar.bz2"))
3972 (sha256
3973 (base32
0d5101c3 3974 "15i9fm0vkn3wsgahaxqi1j5zs0wc0j3wdwml0x49084gk2p328vb"))))
9bc38f28
DM
3975 (build-system cmake-build-system)
3976 (arguments
0d5101c3 3977 `(#:configure-flags '("-DCMAKE_BUILD_TYPE=Release")
9bc38f28
DM
3978 #:phases
3979 (modify-phases %standard-phases
3980 (add-after 'unpack 'patch-tests
3981 (lambda _
3982 (substitute* "CMakeLists.txt"
3983 (("BUILD_TESTING OFF") "BUILD_TESTING ON")
3984 ;; Make tests work.
3985 ((" -fvisibility=hidden") ""))
3986 #t))
3987 (add-after 'unpack 'fix-references
3988 (lambda* (#:key inputs #:allow-other-keys)
3989 (substitute* "src/gui/general/ProjectPackager.cpp"
3990 (("\"flac\\>")
3991 (string-append "\"" (assoc-ref inputs "flac") "/bin/flac"))
3992 (("\"wavpack\\>")
3993 (string-append "\"" (assoc-ref inputs "wavpack") "/bin/wavpack"))
3994 (("\"wvunpack\\>")
3995 (string-append "\"" (assoc-ref inputs "wavpack") "/bin/wvunpack"))
3996 (("\"bash\\>")
3997 (string-append "\"" (assoc-ref inputs "bash") "/bin/bash"))
3998 (("\"tar\\>")
3999 (string-append "\"" (assoc-ref inputs "tar") "/bin/tar")))
4000 (substitute* "src/gui/general/LilyPondProcessor.cpp"
4001 (("\"convert-ly\\>")
4002 (string-append "\"" (assoc-ref inputs "lilypond") "/bin/convert-ly"))
4003 (("\"lilypond\\>")
4004 (string-append "\"" (assoc-ref inputs "lilypond") "/bin/lilypond")))
4005 #t))
4006 (add-after 'unpack 'make-reproducible
4007 (lambda _
4008 ;; Prevent Last-Modified from being written.
4009 ;; The "*.qm" files that are used in locale.qrc would have a new
4010 ;; mtime otherwise that is written into qrc_locale.cpp in the
4011 ;; end - except when we disable it.
4012 (substitute* "src/CMakeLists.txt"
4013 (("COMMAND [$][{]QT_RCC_EXECUTABLE[}]")
4014 "COMMAND ${QT_RCC_EXECUTABLE} --format-version 1")
4015 ;; Extraneous.
4016 ;(("qt5_add_resources[(]rg_SOURCES ../data/data.qrc[)]")
4017 ; "qt5_add_resources(rg_SOURCES ../data/data.qrc OPTIONS --format-version 1)")
4018 )
4019 ;; Make hashtable traversal order predicable.
4020 (setenv "QT_RCC_TEST" "1") ; important
4021 #t))
4022 (add-before 'check 'prepare-check
4023 (lambda _
4024 (setenv "QT_QPA_PLATFORM" "offscreen")
4025 ;; Tests create files in $HOME/.local/share/rosegarden .
4026 (mkdir-p "/tmp/foo")
4027 (setenv "HOME" "/tmp/foo")
9bf98520 4028 (setenv "XDG_RUNTIME_DIR" "/tmp/foo")
9bc38f28
DM
4029 #t)))))
4030 (inputs
4031 `(("alsa-lib" ,alsa-lib)
4032 ("bash" ,bash)
4033 ("dssi" ,dssi)
4034 ("flac" ,flac)
4035 ("fftwf" ,fftwf)
b94f250e 4036 ("jack" ,jack-1)
9bc38f28
DM
4037 ("ladspa" ,ladspa)
4038 ("liblo" ,liblo)
4039 ("libsamplerate" ,libsamplerate)
4040 ("lilypond" ,lilypond)
4041 ("lrdf" ,lrdf)
4042 ("qtbase" ,qtbase)
4043 ("tar" ,tar)
4044 ("lirc" ,lirc)
4045 ("wavpack" ,wavpack)
4046 ("zlib" ,zlib)))
4047 (native-inputs
4048 `(("pkg-config" ,pkg-config)
4049 ("qtlinguist" ,qttools)))
4050 (synopsis "Music composition and editing environment based around a MIDI
4051sequencer")
4052 (description "Rosegarden is a music composition and editing environment
4053based around a MIDI sequencer that features a rich understanding of music
4054notation and includes basic support for digital audio.")
9bf98520 4055 (home-page "https://www.rosegardenmusic.com/")
9bc38f28 4056 (license license:gpl2)))
30655652 4057
643817e4 4058(define-public patchmatrix
2394afa4
RW
4059 ;; There have been no releases for more than a year.
4060 (let ((commit "a0b0b1e791f4574d5abd059cfe1819c71e8b18d5")
4061 (revision "1"))
4062 (package
4063 (name "patchmatrix")
4064 (version (git-version "0.12.0" revision commit))
4065 (source (origin
4066 (method git-fetch)
4067 (uri (git-reference
4068 (url "https://github.com/OpenMusicKontrollers/patchmatrix.git")
4069 (commit commit)))
4070 (file-name (string-append "patchmatrix-" version "-checkout"))
4071 (sha256
4072 (base32
4073 "0pph4ra7aci3rbpqvvr564pi16vxrk448bmvp8985cd9lbjlrp3m"))))
4074 (build-system meson-build-system)
4075 (arguments
4076 '(#:tests? #f ; no test target
4077 #:phases
4078 (modify-phases %standard-phases
4079 (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable
4080 (lambda* (#:key outputs #:allow-other-keys)
4081 (map make-file-writable
4082 (find-files (assoc-ref outputs "out") ".*\\.gz$"))
4083 #t)))))
4084 (inputs
4085 `(("jack" ,jack-1)
4086 ("lv2" ,lv2)
4087 ("mesa" ,mesa)))
4088 (native-inputs
4089 `(("pkg-config" ,pkg-config)))
4090 (home-page "https://github.com/OpenMusicKontrollers/patchmatrix")
4091 (synopsis "Simple JACK patch bay")
4092 (description "PatchMatrix is a patch bay for the JACK audio connection
643817e4
RW
4093kit. It provides a patch bay in flow matrix style for audio, MIDI, CV, and
4094OSC connections.")
2394afa4 4095 (license license:artistic2.0))))
643817e4 4096
30655652
RW
4097(define-public sorcer
4098 (package
4099 (name "sorcer")
4100 (version "1.1.3")
4101 (source (origin
4102 (method url-fetch)
4103 (uri (string-append "https://github.com/openAVproductions/"
4104 "openAV-Sorcer/archive/release-"
4105 version ".tar.gz"))
4106 (file-name (string-append name "-" version ".tar.gz"))
4107 (sha256
4108 (base32
4109 "07iyqj28wm0xc4arrq893bm12xjpz65db7ynrlmf6w8krg8wjmd0"))))
4110 (build-system cmake-build-system)
4111 (arguments
4112 `(#:tests? #f ; no tests included
4113 #:phases
4114 (modify-phases %standard-phases
e5af1f4a
EF
4115 (add-after 'unpack 'remove-architecture-specific-flags
4116 (lambda _
4117 (substitute* "CMakeLists.txt"
4118 (("-msse2 -mfpmath=sse") ""))
4119 #t))
30655652
RW
4120 (add-after 'unpack 'build-faust-sources
4121 (lambda* (#:key inputs #:allow-other-keys)
4122 (with-directory-excursion "faust"
4123 (delete-file "main.cpp")
d7e24652
RW
4124 (invoke "faust" "-i"
4125 "-a" "lv2synth.cpp"
4126 "-o" "main.cpp" "main.dsp")))))))
30655652
RW
4127 (inputs
4128 `(("boost" ,boost)
4129 ("lv2" ,lv2)
4130 ("ntk" ,ntk)))
4131 (native-inputs
4132 `(("faust" ,faust)
4133 ("pkg-config" ,pkg-config)))
4134 (home-page "http://openavproductions.com/sorcer/")
4135 (synopsis "Wavetable LV2 plugin synth")
4136 (description "Sorcer is a wavetable LV2 plugin synthesizer, targeted at
4137the electronic or dubstep genre.")
4138 (license license:gpl3+)))
60b7ed9c 4139
f7ce2134
RW
4140(define-public sonivox-eas
4141 (package
4142 (name "sonivox-eas")
4143 (version "1.1.0")
4144 (source (origin
4145 (method git-fetch)
4146 (uri (git-reference
4147 (url "https://github.com/pedrolcl/Linux-SonivoxEas.git")
4148 (commit (string-append "v" version))))
4149 (file-name (string-append name "-" version "-checkout"))
4150 (sha256
4151 (base32
4152 "0l9gs00p5g4k4qy6i7nv1mfi2n2wnsycwjrgrh9hxzam4irf2mw2"))))
4153 (build-system cmake-build-system)
4154 (arguments '(#:tests? #f)) ; there are no tests
4155 (inputs
4156 `(("alsa-lib" ,alsa-lib)
4157 ("drumstick" ,drumstick)
4158 ("pulseaudio" ,pulseaudio)
4159 ("qtbase" ,qtbase)))
4160 (native-inputs
4161 `(("pkg-config" ,pkg-config)))
4162 (home-page "https://github.com/pedrolcl/Linux-SonivoxEas")
4163 (synopsis "MIDI synthesizer library")
4164 (description "This project is a real time General MIDI synthesizer based
4165on the Sonivox EAS Synthesizer by Google. It does not need external
4166soundfonts, using embedded samples instead.")
4167 ;; Sonivox is released under the ASL2.0; the rest of the code is under
4168 ;; GPLv2+.
4169 (license (list license:gpl2+ license:asl2.0))))
92b36e3a
RW
4170
4171(define-public whysynth
4172 (package
4173 (name "whysynth")
4174 (version "20170701")
4175 (source (origin
4176 (method url-fetch)
4177 (uri (string-append "http://smbolton.com/whysynth/whysynth-"
4178 version ".tar.bz2"))
4179 (sha256
4180 (base32
4181 "02qbn0hbvn1iym4zxv35b201blg31yjpgh71h8db0j5zls2xc0m6"))))
4182 (build-system gnu-build-system)
4183 (inputs
4184 `(("dssi" ,dssi)
4185 ("liblo" ,liblo)
4186 ("fftwf" ,fftwf)
4187 ("gtk+" ,gtk+-2)
4188 ("ladspa" ,ladspa)
4189 ("alsa-lib" ,alsa-lib)))
4190 (native-inputs
4191 `(("pkg-config" ,pkg-config)))
4192 (home-page "http://smbolton.com/whysynth.html")
4193 (synopsis "DSSI software synthesizer")
4194 (description "WhySynth is a versatile softsynth which operates as a plugin
4195for the DSSI Soft Synth Interface. A brief list of features:
4196
4197@enumerate
4198@item 4 oscillators, 2 filters, 3 LFOs, and 5 envelope generators per voice.
4199@item 11 oscillator modes: minBLEP, wavecycle, chorused wavecycle,
4200 asynchronous granular, three FM modes, waveshaper, noise, PADsynth, and phase
4201 distortion.
4202@item 10 filter modes.
4203@item flexible modulation and mixdown options, plus effects.
4204@end enumerate
4205")
4206 (license license:gpl2+)))
6b445c57 4207
4208(define-public libdiscid
4209 (package
4210 (name "libdiscid")
4211 (version "0.6.2")
4212 (source
4213 (origin
4214 (method url-fetch)
4215 (uri (string-append
4216 "http://ftp.musicbrainz.org/pub/musicbrainz/libdiscid/libdiscid-"
4217 version ".tar.gz"))
4218 (sha256
4219 (base32
4220 "1f9irlj3dpb5gyfdnb1m4skbjvx4d4hwiz2152f83m0d9jn47r7r"))))
4221 (arguments `(#:test-target "check"))
4222 (build-system cmake-build-system)
4223 (home-page "https://musicbrainz.org/doc/libdiscid")
4224 (synopsis "Disc id reader library")
4225 (description "libdiscid is a C library for creating MusicBrainz and freedb
4226disc IDs from audio CDs. It reads a CD's table of contents (TOC) and generates
4227an identifier which can be used to lookup the CD at MusicBrainz. Additionally,
4228it provides a submission URL for adding the disc ID to the database and gathers
4229ISRCs and the MCN (=UPC/EAN) from disc.")
4230 (license license:lgpl2.1+)))
1ea29aa0 4231
1331a6c0
GH
4232(define-public python-discid
4233 (package
4234 (name "python-discid")
4235 (version "1.1.1")
4236 (source
4237 (origin
4238 (method url-fetch)
4239 (uri (pypi-uri "discid" version))
4240 (sha256
4241 (base32
4242 "1fgp67nhqlbvhhwrcxq5avil7alpzw4s4579hlyvxzbphdnbz8vq"))))
4243 (build-system python-build-system)
4244 (inputs
4245 `(("libdiscid" ,libdiscid)))
4246 (arguments
4247 `(#:phases
4248 (modify-phases %standard-phases
4249 (add-before 'build 'set-libdiscid
4250 ;; Set path of libdiscid
4251 (lambda* (#:key inputs #:allow-other-keys)
4252 (let ((discid (assoc-ref inputs "libdiscid")))
4253 (substitute* "discid/libdiscid.py"
4254 (("lib_name = (.*)$" all name)
4255 (string-append "lib_name = \"" discid
4256 "/lib/libdiscid.so.0\"\n")))
4257 #t))))))
4258 (home-page "https://python-discid.readthedocs.io/")
4259 (synopsis "Python bindings for Libdiscid")
4260 (description
4261 "This package provides Python bindings for the Libdiscid library. The
4262main purpose is the calculation of @url{https://musicbrainz.org/doc/Disc%20ID,
4263Disc IDs} for use with the MusicBrainz database. Additionally the disc
4264@dfn{Media Catalog Number} (MCN) and track @dfn{International Standard
4265Recording Code} (ISRC) can be extracted.}")
4266 (license license:lgpl3+)))
4267
1ea29aa0 4268(define-public libmusicbrainz
4269 (package
4270 (name "libmusicbrainz")
4271 (version "5.1.0")
4272 (source
4273 (origin
4274 (method url-fetch)
4275 (uri (string-append
4276 "https://github.com/metabrainz/libmusicbrainz/releases/download/release-"
4277 version "/libmusicbrainz-" version ".tar.gz"))
4278 (sha256
4279 (base32
8c71a52c 4280 "0ikb9igyyk28jm34raxfzkw2qyn4nzzwsymdyprp7cmvi6g2ajb7"))))
1ea29aa0 4281 (build-system cmake-build-system)
69cb939e
RW
4282 (arguments
4283 `(#:phases
4284 (modify-phases %standard-phases
4285 (replace 'check
4286 (lambda _
4287 ;; requires network connections
4288 ;; (invoke "tests/mbtest")
4289 (invoke "tests/ctest")
4290 #t)))))
1ea29aa0 4291 (inputs `(("neon" ,neon)
4292 ("libxml2" ,libxml2)))
4293 (native-inputs `(("pkg-config" ,pkg-config)))
4294 (home-page "https://musicbrainz.org/doc/libmusicbrainz")
4295 (synopsis "MusicBrainz client library")
4296 (description "The MusicBrainz Client Library (libmusicbrainz), also known as
4297mb_client, is a development library geared towards developers who wish to add
4298MusicBrainz lookup capabilities to their applications.")
4299 (license license:lgpl2.1+)))
87d1b7b0 4300
b0c2c5ab
LC
4301(define-public perl-musicbrainz-discid
4302 (package
4303 (name "perl-musicbrainz-discid")
4304 (version "0.04")
4305 (source (origin
4306 (method url-fetch)
4307 (uri (string-append
4308 "mirror://cpan/authors/id/N/NJ/NJH/MusicBrainz-DiscID-"
4309 version ".tar.gz"))
4310 (sha256
4311 (base32
4312 "1i4qk1qfcmxdibqkyfjrrjdq2zk42vjcz590qgiyc47fi9p6xx1j"))))
4313 (build-system perl-build-system)
4314 (native-inputs `(("pkg-config" ,pkg-config)
4315 ("which" ,which)))
4316 (inputs `(("libdiscid" ,libdiscid)))
4317 (home-page "https://metacpan.org/release/MusicBrainz-DiscID")
4318 (synopsis "Perl interface to the MusicBrainz libdiscid library")
4319 (description
4320 "The @code{MusicBrainz::DiscID} module is a Perl interface to the
4321MusicBrainz libdiscid library, allowing you to manipulate digital audio
4322compact disc (CDDA) identifiers.")
4323 (license license:gpl2)))
4324
b2961dda
LC
4325(define-public perl-webservice-musicbrainz
4326 (package
4327 (name "perl-webservice-musicbrainz")
b0842a8e 4328 (version "1.0.5")
b2961dda
LC
4329 (source (origin
4330 (method url-fetch)
4331 (uri (string-append
4332 "mirror://cpan/authors/id/B/BF/BFAIST/WebService-MusicBrainz-"
4333 version ".tar.gz"))
4334 (sha256
4335 (base32
b0842a8e 4336 "16chs1l58cf000d5kalkyph3p31ci73p1rlyx98mfv10d2cq6fsj"))))
b2961dda
LC
4337 (build-system perl-build-system)
4338 (arguments
4339 ;; Tests try to connect to http://musicbrainz.org.
4340 '(#:tests? #f))
4341 (native-inputs
4342 `(("perl-module-build" ,perl-module-build)))
4343 (propagated-inputs
4344 `(("perl-mojolicious" ,perl-mojolicious)))
4345 (home-page "https://metacpan.org/release/WebService-MusicBrainz")
4346 (synopsis "Web service API to the MusicBrainz database")
4347 (description
4348 "This module searches the MusicBrainz database through their web service
4349at @code{musicbrainz.org}.")
4350 (license license:perl-license)))
4351
87d1b7b0
PN
4352(define-public clyrics
4353 (package
4354 (name "clyrics")
7f56f107 4355 (version "0.11")
87d1b7b0
PN
4356 (source
4357 (origin
234a1825
RW
4358 (method git-fetch)
4359 (uri (git-reference
4360 (url "https://github.com/trizen/clyrics.git")
4361 (commit version)))
4362 (file-name (git-file-name name version))
87d1b7b0
PN
4363 (sha256
4364 (base32
7f56f107 4365 "0vfjy555achgi5zwa34x4q7r692nc6bq4jx518a5w4m7k5fvm71j"))))
87d1b7b0 4366 (build-system trivial-build-system)
87d1b7b0 4367 (inputs
7f56f107 4368 `(("bash" ,bash) ; for the wrapped program
87d1b7b0
PN
4369 ("perl" ,perl)
4370 ("perl-www-mechanize" ,perl-www-mechanize)
4371 ("perl-lwp-protocol-https" ,perl-lwp-protocol-https)
4372 ;; Required or else LWP will fail with "GET https://www.google.com/ ==>
4373 ;; 500 Can't verify SSL peers without knowing which Certificate
4374 ;; Authorities to trust".
4375 ("perl-mozilla-ca" ,perl-mozilla-ca)))
4376 (arguments
4377 `(#:modules ((guix build utils))
4378 #:builder (begin
4379 (use-modules (guix build utils)
4380 (ice-9 match)
4381 (srfi srfi-26))
4382 (let* ((source (assoc-ref %build-inputs "source"))
87d1b7b0
PN
4383 (output (assoc-ref %outputs "out")))
4384 (setenv "PATH"
4385 (string-append
87d1b7b0
PN
4386 (assoc-ref %build-inputs "bash") "/bin" ":"
4387 (assoc-ref %build-inputs "perl") "/bin" ":"))
234a1825 4388 (copy-recursively source (getcwd))
87d1b7b0
PN
4389 (patch-shebang "clyrics")
4390 (substitute* "clyrics"
4391 (("/usr/share") output))
4392 (install-file "clyrics" (string-append output "/bin"))
4393 (wrap-program (string-append output "/bin/clyrics")
4394 `("PERL5LIB" ":" =
4395 ,(delete
4396 ""
4397 (map (match-lambda
7f56f107
TGR
4398 (((? (cut string-prefix? "perl-" <>) name) . dir)
4399 (string-append dir "/lib/perl5/site_perl"))
4400 (_ ""))
87d1b7b0
PN
4401 %build-inputs))))
4402 (copy-recursively "plugins" (string-append output "/clyrics"))
4403 #t))))
4404 (home-page "https://github.com/trizen/clyrics")
4405 (synopsis "Extensible lyrics fetcher")
4406 (description
4407 "Clyrics is an extensible command-line tool to fetch the lyrics of songs.
4408It can be used in daemon mode along with the Music-on-Console (MOC) and cmus
4409console music players.")
4410 (license license:gpl3+)))
5703380b
PN
4411
4412(define-public demlo
4413 (let ((commit "fe9ec4c8ac2fa995ec18e6ac86d50d46df06ec01")
4414 (revision "0"))
4415 (package
4416 (name "demlo")
4417 (version (git-version "3.8" revision commit))
4418 (source
4419 (origin
4420 (method git-fetch)
4421 (uri (git-reference
4422 (url
4423 "https://gitlab.com/ambrevar/demlo")
4424 (commit commit)))
4425 (file-name (git-file-name name version))
4426 (sha256
4427 (base32
4428 "1afkbqhzn6da7zaf5ab7dvyqj1izqhzprwfb4hw448fllda9bdvk"))))
4429 (build-system go-build-system)
4430 (native-inputs
4431 `(("lua" ,lua)
4432 ("go-github-com-mattn-go-isatty" ,go-github-com-mattn-go-isatty)
4433 ("go-github-com-mattn-go-colorable" ,go-github-com-mattn-go-colorable)
4434 ("go-github-com-aarzilli-golua" ,go-github-com-aarzilli-golua)
4435 ("go-gitlab-com-ambrevar-damerau" ,go-gitlab-com-ambrevar-damerau)
4436 ("go-gitlab-com-ambrevar-golua-unicode" ,go-gitlab-com-ambrevar-golua-unicode)
4437 ("go-github-com-mgutz-ansi" ,go-github-com-mgutz-ansi)
4438 ("go-github-com-michiwend-gomusicbrainz" ,go-github-com-michiwend-gomusicbrainz)
4439 ("go-github-com-stevedonovan-luar" ,go-github-com-stevedonovan-luar)
4440 ("go-github-com-wtolson-go-taglib" ,go-github-com-wtolson-go-taglib)
4441 ("go-github-com-yookoala-realpath" ,go-github-com-yookoala-realpath)))
4442 (inputs
4443 `(("chromaprint" ,chromaprint)
4444 ("ffmpeg" ,ffmpeg)))
4445 (arguments
4446 `(#:import-path "gitlab.com/ambrevar/demlo"
4447 #:phases
4448 (modify-phases %standard-phases
4449 (add-after 'install 'wrap-program
4450 (lambda* (#:key inputs outputs #:allow-other-keys)
4451 (let ((out (assoc-ref outputs "out"))
4452 (ffmpeg (assoc-ref inputs "ffmpeg"))
4453 (chromaprint (assoc-ref inputs "chromaprint")))
4454 (wrap-program (string-append out "/bin/demlo")
4455 `("XDG_DATA_DIRS" ":" prefix (,out))
4456 `("PATH" ":" prefix
4457 ,(map (lambda (dir)
4458 (string-append dir "/bin:"
4459 dir "/sbin"))
4460 (list ffmpeg chromaprint))))
4461 #t)))
e3900a4d 4462 (add-after 'install 'install-scripts
5703380b
PN
4463 (lambda* (#:key outputs #:allow-other-keys)
4464 (let* ((out (assoc-ref outputs "out"))
4465 (root (string-append out "/src/gitlab.com/ambrevar/demlo"))
4466 (xdg-data-dirs (string-append out "/demlo")))
4467 (copy-recursively (string-append root "/actions")
4468 (string-append xdg-data-dirs "/actions"))
4469 (copy-recursively (string-append root "/scripts")
4470 (string-append xdg-data-dirs "/scripts"))
4471 (install-file (string-append root "/config.lua") xdg-data-dirs)
4472 ;; TODO: Test fish completion.
4473 (install-file (string-append root "/completion/demlo.fish")
4474 (string-append out "/share/fish/vendor_completions.d"))
4475 #t))))))
4476 (home-page "https://gitlab.com/ambrevar/demlo")
4477 (synopsis "Dynamic and extensible music library organizer")
4478 (description "Demlo is a music library organizer. It can encode, fix
4479case, change folder hierarchy according to tags or file properties, tag from
4480an online database, copy covers while ignoring duplicates or those below a
4481quality threshold, and much more. It makes it possible to manage your
4482libraries uniformly and dynamically. You can write your own rules to fit your
4483needs best.
4484
4485Demlo can address any of these recurring music library issues (and much more):
4486
4487@itemize
4488@item Fix the lack of folder structure.
4489@item Normalize tags, fix their case, chose which tags to keep and which to
4490discard.
4491@item Handle lossy and lossless audio differently.
4492@item Handle mp3 id3tags hell...
4493@item Handle multiple covers, whether embedded and/or external, resize covers,
4494discard bad quality ones.
4495@end itemize\n")
4496 (license license:expat))))
e42ba3da
LF
4497
4498(define-public lpd8editor
4499 (package
4500 (name "lpd8editor")
83b9ba26 4501 (version "0.0.13")
e42ba3da
LF
4502 (source (origin
4503 (method git-fetch)
4504 (uri (git-reference
4505 (url "https://github.com/charlesfleche/lpd8editor.git")
4506 (commit (string-append "v" version))))
4507 (file-name (git-file-name name version))
4508 (sha256
4509 (base32
83b9ba26 4510 "0lsz3v493ilq2zr016m7kvymrplxd0n3pqv1pjglpq1h7sjw9764"))))
e42ba3da
LF
4511 (build-system gnu-build-system)
4512 (arguments
4513 '(#:phases
4514 (modify-phases %standard-phases
4515 (add-after 'unpack 'setenv
4516 (lambda _
4517 (setenv "INSTALL_PREFIX"
4518 (assoc-ref %outputs "out"))))
4519 (delete 'configure) ; no configure script
4520 (add-before 'build 'qmake
4521 (lambda _ (invoke "qmake"))))))
4522 (native-inputs
4523 `(("pkg-config" ,pkg-config)))
4524 (inputs
4525 `(("alsa" ,alsa-lib)
4526 ("qtbase" ,qtbase)
4527 ("qtsvg" ,qtsvg)))
4528 (synopsis "Graphical editor for the Akai LPD8 MIDI controller")
4529 (description "lpd8editor is a graphical patch editor for the Akai LPD8 MIDI
4530controller.")
4531 (home-page "https://github.com/charlesfleche/lpd8editor")
4532 (license license:expat)))
7fcc2f93 4533
4534(define-public fmit
4535 (package
4536 (name "fmit")
0ed0e3bf 4537 (version "1.2.13")
7fcc2f93 4538 (source (origin
4539 (method git-fetch)
4540 (uri (git-reference
4541 (url "https://github.com/gillesdegottex/fmit/")
4542 (commit (string-append "v" version))))
4543 (file-name (git-file-name name version))
4544 (sha256
4545 (base32
0ed0e3bf 4546 "1qyskam053pvlap1av80rgp12pzhr92rs88vqs6s0ia3ypnixcc6"))))
7fcc2f93 4547 (build-system gnu-build-system)
4548 (arguments
4549 '(#:phases
4550 (modify-phases %standard-phases
4551 (delete 'configure)
4552 (add-before 'build 'qmake
4553 (lambda _
4554 (let ((out (assoc-ref %outputs "out")))
4555 (invoke "qmake"
4556 "fmit.pro"
4557 (string-append "PREFIX=" out)
4558 (string-append "PREFIXSHORTCUT=" out)
4559 "CONFIG+=acs_qt acs_alsa acs_jack acs_portaudio"))))
4560 (add-after 'install 'wrap-executable
4561 (lambda* (#:key inputs outputs #:allow-other-keys)
4562 (let ((out (assoc-ref outputs "out")))
4563 (wrap-program (string-append out "/bin/fmit")
4564 `("QT_PLUGIN_PATH" ":" prefix
4565 ,(map (lambda (label)
4566 (string-append (assoc-ref inputs label)
4567 "/lib/qt5/plugins"))
4568 '("qtbase" "qtmultimedia" "qtsvg")))
4569 `("QML2_IMPORT_PATH" ":" prefix
4570 ,(map (lambda (label)
4571 (string-append (assoc-ref inputs label)
4572 "/lib/qt5/qml"))
4573 '("qtmultimedia"))))
4574 #t))))))
4575 (inputs
4576 `(("alsa-lib" ,alsa-lib)
4577 ("fftw" ,fftw)
4578 ("jack" ,jack-1)
4579 ("portaudio" ,portaudio)
4580 ("qtbase" ,qtbase)
4581 ("qtmultimedia" ,qtmultimedia)
4582 ("qtsvg" ,qtsvg)))
4583 (native-inputs
4584 `(("gettext" ,gnu-gettext)
4585 ("hicolor-icon-theme" ,hicolor-icon-theme)
4586 ("itstool" ,itstool)
4587 ("qttools" ,qttools)))
4588 (synopsis "Musical instrument tuner")
4589 (description "FMIT is a graphical utility for tuning musical instruments,
4590with error and volume history, and advanced features.")
4591 (home-page "https://gillesdegottex.github.io/fmit/")
4592 ;; Most of the code is under GPL2+, but some abstract or helper classes
4593 ;; are under LGPL2.1.
4594 (license (list license:gpl2+ license:lgpl2.1))))