gnu: libwpd: Update to 0.10.3.
[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")
c6c0d396 1417 (version "0.9.11")
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
c6c0d396 1425 "116k2vca9dygvsd684wvxm61p0l1xrrgdph4qrrprlsr6vj0llgm"))))
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")
224e14f0 1449 (version "0.9.11")
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
224e14f0 1457 "1wnjn175l0mz51k9pjf3pdzv54c4jlh63saavld9lm6zfgfs13d7"))))
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")
08209b3b 1482 (version "0.9.11")
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
08209b3b 1490 "17zs8kvvwqv00bm4lxpn09a5hxjlbz7k5mkl3k7jspw7rqn3djf2"))))
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")
23c5c8e4 1515 (version "0.9.11")
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
23c5c8e4 1523 "02yfwyirjqxa075yqdnci9b9k57kdmkjvn9gnpdbnjp887pds76g"))))
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")
8ce1b78b 1586 (version "0.8.9")
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
8ce1b78b 1595 "1lpsa64xvwa9xbbp8zcwxy5w0daffc7fziny2pizabqh7m9xqjl2"))))
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")
a0a7e425 1736 (version "1.5.2")
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
a0a7e425 1744 "10arfpgm2pw7mn922klklzn05lw5ifqx070shdrar81afmkfbbd9"))))
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")
a02c8df7 2188 (version "1.6.0.3")
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
a02c8df7 2196 "1z2mnmm299ng6jcwa61dzr1ilwa5fjgsggxl2wa5smji6b4npmx7"))))
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")
708f27fa 2390 (version "0.9.11")
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
708f27fa 2397 "1482da0lr77i57jby80cnn4bb9ws3v1i1j6m2hbwdnvqab9csvnx"))))
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)
2572 (propagated-inputs
2573 `(("python-lxml" ,python-lxml)
2574 ("python-requests" ,python-requests)
2575 ("python-pyxdg" ,python-pyxdg)
2576 ("mpv" ,mpv)))
2577 (home-page "https://github.com/chronitis/curseradio")
2578 (synopsis "Command-line Internet radio player")
2579 (description "Curseradio is a Curses-based radio player that uses a
2580tune-in sender list from @url{http://opml.radiotime.com}.")
2581 (license license:expat))))
2582
aa0edd3f
AM
2583(define-public pianobar
2584 (package
2585 (name "pianobar")
3999b664 2586 (version "2016.06.02")
aa0edd3f 2587 (source (origin
1410e178
RW
2588 (method git-fetch)
2589 (uri (git-reference
2590 (url "https://github.com/PromyLOPh/pianobar.git")
2591 (commit version)))
2592 (file-name (git-file-name name version))
aa0edd3f
AM
2593 (sha256
2594 (base32
1410e178 2595 "058fbdxp7n35hxwy3b8slfy4pb4n63cb173vfmywqa06wh1dv6f6"))))
aa0edd3f
AM
2596 (build-system gnu-build-system)
2597 (arguments
2598 `(#:tests? #f ; no tests
2599 #:make-flags (list "CC=gcc" "CFLAGS=-std=c99"
2600 (string-append "PREFIX=" %output))
2601 #:phases (modify-phases %standard-phases
2602 (delete 'configure))))
2603 (inputs
2604 `(("ao" ,ao)
2605 ("curl" ,curl)
2606 ("libgcrypt" ,libgcrypt)
2607 ("json-c" ,json-c)
bb5c508c 2608 ("ffmpeg" ,ffmpeg-3.4)))
aa0edd3f
AM
2609 (native-inputs
2610 `(("pkg-config" ,pkg-config)))
2611 (home-page "http://6xq.net/projects/pianobar/")
2612 (synopsis "Console-based pandora.com player")
2613 (description "pianobar is a console-based music player for the
2614personalized online radio pandora.com. It has configurable keys for playing
2615and managing stations, can be controlled remotely via fifo, and can run
2616event-based scripts for scrobbling, notifications, etc.")
2617 (license license:expat)))
3f7a182d 2618
1deab8cb
CB
2619(define-public picard
2620 (package
2621 (name "picard")
b421e915 2622 (version "2.1.3")
1deab8cb
CB
2623 (source (origin
2624 (method url-fetch)
2625 (uri (string-append
2626 "https://musicbrainz.osuosl.org/pub/musicbrainz/"
2627 "picard/picard-" version ".tar.gz"))
2628 (sha256
2629 (base32
b421e915 2630 "19w5k3bf4886gdycxjds9nkjvir0gwy2r5cqkz0lbls4ikk4y14f"))))
1deab8cb
CB
2631 (build-system python-build-system)
2632 (arguments
251448f7
TGR
2633 '(#:use-setuptools? #f
2634 #:configure-flags
e28b0798
TGR
2635 (list "--root=/"
2636 ;; Don't phone home or show ‘Check for Update…’ in the Help menu.
2637 "--disable-autoupdate")
251448f7 2638 #:phases
1deab8cb
CB
2639 (modify-phases %standard-phases
2640 (add-after 'unpack 'patch-source
2641 (lambda* (#:key inputs #:allow-other-keys)
2642 (substitute* "picard/const/__init__.py"
2643 (("pyfpcalc")
2644 (string-append
2645 "pyfpcalc', '"
e247244e
TGR
2646 (assoc-ref inputs "chromaprint") "/bin/fpcalc")))
2647 #t)))))
1deab8cb
CB
2648 (native-inputs
2649 `(("gettext" ,gettext-minimal)))
2650 (inputs
2651 `(("chromaprint" ,chromaprint)
7d9fa5f3 2652 ("python-discid" ,python-discid)
1deab8cb
CB
2653 ("python-pyqt" ,python-pyqt)
2654 ("python-mutagen" ,python-mutagen)))
2655 (home-page "https://picard.musicbrainz.org/")
2656 (synopsis "Graphical music tagging application")
2657 (description
2658 "MusicBrainz Picard is a music tagging application, supporting multiple
2659formats, looking up tracks through metadata and audio fingerprints.")
2660 (license license:gpl2+)))
2661
3f7a182d
LF
2662(define-public python-mutagen
2663 (package
2664 (name "python-mutagen")
e39aae4f 2665 (version "1.38")
3f7a182d
LF
2666 (source (origin
2667 (method url-fetch)
2668 (uri (pypi-uri "mutagen" version))
2669 (sha256
2670 (base32
e39aae4f 2671 "0rl7sxn1rcjl48fwga3dqf9f6pzspsny4ngxyf6pp337mrq0z693"))))
3f7a182d 2672 (build-system python-build-system)
4228a79e
LF
2673 (native-inputs
2674 `(("python-pytest" ,python-pytest)))
3f7a182d
LF
2675 (home-page "https://bitbucket.org/lazka/mutagen")
2676 (synopsis "Read and write audio tags")
2677 (description "Mutagen is a Python module to handle audio metadata. It
2678supports ASF, FLAC, M4A, Monkey’s Audio, MP3, Musepack, Ogg FLAC, Ogg Speex, Ogg
2679Theora, Ogg Vorbis, True Audio, WavPack and OptimFROG audio files. All versions
2680of ID3v2 are supported, and all standard ID3v2.4 frames are parsed. It can read
2681Xing headers to accurately calculate the bitrate and length of MP3s. ID3 and
2682APEv2 tags can be edited regardless of audio format. It can also manipulate Ogg
2683streams on an individual packet/page level.")
2684 (license license:gpl2))) ; "later version" never mentioned
2685
2686(define-public python2-mutagen
2687 (package-with-python2 python-mutagen))
8975de88
LF
2688
2689(define-public python-musicbrainzngs
2690 (package
2691 (name "python-musicbrainzngs")
daedf34d 2692 (version "0.6")
8975de88
LF
2693 (source (origin
2694 (method url-fetch)
2695 (uri (pypi-uri "musicbrainzngs" version))
2696 (sha256
2697 (base32
daedf34d 2698 "1dddarpjawryll2wss65xq3v9q8ln8dan7984l5dxzqx88d2dvr8"))))
8975de88 2699 (build-system python-build-system)
daedf34d
LF
2700 (arguments
2701 '(;; The tests fail suffer from race conditions:
2702 ;; https://github.com/alastair/python-musicbrainzngs/issues/211
2703 #:tests? #f))
8975de88
LF
2704 (home-page "https://python-musicbrainzngs.readthedocs.org/")
2705 (synopsis "Python bindings for MusicBrainz NGS webservice")
2706 (description "Musicbrainzngs implements Python bindings of the MusicBrainz
2707web service. This library can be used to retrieve music metadata from the
2708MusicBrainz database.")
2709 ;; 'musicbrainzngs/compat.py' is ISC licensed.
2710 (license (list license:bsd-2 license:isc))))
2711
2712(define-public python2-musicbrainzngs
2713 (package-with-python2 python-musicbrainzngs))
e8fee648 2714
07c82daa
GH
2715(define-public python-isrcsubmit
2716 (package
2717 (name "python-isrcsubmit")
2718 (version "2.0.1")
2719 (source
2720 (origin
2721 (method url-fetch)
2722 (uri (pypi-uri "isrcsubmit" version))
2723 (sha256
2724 (base32
2725 "0jh4cni8qhri6dh83cmp0i0m0384vv0vznlygv49wj9xzh1d99qv"))))
2726 (build-system python-build-system)
2727 (propagated-inputs
2728 `(("python-discid" ,python-discid)
2729 ("python-musicbrainzngs" ,python-musicbrainzngs)))
2730 (home-page "https://github.com/JonnyJD/musicbrainz-isrcsubmit")
2731 (synopsis "Submit ISRCs from CDs to MusicBrainz")
2732 (description "@code{isrcsubmit} is a tool to extract @dfn{International
2733Standard Recording Code} (ISRCs) from audio CDs and submit them to
2734@url{https://musicbrainz.org/, MusicBrainz}.")
2735 (license license:gpl3+)))
2736
a2eab422 2737(define-public python2-pyechonest
e8fee648 2738 (package
a2eab422 2739 (name "python2-pyechonest")
e8fee648
LF
2740 (version "9.0.0")
2741 (source (origin
2742 (method url-fetch)
2743 (uri (pypi-uri "pyechonest" version))
2744 (sha256
2745 (base32
2746 "1584nira3rkiman9dm81kdshihmkj21s8navndz2l8spnjwb790x"))))
2747 (build-system python-build-system)
a2eab422
LF
2748 (arguments
2749 `(;; Python 3 is not supported:
2750 ;; https://github.com/echonest/pyechonest/issues/42
2751 #:python ,python-2))
e8fee648
LF
2752 (home-page "https://github.com/echonest/pyechonest")
2753 (synopsis "Python interface to The Echo Nest APIs")
d3e3468f
LF
2754 (description "Pyechonest is a Python library for the Echo Nest API. With
2755Pyechonest you have Python access to the entire set of API methods including:
e8fee648
LF
2756
2757@enumerate
2758@item artist - search for artists by name, description, or attribute, and get
2759back detailed information about any artist including audio, similar artists,
2760blogs, familiarity, hotttnesss, news, reviews, urls and video.
2761@item song - search songs by artist, title, description, or attribute (tempo,
2762duration, etc) and get detailed information back about each song, such as
2763hotttnesss, audio_summary, or tracks.
2764@item track - upload a track to the Echo Nest and receive summary information
2765about the track including key, duration, mode, tempo, time signature along with
2766detailed track info including timbre, pitch, rhythm and loudness information.
2767@end enumerate\n")
a2eab422 2768 (license license:bsd-3)))
acd7351f
LF
2769
2770(define-public python-pylast
2771 (package
2772 (name "python-pylast")
653f2b92 2773 (version "2.0.0")
acd7351f
LF
2774 (source (origin
2775 (method url-fetch)
2776 (uri (pypi-uri "pylast" version))
2777 (sha256
2778 (base32
653f2b92 2779 "0r9h7g8i8l2mgqjwkda3v6prfbkb2im5kap1az9ppmhjm9i4jkcf"))))
acd7351f 2780 (build-system python-build-system)
653f2b92
RW
2781 ;; Tests require network access. See
2782 ;; https://github.com/pylast/pylast/issues/105
2783 (arguments '(#:tests? #f))
acd7351f
LF
2784 (native-inputs
2785 `(("python-coverage" ,python-coverage)
653f2b92 2786 ("python-pycodestyle" ,python-pycodestyle)
acd7351f
LF
2787 ("python-mock" ,python-mock)
2788 ("python-pep8" ,python-pep8)
2789 ("python-pytest" ,python-pytest)
653f2b92 2790 ("python-flaky" ,python-flaky)
acd7351f
LF
2791 ("python-pyflakes" ,python-pyflakes)
2792 ("python-pyyaml" ,python-pyyaml)))
2793 (propagated-inputs
2794 `(("python-six" ,python-six)))
2795 (home-page "https://github.com/pylast/pylast")
2796 (synopsis "Python interface to Last.fm and Libre.fm")
2797 (description "A Python interface to Last.fm and other API-compatible
2798websites such as Libre.fm.")
5c31f4aa 2799 (license license:asl2.0)))
acd7351f
LF
2800
2801(define-public python2-pylast
5c31f4aa 2802 (package-with-python2 python-pylast))
3bf429af 2803
b0dea60c
SR
2804(define-public instantmusic
2805 (let ((commit "300891d09c703525215fa5a116b9294af1c923c8")
2806 (revision "1"))
2807 (package
2808 (name "instantmusic")
2809 (version (git-version "1.0" revision commit))
2810 (source (origin
2811 (method git-fetch)
2812 (uri (git-reference
2813 (url "https://github.com/yask123/Instant-Music-Downloader.git")
2814 (commit commit)))
2815 (file-name (git-file-name name version))
2816 (sha256
2817 (base32
2818 "0j7qivaa04bpdz3anmgci5833dgiyfqqwq9fdrpl9m68b34gl773"))))
2819 (build-system python-build-system)
2820 (propagated-inputs
2821 `(("python-requests" ,python-requests)
c695fb76 2822 ("eyed3" ,eyed3)
b0dea60c
SR
2823 ("python-beautifulsoup4" ,python-beautifulsoup4)
2824 ("youtube-dl" ,youtube-dl)))
2825 (arguments
2826 '(#:modules ((guix build python-build-system)
2827 (guix build utils)
2828 (srfi srfi-26))
2829 #:phases (modify-phases %standard-phases
2830 (add-before 'build 'change-directory
2831 (lambda _
2832 (chdir "instantmusic-0.1") #t))
4b577961 2833 (add-before 'install 'fix-file-permissions
b0dea60c
SR
2834 (lambda _
2835 ;; Fix some read-only files that would cause a build failure
2836 (for-each (cut chmod <> #o644)
2837 (find-files "instantmusic.egg-info"
2838 "PKG-INFO|.*\\.txt"))
2839 #t)))))
2840 (home-page "http://iyask.me/Instant-Music-Downloader/")
2841 (synopsis "Command-line program to download a song from YouTube")
2842 (description "InstantMusic downloads a song from YouTube in MP3 format.
2843Songs can be searched by artist, name or even by a part of the song text.")
2844 (license license:expat))))
2845
3bf429af
LF
2846(define-public beets
2847 (package
2848 (name "beets")
3f3d712c 2849 (version "1.4.9")
3bf429af
LF
2850 (source (origin
2851 (method url-fetch)
23319ed6 2852 (uri (pypi-uri "beets" version))
3bf429af
LF
2853 (sha256
2854 (base32
3f3d712c 2855 "0m40rjimvfgy1dv04p8f8d5dvi2855v4ix99a9xr900cmcn476yj"))))
3bf429af
LF
2856 (build-system python-build-system)
2857 (arguments
0d48ff81 2858 `(#:phases
3bf429af
LF
2859 (modify-phases %standard-phases
2860 (add-after 'unpack 'set-HOME
46fce968
TGR
2861 (lambda _
2862 (setenv "HOME" (string-append (getcwd) "/tmp"))
2863 #t))
36c2c8c8 2864 (replace 'check
46fce968
TGR
2865 (lambda _
2866 (invoke "nosetests" "-v"))))))
3bf429af 2867 (native-inputs
0d48ff81
LF
2868 `(("python-beautifulsoup4" ,python-beautifulsoup4)
2869 ("python-flask" ,python-flask)
2870 ("python-mock" ,python-mock)
2871 ("python-mpd2" ,python-mpd2)
2872 ("python-nose" ,python-nose)
2873 ("python-pathlib" ,python-pathlib)
2874 ("python-pyxdg" ,python-pyxdg)
2875 ("python-pylast" ,python-pylast)
2876 ("python-rarfile" ,python-rarfile)
2877 ("python-responses" ,python-responses)))
3bf429af 2878 ;; TODO: Install optional plugins and dependencies.
b3470031 2879 (inputs
0d48ff81 2880 `(("python-discogs-client" ,python-discogs-client)
0d48ff81
LF
2881 ("python-jellyfish" ,python-jellyfish)
2882 ("python-munkres" ,python-munkres)
2883 ("python-musicbrainzngs" ,python-musicbrainzngs)
2884 ("python-mutagen" ,python-mutagen)
2885 ("python-pyyaml" ,python-pyyaml)
2886 ("python-unidecode" ,python-unidecode)))
d94ec407 2887 (home-page "https://beets.io")
3bf429af
LF
2888 (synopsis "Music organizer")
2889 (description "The purpose of beets is to get your music collection right
2890once and for all. It catalogs your collection, automatically improving its
2891metadata as it goes using the MusicBrainz database. Then it provides a variety
2892of tools for manipulating and accessing your music.")
2893 (license license:expat)))
21d18113 2894
4ee2cce3
JK
2895(define-public beets-bandcamp
2896 (package
2897 (name "beets-bandcamp")
2898 (version "0.1.3")
2899 (source (origin
2900 (method url-fetch)
2901 (uri (pypi-uri "beets-bandcamp" version))
2902 (sha256
2903 (base32
2904 "04awg0zdhhg5h510fc1p3qkvr2l1qm6nf85hlr9z8im8a7xlka0i"))))
2905 (build-system python-build-system)
2906 (arguments '(#:tests? #f)) ; there are no tests
2907 (propagated-inputs
2908 `(("beets" ,beets)
2909 ("python-isodate" ,python-isodate)))
2910 (inputs
2911 `(("python-beautifulsoup4" ,python-beautifulsoup4)
2912 ("python-requests" ,python-requests)
2913 ("python-six" ,python-six)))
2914 (home-page "https://github.com/unrblt/beets-bandcamp")
2915 (synopsis "Bandcamp plugin for beets")
2916 (description
2917 "This plugin for beets automatically obtains tag data from @uref{Bandcamp,
2918https://bandcamp.com/}. It's also capable of getting song lyrics and album art
2919using the beets FetchArt plugin.")
2920 (license license:gpl2)))
2921
21d18113
KY
2922(define-public milkytracker
2923 (package
2924 (name "milkytracker")
b7e2fcf0 2925 (version "1.02.00")
21d18113 2926 (source (origin
caa39e56
RW
2927 (method git-fetch)
2928 (uri (git-reference
2929 (url "https://github.com/milkytracker/MilkyTracker.git")
2930 (commit (string-append "v" version))))
2931 (file-name (git-file-name name version))
21d18113
KY
2932 (sha256
2933 (base32
caa39e56 2934 "05a6d7l98k9i82dwrgi855dnccm3f2lkb144gi244vhk1156n0ca"))
e3b2e943
KK
2935 (modules '((guix build utils)))
2936 ;; Remove non-FSDG compliant sample songs.
2937 (snippet
2938 '(begin
2939 (delete-file-recursively "resources/music")
2940 (substitute* "CMakeLists.txt"
6cbee49d
MW
2941 (("add_subdirectory\\(resources/music\\)") ""))
2942 #t))))
e3b2e943 2943 (build-system cmake-build-system)
21d18113 2944 (arguments
7f2f8345
KK
2945 '(#:tests? #f ; no check target
2946 ;; This flag ensures that MilkyTracker links with the JACK library.
2947 #:configure-flags '("-DCMAKE_CXX_FLAGS=-ljack")))
21d18113
KY
2948 (inputs
2949 `(("alsa-lib" ,alsa-lib)
ba259bad 2950 ("lhasa" ,lhasa)
21d18113 2951 ("jack" ,jack-1)
f1618a0f 2952 ("rtmidi" ,rtmidi)
e3b2e943 2953 ("sdl" ,sdl2)
f1618a0f
KK
2954 ("zlib" ,zlib)
2955 ("zziplib" ,zziplib)))
21d18113
KY
2956 (native-inputs
2957 `(("pkg-config" ,pkg-config)))
2958 (synopsis "Music tracker for working with .MOD/.XM module files")
2959 (description "MilkyTracker is a music application for creating .MOD and .XM
2960module files. It attempts to recreate the module replay and user experience of
2961the popular DOS program Fasttracker II, with special playback modes available
2962for improved Amiga ProTracker 2/3 compatibility.")
1b35fea1 2963 (home-page "http://milkytracker.titandemo.org/")
21d18113
KY
2964 ;; 'src/milkyplay' is under Modified BSD, the rest is under GPL3 or later.
2965 (license (list license:bsd-3 license:gpl3+))))
13416a10 2966
89bcf3fc
KK
2967(define-public schismtracker
2968 (package
2969 (name "schismtracker")
e526db51 2970 (version "20190614")
89bcf3fc 2971 (source (origin
3b9e9415
RW
2972 (method git-fetch)
2973 (uri (git-reference
2974 (url "https://github.com/schismtracker/schismtracker.git")
2975 (commit version)))
2976 (file-name (git-file-name name version))
89bcf3fc
KK
2977 (sha256
2978 (base32
e526db51 2979 "0cg0q5bkn8a06v03vmj69xyhi4xxpl729k4008q4hiakh9gy2x49"))
89bcf3fc
KK
2980 (modules '((guix build utils)))
2981 (snippet
2982 ;; Remove use of __DATE__ and __TIME__ for reproducibility.
6cbee49d
MW
2983 `(begin
2984 (substitute* "schism/version.c"
2985 (("Schism Tracker built %s %s.*$")
2986 (string-append "Schism Tracker version " ,version "\");")))
2987 #t))))
89bcf3fc
KK
2988 (build-system gnu-build-system)
2989 (arguments
2990 `(#:phases
2991 (modify-phases %standard-phases
89bcf3fc
KK
2992 (add-before 'configure 'link-libm
2993 (lambda _ (setenv "LIBS" "-lm") #t)))))
2994 (native-inputs
2995 `(("autoconf" ,autoconf)
2996 ("automake" ,automake)
2997 ("python" ,python)))
2998 (inputs
e526db51 2999 `(("alsa-lib" ,alsa-lib) ; for asound dependency
89bcf3fc
KK
3000 ("libx11" ,libx11)
3001 ("libxext" ,libxext)
3002 ("sdl" ,sdl)))
3003 (home-page "http://schismtracker.org")
3004 (synopsis "Oldschool sample-based music composition tool")
3005 (description
3006 "Schism Tracker is a reimplementation of Impulse Tracker, a program used to
3007create high quality music without the requirements of specialized, expensive
3008equipment, and with a unique \"finger feel\" that is difficult to replicate in
3009part. The player is based on a highly modified version of the ModPlug engine,
3010with a number of bugfixes and changes to improve IT playback.")
3011 (license license:gpl2+)))
3012
5beecc32
RW
3013(define-public sooperlooper
3014 (package
3015 (name "sooperlooper")
3016 (version "1.7.3")
3017 (source (origin
3018 (method url-fetch)
3019 (uri (string-append "http://essej.net/sooperlooper/sooperlooper-"
3020 version ".tar.gz"))
3021 (sha256
3022 (base32
3023 "0n2gdxw1fx8nxxnpzf4sj0kp6k6zi1yq59cbz6qqzcnsnpnvszbs"))
3024 (patches (search-patches "sooperlooper-build-with-wx-30.patch"))))
3025 (build-system gnu-build-system)
3026 (arguments
e6e09dc9 3027 `(#:phases
5beecc32
RW
3028 (modify-phases %standard-phases
3029 (add-after 'unpack 'add-sigc++-includes
3030 (lambda* (#:key inputs #:allow-other-keys)
3031 (let ((sig (assoc-ref inputs "libsigc++"))
3032 (xml (assoc-ref inputs "libxml2"))
3033 (cwd (getcwd)))
3034 (setenv "CPATH"
3035 (string-append sig "/include/sigc++-2.0:"
3036 sig "/lib/sigc++-2.0/include:"
3037 xml "/include/libxml2/:"
3038 cwd "/libs/pbd:"
e6e09dc9
MB
3039 cwd "/libs/midi++:"
3040 (or (getenv "CPATH") ""))))
5beecc32
RW
3041 (substitute* '("src/control_osc.hpp"
3042 "src/gui/app_frame.hpp"
3043 "src/gui/config_panel.hpp"
3044 "src/gui/keys_panel.hpp"
3045 "src/gui/latency_panel.hpp"
3046 "src/gui/main_panel.hpp"
3047 "src/gui/midi_bind_panel.hpp"
3048 "src/gui/prefs_dialog.hpp")
3049 (("sigc\\+\\+/object.h")
3050 "sigc++/sigc++.h"))
3051 (substitute* '("src/engine.cpp"
3052 "src/gui/latency_panel.cpp"
3053 "src/gui/looper_panel.cpp"
3054 "src/gui/main_panel.cpp")
3055 (("(\\(| )bind " _ pre)
3056 (string-append pre "sigc::bind ")))
3057 #t))
3058 (add-after 'unpack 'fix-xpm-warnings
3059 (lambda _
3060 (substitute* (find-files "." "\\.xpm$")
3061 (("static char") "static const char"))
3062 #t)))))
3063 (inputs
3064 `(("jack" ,jack-1)
3065 ("alsa-lib" ,alsa-lib)
3066 ("wxwidgets" ,wxwidgets-gtk2)
3067 ("libsndfile" ,libsndfile)
3068 ("libsamplerate" ,libsamplerate)
3069 ("liblo" ,liblo)
3070 ("rubberband" ,rubberband)
3071 ("libxml2" ,libxml2)
3072 ("libsigc++" ,libsigc++)
3073 ("ncurses" ,ncurses)))
3074 (native-inputs
3075 `(("pkg-config" ,pkg-config)))
3076 (home-page "http://essej.net/sooperlooper/")
3077 (synopsis "Live looping sampler")
3078 (description
3079 "SooperLooper is a live looping sampler capable of immediate loop
3080recording, overdubbing, multiplying, reversing and more. It allows for
3081multiple simultaneous multi-channel loops limited only by your computer's
3082available memory.")
3083 (license license:gpl2+)))
3084
13416a10
KY
3085(define-public moc
3086 (package
3087 (name "moc")
2fbc004f 3088 (version "2.5.2")
13416a10
KY
3089 (source (origin
3090 (method url-fetch)
3091 (uri (string-append "http://ftp.daper.net/pub/soft/"
3092 name "/stable/"
3093 name "-" version ".tar.bz2"))
3094 (sha256
3095 (base32
2784b35f 3096 "026v977kwb0wbmlmf6mnik328plxg8wykfx9ryvqhirac0aq39pk"))))
13416a10
KY
3097 (build-system gnu-build-system)
3098 (inputs
3099 `(("alsa-lib" ,alsa-lib)
3100 ("curl" ,curl)
3101 ("faad2" ,faad2)
bb5c508c 3102 ("ffmpeg" ,ffmpeg-3.4)
13416a10
KY
3103 ("file" ,file)
3104 ("jack" ,jack-1)
3105 ("libid3tag" ,libid3tag)
3106 ("libltdl" ,libltdl)
3107 ("libmodplug" ,libmodplug)
3108 ("libmpcdec" ,libmpcdec)
3109 ("libmad" ,libmad)
6beaa5a0
MM
3110 ("libogg" ,libogg)
3111 ("libvorbis" ,libvorbis)
13416a10
KY
3112 ("ncurses" ,ncurses)
3113 ("openssl" ,openssl)
3114 ("sasl" ,cyrus-sasl)
3115 ("speex" ,speex)
3116 ("taglib" ,taglib)
3117 ("wavpack" ,wavpack)
3118 ("zlib" ,zlib)))
3119 (native-inputs
3120 `(("pkg-config" ,pkg-config)))
3121 (synopsis "Console audio player designed to be powerful and easy to use")
3122 (description
3123 "Music on Console is a console audio player that supports many file
3124formats, including most audio formats recognized by FFMpeg.")
3125 (home-page "http://moc.daper.net")
3126 (license license:gpl2+)))
6d3ef286
JF
3127
3128(define-public midicsv
3129 (package
3130 (name "midicsv")
3131 (version "1.1")
3132 (source (origin
3133 (method url-fetch)
3134 (uri (string-append "http://www.fourmilab.ch/webtools/midicsv/"
3135 name "-" version ".tar.gz"))
3136 (sha256
3137 (base32
3138 "1vvhk2nf9ilfw0wchmxy8l13hbw9cnpz079nsx5srsy4nnd78nkw"))))
3139 (build-system gnu-build-system)
3140 (arguments
3141 `(#:phases (modify-phases %standard-phases (delete 'configure))
3142 #:make-flags (list "CC=gcc" (string-append "INSTALL_DEST=" %output))))
3143 (synopsis "Convert MIDI files to and from CSV")
3144 (description
3145 "Midicsv reads a standard MIDI file and decodes it into a comma-separated
3146value file (CSV), which preserves all the information in the MIDI file. The
3147ASCII CSV file may be loaded into a spreadsheet or database application, or
3148processed by a program to transform the MIDI data (for example, to key
3149transpose a composition or extract a track from a multi-track sequence). A
3150CSV file in the format created by midicsv may be converted back into a
3151standard MIDI file with the csvmidi program.")
3152 (home-page "http://www.fourmilab.ch/webtools/midicsv/")
3153 (license license:public-domain)))
49604680
RW
3154
3155(define-public gx-guvnor-lv2
35f909d4
RW
3156 (package
3157 (name "gx-guvnor-lv2")
3158 (version "0.1")
3159 (source (origin
6ac8c78c
RW
3160 (method git-fetch)
3161 (uri (git-reference
3162 (url "https://github.com/brummer10/GxGuvnor.lv2.git")
3163 (commit (string-append "v" version))))
3164 (file-name (string-append name "-" version "-checkout"))
35f909d4
RW
3165 (sha256
3166 (base32
6ac8c78c 3167 "1wa5070j40p7f0b3kr259pzm99xb6cf2badr2capayjvgayd6gnm"))))
35f909d4
RW
3168 (build-system gnu-build-system)
3169 (arguments
3170 `(;; The check target is used only to output a warning.
3171 #:tests? #f
3172 #:make-flags
3173 (list (string-append "DESTDIR=" (assoc-ref %outputs "out")))
3174 #:phases
3175 (modify-phases %standard-phases
3176 (replace 'configure
3177 (lambda _
3178 (substitute* "Makefile"
6ac8c78c
RW
3179 (("INSTALL_DIR = .*") "INSTALL_DIR=/lib/lv2\n")
3180 (("install : all") "install :"))
35f909d4
RW
3181 #t)))))
3182 (inputs
3183 `(("lv2" ,lv2)))
3184 (home-page "https://github.com/brummer10/GxGuvnor.lv2")
3185 (synopsis "Overdrive/distortion pedal simulation")
3186 (description "This package provides the LV2 plugin \"GxGuvnor\", a
49604680 3187simulation of an overdrive or distortion pedal for guitars.")
35f909d4 3188 ;; The LICENSE file says GPLv3 but the license headers in the files say
4b359532
RW
3189 ;; GPLv2 or later. The whole project is released under GPLv3 or later
3190 ;; according to https://github.com/brummer10/GxGuvnor.lv2/issues/1
3191 (license license:gpl3+)))
85ae347e
RW
3192
3193(define-public gx-vbass-preamp-lv2
1b74b126
RW
3194 (let ((commit "eb999b0ca0ef4da40a59e458a9ab6e7042b96c99")
3195 (revision "2"))
85ae347e
RW
3196 (package (inherit gx-guvnor-lv2)
3197 (name "gx-vbass-preamp-lv2")
3198 (version (string-append "0-" revision "." (string-take commit 9)))
3199 (source (origin
3200 (method git-fetch)
3201 (uri (git-reference
3202 (url "https://github.com/brummer10/GxVBassPreAmp.lv2")
3203 (commit commit)))
3204 (sha256
3205 (base32
1b74b126 3206 "0firap073ldw4nrykkd7jvyyj0jbl1nslxyzjj4kswazp99x7d9h"))
85ae347e 3207 (file-name (string-append name "-" version "-checkout"))))
1b74b126
RW
3208 (inputs
3209 `(("lv2" ,lv2)
3210 ("gtk+" ,gtk+-2)))
3211 (native-inputs
3212 `(("pkg-config" ,pkg-config)))
85ae347e
RW
3213 (home-page "https://github.com/brummer10/GxVBassPreAmp.lv2")
3214 (synopsis "Simulation of the Vox Venue Bass 100 Pre Amp Section")
3215 (description "This package provides the LV2 plugin \"GxVBassPreAmp\", a
3216pre-amplifier simulation modelled after the 1984 Vox Venue Bass 100 Pre Amp
3217Section."))))
cdc7a021
RW
3218
3219(define-public gx-overdriver-lv2
3220 (let ((commit "ed71801987449414bf3adaa0dbfac68e8775f1ce")
3221 (revision "1"))
1b74b126 3222 (package (inherit gx-guvnor-lv2)
cdc7a021
RW
3223 (name "gx-overdriver-lv2")
3224 (version (string-append "0-" revision "." (string-take commit 9)))
3225 (source (origin
3226 (method git-fetch)
3227 (uri (git-reference
3228 (url "https://github.com/brummer10/GxOverDriver.lv2")
3229 (commit commit)))
3230 (sha256
3231 (base32
3232 "13j614jh525fbkby79nnzwj0z1ac0c9wclyn5pfqvkmx6a7j24r8"))
3233 (file-name (string-append name "-" version "-checkout"))))
3234 (home-page "https://github.com/brummer10/GxOverDriver.lv2")
3235 (synopsis "Overdrive effect with level and tone control")
3236 (description "This package provides the LV2 plugin \"GxOverDriver\", an
3237overdrive effect."))))
4d95cd30
RW
3238
3239(define-public gx-tone-mender-lv2
3240 (let ((commit "b6780b4a3e4782b3ed0e5882d6788f178aed138f")
3241 (revision "1"))
1b74b126 3242 (package (inherit gx-guvnor-lv2)
4d95cd30
RW
3243 (name "gx-tone-mender-lv2")
3244 (version (string-append "0-" revision "." (string-take commit 9)))
3245 (source (origin
3246 (method git-fetch)
3247 (uri (git-reference
3248 (url "https://github.com/brummer10/GxToneMender.lv2")
3249 (commit commit)))
3250 (sha256
3251 (base32
3252 "07qdcfsvv2vdnfnjh91pfgvjdcs5y91nvwfm8c0z8fp6b4bk7a9q"))
3253 (file-name (string-append name "-" version "-checkout"))))
3254 (home-page "https://github.com/brummer10/GxToneMender.lv2")
3255 (synopsis "Clean boost with a 3-knob tonestack")
3256 (description "This package provides the LV2 plugin \"GxToneMender\", a
3257clean boost effect with a 3-knob tonestack."))))
4d4bfdc2
RW
3258
3259(define-public gx-push-pull-lv2
3260 (let ((commit "7f76ae2068498643ac8671ee0930b13ee3fd8eb5")
3261 (revision "1"))
1b74b126 3262 (package (inherit gx-guvnor-lv2)
4d4bfdc2
RW
3263 (name "gx-push-pull-lv2")
3264 (version (string-append "0-" revision "." (string-take commit 9)))
3265 (source (origin
3266 (method git-fetch)
3267 (uri (git-reference
3268 (url "https://github.com/brummer10/GxPushPull.lv2")
3269 (commit commit)))
3270 (sha256
3271 (base32
3272 "12f5hwck2irph0gjbj8xy8jqcqdwb8l1hlwf29k0clz52h1jhb5q"))
3273 (file-name (string-append name "-" version "-checkout"))))
3274 (home-page "https://github.com/brummer10/GxPushPull.lv2")
3275 (synopsis "Octave up push pull transistor fuzz simulation")
3276 (description "This package provides the LV2 plugin \"GxPushPull\", a
3277simulation of a push pull transistor fuzz effect with added high octave."))))
3eb1a964
RW
3278
3279(define-public gx-suppa-tone-bender-lv2
f959991d
RW
3280 (package (inherit gx-guvnor-lv2)
3281 (name "gx-suppa-tone-bender-lv2")
3282 (version "0.1")
3283 (source (origin
48b95a19
RW
3284 (method git-fetch)
3285 (uri (git-reference
3286 (url "https://github.com/brummer10/GxSuppaToneBender.lv2.git")
3287 (commit (string-append "v" version))))
3288 (file-name (string-append name "-" version "-checkout"))
f959991d
RW
3289 (sha256
3290 (base32
48b95a19 3291 "01x6bjmllkmvxfzc5xwdix7w021j26js71awv728cxsmkxgqw0zy"))))
f959991d
RW
3292 (home-page "https://github.com/brummer10/GxSuppaToneBender.lv2")
3293 (synopsis "Simulation of the Vox Suppa Tone Bender pedal")
3294 (description "This package provides the LV2 plugin
3eb1a964 3295\"GxSuppaToneBender\", a simulation modelled after the Vox Suppa Tone Bender
f959991d 3296pedal.")))
664f677f
RW
3297
3298(define-public gx-saturator-lv2
d9f65bd3
RW
3299 (let ((commit "605330f432c94b6eb3f8203cbe472befae959532")
3300 (revision "3"))
ad67ca3d 3301 (package (inherit gx-vbass-preamp-lv2)
664f677f
RW
3302 (name "gx-saturator-lv2")
3303 (version (string-append "0-" revision "." (string-take commit 9)))
3304 (source (origin
3305 (method git-fetch)
3306 (uri (git-reference
3307 (url "https://github.com/brummer10/GxSaturator.lv2")
3308 (commit commit)))
3309 (sha256
3310 (base32
d9f65bd3 3311 "1w4nvh0rmxrv3s3hmh4fs74f3hc0jn31v00j769j7v68mqr7kawy"))
664f677f
RW
3312 (file-name (string-append name "-" version "-checkout"))))
3313 (home-page "https://github.com/brummer10/GxSaturator.lv2")
3314 (synopsis "Saturation effect")
3315 (description "This package provides the LV2 plugin \"GxSaturator\", a
3316saturation effect."))))
89412238
RW
3317
3318(define-public gx-hyperion-lv2
4396e9b5
RW
3319 (package (inherit gx-guvnor-lv2)
3320 (name "gx-hyperion-lv2")
3321 (version "0.1")
3322 (source (origin
37519239
RW
3323 (method git-fetch)
3324 (uri (git-reference
3325 (url "https://github.com/brummer10/GxHyperion.lv2.git")
3326 (commit (string-append "v" version))))
3327 (file-name (string-append name "-" version "-checkout"))
4396e9b5
RW
3328 (sha256
3329 (base32
37519239 3330 "1vx79s6s9if117y2g0ppdja2sv2wcny6xcfl3j1z4cipahnildxf"))))
4396e9b5
RW
3331 (home-page "https://github.com/brummer10/GxHyperion.lv2")
3332 (synopsis "Simulation of the Hyperion Fuzz pedal")
3333 (description "This package provides the LV2 plugin \"GxHyperion\", a
3334simulation of the Hyperion Fuzz pedal.")))
32536f00
RW
3335
3336(define-public gx-voodoo-fuzz-lv2
cf44ebeb
RW
3337 (package (inherit gx-guvnor-lv2)
3338 (name "gx-voodoo-fuzz-lv2")
3339 (version "0.1")
3340 (source (origin
d42c6613
RW
3341 (method git-fetch)
3342 (uri (git-reference
3343 (url "https://github.com/brummer10/GxVoodoFuzz.lv2.git")
3344 (commit (string-append "v" version))))
3345 (file-name (string-append name "-" version "-checkout"))
cf44ebeb
RW
3346 (sha256
3347 (base32
d42c6613 3348 "1v0scphivri1fk4hl20j13f92i48mnx1zsil4hgnadsmm4nsfw43"))))
cf44ebeb
RW
3349 (home-page "https://github.com/brummer10/GxVoodoFuzz.lv2")
3350 (synopsis "Fuzz effect modelled after the Voodoo Lab SuperFuzz")
3351 (description "This package provides the LV2 plugin \"GxVoodooFuzz\", a
32536f00
RW
3352simulation modelled after the Voodoo Lab SuperFuzz pedal. It's basically a
3353Bosstone circuit, followed by the tone control of the FoxToneMachine in
cf44ebeb 3354parallel with a DarkBooster, followed by a volume control.")))
29f63222
RW
3355
3356(define-public gx-super-fuzz-lv2
34a3ecfe
RW
3357 (package (inherit gx-guvnor-lv2)
3358 (name "gx-super-fuzz-lv2")
3359 (version "0.1")
3360 (source (origin
5057535f
RW
3361 (method git-fetch)
3362 (uri (git-reference
3363 (url "https://github.com/brummer10/GxSuperFuzz.lv2.git")
3364 (commit (string-append "v" version))))
3365 (file-name (string-append name "-" version "-checkout"))
34a3ecfe
RW
3366 (sha256
3367 (base32
5057535f 3368 "1jlljd9hlgfflbiizq47lv1xbbgjyx3v835mf24zmh1q5zsw4np4"))))
34a3ecfe
RW
3369 (home-page "https://github.com/brummer10/GxSuperFuzz.lv2")
3370 (synopsis "Fuzz effect modelled after the UniVox SuperFuzz")
a6f39d7c 3371 (description "This package provides the LV2 plugin \"GxSuperFuzz\", an
29f63222 3372analog simulation of the UniVox SuperFuzz pedal. In this simulation the trim
d1e4ad1b 3373pot, which is usually in the housing, is exposed as a control parameter. It
34a3ecfe 3374adjusts the amount of harmonics.")))
40bffdfa
RW
3375
3376(define-public gx-vintage-fuzz-master-lv2
38050923
RW
3377 (package (inherit gx-guvnor-lv2)
3378 (name "gx-vintage-fuzz-master-lv2")
3379 (version "0.1")
3380 (source (origin
0febd673
RW
3381 (method git-fetch)
3382 (uri (git-reference
3383 (url "https://github.com/brummer10/GxVintageFuzzMaster.lv2.git")
3384 (commit (string-append "v" version))))
3385 (file-name (string-append name "-" version "-checkout"))
38050923
RW
3386 (sha256
3387 (base32
0febd673 3388 "02jb211z8rw2qr5r1z5mdxlqgiw6cbc319xpqplvn6k21c59mskv"))))
38050923
RW
3389 (home-page "https://github.com/brummer10/GxVintageFuzzMaster.lv2")
3390 (synopsis "Fuzz effect simulation of the vintage Fuzz Master")
3391 (description "This package provides the LV2 plugin
3392\"GxVintageFuzzMaster\", a simulation of the vintage Fuzz Master pedal.")))
631f8175
RW
3393
3394(define-public gx-slow-gear-lv2
d921a1f4
RW
3395 (let ((commit "5d37e775b0feef1d82feee94e2a7a2d7e57efe2d")
3396 (revision "3"))
ad67ca3d 3397 (package (inherit gx-vbass-preamp-lv2)
631f8175
RW
3398 (name "gx-slow-gear-lv2")
3399 (version (string-append "0-" revision "." (string-take commit 9)))
3400 (source (origin
3401 (method git-fetch)
3402 (uri (git-reference
3403 (url "https://github.com/brummer10/GxSlowGear.lv2")
3404 (commit commit)))
3405 (sha256
3406 (base32
d921a1f4 3407 "141mz69zkhk3lm54bb6wgpnghb92zm1ig7fv07240cmhydqji1q1"))
631f8175
RW
3408 (file-name (string-append name "-" version "-checkout"))))
3409 (home-page "https://github.com/brummer10/GxSlowGear.lv2")
3410 (synopsis "Slow gear audio effect")
3411 (description "This package provides the LV2 plugin \"GxSlowGear\", a
3412slow gear audio effect to produce volume swells."))))
d75e8f5a
RW
3413
3414(define-public gx-switchless-wah-lv2
cfcef2c2
RW
3415 (let ((commit "7b08691203314612999f0ce2328cdc1161cd6665")
3416 (revision "2"))
1b74b126 3417 (package (inherit gx-guvnor-lv2)
d75e8f5a
RW
3418 (name "gx-switchless-wah-lv2")
3419 (version (string-append "0-" revision "." (string-take commit 9)))
3420 (source (origin
3421 (method git-fetch)
3422 (uri (git-reference
3423 (url "https://github.com/brummer10/GxSwitchlessWah.lv2")
3424 (commit commit)))
3425 (sha256
3426 (base32
cfcef2c2 3427 "04jqfpncmrrqn34p21w4v9m2x5a5wsqwbm4f3byxvq4vcibwxzk2"))
d75e8f5a
RW
3428 (file-name (string-append name "-" version "-checkout"))))
3429 (home-page "https://github.com/brummer10/GxSwitchlessWah.lv2")
3430 (synopsis "Wah emulation with switchless activation")
3431 (description "This package provides the LV2 plugin \"GxSwitchlessWah\",
3432a simulation of an analog Wah pedal with switchless activation."))))
84d53724 3433
a734da86 3434(define-public rkrlv2
b2dcfaf2
RW
3435 ;; This commit corresponds to the beta_3 tag
3436 (let ((commit "7edcb4e29a358623bfd57fa2c27e5da60adfcec3")
3437 (revision "2"))
a734da86
RW
3438 (package
3439 (name "rkrlv2")
3440 (version (git-version "0" revision commit))
3441 (source (origin
3442 (method git-fetch)
3443 (uri (git-reference
3444 (url "https://github.com/ssj71/rkrlv2.git")
3445 (commit commit)))
3446 (sha256
3447 (base32
b2dcfaf2 3448 "16i4ajrib7kb0abdcn4901g8a4lkwkp2fyqyms38dhqq84slyfjs"))
a734da86
RW
3449 (file-name (git-file-name name version))))
3450 (build-system cmake-build-system)
3451 (arguments '(#:tests? #f)) ; there are no tests
3452 (inputs
3453 `(("fftw" ,fftw)
3454 ("libsamplerate" ,libsamplerate)
3455 ("lv2" ,lv2)))
3456 (native-inputs
3457 `(("pkg-config" ,pkg-config)))
3458 (home-page "https://github.com/ssj71/rkrlv2")
3459 (synopsis "Rakarrack effects ported to LV2 plugins")
3460 (description "This package provides the Rakarrack effects as LV2
3461plugins. The ports are done such that hopefully when Rakarrack gets an active
3462maintainer these will get merged into the original project.")
3463 (license license:gpl2))))
3464
84d53724 3465(define-public mod-utilities
fe049d21
RW
3466 (let ((commit "80ea3ea9f52fab7f191671f4810bf90fc955a046")
3467 (revision "2"))
84d53724
RW
3468 (package
3469 (name "mod-utilities")
3470 (version (string-append "0-" revision "." (string-take commit 9)))
3471 (source (origin
3472 (method git-fetch)
3473 (uri (git-reference
3474 (url "https://github.com/moddevices/mod-utilities.git")
3475 (commit commit)))
fe049d21 3476 (file-name (string-append name "-" version "-checkout"))
84d53724
RW
3477 (sha256
3478 (base32
fe049d21 3479 "1v55zmzmlg0ka7341x5lsvb44amy17vk27s669ps1basd1bk5s5v"))))
84d53724
RW
3480 (build-system gnu-build-system)
3481 (arguments
3482 `(#:tests? #f ; there are no tests
3483 #:make-flags
3484 (list (string-append "INSTALL_PATH="
3485 (assoc-ref %outputs "out")
fe049d21
RW
3486 "/lib/lv2")
3487 (string-append "PREFIX=" (assoc-ref %outputs "out"))
3488 "CC=gcc")
84d53724
RW
3489 #:phases
3490 (modify-phases %standard-phases
3491 (delete 'configure))))
3492 (inputs
3493 `(("lv2" ,lv2)))
3494 (home-page "https://github.com/moddevices/mod-utilities")
3495 (synopsis "LV2 utility plugins")
3496 (description "This package provides LV2 audio utility plugins, such as
3497filters, crossovers, simple gain plugins without zipper noise, switch box
3498plugins, a switch trigger, a toggle switch, and a peakmeter.")
3499 (license license:gpl2+))))
d3db5efb 3500
951581a2 3501(define-public ingen
19748414
RW
3502 (let ((commit "cc4a4db33f4d126a07a4a498e053c5fb9a883be3")
3503 (revision "2"))
951581a2
RW
3504 (package
3505 (name "ingen")
3506 (version (string-append "0.0.0-" revision "."
3507 (string-take commit 9)))
3508 (source
3509 (origin
3510 (method git-fetch)
3511 (uri (git-reference
0d0252e4 3512 (url "https://git.drobilla.net/ingen.git")
951581a2
RW
3513 (commit commit)))
3514 (file-name (string-append name "-" version "-checkout"))
3515 (sha256
3516 (base32
19748414 3517 "1wg47vjw9djn99gbnsl2bcwj4xhdid61m4wrbn2nlp797flj91ic"))))
951581a2
RW
3518 (build-system waf-build-system)
3519 (arguments
f9dcf79f
RW
3520 `(#:python ,python-2
3521 #:tests? #f ; no "check" target
951581a2
RW
3522 #:configure-flags (list "--no-webkit")
3523 #:phases
3524 (modify-phases %standard-phases
3525 (add-after 'unpack 'patch-wscript
3526 (lambda* (#:key outputs #:allow-other-keys)
3527 (let ((out (assoc-ref outputs "out")))
3528 (substitute* "wscript"
3529 ;; FIXME: Our version of lv2specgen.py does not behave as
3530 ;; expected. Maybe this requires a development version of
3531 ;; LV2.
3532 (("lv2specgen.py") "touch ingen.lv2/ingen.html; echo")
3533 ;; Add libraries to RUNPATH.
3534 (("^(.+)target.*= 'src/ingen/ingen'," line prefix)
3535 (string-append prefix
3536 "linkflags=[\"-Wl,-rpath="
3537 out "/lib" "\"]," line)))
3538 (substitute* '("src/wscript"
3539 "src/server/wscript")
3540 ;; Add libraries to RUNPATH.
3541 (("bld.env.PTHREAD_LINKFLAGS" line)
3542 (string-append line
3543 " + [\"-Wl,-rpath=" out "/lib" "\"]")))
3544 (substitute* "src/client/wscript"
3545 ;; Add libraries to RUNPATH.
3546 (("^(.+)target.*= 'ingen_client'," line prefix)
3547 (string-append prefix
3548 "linkflags=[\"-Wl,-rpath="
3549 out "/lib" "\"]," line)))
3550 (substitute* "src/gui/wscript"
3551 ;; Add libraries to RUNPATH.
3552 (("^(.+)target.* = 'ingen_gui.*" line prefix)
3553 (string-append prefix
3554 "linkflags=[\"-Wl,-rpath="
3555 out "/lib" "\"]," line))))
3556 #t)))))
3557 (inputs
3558 `(("boost" ,boost)
3559 ("python-rdflib" ,python-rdflib)
3560 ("python" ,python)
3561 ("jack" ,jack-1)
a2467954 3562 ("lv2" ,lv2)
951581a2
RW
3563 ("lilv" ,lilv)
3564 ("raul" ,raul-devel)
3565 ("ganv" ,ganv-devel)
3566 ("suil" ,suil)
3567 ("serd" ,serd)
3568 ("sord" ,sord)
3569 ("sratom" ,sratom)
3570 ("gtkmm" ,gtkmm-2)))
3571 (native-inputs
3572 `(("pkg-config" ,pkg-config)
3573 ("python-pygments" ,python-pygments)))
0d0252e4 3574 (home-page "https://drobilla.net/software/ingen")
951581a2
RW
3575 (synopsis "Modular audio processing system")
3576 (description "Ingen is a modular audio processing system for JACK and
3577LV2 based systems. Ingen is built around LV2 technology and a strict
3578separation of engine from user interface. The engine is controlled
3579exclusively through a protocol, and can execute as a headless process, with an
3580in-process GUI, or as an LV2 plugin. The GUI can run as a program which
3581communicates over a Unix or TCP/IP socket, or as an embeddable LV2 GUI which
3582communicates via LV2 ports. Any saved Ingen graph can be loaded as an LV2
3583plugin on any system where Ingen is installed. This allows users to visually
3584develop custom plugins for use in other applications without programming.")
3585 (license license:agpl3+))))
3586
b3410b44
RW
3587(define-public qmidiarp
3588 (package
3589 (name "qmidiarp")
b6313997 3590 (version "0.6.5")
b3410b44
RW
3591 (source (origin
3592 (method url-fetch)
3593 (uri (string-append "mirror://sourceforge/qmidiarp/qmidiarp/"
3594 version "/qmidiarp-" version ".tar.bz2"))
3595 (sha256
3596 (base32
b6313997 3597 "043yh1p0rrbj1v840y27529m9260g55gvh1km8az4jxy7mns58r2"))))
b3410b44
RW
3598 (build-system gnu-build-system)
3599 (arguments
3600 `(#:configure-flags
0fe041bd 3601 (list "--enable-qt5")))
b3410b44
RW
3602 (inputs
3603 `(("qtbase" ,qtbase)
3604 ("alsa-lib" ,alsa-lib)
3605 ("jack" ,jack-1)
3606 ("liblo" ,liblo)
3607 ("lv2" ,lv2)))
3608 (native-inputs
3609 `(("pkg-config" ,pkg-config)
3610 ("qttools" ,qttools)))
3611 (home-page "http://qmidiarp.sourceforge.net/")
3612 (synopsis "MIDI arpeggiator")
3613 (description "QMidiArp is an advanced MIDI arpeggiator, programmable step
3614sequencer and LFO. It can hold any number of arpeggiator, sequencer, or LFO
3615modules running in parallel.")
3616 (license license:gpl2+)))
3617
ff49437d
RW
3618(define-public qmidiroute
3619 (package
3620 (name "qmidiroute")
3621 (version "0.4.0")
3622 (source (origin
3623 (method url-fetch)
3624 (uri (string-append "mirror://sourceforge/alsamodular/QMidiRoute/"
3625 version "/qmidiroute-" version ".tar.bz2"))
3626 (sha256
3627 (base32
3628 "19v1ppbglgl3z9v7xdqc0k33w71cqq8a7d6ihvfs7iz77dygrih9"))))
3629 (build-system gnu-build-system)
3630 (arguments
3631 `(#:configure-flags
0fe041bd 3632 (list "--enable-qt5")))
ff49437d
RW
3633 (inputs
3634 `(("qtbase" ,qtbase)
3635 ("alsa-lib" ,alsa-lib)))
3636 (native-inputs
3637 `(("pkg-config" ,pkg-config)
3638 ("qttools" ,qttools)))
3639 (home-page "http://alsamodular.sourceforge.net/")
3640 (synopsis "MIDI event router and filter")
3641 (description "QMidiRoute is a MIDI event router and filter. MIDI note,
3642control change, program change and pitch bend events are logged, and can be
3643filtered, redirected and transformed into other events according to MIDI maps
3644defined as tabs in the main control surface.")
3645 (license license:gpl2+)))
3646
5a66e25c
RW
3647(define-public seq24
3648 (package
3649 (name "seq24")
3650 (version "0.9.3")
3651 (source (origin
3652 (method url-fetch)
3653 (uri (string-append "https://launchpad.net/seq24/trunk/"
3654 version "/+download/seq24-"
3655 version ".tar.bz2"))
3656 (sha256
3657 (base32
3658 "12dphdhnvfk1k0vmagi1v2lhyxjyj1j3cz6ksjw0ydcvid1x8ap2"))
3659 (patches (search-patches "seq24-rename-mutex.patch"))))
3660 (build-system gnu-build-system)
5a66e25c
RW
3661 (inputs
3662 `(("gtkmm" ,gtkmm-2)
3663 ("alsa-lib" ,alsa-lib)
3664 ("jack" ,jack-1)
3665 ("lash" ,lash)))
3666 (native-inputs
3667 `(("pkg-config" ,pkg-config)))
3668 (home-page "https://edge.launchpad.net/seq24/")
3669 (synopsis "Real-time MIDI sequencer")
3670 (description "Seq24 is a real-time MIDI sequencer. It was created to
3671provide a very simple interface for editing and playing MIDI loops.")
3672 (license license:gpl2+)))
3673
d3db5efb
LF
3674(define-public python-discogs-client
3675 (package
3676 (name "python-discogs-client")
3677 (version "2.2.1")
3678 (source (origin
3679 (method url-fetch)
3680 (uri (pypi-uri "discogs-client" version))
3681 (sha256
3682 (base32
3683 "053ld2psh0yj3z0kg6z5bn4y3cr562m727494n0ayhgzbkjbacly"))))
3684 (build-system python-build-system)
3685 (propagated-inputs
3686 `(("python-oauthlib" ,python-oauthlib)
3687 ("python-requests" ,python-requests)))
3688 (native-inputs
3689 `(("python-six" ,python-six)))
3690 (home-page "https://github.com/discogs/discogs_client")
3691 (synopsis "Official Python client for the Discogs API")
3692 (description "This is the official Discogs API client for Python. It enables
3693you to query the Discogs database for information on artists, releases, labels,
3694users, Marketplace listings, and more. It also supports OAuth 1.0a
3695authorization, which allows you to change user data such as profile information,
3696collections and wantlists, inventory, and orders.")
80983df3 3697 (license license:bsd-2)))
d3db5efb
LF
3698
3699(define-public python2-discogs-client
80983df3 3700 (package-with-python2 python-discogs-client))
a4f05b46 3701
3702(define-public libsmf
3703 (package
3704 (name "libsmf")
3705 (version "1.3")
3706 (source
3707 (origin
3708 (method url-fetch)
3709 ;; SF download page says development moved, but the link it points to
3710 ;; is gone (https://github.com/nilsgey/libsmf). Someone else adopted
3711 ;; it but made no release so far (https://github.com/stump/libsmf).
3712 (uri (string-append "mirror://sourceforge/libsmf/libsmf/"
3713 version "/libsmf-" version ".tar.gz"))
3714 (sha256
3715 (base32
3716 "16c0n40h0r56gzbh5ypxa4dwp296dan3jminml2qkb4lvqarym6k"))))
3717 (build-system gnu-build-system)
3718 (outputs '("out"
3719 "static")) ; 88KiB of .a files
3720 (arguments
3721 `(#:phases
3722 (modify-phases %standard-phases
3723 (add-after 'install 'move-static-libraries
3724 (lambda* (#:key outputs #:allow-other-keys)
3725 ;; Move static libraries to the "static" output.
3726 (let* ((out (assoc-ref outputs "out"))
3727 (lib (string-append out "/lib"))
3728 (static (assoc-ref outputs "static"))
3729 (slib (string-append static "/lib")))
3730 (mkdir-p slib)
3731 (for-each (lambda (file)
3732 (install-file file slib)
3733 (delete-file file))
3734 (find-files lib "\\.a$"))
3735 #t))))))
3736 (inputs
3737 `(("readline" ,readline)
3738 ("glib" ,glib)))
3739 (native-inputs
3740 `(("doxygen" ,doxygen)
3741 ("pkg-config" ,pkg-config)))
3742 (home-page "http://libsmf.sourceforge.net/")
3743 (synopsis "Standard MIDI File format library")
3744 (description
3745 "LibSMF is a C library for handling SMF (\"*.mid\") files. It transparently handles
3746conversions between time and pulses, tempo map handling and more. The only dependencies
3747are a C compiler and glib. Full API documentation and examples are included.")
3748 (license license:bsd-2)))
a42619e5
RF
3749
3750(define-public lmms
3751 (package
3752 (name "lmms")
e5c44790 3753 (version "1.2.1")
a42619e5
RF
3754 (source
3755 (origin
3a0592ae
RW
3756 (method git-fetch)
3757 (uri (git-reference
3758 (url "https://github.com/LMMS/lmms.git")
3759 (commit (string-append "v" version))))
3760 (file-name (git-file-name name version))
a42619e5
RF
3761 (sha256
3762 (base32
e5c44790 3763 "1gx730z361xx30iqbsm99aam1k2c8yf561gcay6sryyjksb4w1wy"))))
a42619e5
RF
3764 (build-system cmake-build-system)
3765 (arguments
3766 `(#:tests? #f ; no tests
e5c44790
KK
3767 ;; Qt 5 support must be explicitly enabled in the 1.2 stable versions of
3768 ;; LMMS, so try removing "-DWANT_QT5=ON" in later versions.
3769 ;; Also, explicitly disabling VST support gets rid of the in-tree
3770 ;; dependency on qt5-x11embed.
3771 #:configure-flags '("-DWANT_QT5=ON"
3772 "-DWANT_VST=OFF")
a42619e5
RF
3773 #:phases
3774 (modify-phases %standard-phases
e5c44790
KK
3775 (add-after 'unpack 'unpack-rpmalloc
3776 (lambda* (#:key inputs #:allow-other-keys)
3777 (copy-recursively (assoc-ref inputs "rpmalloc")
3778 "src/3rdparty/rpmalloc/rpmalloc")
3779 #t))
ab2ccf4c
KK
3780 (add-before 'configure 'set-ldflags
3781 (lambda* (#:key outputs #:allow-other-keys)
3782 (setenv "LDFLAGS"
3783 (string-append
3784 "-Wl,-rpath=\""
3785 (assoc-ref outputs "out") "/lib/lmms"
3786 ":"
3787 (assoc-ref outputs "out") "/lib/lmms/ladspa"
3788 "\""))
3789 #t))
ab2ccf4c
KK
3790 (add-before 'reset-gzip-timestamps 'make-manpages-writable
3791 (lambda* (#:key outputs #:allow-other-keys)
3792 (map (lambda (file)
3793 (make-file-writable file))
3794 (find-files (string-append (assoc-ref outputs "out")
3795 "/share/man")
3796 ".*\\.gz$"))
3797 #t)))))
a42619e5 3798 (native-inputs
e5c44790
KK
3799 `(("pkg-config" ,pkg-config)
3800 ("qttools" ,qttools)
3801 ;; rpmalloc is a public domain memory allocator. This version specified
3802 ;; below is the version required by LMMS.
3803 ;; To get the new commit of rpmalloc to use here, run
3804 ;; `git submodule--helper list | grep rpmalloc | cut -f2 -d' '`
3805 ;; in the cloned LMMS repository.
3806 ("rpmalloc"
3807 ,(origin
3808 (method git-fetch)
3809 (uri (git-reference
3810 (url "https://github.com/mjansson/rpmalloc.git")
3811 (commit "b5bdc18051bb74a22f0bde4bcc90b01cf590b496")))
3812 (sha256
3813 (base32
3814 "0g9pls46iggg7rdm65vzfj8nyr3v2n5xkp54c4qbh9hhalpsw4ay"))))))
a42619e5
RF
3815 (inputs
3816 `(("sdl" ,sdl)
e5c44790
KK
3817 ("qtbase" ,qtbase)
3818 ("qtx11extras" ,qtx11extras)
a42619e5
RF
3819 ("fltk" ,fltk)
3820 ("libogg" ,libogg)
3821 ("libsamplerate" ,libsamplerate)
e5c44790 3822 ("fluidsynth" ,fluidsynth)
a42619e5
RF
3823 ("libvorbis" ,libvorbis)
3824 ("alsa-lib" ,alsa-lib)
3825 ("portaudio" ,portaudio)
3826 ("ladspa" ,ladspa)
3827 ("libsndfile1" ,libsndfile)
3828 ("libxft" ,libxft)
3829 ("freetype2" ,freetype)
3830 ("fftw3f" ,fftwf)))
3831 (home-page "https://lmms.io/")
3832 (synopsis "Music composition tool")
3833 (description "LMMS is a digital audio workstation. It includes tools for sequencing
3834melodies and beats and for mixing and arranging songs. LMMS includes instruments based on
3835audio samples and various soft sythesizers. It can receive input from a MIDI keyboard.")
3836 (license license:gpl2+)))
a7a7186c
NG
3837
3838(define-public musescore
3839 (package
3840 (name "musescore")
a4a2807b 3841 (version "3.3.4")
a7a7186c 3842 (source (origin
545ceac8
NG
3843 (method git-fetch)
3844 (uri (git-reference
3845 (url "https://github.com/musescore/MuseScore.git")
3846 (commit (string-append "v" version))))
3847 (file-name (git-file-name name version))
a7a7186c
NG
3848 (sha256
3849 (base32
a4a2807b 3850 "1jwj89v69nhyawj8x7niwznm1vgvp51dhzw6ggnarc3wdvp6qq8y"))
a7a7186c
NG
3851 (modules '((guix build utils)))
3852 (snippet
3853 ;; Un-bundle OpenSSL and remove unused libraries.
3854 '(begin
3855 (substitute* "thirdparty/kQOAuth/CMakeLists.txt"
3856 (("-I \\$\\{PROJECT_SOURCE_DIR\\}/thirdparty/openssl/include ")
3857 ""))
3858 (substitute* "thirdparty/kQOAuth/kqoauthutils.cpp"
3859 (("#include <openssl/.*") ""))
3860 (for-each delete-file-recursively
3861 '("thirdparty/freetype"
3862 "thirdparty/openssl"
3863 "thirdparty/portmidi"))
8d611ef0 3864 #t))))
11d44d0b 3865 (build-system cmake-build-system)
a7a7186c 3866 (arguments
11d44d0b 3867 `(#:configure-flags
9e591577 3868 `("-DBUILD_WEBENGINE=OFF"
8d611ef0
NG
3869 "-DDOWNLOAD_SOUNDFONT=OFF"
3870 "-DUSE_SYSTEM_FREETYPE=ON")
11d44d0b
NG
3871 ;; There are tests, but no simple target to run. The command used to
3872 ;; run them is:
a7a7186c
NG
3873 ;;
3874 ;; make debug && sudo make installdebug && cd \
3875 ;; build.debug/mtest && make && ctest
3876 ;;
3877 ;; Basically, it requires to start a whole new build process.
3878 ;; So we simply skip them.
11d44d0b 3879 #:tests? #f))
a7a7186c
NG
3880 (inputs
3881 `(("alsa-lib" ,alsa-lib)
3882 ("freetype" ,freetype)
3883 ("gtk+-bin" ,gtk+ "bin") ;for gtk-update-icon-cache
3884 ("jack" ,jack-1)
3885 ("lame" ,lame)
3886 ("libogg" ,libogg)
3887 ("libsndfile" ,libsndfile)
3888 ("libvorbis" ,libvorbis)
3889 ("portaudio" ,portaudio)
b3891a25 3890 ("portmidi" ,portmidi)
a7a7186c
NG
3891 ("pulseaudio" ,pulseaudio)
3892 ("qtbase" ,qtbase)
3893 ("qtdeclarative" ,qtdeclarative)
3894 ("qtscript" ,qtscript)
3895 ("qtsvg" ,qtsvg)
a7a7186c
NG
3896 ("qtxmlpatterns" ,qtxmlpatterns)))
3897 (native-inputs
11d44d0b 3898 `(("pkg-config" ,pkg-config)
a7a7186c
NG
3899 ("qttools" ,qttools)))
3900 (synopsis "Music composition and notation software")
3901 (description "MuseScore is a music score typesetter. Its main purpose is
3902the creation of high-quality engraved musical scores in a WYSIWYG environment.
3903
3904It supports unlimited staves, linked parts and part extraction, tablature,
3905MIDI input, percussion notation, cross-staff beaming, automatic transposition,
3906lyrics (multiple verses), fretboard diagrams, and in general everything
3907commonly used in sheet music. Style options and style sheets to change the
3908appearance and layout are provided.
3909
3910MuseScore can also play back scores through the built-in sequencer and SoundFont
3911sample library.")
3912 (home-page "https://musescore.org")
3913 (license license:gpl2)))
2434f5ce 3914
43188faf
RW
3915(define-public muse-sequencer
3916 (package
3917 (name "muse-sequencer")
3918 (version "3.0.0")
3919 (source (origin
3920 (method git-fetch)
3921 (uri (git-reference
3922 (url "https://github.com/muse-sequencer/muse.git")
3923 (commit (string-append "muse_"
3924 (string-map (lambda (c)
3925 (if (char=? c #\.)
3926 #\_ c)) version)))))
3927 (file-name (string-append name "-" version "-checkout"))
3928 (sha256
3929 (base32
3930 "1nninz8qyqlxxjdnrm79y3gr3056pga9l2fsqh674jd3cjvafya3"))))
3931 (build-system cmake-build-system)
3932 (arguments
3933 `(#:tests? #f ; there is no test target
3934 #:configure-flags
3935 (list "-DENABLE_LV2_SUPPLIED=OFF"
3936 "-DENABLE_RTAUDIO=OFF" ; FIXME: not packaged
3937 "-DENABLE_INSTPATCH=OFF" ; FIXME: not packaged
3938 "-DENABLE_VST_NATIVE=OFF")
3939 #:phases
3940 (modify-phases %standard-phases
3941 (add-after 'unpack 'chdir
3942 (lambda _ (chdir "muse3"))))))
3943 (inputs
3944 `(("alsa-lib" ,alsa-lib)
3945 ("lash" ,lash)
3946 ("jack" ,jack-1)
3947 ("liblo" ,liblo)
3948 ("dssi" ,dssi)
3949 ("ladspa" ,ladspa)
3950 ("lv2" ,lv2)
3951 ("lilv" ,lilv)
3952 ("sord" ,sord)
3953 ("libsndfile" ,libsndfile)
3954 ("libsamplerate" ,libsamplerate)
3955 ("fluidsynth" ,fluidsynth)
3956 ("pcre" ,pcre)
3957 ("qtbase" ,qtbase)
3958 ("qtsvg" ,qtsvg)))
3959 (native-inputs
3960 `(("pkg-config" ,pkg-config)
3961 ("qttools" ,qttools)))
3962 (home-page "http://muse-sequencer.org")
3963 (synopsis "MIDI/Audio sequencer")
3964 (description "MusE is a MIDI/Audio sequencer with recording and editing
3965capabilities. Its audio sequencer supports the LADSPA, DSSI, and LV2 audio
3966plugin formats; the MIDI sequencer provides a piano roll, a drum editor, a
3967list view, and a score editor. MusE aims to be a complete multitrack virtual
3968studio.")
3969 (license license:gpl2+)))
3970
2434f5ce
DM
3971(define-public dssi
3972 (package
3973 (name "dssi")
3974 (version "1.1.1")
3975 (source (origin
3976 (method url-fetch)
3977 (uri (string-append
3978 "mirror://sourceforge/dssi/dssi/" version
3979 "/dssi-" version ".tar.gz"))
3980 (sha256
3981 (base32
3982 "0kl1hzhb7cykzkrqcqgq1dk4xcgrcxv0jja251aq4z4l783jpj7j"))))
3983 (build-system gnu-build-system)
3984 (inputs
3985 `(("alsa-lib" ,alsa-lib)
0e78801a 3986 ("jack" ,jack-1)
2434f5ce
DM
3987 ("ladspa" ,ladspa)
3988 ("libsamplerate" ,libsamplerate)
3989 ("libsndfile" ,libsndfile)
3990 ("liblo" ,liblo)))
3991 (native-inputs
3992 `(("pkg-config" ,pkg-config)))
3993 (synopsis "Audio plugin API for soft synths and effects")
3994 (description "DSSI is a plugin API for software instruments with user
3995interfaces, permitting them to be hosted in-process by audio applications.
3996It is intended to be simple, GUI-toolkit-agnostic, and slightly biased
3997towards familiarity with MIDI. The DSSI distribution package contains
3998a JACK/ALSA-sequencer reference host and some plugins as well as the
3999specification and header.")
4000 (home-page "http://dssi.sourceforge.net/")
4001 ;; The DSSI interface is LGPL2.1+, some tests and examples are GPL2+.
4002 ;; The vast majority of examples are in the public domain.
4003 (license (list license:lgpl2.1+ license:gpl2+))))
9bc38f28
DM
4004
4005(define-public rosegarden
4006 (package
4007 (name "rosegarden")
0d5101c3 4008 (version "18.12")
9bc38f28
DM
4009 (source (origin
4010 (method url-fetch)
4011 (uri (string-append
4012 "mirror://sourceforge/rosegarden/rosegarden/"
4013 version "/rosegarden-" version ".tar.bz2"))
4014 (sha256
4015 (base32
0d5101c3 4016 "15i9fm0vkn3wsgahaxqi1j5zs0wc0j3wdwml0x49084gk2p328vb"))))
9bc38f28
DM
4017 (build-system cmake-build-system)
4018 (arguments
0d5101c3 4019 `(#:configure-flags '("-DCMAKE_BUILD_TYPE=Release")
9bc38f28
DM
4020 #:phases
4021 (modify-phases %standard-phases
4022 (add-after 'unpack 'patch-tests
4023 (lambda _
4024 (substitute* "CMakeLists.txt"
4025 (("BUILD_TESTING OFF") "BUILD_TESTING ON")
4026 ;; Make tests work.
4027 ((" -fvisibility=hidden") ""))
4028 #t))
4029 (add-after 'unpack 'fix-references
4030 (lambda* (#:key inputs #:allow-other-keys)
4031 (substitute* "src/gui/general/ProjectPackager.cpp"
4032 (("\"flac\\>")
4033 (string-append "\"" (assoc-ref inputs "flac") "/bin/flac"))
4034 (("\"wavpack\\>")
4035 (string-append "\"" (assoc-ref inputs "wavpack") "/bin/wavpack"))
4036 (("\"wvunpack\\>")
4037 (string-append "\"" (assoc-ref inputs "wavpack") "/bin/wvunpack"))
4038 (("\"bash\\>")
4039 (string-append "\"" (assoc-ref inputs "bash") "/bin/bash"))
4040 (("\"tar\\>")
4041 (string-append "\"" (assoc-ref inputs "tar") "/bin/tar")))
4042 (substitute* "src/gui/general/LilyPondProcessor.cpp"
4043 (("\"convert-ly\\>")
4044 (string-append "\"" (assoc-ref inputs "lilypond") "/bin/convert-ly"))
4045 (("\"lilypond\\>")
4046 (string-append "\"" (assoc-ref inputs "lilypond") "/bin/lilypond")))
4047 #t))
4048 (add-after 'unpack 'make-reproducible
4049 (lambda _
4050 ;; Prevent Last-Modified from being written.
4051 ;; The "*.qm" files that are used in locale.qrc would have a new
4052 ;; mtime otherwise that is written into qrc_locale.cpp in the
4053 ;; end - except when we disable it.
4054 (substitute* "src/CMakeLists.txt"
4055 (("COMMAND [$][{]QT_RCC_EXECUTABLE[}]")
4056 "COMMAND ${QT_RCC_EXECUTABLE} --format-version 1")
4057 ;; Extraneous.
4058 ;(("qt5_add_resources[(]rg_SOURCES ../data/data.qrc[)]")
4059 ; "qt5_add_resources(rg_SOURCES ../data/data.qrc OPTIONS --format-version 1)")
4060 )
4061 ;; Make hashtable traversal order predicable.
4062 (setenv "QT_RCC_TEST" "1") ; important
4063 #t))
4064 (add-before 'check 'prepare-check
4065 (lambda _
4066 (setenv "QT_QPA_PLATFORM" "offscreen")
4067 ;; Tests create files in $HOME/.local/share/rosegarden .
4068 (mkdir-p "/tmp/foo")
4069 (setenv "HOME" "/tmp/foo")
9bf98520 4070 (setenv "XDG_RUNTIME_DIR" "/tmp/foo")
9bc38f28
DM
4071 #t)))))
4072 (inputs
4073 `(("alsa-lib" ,alsa-lib)
4074 ("bash" ,bash)
4075 ("dssi" ,dssi)
4076 ("flac" ,flac)
4077 ("fftwf" ,fftwf)
b94f250e 4078 ("jack" ,jack-1)
9bc38f28
DM
4079 ("ladspa" ,ladspa)
4080 ("liblo" ,liblo)
4081 ("libsamplerate" ,libsamplerate)
4082 ("lilypond" ,lilypond)
4083 ("lrdf" ,lrdf)
4084 ("qtbase" ,qtbase)
4085 ("tar" ,tar)
4086 ("lirc" ,lirc)
4087 ("wavpack" ,wavpack)
4088 ("zlib" ,zlib)))
4089 (native-inputs
4090 `(("pkg-config" ,pkg-config)
4091 ("qtlinguist" ,qttools)))
4092 (synopsis "Music composition and editing environment based around a MIDI
4093sequencer")
4094 (description "Rosegarden is a music composition and editing environment
4095based around a MIDI sequencer that features a rich understanding of music
4096notation and includes basic support for digital audio.")
9bf98520 4097 (home-page "https://www.rosegardenmusic.com/")
9bc38f28 4098 (license license:gpl2)))
30655652 4099
643817e4 4100(define-public patchmatrix
559e06b6
RW
4101 (package
4102 (name "patchmatrix")
4103 (version "0.16.0")
4104 (source (origin
4105 (method git-fetch)
4106 (uri (git-reference
4107 (url "https://github.com/OpenMusicKontrollers/patchmatrix.git")
4108 (commit version)))
4109 (file-name (git-file-name "patchmatrix" version))
4110 (sha256
4111 (base32
4112 "020vp7zzxxzzjfic57vkpg68dm8hi98ilr1bj88xjsv6i47xmjbn"))))
4113 (build-system meson-build-system)
4114 (arguments '(#:tests? #f)) ; no test target
4115 (inputs
4116 `(("jack" ,jack-1)
4117 ("lv2" ,lv2)
4118 ("mesa" ,mesa)))
4119 (native-inputs
4120 `(("pkg-config" ,pkg-config)))
4121 (home-page "https://github.com/OpenMusicKontrollers/patchmatrix")
4122 (synopsis "Simple JACK patch bay")
4123 (description "PatchMatrix is a patch bay for the JACK audio connection
643817e4
RW
4124kit. It provides a patch bay in flow matrix style for audio, MIDI, CV, and
4125OSC connections.")
559e06b6 4126 (license license:artistic2.0)))
643817e4 4127
30655652
RW
4128(define-public sorcer
4129 (package
4130 (name "sorcer")
4131 (version "1.1.3")
4132 (source (origin
4133 (method url-fetch)
4134 (uri (string-append "https://github.com/openAVproductions/"
4135 "openAV-Sorcer/archive/release-"
4136 version ".tar.gz"))
4137 (file-name (string-append name "-" version ".tar.gz"))
4138 (sha256
4139 (base32
4140 "07iyqj28wm0xc4arrq893bm12xjpz65db7ynrlmf6w8krg8wjmd0"))))
4141 (build-system cmake-build-system)
4142 (arguments
4143 `(#:tests? #f ; no tests included
4144 #:phases
4145 (modify-phases %standard-phases
e5af1f4a
EF
4146 (add-after 'unpack 'remove-architecture-specific-flags
4147 (lambda _
4148 (substitute* "CMakeLists.txt"
4149 (("-msse2 -mfpmath=sse") ""))
4150 #t))
30655652
RW
4151 (add-after 'unpack 'build-faust-sources
4152 (lambda* (#:key inputs #:allow-other-keys)
4153 (with-directory-excursion "faust"
4154 (delete-file "main.cpp")
d7e24652
RW
4155 (invoke "faust" "-i"
4156 "-a" "lv2synth.cpp"
4157 "-o" "main.cpp" "main.dsp")))))))
30655652
RW
4158 (inputs
4159 `(("boost" ,boost)
4160 ("lv2" ,lv2)
4161 ("ntk" ,ntk)))
4162 (native-inputs
4163 `(("faust" ,faust)
4164 ("pkg-config" ,pkg-config)))
4165 (home-page "http://openavproductions.com/sorcer/")
4166 (synopsis "Wavetable LV2 plugin synth")
4167 (description "Sorcer is a wavetable LV2 plugin synthesizer, targeted at
4168the electronic or dubstep genre.")
4169 (license license:gpl3+)))
60b7ed9c 4170
f7ce2134
RW
4171(define-public sonivox-eas
4172 (package
4173 (name "sonivox-eas")
4174 (version "1.1.0")
4175 (source (origin
4176 (method git-fetch)
4177 (uri (git-reference
4178 (url "https://github.com/pedrolcl/Linux-SonivoxEas.git")
4179 (commit (string-append "v" version))))
4180 (file-name (string-append name "-" version "-checkout"))
4181 (sha256
4182 (base32
4183 "0l9gs00p5g4k4qy6i7nv1mfi2n2wnsycwjrgrh9hxzam4irf2mw2"))))
4184 (build-system cmake-build-system)
4185 (arguments '(#:tests? #f)) ; there are no tests
4186 (inputs
4187 `(("alsa-lib" ,alsa-lib)
4188 ("drumstick" ,drumstick)
4189 ("pulseaudio" ,pulseaudio)
4190 ("qtbase" ,qtbase)))
4191 (native-inputs
4192 `(("pkg-config" ,pkg-config)))
4193 (home-page "https://github.com/pedrolcl/Linux-SonivoxEas")
4194 (synopsis "MIDI synthesizer library")
4195 (description "This project is a real time General MIDI synthesizer based
4196on the Sonivox EAS Synthesizer by Google. It does not need external
4197soundfonts, using embedded samples instead.")
4198 ;; Sonivox is released under the ASL2.0; the rest of the code is under
4199 ;; GPLv2+.
4200 (license (list license:gpl2+ license:asl2.0))))
92b36e3a
RW
4201
4202(define-public whysynth
4203 (package
4204 (name "whysynth")
4205 (version "20170701")
4206 (source (origin
4207 (method url-fetch)
4208 (uri (string-append "http://smbolton.com/whysynth/whysynth-"
4209 version ".tar.bz2"))
4210 (sha256
4211 (base32
4212 "02qbn0hbvn1iym4zxv35b201blg31yjpgh71h8db0j5zls2xc0m6"))))
4213 (build-system gnu-build-system)
4214 (inputs
4215 `(("dssi" ,dssi)
4216 ("liblo" ,liblo)
4217 ("fftwf" ,fftwf)
4218 ("gtk+" ,gtk+-2)
4219 ("ladspa" ,ladspa)
4220 ("alsa-lib" ,alsa-lib)))
4221 (native-inputs
4222 `(("pkg-config" ,pkg-config)))
4223 (home-page "http://smbolton.com/whysynth.html")
4224 (synopsis "DSSI software synthesizer")
4225 (description "WhySynth is a versatile softsynth which operates as a plugin
4226for the DSSI Soft Synth Interface. A brief list of features:
4227
4228@enumerate
4229@item 4 oscillators, 2 filters, 3 LFOs, and 5 envelope generators per voice.
4230@item 11 oscillator modes: minBLEP, wavecycle, chorused wavecycle,
4231 asynchronous granular, three FM modes, waveshaper, noise, PADsynth, and phase
4232 distortion.
4233@item 10 filter modes.
4234@item flexible modulation and mixdown options, plus effects.
4235@end enumerate
4236")
4237 (license license:gpl2+)))
6b445c57 4238
4239(define-public libdiscid
4240 (package
4241 (name "libdiscid")
4242 (version "0.6.2")
4243 (source
4244 (origin
4245 (method url-fetch)
4246 (uri (string-append
4247 "http://ftp.musicbrainz.org/pub/musicbrainz/libdiscid/libdiscid-"
4248 version ".tar.gz"))
4249 (sha256
4250 (base32
4251 "1f9irlj3dpb5gyfdnb1m4skbjvx4d4hwiz2152f83m0d9jn47r7r"))))
4252 (arguments `(#:test-target "check"))
4253 (build-system cmake-build-system)
4254 (home-page "https://musicbrainz.org/doc/libdiscid")
4255 (synopsis "Disc id reader library")
4256 (description "libdiscid is a C library for creating MusicBrainz and freedb
4257disc IDs from audio CDs. It reads a CD's table of contents (TOC) and generates
4258an identifier which can be used to lookup the CD at MusicBrainz. Additionally,
4259it provides a submission URL for adding the disc ID to the database and gathers
4260ISRCs and the MCN (=UPC/EAN) from disc.")
4261 (license license:lgpl2.1+)))
1ea29aa0 4262
1331a6c0
GH
4263(define-public python-discid
4264 (package
4265 (name "python-discid")
4266 (version "1.1.1")
4267 (source
4268 (origin
4269 (method url-fetch)
4270 (uri (pypi-uri "discid" version))
4271 (sha256
4272 (base32
4273 "1fgp67nhqlbvhhwrcxq5avil7alpzw4s4579hlyvxzbphdnbz8vq"))))
4274 (build-system python-build-system)
4275 (inputs
4276 `(("libdiscid" ,libdiscid)))
4277 (arguments
4278 `(#:phases
4279 (modify-phases %standard-phases
4280 (add-before 'build 'set-libdiscid
4281 ;; Set path of libdiscid
4282 (lambda* (#:key inputs #:allow-other-keys)
4283 (let ((discid (assoc-ref inputs "libdiscid")))
4284 (substitute* "discid/libdiscid.py"
4285 (("lib_name = (.*)$" all name)
4286 (string-append "lib_name = \"" discid
4287 "/lib/libdiscid.so.0\"\n")))
4288 #t))))))
4289 (home-page "https://python-discid.readthedocs.io/")
4290 (synopsis "Python bindings for Libdiscid")
4291 (description
4292 "This package provides Python bindings for the Libdiscid library. The
4293main purpose is the calculation of @url{https://musicbrainz.org/doc/Disc%20ID,
4294Disc IDs} for use with the MusicBrainz database. Additionally the disc
4295@dfn{Media Catalog Number} (MCN) and track @dfn{International Standard
4296Recording Code} (ISRC) can be extracted.}")
4297 (license license:lgpl3+)))
4298
1ea29aa0 4299(define-public libmusicbrainz
4300 (package
4301 (name "libmusicbrainz")
4302 (version "5.1.0")
4303 (source
4304 (origin
4305 (method url-fetch)
4306 (uri (string-append
4307 "https://github.com/metabrainz/libmusicbrainz/releases/download/release-"
4308 version "/libmusicbrainz-" version ".tar.gz"))
4309 (sha256
4310 (base32
8c71a52c 4311 "0ikb9igyyk28jm34raxfzkw2qyn4nzzwsymdyprp7cmvi6g2ajb7"))))
1ea29aa0 4312 (build-system cmake-build-system)
69cb939e
RW
4313 (arguments
4314 `(#:phases
4315 (modify-phases %standard-phases
4316 (replace 'check
4317 (lambda _
4318 ;; requires network connections
4319 ;; (invoke "tests/mbtest")
4320 (invoke "tests/ctest")
4321 #t)))))
1ea29aa0 4322 (inputs `(("neon" ,neon)
4323 ("libxml2" ,libxml2)))
4324 (native-inputs `(("pkg-config" ,pkg-config)))
4325 (home-page "https://musicbrainz.org/doc/libmusicbrainz")
4326 (synopsis "MusicBrainz client library")
4327 (description "The MusicBrainz Client Library (libmusicbrainz), also known as
4328mb_client, is a development library geared towards developers who wish to add
4329MusicBrainz lookup capabilities to their applications.")
4330 (license license:lgpl2.1+)))
87d1b7b0 4331
b0c2c5ab
LC
4332(define-public perl-musicbrainz-discid
4333 (package
4334 (name "perl-musicbrainz-discid")
4335 (version "0.04")
4336 (source (origin
4337 (method url-fetch)
4338 (uri (string-append
4339 "mirror://cpan/authors/id/N/NJ/NJH/MusicBrainz-DiscID-"
4340 version ".tar.gz"))
4341 (sha256
4342 (base32
4343 "1i4qk1qfcmxdibqkyfjrrjdq2zk42vjcz590qgiyc47fi9p6xx1j"))))
4344 (build-system perl-build-system)
4345 (native-inputs `(("pkg-config" ,pkg-config)
4346 ("which" ,which)))
4347 (inputs `(("libdiscid" ,libdiscid)))
4348 (home-page "https://metacpan.org/release/MusicBrainz-DiscID")
4349 (synopsis "Perl interface to the MusicBrainz libdiscid library")
4350 (description
4351 "The @code{MusicBrainz::DiscID} module is a Perl interface to the
4352MusicBrainz libdiscid library, allowing you to manipulate digital audio
4353compact disc (CDDA) identifiers.")
4354 (license license:gpl2)))
4355
b2961dda
LC
4356(define-public perl-webservice-musicbrainz
4357 (package
4358 (name "perl-webservice-musicbrainz")
b0842a8e 4359 (version "1.0.5")
b2961dda
LC
4360 (source (origin
4361 (method url-fetch)
4362 (uri (string-append
4363 "mirror://cpan/authors/id/B/BF/BFAIST/WebService-MusicBrainz-"
4364 version ".tar.gz"))
4365 (sha256
4366 (base32
b0842a8e 4367 "16chs1l58cf000d5kalkyph3p31ci73p1rlyx98mfv10d2cq6fsj"))))
b2961dda
LC
4368 (build-system perl-build-system)
4369 (arguments
4370 ;; Tests try to connect to http://musicbrainz.org.
4371 '(#:tests? #f))
4372 (native-inputs
4373 `(("perl-module-build" ,perl-module-build)))
4374 (propagated-inputs
4375 `(("perl-mojolicious" ,perl-mojolicious)))
4376 (home-page "https://metacpan.org/release/WebService-MusicBrainz")
4377 (synopsis "Web service API to the MusicBrainz database")
4378 (description
4379 "This module searches the MusicBrainz database through their web service
4380at @code{musicbrainz.org}.")
4381 (license license:perl-license)))
4382
87d1b7b0
PN
4383(define-public clyrics
4384 (package
4385 (name "clyrics")
7f56f107 4386 (version "0.11")
87d1b7b0
PN
4387 (source
4388 (origin
234a1825
RW
4389 (method git-fetch)
4390 (uri (git-reference
4391 (url "https://github.com/trizen/clyrics.git")
4392 (commit version)))
4393 (file-name (git-file-name name version))
87d1b7b0
PN
4394 (sha256
4395 (base32
7f56f107 4396 "0vfjy555achgi5zwa34x4q7r692nc6bq4jx518a5w4m7k5fvm71j"))))
87d1b7b0 4397 (build-system trivial-build-system)
87d1b7b0 4398 (inputs
7f56f107 4399 `(("bash" ,bash) ; for the wrapped program
87d1b7b0
PN
4400 ("perl" ,perl)
4401 ("perl-www-mechanize" ,perl-www-mechanize)
4402 ("perl-lwp-protocol-https" ,perl-lwp-protocol-https)
4403 ;; Required or else LWP will fail with "GET https://www.google.com/ ==>
4404 ;; 500 Can't verify SSL peers without knowing which Certificate
4405 ;; Authorities to trust".
4406 ("perl-mozilla-ca" ,perl-mozilla-ca)))
4407 (arguments
4408 `(#:modules ((guix build utils))
4409 #:builder (begin
4410 (use-modules (guix build utils)
4411 (ice-9 match)
4412 (srfi srfi-26))
4413 (let* ((source (assoc-ref %build-inputs "source"))
87d1b7b0
PN
4414 (output (assoc-ref %outputs "out")))
4415 (setenv "PATH"
4416 (string-append
87d1b7b0
PN
4417 (assoc-ref %build-inputs "bash") "/bin" ":"
4418 (assoc-ref %build-inputs "perl") "/bin" ":"))
234a1825 4419 (copy-recursively source (getcwd))
87d1b7b0
PN
4420 (patch-shebang "clyrics")
4421 (substitute* "clyrics"
4422 (("/usr/share") output))
4423 (install-file "clyrics" (string-append output "/bin"))
4424 (wrap-program (string-append output "/bin/clyrics")
4425 `("PERL5LIB" ":" =
4426 ,(delete
4427 ""
4428 (map (match-lambda
7f56f107
TGR
4429 (((? (cut string-prefix? "perl-" <>) name) . dir)
4430 (string-append dir "/lib/perl5/site_perl"))
4431 (_ ""))
87d1b7b0
PN
4432 %build-inputs))))
4433 (copy-recursively "plugins" (string-append output "/clyrics"))
4434 #t))))
4435 (home-page "https://github.com/trizen/clyrics")
4436 (synopsis "Extensible lyrics fetcher")
4437 (description
4438 "Clyrics is an extensible command-line tool to fetch the lyrics of songs.
4439It can be used in daemon mode along with the Music-on-Console (MOC) and cmus
4440console music players.")
4441 (license license:gpl3+)))
5703380b
PN
4442
4443(define-public demlo
4444 (let ((commit "fe9ec4c8ac2fa995ec18e6ac86d50d46df06ec01")
4445 (revision "0"))
4446 (package
4447 (name "demlo")
4448 (version (git-version "3.8" revision commit))
4449 (source
4450 (origin
4451 (method git-fetch)
4452 (uri (git-reference
4453 (url
4454 "https://gitlab.com/ambrevar/demlo")
4455 (commit commit)))
4456 (file-name (git-file-name name version))
4457 (sha256
4458 (base32
4459 "1afkbqhzn6da7zaf5ab7dvyqj1izqhzprwfb4hw448fllda9bdvk"))))
4460 (build-system go-build-system)
4461 (native-inputs
4462 `(("lua" ,lua)
4463 ("go-github-com-mattn-go-isatty" ,go-github-com-mattn-go-isatty)
4464 ("go-github-com-mattn-go-colorable" ,go-github-com-mattn-go-colorable)
4465 ("go-github-com-aarzilli-golua" ,go-github-com-aarzilli-golua)
4466 ("go-gitlab-com-ambrevar-damerau" ,go-gitlab-com-ambrevar-damerau)
4467 ("go-gitlab-com-ambrevar-golua-unicode" ,go-gitlab-com-ambrevar-golua-unicode)
4468 ("go-github-com-mgutz-ansi" ,go-github-com-mgutz-ansi)
4469 ("go-github-com-michiwend-gomusicbrainz" ,go-github-com-michiwend-gomusicbrainz)
4470 ("go-github-com-stevedonovan-luar" ,go-github-com-stevedonovan-luar)
4471 ("go-github-com-wtolson-go-taglib" ,go-github-com-wtolson-go-taglib)
4472 ("go-github-com-yookoala-realpath" ,go-github-com-yookoala-realpath)))
4473 (inputs
4474 `(("chromaprint" ,chromaprint)
4475 ("ffmpeg" ,ffmpeg)))
4476 (arguments
4477 `(#:import-path "gitlab.com/ambrevar/demlo"
4478 #:phases
4479 (modify-phases %standard-phases
4480 (add-after 'install 'wrap-program
4481 (lambda* (#:key inputs outputs #:allow-other-keys)
4482 (let ((out (assoc-ref outputs "out"))
4483 (ffmpeg (assoc-ref inputs "ffmpeg"))
4484 (chromaprint (assoc-ref inputs "chromaprint")))
4485 (wrap-program (string-append out "/bin/demlo")
4486 `("XDG_DATA_DIRS" ":" prefix (,out))
4487 `("PATH" ":" prefix
4488 ,(map (lambda (dir)
4489 (string-append dir "/bin:"
4490 dir "/sbin"))
4491 (list ffmpeg chromaprint))))
4492 #t)))
e3900a4d 4493 (add-after 'install 'install-scripts
5703380b
PN
4494 (lambda* (#:key outputs #:allow-other-keys)
4495 (let* ((out (assoc-ref outputs "out"))
4496 (root (string-append out "/src/gitlab.com/ambrevar/demlo"))
4497 (xdg-data-dirs (string-append out "/demlo")))
4498 (copy-recursively (string-append root "/actions")
4499 (string-append xdg-data-dirs "/actions"))
4500 (copy-recursively (string-append root "/scripts")
4501 (string-append xdg-data-dirs "/scripts"))
4502 (install-file (string-append root "/config.lua") xdg-data-dirs)
4503 ;; TODO: Test fish completion.
4504 (install-file (string-append root "/completion/demlo.fish")
4505 (string-append out "/share/fish/vendor_completions.d"))
4506 #t))))))
4507 (home-page "https://gitlab.com/ambrevar/demlo")
4508 (synopsis "Dynamic and extensible music library organizer")
4509 (description "Demlo is a music library organizer. It can encode, fix
4510case, change folder hierarchy according to tags or file properties, tag from
4511an online database, copy covers while ignoring duplicates or those below a
4512quality threshold, and much more. It makes it possible to manage your
4513libraries uniformly and dynamically. You can write your own rules to fit your
4514needs best.
4515
4516Demlo can address any of these recurring music library issues (and much more):
4517
4518@itemize
4519@item Fix the lack of folder structure.
4520@item Normalize tags, fix their case, chose which tags to keep and which to
4521discard.
4522@item Handle lossy and lossless audio differently.
4523@item Handle mp3 id3tags hell...
4524@item Handle multiple covers, whether embedded and/or external, resize covers,
4525discard bad quality ones.
4526@end itemize\n")
4527 (license license:expat))))
e42ba3da
LF
4528
4529(define-public lpd8editor
4530 (package
4531 (name "lpd8editor")
83b9ba26 4532 (version "0.0.13")
e42ba3da
LF
4533 (source (origin
4534 (method git-fetch)
4535 (uri (git-reference
4536 (url "https://github.com/charlesfleche/lpd8editor.git")
4537 (commit (string-append "v" version))))
4538 (file-name (git-file-name name version))
4539 (sha256
4540 (base32
83b9ba26 4541 "0lsz3v493ilq2zr016m7kvymrplxd0n3pqv1pjglpq1h7sjw9764"))))
e42ba3da
LF
4542 (build-system gnu-build-system)
4543 (arguments
4544 '(#:phases
4545 (modify-phases %standard-phases
4546 (add-after 'unpack 'setenv
4547 (lambda _
4548 (setenv "INSTALL_PREFIX"
4549 (assoc-ref %outputs "out"))))
4550 (delete 'configure) ; no configure script
4551 (add-before 'build 'qmake
4552 (lambda _ (invoke "qmake"))))))
4553 (native-inputs
4554 `(("pkg-config" ,pkg-config)))
4555 (inputs
4556 `(("alsa" ,alsa-lib)
4557 ("qtbase" ,qtbase)
4558 ("qtsvg" ,qtsvg)))
4559 (synopsis "Graphical editor for the Akai LPD8 MIDI controller")
4560 (description "lpd8editor is a graphical patch editor for the Akai LPD8 MIDI
4561controller.")
4562 (home-page "https://github.com/charlesfleche/lpd8editor")
4563 (license license:expat)))
7fcc2f93 4564
4565(define-public fmit
4566 (package
4567 (name "fmit")
0ed0e3bf 4568 (version "1.2.13")
7fcc2f93 4569 (source (origin
4570 (method git-fetch)
4571 (uri (git-reference
4572 (url "https://github.com/gillesdegottex/fmit/")
4573 (commit (string-append "v" version))))
4574 (file-name (git-file-name name version))
4575 (sha256
4576 (base32
0ed0e3bf 4577 "1qyskam053pvlap1av80rgp12pzhr92rs88vqs6s0ia3ypnixcc6"))))
7fcc2f93 4578 (build-system gnu-build-system)
4579 (arguments
4580 '(#:phases
4581 (modify-phases %standard-phases
4582 (delete 'configure)
4583 (add-before 'build 'qmake
4584 (lambda _
4585 (let ((out (assoc-ref %outputs "out")))
4586 (invoke "qmake"
4587 "fmit.pro"
4588 (string-append "PREFIX=" out)
4589 (string-append "PREFIXSHORTCUT=" out)
4590 "CONFIG+=acs_qt acs_alsa acs_jack acs_portaudio"))))
4591 (add-after 'install 'wrap-executable
4592 (lambda* (#:key inputs outputs #:allow-other-keys)
4593 (let ((out (assoc-ref outputs "out")))
4594 (wrap-program (string-append out "/bin/fmit")
4595 `("QT_PLUGIN_PATH" ":" prefix
4596 ,(map (lambda (label)
4597 (string-append (assoc-ref inputs label)
4598 "/lib/qt5/plugins"))
4599 '("qtbase" "qtmultimedia" "qtsvg")))
4600 `("QML2_IMPORT_PATH" ":" prefix
4601 ,(map (lambda (label)
4602 (string-append (assoc-ref inputs label)
4603 "/lib/qt5/qml"))
4604 '("qtmultimedia"))))
4605 #t))))))
4606 (inputs
4607 `(("alsa-lib" ,alsa-lib)
4608 ("fftw" ,fftw)
4609 ("jack" ,jack-1)
4610 ("portaudio" ,portaudio)
4611 ("qtbase" ,qtbase)
4612 ("qtmultimedia" ,qtmultimedia)
4613 ("qtsvg" ,qtsvg)))
4614 (native-inputs
4615 `(("gettext" ,gnu-gettext)
4616 ("hicolor-icon-theme" ,hicolor-icon-theme)
4617 ("itstool" ,itstool)
4618 ("qttools" ,qttools)))
4619 (synopsis "Musical instrument tuner")
4620 (description "FMIT is a graphical utility for tuning musical instruments,
4621with error and volume history, and advanced features.")
4622 (home-page "https://gillesdegottex.github.io/fmit/")
4623 ;; Most of the code is under GPL2+, but some abstract or helper classes
4624 ;; are under LGPL2.1.
4625 (license (list license:gpl2+ license:lgpl2.1))))
f5870246
RW
4626
4627(define-public mloop
4628 (let ((commit "adebff98b0b4dc5872a03acb82e89c77cb29c127")
4629 (revision "0"))
4630 (package
4631 (name "mloop")
4632 (version (git-version "0.0.1" revision commit))
4633 (source (origin
4634 (method git-fetch)
4635 (uri (git-reference
4636 (url "http://git.fuzzle.org/mloop")
4637 (commit commit)))
4638 (file-name (git-file-name name version))
4639 (sha256
4640 (base32
4641 "175gxvg5slq0bllcx1c381rjlq3xpxww8c3kpiw5i2kfr4m52myz"))))
4642 (build-system waf-build-system)
4643 (arguments
4644 `(#:python ,python-2
4645 #:tests? #f)) ; no "check" target
4646 (inputs
4647 `(("jack" ,jack-1)
4648 ("ncurses" ,ncurses)))
4649 (native-inputs
4650 `(("pkg-config" ,pkg-config)))
4651 (home-page "https://fuzzle.org/~petern/mloop.html")
4652 (synopsis "Live MIDI looper")
4653 (description "mloop is a live MIDI looping system, using jack-midi.
4654Loops are recorded, optionally with beat quantization, and can then be played
4655back, either once or looping. A 'note cache' system is implemented to
4656remember which notes are pressed and their velocities. This allows for a loop
4657to start off with the currently pressed notes, making seamless loops much
4658easier to perform. Features include:
4659
4660@itemize
4661@item Quantisation; end a loop on a beat exactly.
4662@item Delayed recording; wait for a MIDI event before starting a loop record.
4663@item Adjust tempo; Playback speed of loops can be adjusted on the fly.
4664@end itemize\n")
4665 (license license:gpl2))))
0163b900
EB
4666
4667(define-public pragha
4668 (package
4669 (name "pragha")
4670 (version "1.3.4")
4671 (source (origin
4672 (method url-fetch)
4673 (uri (string-append "https://github.com/pragha-music-player/pragha/"
4674 "releases/download/v" version "/pragha-" version
4675 ".tar.bz2"))
4676 (sha256
4677 (base32
4678 "19kbhq99bkimx3aqrdzln0vlr4slkpx6kq66j731jvqyq76nlkp5"))))
4679 (build-system glib-or-gtk-build-system)
4680 (native-inputs
4681 `(("intltool" ,intltool)
4682 ("pkg-config" ,pkg-config)))
4683 (inputs
4684 `(("glib" ,glib)
4685 ("grilo" ,grilo)
4686 ("gstreamer" ,gstreamer)
4687 ("gst-plugins-base" ,gst-plugins-base)
4688 ("gst-plugins-good" ,gst-plugins-good)
4689 ("gtk+" ,gtk+)
4690 ("libcddb" ,libcddb)
4691 ("libcdio" ,libcdio)
4692 ("libcdio-paranoia" ,libcdio-paranoia)
4693 ("libgudev" ,libgudev)
4694 ("libnotify" ,libnotify)
4695 ("libpeas" ,libpeas)
4696 ("libsoup" ,libsoup)
4697 ("sqlite" ,sqlite)
4698 ("taglib" ,taglib)))
4699 (arguments
4700 `(#:phases
4701 (modify-phases %standard-phases
4702 (add-after 'install 'wrap-program
4703 (lambda* (#:key inputs outputs #:allow-other-keys)
4704 (let ((out (assoc-ref outputs "out"))
4705 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
4706 (wrap-program (string-append out "/bin/pragha")
4707 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path)))
4708 #t))))))
4709 (home-page "https://pragha-music-player.github.io")
4710 (synopsis "Music player")
4711 (description "Pragha is a lightweight music player based on Gtk and
4712sqlite. It is constructed to be fast, light, and simultaneously tries to be
4713complete without obstructing your daily work.")
4714 (license license:gpl3+)))
1c463524
DW
4715
4716(define-public playerctl
4717 (package
4718 (name "playerctl")
4719 (version "2.0.2")
4720 (source (origin
4721 (method git-fetch)
4722 (uri (git-reference
4723 (url "https://github.com/altdesktop/playerctl.git")
4724 (commit (string-append "v" version))))
4725 (file-name (git-file-name name version))
4726 (sha256
4727 (base32
4728 "1f3njnpd52djx3dmhh9a8p5a67f0jmr1gbk98icflr2q91149gjz"))))
4729 (build-system meson-build-system)
4730 (arguments
4731 `(#:configure-flags '("-Dintrospection=false" "-Dgtk-doc=false")))
4732 (inputs `(("python-pygobject" ,python-pygobject)))
4733 (native-inputs
4734 `(("glib:bin" ,glib "bin")
4735 ("pkg-config" ,pkg-config)))
4736 (synopsis "Control MPRIS-supporting media player applications")
4737 (description
4738 "Playerctl is a command-line utility and library for controlling media
4739players that implement the MPRIS D-Bus Interface Specification. Playerctl
4740makes it easy to bind player actions, such as play and pause, to media keys.
4741You can also get metadata about the playing track such as the artist and title
4742for integration into status line generators or other command-line tools.")
4743 (home-page "https://github.com/altdesktop/playerctl")
4744 (license license:lgpl3+)))
50c5215c
AT
4745
4746(define-public artyfx
4747 (package
4748 (name "artyfx")
4749 (version "1.3")
4750 (source (origin
4751 (method git-fetch)
4752 (uri (git-reference
4753 (url
4754 "https://github.com/openAVproductions/openAV-ArtyFX.git")
4755 (commit (string-append "release-" version))))
4756 (file-name (git-file-name name version))
4757 (sha256
4758 (base32
4759 "012hcy1mxl7gs2lipfcqp5x0xv1azb9hjrwf0h59yyxnzx96h7c9"))))
4760 (build-system cmake-build-system)
4761 (arguments
4762 `(#:tests? #f ; no tests included
4763 #:phases
4764 (modify-phases %standard-phases
4765 (add-after 'unpack 'remove-architecture-specific-flags
4766 (lambda _
4767 (substitute* "CMakeLists.txt"
4768 (("-msse2 -mfpmath=sse") ""))
4769 #t)))))
4770 (inputs
4771 `(("cairo" ,cairo)
4772 ("libsndfile" ,libsndfile)))
4773 (native-inputs
4774 `(("pkg-config" ,pkg-config)
4775 ("lv2" ,lv2)))
4776 (home-page "http://openavproductions.com/artyfx/")
4777 (synopsis "Audio effect LV2 plugin bundle")
4778 (description "ArtyFX is an LV2 plugin bundle of artistic real-time audio
4779effects. It contains a bitcrusher, delay, distortion, equalizer, compressor,
4780and reverb.")
4781 (license license:gpl2+)))
5182fbe0
AT
4782
4783(define-public sherlock-lv2
4784 (package
4785 (name "sherlock-lv2")
4786 (version "0.20.0")
4787 (source
4788 (origin
4789 (method url-fetch)
4790 (uri (string-append
4791 "https://git.open-music-kontrollers.ch/lv2/"
4792 "sherlock.lv2/snapshot/sherlock.lv2-"
4793 version ".tar.xz"))
4794 (sha256
4795 (base32
4796 "1c5xajpss9h8lbyx160bbzg8va50n2d74qwnxig9sf468rzmha1y"))))
4797 (build-system meson-build-system)
4798 (inputs
4799 `(("libx11" ,libx11)
4800 ("mesa" ,mesa)
4801 ("sratom" ,sratom)))
4802 (native-inputs
4803 `(("flex" ,flex)
4804 ("pkg-config" ,pkg-config)))
4805 (synopsis "Investigative LV2 plugin bundle")
4806 (description "The Sherlock plugin bundle contains LV2 plugins for
4807visualizing LV2 atom, MIDI and OSC events. They can be used for monitoring
4808and debugging of event signal flows inside plugin graphs.")
4809 (home-page "https://open-music-kontrollers.ch/lv2/sherlock/")
4810 (license license:artistic2.0)))
fe06a6ee
AT
4811
4812(define-public x42-plugins
4813 (package
4814 (name "x42-plugins")
4815 (version "20191013")
4816 (source
4817 (origin
4818 (method url-fetch)
4819 (uri
4820 (string-append "http://gareus.org/misc/x42-plugins/x42-plugins-"
4821 version ".tar.xz"))
4822 (sha256
4823 (base32
4824 "18kn1bmc0s6dp834kc51ibifzzn3bxwya4p8s8yq9f4mpmkghi24"))))
4825 (build-system gnu-build-system)
4826 (arguments
4827 `(#:tests? #f ; no "check" target
4828 #:make-flags
4829 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
4830 "LIBZITACONVOLVER=-lzita-convolver"
4831 (string-append "FONTFILE="
4832 (assoc-ref %build-inputs "font-dejavu")
4833 "/share/fonts/truetype/DejaVuSans-Bold.ttf"))
4834 #:phases
4835 (modify-phases %standard-phases
4836 (add-before 'build 'set-CC-variable
4837 (lambda _
4838 (setenv "CC" "gcc")
4839 #t))
4840 (delete 'configure))))
4841 (inputs
4842 `(("cairo" ,cairo)
4843 ("fftwf" ,fftwf)
4844 ("ftgl" ,ftgl)
4845 ("glib" ,glib)
4846 ("glu" ,glu)
4847 ("hicolor-icon-theme" ,hicolor-icon-theme)
4848 ("jack" ,jack-1)
4849 ("libltc" ,libltc)
4850 ("libsamplerate" ,libsamplerate)
4851 ("libx11" ,libx11)
4852 ("pango" ,pango)
4853 ("zita-convolver" ,zita-convolver)))
4854 (native-inputs
4855 `(("help2man" ,help2man)
4856 ("liblo" ,liblo)
4857 ("lv2" ,lv2)
4858 ("font-dejavu" ,font-dejavu)
4859 ("pkg-config" ,pkg-config)))
4860 (synopsis "Collection of LV2/JACK audio/MIDI processing plugins")
4861 (description "x42-plugins is a collection of over 80 cross-platform LV2
4862audio and MIDI plugins that can also run as standalone JACK applications.")
4863 (home-page "https://x42-plugins.com/x42/")
4864 (license license:gpl2+)))
9a00130a
AT
4865
4866(define-public zam-plugins
4867 (package
4868 (name "zam-plugins")
4869 (version "3.11")
4870 (source
4871 (origin
4872 (method git-fetch)
4873 (uri
4874 (git-reference
4875 (url "https://github.com/zamaudio/zam-plugins.git")
4876 (commit version)
4877 ;; Recursive to fetch the DISTRHO plugin framework. This
4878 ;; framework is intended to be included in the sources
4879 ;; and not to be used as a library.
4880 (recursive? #t)))
4881 (file-name (git-file-name name version))
4882 (sha256
4883 (base32
4884 "0jlbxm0g93plgd3g4r9rsr0c7868ms49bs0ljpqb6kw6132hsapp"))))
4885 (build-system gnu-build-system)
4886 (arguments
4887 `(#:tests? #f ;no "check" target
4888 #:make-flags
4889 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
4890 "HAVE_ZITA_CONVOLVER=true")
4891 #:phases
4892 (modify-phases %standard-phases
4893 (add-before 'build 'set-CC-variable
4894 (lambda _
4895 (setenv "CC" "gcc") #t))
4896 (delete 'configure))))
4897 (inputs
4898 `(("fftwf" ,fftwf)
4899 ("jack" ,jack-1) ;for the standalone JACK application
4900 ("liblo" ,liblo)
4901 ("libsamplerate" ,libsamplerate)
4902 ("mesa" ,mesa)
4903 ("zita-convolver" ,zita-convolver)))
4904 (native-inputs
4905 `(("ladspa" ,ladspa)
4906 ("lv2" ,lv2)
4907 ("pkg-config" ,pkg-config)))
4908 (synopsis "Collection of audio processing plugins")
4909 (description
4910 "Zam plugins is a collection of audio processing plugins in the LADSPA,
4911LV2 and VST2 formats, as well as standalone JACK versions. The collection
4912includes ZaMaximX2, ZamAutoSat, ZamComp, ZamCompX2, ZamEQ2, ZamGEQ31,
4913ZamHeadX2, ZamPhono, ZamGate, ZamGateX2, ZamTube, ZamDelay, ZamDynamicEQ,
4914ZaMultiComp, ZaMultiCompX2 and ZamSynth.")
4915 (home-page "http://www.zamaudio.com/?p=976")
4916 (license license:gpl2+)))
2ac65b9c
AT
4917
4918(define-public geonkick
4919 (package
4920 (name "geonkick")
4921 (version "1.9.0")
4922 (source
4923 (origin
2f491b88
MB
4924 (method git-fetch)
4925 (uri (git-reference
4926 (url "https://gitlab.com/geontime/geonkick.git")
4927 (commit (string-append "v" version))))
4928 (file-name (git-file-name name version))
2ac65b9c
AT
4929 (sha256
4930 (base32
2f491b88 4931 "17mwxnmxszdm2wjbigciwh8qx0487q9qhf4sl92y6nqdb0dlghnl"))))
2ac65b9c
AT
4932 (build-system cmake-build-system)
4933 (arguments
4934 `(#:tests? #f ;no tests included
4935 #:configure-flags
4936 (list (string-append "-DGKICK_REDKITE_SDK_PATH="
4937 (assoc-ref %build-inputs "redkite"))
4938 (string-append "-DCMAKE_INSTALL_PREFIX="
4939 (assoc-ref %outputs "out")))))
4940 (inputs
4941 `(("cairo" ,cairo)
4942 ("hicolor-icon-theme" ,hicolor-icon-theme)
4943 ("jack" ,jack-1) ;for the standalone JACK application
4944 ("libsndfile" ,libsndfile)
4945 ("libx11" ,libx11)
4946 ("redkite" ,redkite)
4947 ("rapidjson" ,rapidjson)))
4948 (native-inputs
4949 `(("lv2" ,lv2)
4950 ("pkg-config" ,pkg-config)
4951 ("sord" ,sord)))
4952 (synopsis "Percussion synthesizer")
4953 (description "Geonkick is a synthesizer that can synthesize elements
4954of percussion such as kicks, snares, hit-hats, shakers, claps and sticks.
4955It can also play and mix samples.")
4956 (home-page "https://gitlab.com/geontime/geonkick")
4957 (license license:gpl3+)))
5b1bf92e
AT
4958
4959(define-public dpf-plugins
4960 (package
4961 (name "dpf-plugins")
4962 (version "1.3")
4963 (source
4964 (origin
4965 (method git-fetch)
4966 (uri
4967 (git-reference
4968 (url "https://github.com/DISTRHO/DPF-Plugins.git")
4969 (commit (string-append "v" version))))
4970 (file-name (git-file-name name version))
4971 (sha256
4972 (base32
4973 "1hsfmpv3kvpiwk8nfw9xpaipzy0n27i83y2v1yr93lznwm5rqrbs"))))
4974 (build-system gnu-build-system)
4975 (arguments
4976 `(#:tests? #f ; no "check" target
4977 #:make-flags
4978 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
4979 #:phases
4980 (modify-phases %standard-phases
4981 (add-before 'build 'set-CC-variable
4982 (lambda _ (setenv "CC" "gcc") #t))
4983 (delete 'configure))))
4984 (inputs
4985 `(("cairo" ,cairo)
4986 ("liblo" ,liblo) ; for dssi plugins
4987 ("jack" ,jack-1) ; for standalone applications
4988 ("mesa" ,mesa)))
4989 (native-inputs
4990 `(("pkg-config" ,pkg-config)
4991 ("dssi" ,dssi)
4992 ("lv2" ,lv2)))
4993 (home-page "https://github.com/DISTRHO/DPF-Plugins")
4994 (synopsis "Audio plugin collection")
4995 (description "Collection of audio plugins built with the DISTRHO Plugin
4996Framework (DPF) available in LADSPA, DSSI, LV2 and VST2 formats. This
4997package includes the following plugins: glBars, Kars, Max-Gen examples
4998(MaBitcrush, MaFreeverb, MaGigaverb, MaPitchshift), Mini-Series (3BandEQ,
49993BandSplitter, PingPongPan), ndc-Plugs (Amplitude Imposer, Cycle Shifter,
5000Soul Force), MVerb, Nekobi, and ProM.")
5001 ;; This package consists of several plugins refactored to use the
5002 ;; DISTHRO Plugin Framework (DPF). Different copyrights and licenses
5003 ;; apply to different plugins. The root LICENSE file has a table with
5004 ;; license information for each plugin and paths to each license
5005 (license (list license:isc license:gpl3 license:lgpl3 license:expat license:gpl2))))
bcf851bc
AT
5006
5007(define-public avldrums-lv2
5008 (package
5009 (name "avldrums-lv2")
5010 (version "0.4.0")
5011 (source
5012 (origin
5013 (method git-fetch)
5014 (uri (git-reference
5015 (url "https://github.com/x42/avldrums.lv2.git")
5016 (commit (string-append "v" version))
5017 ;; This plugin expects the robtk submodule's source files to be
5018 ;; there in order to build.
5019 (recursive? #t)))
5020 (file-name (git-file-name name version))
5021 (sha256
5022 (base32
5023 "1z70rcq6z3gkb4fm8dm9hs31bslwr97zdh2n012fzki9b9rdj5qv"))))
5024 (build-system gnu-build-system)
5025 (arguments
5026 `(#:tests? #f ; no "check" target
5027 #:make-flags
5028 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
5029 #:phases
5030 (modify-phases %standard-phases
5031 (add-before 'build 'set-CC-variable
5032 (lambda _
5033 (setenv "CC" "gcc") #t))
5034 (delete 'configure))))
5035 (inputs
5036 `(("cairo" ,cairo)
5037 ("dssi" ,dssi)
5038 ("glu" ,glu)
5039 ("mesa" ,mesa)
5040 ("pango" ,pango)))
5041 (native-inputs
5042 `(("pkg-config" ,pkg-config)
5043 ("lv2" ,lv2)))
5044 (home-page "https://x42-plugins.com/x42/x42-avldrums")
5045 (synopsis "Drum sample player LV2 plugin dedicated to the AVLinux Drumkits")
5046 (description "AVLdrums is a drum sample player LV2 plugin dedicated to Glen
5047MacArthur's AVLdrums. This plugin provides a convenient way to sequence and mix
5048MIDI drums and comes as two separate drumkits: Black Pearl and Red Zeppelin.")
5049 (license license:gpl2+)))
7281c8fd
AT
5050
5051(define-public helm
5052 (package
5053 (name "helm")
5054 (version "0.9.0")
5055 (source
5056 (origin
5057 (method git-fetch)
5058 (uri
5059 (git-reference
5060 (url "https://github.com/mtytel/helm.git")
5061 (commit (string-append "v" version))))
5062 (file-name (git-file-name name version))
5063 (sha256
5064 (base32
5065 "17ys2vvhncx9i3ydg3xwgz1d3gqv4yr5mqi7vr0i0ca6nad6x3d4"))))
5066 (build-system gnu-build-system)
5067 (arguments
5068 `(#:tests? #f ; no "check" target
5069 #:make-flags
5070 (list (string-append "DESTDIR=" (assoc-ref %outputs "out"))
5071 "lv2" "standalone")
5072 #:phases
5073 (modify-phases %standard-phases
5074 (add-after 'unpack 'include-pnglib-code-and-remove-usr-from-paths
5075 (lambda _
5076 (substitute* "standalone/builds/linux/Makefile"
5077 (("JUCE_INCLUDE_PNGLIB_CODE=0")
5078 "JUCE_INCLUDE_PNGLIB_CODE=1"))
5079 (substitute* "builds/linux/LV2/Makefile"
5080 (("JUCE_INCLUDE_PNGLIB_CODE=0")
5081 "JUCE_INCLUDE_PNGLIB_CODE=1"))
5082 (substitute* "Makefile"
5083 (("/usr") ""))
5084 #t))
5085 (add-before 'reset-gzip-timestamps 'make-gz-files-writable
5086 (lambda* (#:key outputs #:allow-other-keys)
5087 (for-each make-file-writable
5088 (find-files (string-append (assoc-ref outputs "out"))
5089 ".*\\.gz$"))
5090 #t))
5091 (delete 'configure))))
5092 (inputs
5093 `(("alsa-lib" ,alsa-lib)
5094 ("curl" ,curl)
5095 ("freetype2" ,freetype)
5096 ("hicolor-icon-theme" ,hicolor-icon-theme)
5097 ("libxcursor" ,libxcursor)
5098 ("libxinerama", libxinerama)
5099 ("jack", jack-1)
5100 ("mesa" ,mesa)))
5101 (native-inputs
5102 `(("pkg-config" ,pkg-config)
5103 ("lv2", lv2)))
5104 (home-page "https://tytel.org/helm/")
5105 (synopsis "Polyphonic synth with lots of modulation")
5106 (description "Helm is a cross-platform polyphonic synthesizer available standalone
5107and as an LV2 plugin.")
5108 (license license:gpl3+)))