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