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