gnu: ttfautohint: Use HTTPS home page.
[jackhill/guix/guix.git] / gnu / packages / music.scm
CommitLineData
1b6826d3 1;;; GNU Guix --- Functional package management for GNU
0163b900 2;;; Copyright © 2014, 2019 Eric Bavier <bavier@member.fsf.org>
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)))
2287 (home-page "http://linuxsampler.org/libgig/")
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)))
2649 (home-page "http://6xq.net/projects/pianobar/")
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.")
1b35fea1 3002 (home-page "http://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")
3212b964
NG
3881 (version "3.4.1")
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
3890 (base32 "16rx4x0czhwjg8vppcc7iw0cvii9q2l730cqhmhvip9r8wwamsvj"))
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)
3930 ("qtscript" ,qtscript)
3931 ("qtsvg" ,qtsvg)
a7a7186c
NG
3932 ("qtxmlpatterns" ,qtxmlpatterns)))
3933 (native-inputs
11d44d0b 3934 `(("pkg-config" ,pkg-config)
a7a7186c
NG
3935 ("qttools" ,qttools)))
3936 (synopsis "Music composition and notation software")
3937 (description "MuseScore is a music score typesetter. Its main purpose is
3938the creation of high-quality engraved musical scores in a WYSIWYG environment.
3939
3940It supports unlimited staves, linked parts and part extraction, tablature,
3941MIDI input, percussion notation, cross-staff beaming, automatic transposition,
3942lyrics (multiple verses), fretboard diagrams, and in general everything
3943commonly used in sheet music. Style options and style sheets to change the
3944appearance and layout are provided.
3945
3946MuseScore can also play back scores through the built-in sequencer and SoundFont
3947sample library.")
3948 (home-page "https://musescore.org")
3949 (license license:gpl2)))
2434f5ce 3950
43188faf
RW
3951(define-public muse-sequencer
3952 (package
3953 (name "muse-sequencer")
3954 (version "3.0.0")
3955 (source (origin
3956 (method git-fetch)
3957 (uri (git-reference
3958 (url "https://github.com/muse-sequencer/muse.git")
3959 (commit (string-append "muse_"
3960 (string-map (lambda (c)
3961 (if (char=? c #\.)
3962 #\_ c)) version)))))
78fee44e 3963 (file-name (git-file-name name version))
43188faf
RW
3964 (sha256
3965 (base32
3966 "1nninz8qyqlxxjdnrm79y3gr3056pga9l2fsqh674jd3cjvafya3"))))
3967 (build-system cmake-build-system)
3968 (arguments
3969 `(#:tests? #f ; there is no test target
3970 #:configure-flags
3971 (list "-DENABLE_LV2_SUPPLIED=OFF"
3972 "-DENABLE_RTAUDIO=OFF" ; FIXME: not packaged
3973 "-DENABLE_INSTPATCH=OFF" ; FIXME: not packaged
3974 "-DENABLE_VST_NATIVE=OFF")
3975 #:phases
3976 (modify-phases %standard-phases
3977 (add-after 'unpack 'chdir
3978 (lambda _ (chdir "muse3"))))))
3979 (inputs
3980 `(("alsa-lib" ,alsa-lib)
3981 ("lash" ,lash)
3982 ("jack" ,jack-1)
3983 ("liblo" ,liblo)
3984 ("dssi" ,dssi)
3985 ("ladspa" ,ladspa)
3986 ("lv2" ,lv2)
3987 ("lilv" ,lilv)
3988 ("sord" ,sord)
3989 ("libsndfile" ,libsndfile)
3990 ("libsamplerate" ,libsamplerate)
3991 ("fluidsynth" ,fluidsynth)
3992 ("pcre" ,pcre)
3993 ("qtbase" ,qtbase)
3994 ("qtsvg" ,qtsvg)))
3995 (native-inputs
3996 `(("pkg-config" ,pkg-config)
3997 ("qttools" ,qttools)))
3998 (home-page "http://muse-sequencer.org")
3999 (synopsis "MIDI/Audio sequencer")
4000 (description "MusE is a MIDI/Audio sequencer with recording and editing
4001capabilities. Its audio sequencer supports the LADSPA, DSSI, and LV2 audio
4002plugin formats; the MIDI sequencer provides a piano roll, a drum editor, a
4003list view, and a score editor. MusE aims to be a complete multitrack virtual
4004studio.")
4005 (license license:gpl2+)))
4006
2434f5ce
DM
4007(define-public dssi
4008 (package
4009 (name "dssi")
4010 (version "1.1.1")
4011 (source (origin
4012 (method url-fetch)
4013 (uri (string-append
4014 "mirror://sourceforge/dssi/dssi/" version
4015 "/dssi-" version ".tar.gz"))
4016 (sha256
4017 (base32
4018 "0kl1hzhb7cykzkrqcqgq1dk4xcgrcxv0jja251aq4z4l783jpj7j"))))
4019 (build-system gnu-build-system)
4020 (inputs
4021 `(("alsa-lib" ,alsa-lib)
0e78801a 4022 ("jack" ,jack-1)
2434f5ce
DM
4023 ("ladspa" ,ladspa)
4024 ("libsamplerate" ,libsamplerate)
4025 ("libsndfile" ,libsndfile)
4026 ("liblo" ,liblo)))
4027 (native-inputs
4028 `(("pkg-config" ,pkg-config)))
4029 (synopsis "Audio plugin API for soft synths and effects")
4030 (description "DSSI is a plugin API for software instruments with user
4031interfaces, permitting them to be hosted in-process by audio applications.
4032It is intended to be simple, GUI-toolkit-agnostic, and slightly biased
4033towards familiarity with MIDI. The DSSI distribution package contains
4034a JACK/ALSA-sequencer reference host and some plugins as well as the
4035specification and header.")
4036 (home-page "http://dssi.sourceforge.net/")
4037 ;; The DSSI interface is LGPL2.1+, some tests and examples are GPL2+.
4038 ;; The vast majority of examples are in the public domain.
4039 (license (list license:lgpl2.1+ license:gpl2+))))
9bc38f28
DM
4040
4041(define-public rosegarden
4042 (package
4043 (name "rosegarden")
0d5101c3 4044 (version "18.12")
9bc38f28
DM
4045 (source (origin
4046 (method url-fetch)
4047 (uri (string-append
4048 "mirror://sourceforge/rosegarden/rosegarden/"
4049 version "/rosegarden-" version ".tar.bz2"))
4050 (sha256
4051 (base32
0d5101c3 4052 "15i9fm0vkn3wsgahaxqi1j5zs0wc0j3wdwml0x49084gk2p328vb"))))
9bc38f28
DM
4053 (build-system cmake-build-system)
4054 (arguments
0d5101c3 4055 `(#:configure-flags '("-DCMAKE_BUILD_TYPE=Release")
9bc38f28
DM
4056 #:phases
4057 (modify-phases %standard-phases
4058 (add-after 'unpack 'patch-tests
4059 (lambda _
4060 (substitute* "CMakeLists.txt"
4061 (("BUILD_TESTING OFF") "BUILD_TESTING ON")
4062 ;; Make tests work.
4063 ((" -fvisibility=hidden") ""))
4064 #t))
4065 (add-after 'unpack 'fix-references
4066 (lambda* (#:key inputs #:allow-other-keys)
4067 (substitute* "src/gui/general/ProjectPackager.cpp"
4068 (("\"flac\\>")
4069 (string-append "\"" (assoc-ref inputs "flac") "/bin/flac"))
4070 (("\"wavpack\\>")
4071 (string-append "\"" (assoc-ref inputs "wavpack") "/bin/wavpack"))
4072 (("\"wvunpack\\>")
4073 (string-append "\"" (assoc-ref inputs "wavpack") "/bin/wvunpack"))
4074 (("\"bash\\>")
4075 (string-append "\"" (assoc-ref inputs "bash") "/bin/bash"))
4076 (("\"tar\\>")
4077 (string-append "\"" (assoc-ref inputs "tar") "/bin/tar")))
4078 (substitute* "src/gui/general/LilyPondProcessor.cpp"
4079 (("\"convert-ly\\>")
4080 (string-append "\"" (assoc-ref inputs "lilypond") "/bin/convert-ly"))
4081 (("\"lilypond\\>")
4082 (string-append "\"" (assoc-ref inputs "lilypond") "/bin/lilypond")))
4083 #t))
4084 (add-after 'unpack 'make-reproducible
4085 (lambda _
4086 ;; Prevent Last-Modified from being written.
4087 ;; The "*.qm" files that are used in locale.qrc would have a new
4088 ;; mtime otherwise that is written into qrc_locale.cpp in the
4089 ;; end - except when we disable it.
4090 (substitute* "src/CMakeLists.txt"
4091 (("COMMAND [$][{]QT_RCC_EXECUTABLE[}]")
4092 "COMMAND ${QT_RCC_EXECUTABLE} --format-version 1")
4093 ;; Extraneous.
4094 ;(("qt5_add_resources[(]rg_SOURCES ../data/data.qrc[)]")
4095 ; "qt5_add_resources(rg_SOURCES ../data/data.qrc OPTIONS --format-version 1)")
4096 )
4097 ;; Make hashtable traversal order predicable.
4098 (setenv "QT_RCC_TEST" "1") ; important
4099 #t))
4100 (add-before 'check 'prepare-check
4101 (lambda _
4102 (setenv "QT_QPA_PLATFORM" "offscreen")
4103 ;; Tests create files in $HOME/.local/share/rosegarden .
4104 (mkdir-p "/tmp/foo")
4105 (setenv "HOME" "/tmp/foo")
9bf98520 4106 (setenv "XDG_RUNTIME_DIR" "/tmp/foo")
9bc38f28
DM
4107 #t)))))
4108 (inputs
4109 `(("alsa-lib" ,alsa-lib)
4110 ("bash" ,bash)
4111 ("dssi" ,dssi)
4112 ("flac" ,flac)
4113 ("fftwf" ,fftwf)
b94f250e 4114 ("jack" ,jack-1)
9bc38f28
DM
4115 ("ladspa" ,ladspa)
4116 ("liblo" ,liblo)
4117 ("libsamplerate" ,libsamplerate)
4118 ("lilypond" ,lilypond)
4119 ("lrdf" ,lrdf)
4120 ("qtbase" ,qtbase)
4121 ("tar" ,tar)
4122 ("lirc" ,lirc)
4123 ("wavpack" ,wavpack)
4124 ("zlib" ,zlib)))
4125 (native-inputs
4126 `(("pkg-config" ,pkg-config)
4127 ("qtlinguist" ,qttools)))
4128 (synopsis "Music composition and editing environment based around a MIDI
4129sequencer")
4130 (description "Rosegarden is a music composition and editing environment
4131based around a MIDI sequencer that features a rich understanding of music
4132notation and includes basic support for digital audio.")
9bf98520 4133 (home-page "https://www.rosegardenmusic.com/")
9bc38f28 4134 (license license:gpl2)))
30655652 4135
643817e4 4136(define-public patchmatrix
559e06b6
RW
4137 (package
4138 (name "patchmatrix")
4139 (version "0.16.0")
4140 (source (origin
4141 (method git-fetch)
4142 (uri (git-reference
4143 (url "https://github.com/OpenMusicKontrollers/patchmatrix.git")
4144 (commit version)))
4145 (file-name (git-file-name "patchmatrix" version))
4146 (sha256
4147 (base32
4148 "020vp7zzxxzzjfic57vkpg68dm8hi98ilr1bj88xjsv6i47xmjbn"))))
4149 (build-system meson-build-system)
4150 (arguments '(#:tests? #f)) ; no test target
4151 (inputs
4152 `(("jack" ,jack-1)
4153 ("lv2" ,lv2)
4154 ("mesa" ,mesa)))
4155 (native-inputs
4156 `(("pkg-config" ,pkg-config)))
4157 (home-page "https://github.com/OpenMusicKontrollers/patchmatrix")
4158 (synopsis "Simple JACK patch bay")
4159 (description "PatchMatrix is a patch bay for the JACK audio connection
643817e4
RW
4160kit. It provides a patch bay in flow matrix style for audio, MIDI, CV, and
4161OSC connections.")
559e06b6 4162 (license license:artistic2.0)))
643817e4 4163
30655652
RW
4164(define-public sorcer
4165 (package
4166 (name "sorcer")
4167 (version "1.1.3")
4168 (source (origin
4169 (method url-fetch)
4170 (uri (string-append "https://github.com/openAVproductions/"
4171 "openAV-Sorcer/archive/release-"
4172 version ".tar.gz"))
4173 (file-name (string-append name "-" version ".tar.gz"))
4174 (sha256
4175 (base32
4176 "07iyqj28wm0xc4arrq893bm12xjpz65db7ynrlmf6w8krg8wjmd0"))))
4177 (build-system cmake-build-system)
4178 (arguments
4179 `(#:tests? #f ; no tests included
4180 #:phases
4181 (modify-phases %standard-phases
e5af1f4a
EF
4182 (add-after 'unpack 'remove-architecture-specific-flags
4183 (lambda _
4184 (substitute* "CMakeLists.txt"
4185 (("-msse2 -mfpmath=sse") ""))
4186 #t))
30655652
RW
4187 (add-after 'unpack 'build-faust-sources
4188 (lambda* (#:key inputs #:allow-other-keys)
4189 (with-directory-excursion "faust"
4190 (delete-file "main.cpp")
d7e24652
RW
4191 (invoke "faust" "-i"
4192 "-a" "lv2synth.cpp"
4193 "-o" "main.cpp" "main.dsp")))))))
30655652
RW
4194 (inputs
4195 `(("boost" ,boost)
4196 ("lv2" ,lv2)
4197 ("ntk" ,ntk)))
4198 (native-inputs
4199 `(("faust" ,faust)
4200 ("pkg-config" ,pkg-config)))
4201 (home-page "http://openavproductions.com/sorcer/")
4202 (synopsis "Wavetable LV2 plugin synth")
4203 (description "Sorcer is a wavetable LV2 plugin synthesizer, targeted at
4204the electronic or dubstep genre.")
4205 (license license:gpl3+)))
60b7ed9c 4206
f7ce2134
RW
4207(define-public sonivox-eas
4208 (package
4209 (name "sonivox-eas")
4210 (version "1.1.0")
4211 (source (origin
4212 (method git-fetch)
4213 (uri (git-reference
4214 (url "https://github.com/pedrolcl/Linux-SonivoxEas.git")
4215 (commit (string-append "v" version))))
4216 (file-name (string-append name "-" version "-checkout"))
4217 (sha256
4218 (base32
4219 "0l9gs00p5g4k4qy6i7nv1mfi2n2wnsycwjrgrh9hxzam4irf2mw2"))))
4220 (build-system cmake-build-system)
4221 (arguments '(#:tests? #f)) ; there are no tests
4222 (inputs
4223 `(("alsa-lib" ,alsa-lib)
4224 ("drumstick" ,drumstick)
4225 ("pulseaudio" ,pulseaudio)
4226 ("qtbase" ,qtbase)))
4227 (native-inputs
4228 `(("pkg-config" ,pkg-config)))
4229 (home-page "https://github.com/pedrolcl/Linux-SonivoxEas")
4230 (synopsis "MIDI synthesizer library")
4231 (description "This project is a real time General MIDI synthesizer based
4232on the Sonivox EAS Synthesizer by Google. It does not need external
4233soundfonts, using embedded samples instead.")
4234 ;; Sonivox is released under the ASL2.0; the rest of the code is under
4235 ;; GPLv2+.
4236 (license (list license:gpl2+ license:asl2.0))))
92b36e3a
RW
4237
4238(define-public whysynth
4239 (package
4240 (name "whysynth")
4241 (version "20170701")
4242 (source (origin
4243 (method url-fetch)
4244 (uri (string-append "http://smbolton.com/whysynth/whysynth-"
4245 version ".tar.bz2"))
4246 (sha256
4247 (base32
4248 "02qbn0hbvn1iym4zxv35b201blg31yjpgh71h8db0j5zls2xc0m6"))))
4249 (build-system gnu-build-system)
4250 (inputs
4251 `(("dssi" ,dssi)
4252 ("liblo" ,liblo)
4253 ("fftwf" ,fftwf)
4254 ("gtk+" ,gtk+-2)
4255 ("ladspa" ,ladspa)
4256 ("alsa-lib" ,alsa-lib)))
4257 (native-inputs
4258 `(("pkg-config" ,pkg-config)))
4259 (home-page "http://smbolton.com/whysynth.html")
4260 (synopsis "DSSI software synthesizer")
4261 (description "WhySynth is a versatile softsynth which operates as a plugin
4262for the DSSI Soft Synth Interface. A brief list of features:
4263
4264@enumerate
4265@item 4 oscillators, 2 filters, 3 LFOs, and 5 envelope generators per voice.
4266@item 11 oscillator modes: minBLEP, wavecycle, chorused wavecycle,
4267 asynchronous granular, three FM modes, waveshaper, noise, PADsynth, and phase
4268 distortion.
4269@item 10 filter modes.
4270@item flexible modulation and mixdown options, plus effects.
4271@end enumerate
4272")
4273 (license license:gpl2+)))
6b445c57 4274
4275(define-public libdiscid
4276 (package
4277 (name "libdiscid")
4278 (version "0.6.2")
4279 (source
4280 (origin
4281 (method url-fetch)
4282 (uri (string-append
4283 "http://ftp.musicbrainz.org/pub/musicbrainz/libdiscid/libdiscid-"
4284 version ".tar.gz"))
4285 (sha256
4286 (base32
4287 "1f9irlj3dpb5gyfdnb1m4skbjvx4d4hwiz2152f83m0d9jn47r7r"))))
4288 (arguments `(#:test-target "check"))
4289 (build-system cmake-build-system)
4290 (home-page "https://musicbrainz.org/doc/libdiscid")
4291 (synopsis "Disc id reader library")
4292 (description "libdiscid is a C library for creating MusicBrainz and freedb
4293disc IDs from audio CDs. It reads a CD's table of contents (TOC) and generates
4294an identifier which can be used to lookup the CD at MusicBrainz. Additionally,
4295it provides a submission URL for adding the disc ID to the database and gathers
4296ISRCs and the MCN (=UPC/EAN) from disc.")
4297 (license license:lgpl2.1+)))
1ea29aa0 4298
1331a6c0
GH
4299(define-public python-discid
4300 (package
4301 (name "python-discid")
4302 (version "1.1.1")
4303 (source
4304 (origin
4305 (method url-fetch)
4306 (uri (pypi-uri "discid" version))
4307 (sha256
4308 (base32
4309 "1fgp67nhqlbvhhwrcxq5avil7alpzw4s4579hlyvxzbphdnbz8vq"))))
4310 (build-system python-build-system)
4311 (inputs
4312 `(("libdiscid" ,libdiscid)))
4313 (arguments
4314 `(#:phases
4315 (modify-phases %standard-phases
4316 (add-before 'build 'set-libdiscid
4317 ;; Set path of libdiscid
4318 (lambda* (#:key inputs #:allow-other-keys)
4319 (let ((discid (assoc-ref inputs "libdiscid")))
4320 (substitute* "discid/libdiscid.py"
4321 (("lib_name = (.*)$" all name)
4322 (string-append "lib_name = \"" discid
4323 "/lib/libdiscid.so.0\"\n")))
4324 #t))))))
4325 (home-page "https://python-discid.readthedocs.io/")
4326 (synopsis "Python bindings for Libdiscid")
4327 (description
4328 "This package provides Python bindings for the Libdiscid library. The
4329main purpose is the calculation of @url{https://musicbrainz.org/doc/Disc%20ID,
4330Disc IDs} for use with the MusicBrainz database. Additionally the disc
4331@dfn{Media Catalog Number} (MCN) and track @dfn{International Standard
4332Recording Code} (ISRC) can be extracted.}")
4333 (license license:lgpl3+)))
4334
1ea29aa0 4335(define-public libmusicbrainz
4336 (package
4337 (name "libmusicbrainz")
4338 (version "5.1.0")
4339 (source
4340 (origin
4341 (method url-fetch)
4342 (uri (string-append
4343 "https://github.com/metabrainz/libmusicbrainz/releases/download/release-"
4344 version "/libmusicbrainz-" version ".tar.gz"))
4345 (sha256
4346 (base32
8c71a52c 4347 "0ikb9igyyk28jm34raxfzkw2qyn4nzzwsymdyprp7cmvi6g2ajb7"))))
1ea29aa0 4348 (build-system cmake-build-system)
69cb939e
RW
4349 (arguments
4350 `(#:phases
4351 (modify-phases %standard-phases
4352 (replace 'check
4353 (lambda _
4354 ;; requires network connections
4355 ;; (invoke "tests/mbtest")
4356 (invoke "tests/ctest")
4357 #t)))))
1ea29aa0 4358 (inputs `(("neon" ,neon)
4359 ("libxml2" ,libxml2)))
4360 (native-inputs `(("pkg-config" ,pkg-config)))
4361 (home-page "https://musicbrainz.org/doc/libmusicbrainz")
4362 (synopsis "MusicBrainz client library")
4363 (description "The MusicBrainz Client Library (libmusicbrainz), also known as
4364mb_client, is a development library geared towards developers who wish to add
4365MusicBrainz lookup capabilities to their applications.")
4366 (license license:lgpl2.1+)))
87d1b7b0 4367
b0c2c5ab
LC
4368(define-public perl-musicbrainz-discid
4369 (package
4370 (name "perl-musicbrainz-discid")
4371 (version "0.04")
4372 (source (origin
4373 (method url-fetch)
4374 (uri (string-append
4375 "mirror://cpan/authors/id/N/NJ/NJH/MusicBrainz-DiscID-"
4376 version ".tar.gz"))
4377 (sha256
4378 (base32
4379 "1i4qk1qfcmxdibqkyfjrrjdq2zk42vjcz590qgiyc47fi9p6xx1j"))))
4380 (build-system perl-build-system)
4381 (native-inputs `(("pkg-config" ,pkg-config)
4382 ("which" ,which)))
4383 (inputs `(("libdiscid" ,libdiscid)))
4384 (home-page "https://metacpan.org/release/MusicBrainz-DiscID")
4385 (synopsis "Perl interface to the MusicBrainz libdiscid library")
4386 (description
4387 "The @code{MusicBrainz::DiscID} module is a Perl interface to the
4388MusicBrainz libdiscid library, allowing you to manipulate digital audio
4389compact disc (CDDA) identifiers.")
4390 (license license:gpl2)))
4391
b2961dda
LC
4392(define-public perl-webservice-musicbrainz
4393 (package
4394 (name "perl-webservice-musicbrainz")
b0842a8e 4395 (version "1.0.5")
b2961dda
LC
4396 (source (origin
4397 (method url-fetch)
4398 (uri (string-append
4399 "mirror://cpan/authors/id/B/BF/BFAIST/WebService-MusicBrainz-"
4400 version ".tar.gz"))
4401 (sha256
4402 (base32
b0842a8e 4403 "16chs1l58cf000d5kalkyph3p31ci73p1rlyx98mfv10d2cq6fsj"))))
b2961dda
LC
4404 (build-system perl-build-system)
4405 (arguments
4406 ;; Tests try to connect to http://musicbrainz.org.
4407 '(#:tests? #f))
4408 (native-inputs
4409 `(("perl-module-build" ,perl-module-build)))
4410 (propagated-inputs
4411 `(("perl-mojolicious" ,perl-mojolicious)))
4412 (home-page "https://metacpan.org/release/WebService-MusicBrainz")
4413 (synopsis "Web service API to the MusicBrainz database")
4414 (description
4415 "This module searches the MusicBrainz database through their web service
4416at @code{musicbrainz.org}.")
4417 (license license:perl-license)))
4418
87d1b7b0
PN
4419(define-public clyrics
4420 (package
4421 (name "clyrics")
9aec93be 4422 (version "0.12")
87d1b7b0
PN
4423 (source
4424 (origin
234a1825
RW
4425 (method git-fetch)
4426 (uri (git-reference
4427 (url "https://github.com/trizen/clyrics.git")
4428 (commit version)))
4429 (file-name (git-file-name name version))
87d1b7b0 4430 (sha256
9aec93be 4431 (base32 "1l9iqz6vxrrxapv7s110g360bqxksir4dcqd8w0l4lhmnfmz3vnk"))))
87d1b7b0 4432 (build-system trivial-build-system)
87d1b7b0 4433 (inputs
7f56f107 4434 `(("bash" ,bash) ; for the wrapped program
87d1b7b0
PN
4435 ("perl" ,perl)
4436 ("perl-www-mechanize" ,perl-www-mechanize)
4437 ("perl-lwp-protocol-https" ,perl-lwp-protocol-https)
4438 ;; Required or else LWP will fail with "GET https://www.google.com/ ==>
4439 ;; 500 Can't verify SSL peers without knowing which Certificate
4440 ;; Authorities to trust".
4441 ("perl-mozilla-ca" ,perl-mozilla-ca)))
4442 (arguments
4443 `(#:modules ((guix build utils))
4444 #:builder (begin
4445 (use-modules (guix build utils)
4446 (ice-9 match)
4447 (srfi srfi-26))
4448 (let* ((source (assoc-ref %build-inputs "source"))
87d1b7b0
PN
4449 (output (assoc-ref %outputs "out")))
4450 (setenv "PATH"
4451 (string-append
87d1b7b0
PN
4452 (assoc-ref %build-inputs "bash") "/bin" ":"
4453 (assoc-ref %build-inputs "perl") "/bin" ":"))
234a1825 4454 (copy-recursively source (getcwd))
87d1b7b0
PN
4455 (patch-shebang "clyrics")
4456 (substitute* "clyrics"
4457 (("/usr/share") output))
4458 (install-file "clyrics" (string-append output "/bin"))
4459 (wrap-program (string-append output "/bin/clyrics")
4460 `("PERL5LIB" ":" =
4461 ,(delete
4462 ""
4463 (map (match-lambda
7f56f107
TGR
4464 (((? (cut string-prefix? "perl-" <>) name) . dir)
4465 (string-append dir "/lib/perl5/site_perl"))
4466 (_ ""))
87d1b7b0
PN
4467 %build-inputs))))
4468 (copy-recursively "plugins" (string-append output "/clyrics"))
4469 #t))))
4470 (home-page "https://github.com/trizen/clyrics")
4471 (synopsis "Extensible lyrics fetcher")
4472 (description
4473 "Clyrics is an extensible command-line tool to fetch the lyrics of songs.
4474It can be used in daemon mode along with the Music-on-Console (MOC) and cmus
4475console music players.")
4476 (license license:gpl3+)))
5703380b
PN
4477
4478(define-public demlo
4479 (let ((commit "fe9ec4c8ac2fa995ec18e6ac86d50d46df06ec01")
4480 (revision "0"))
4481 (package
4482 (name "demlo")
4483 (version (git-version "3.8" revision commit))
4484 (source
4485 (origin
4486 (method git-fetch)
4487 (uri (git-reference
4488 (url
4489 "https://gitlab.com/ambrevar/demlo")
4490 (commit commit)))
4491 (file-name (git-file-name name version))
4492 (sha256
4493 (base32
4494 "1afkbqhzn6da7zaf5ab7dvyqj1izqhzprwfb4hw448fllda9bdvk"))))
4495 (build-system go-build-system)
4496 (native-inputs
4497 `(("lua" ,lua)
4498 ("go-github-com-mattn-go-isatty" ,go-github-com-mattn-go-isatty)
4499 ("go-github-com-mattn-go-colorable" ,go-github-com-mattn-go-colorable)
4500 ("go-github-com-aarzilli-golua" ,go-github-com-aarzilli-golua)
4501 ("go-gitlab-com-ambrevar-damerau" ,go-gitlab-com-ambrevar-damerau)
4502 ("go-gitlab-com-ambrevar-golua-unicode" ,go-gitlab-com-ambrevar-golua-unicode)
4503 ("go-github-com-mgutz-ansi" ,go-github-com-mgutz-ansi)
4504 ("go-github-com-michiwend-gomusicbrainz" ,go-github-com-michiwend-gomusicbrainz)
4505 ("go-github-com-stevedonovan-luar" ,go-github-com-stevedonovan-luar)
4506 ("go-github-com-wtolson-go-taglib" ,go-github-com-wtolson-go-taglib)
4507 ("go-github-com-yookoala-realpath" ,go-github-com-yookoala-realpath)))
4508 (inputs
4509 `(("chromaprint" ,chromaprint)
4510 ("ffmpeg" ,ffmpeg)))
4511 (arguments
4512 `(#:import-path "gitlab.com/ambrevar/demlo"
4513 #:phases
4514 (modify-phases %standard-phases
4515 (add-after 'install 'wrap-program
4516 (lambda* (#:key inputs outputs #:allow-other-keys)
4517 (let ((out (assoc-ref outputs "out"))
4518 (ffmpeg (assoc-ref inputs "ffmpeg"))
4519 (chromaprint (assoc-ref inputs "chromaprint")))
4520 (wrap-program (string-append out "/bin/demlo")
4521 `("XDG_DATA_DIRS" ":" prefix (,out))
4522 `("PATH" ":" prefix
4523 ,(map (lambda (dir)
4524 (string-append dir "/bin:"
4525 dir "/sbin"))
4526 (list ffmpeg chromaprint))))
4527 #t)))
e3900a4d 4528 (add-after 'install 'install-scripts
5703380b
PN
4529 (lambda* (#:key outputs #:allow-other-keys)
4530 (let* ((out (assoc-ref outputs "out"))
4531 (root (string-append out "/src/gitlab.com/ambrevar/demlo"))
4532 (xdg-data-dirs (string-append out "/demlo")))
4533 (copy-recursively (string-append root "/actions")
4534 (string-append xdg-data-dirs "/actions"))
4535 (copy-recursively (string-append root "/scripts")
4536 (string-append xdg-data-dirs "/scripts"))
4537 (install-file (string-append root "/config.lua") xdg-data-dirs)
4538 ;; TODO: Test fish completion.
4539 (install-file (string-append root "/completion/demlo.fish")
4540 (string-append out "/share/fish/vendor_completions.d"))
4541 #t))))))
4542 (home-page "https://gitlab.com/ambrevar/demlo")
4543 (synopsis "Dynamic and extensible music library organizer")
4544 (description "Demlo is a music library organizer. It can encode, fix
4545case, change folder hierarchy according to tags or file properties, tag from
4546an online database, copy covers while ignoring duplicates or those below a
4547quality threshold, and much more. It makes it possible to manage your
4548libraries uniformly and dynamically. You can write your own rules to fit your
4549needs best.
4550
4551Demlo can address any of these recurring music library issues (and much more):
4552
4553@itemize
4554@item Fix the lack of folder structure.
4555@item Normalize tags, fix their case, chose which tags to keep and which to
4556discard.
4557@item Handle lossy and lossless audio differently.
4558@item Handle mp3 id3tags hell...
4559@item Handle multiple covers, whether embedded and/or external, resize covers,
4560discard bad quality ones.
4561@end itemize\n")
4562 (license license:expat))))
e42ba3da
LF
4563
4564(define-public lpd8editor
4565 (package
4566 (name "lpd8editor")
83b9ba26 4567 (version "0.0.13")
e42ba3da
LF
4568 (source (origin
4569 (method git-fetch)
4570 (uri (git-reference
4571 (url "https://github.com/charlesfleche/lpd8editor.git")
4572 (commit (string-append "v" version))))
4573 (file-name (git-file-name name version))
4574 (sha256
4575 (base32
83b9ba26 4576 "0lsz3v493ilq2zr016m7kvymrplxd0n3pqv1pjglpq1h7sjw9764"))))
e42ba3da
LF
4577 (build-system gnu-build-system)
4578 (arguments
4579 '(#:phases
4580 (modify-phases %standard-phases
4581 (add-after 'unpack 'setenv
4582 (lambda _
4583 (setenv "INSTALL_PREFIX"
4584 (assoc-ref %outputs "out"))))
4585 (delete 'configure) ; no configure script
4586 (add-before 'build 'qmake
4587 (lambda _ (invoke "qmake"))))))
4588 (native-inputs
4589 `(("pkg-config" ,pkg-config)))
4590 (inputs
4591 `(("alsa" ,alsa-lib)
4592 ("qtbase" ,qtbase)
4593 ("qtsvg" ,qtsvg)))
4594 (synopsis "Graphical editor for the Akai LPD8 MIDI controller")
4595 (description "lpd8editor is a graphical patch editor for the Akai LPD8 MIDI
4596controller.")
4597 (home-page "https://github.com/charlesfleche/lpd8editor")
4598 (license license:expat)))
7fcc2f93 4599
4600(define-public fmit
4601 (package
4602 (name "fmit")
0ed0e3bf 4603 (version "1.2.13")
7fcc2f93 4604 (source (origin
4605 (method git-fetch)
4606 (uri (git-reference
4607 (url "https://github.com/gillesdegottex/fmit/")
4608 (commit (string-append "v" version))))
4609 (file-name (git-file-name name version))
4610 (sha256
4611 (base32
0ed0e3bf 4612 "1qyskam053pvlap1av80rgp12pzhr92rs88vqs6s0ia3ypnixcc6"))))
7fcc2f93 4613 (build-system gnu-build-system)
4614 (arguments
4615 '(#:phases
4616 (modify-phases %standard-phases
4617 (delete 'configure)
4618 (add-before 'build 'qmake
4619 (lambda _
4620 (let ((out (assoc-ref %outputs "out")))
4621 (invoke "qmake"
4622 "fmit.pro"
4623 (string-append "PREFIX=" out)
4624 (string-append "PREFIXSHORTCUT=" out)
4625 "CONFIG+=acs_qt acs_alsa acs_jack acs_portaudio"))))
4626 (add-after 'install 'wrap-executable
4627 (lambda* (#:key inputs outputs #:allow-other-keys)
4628 (let ((out (assoc-ref outputs "out")))
4629 (wrap-program (string-append out "/bin/fmit")
4630 `("QT_PLUGIN_PATH" ":" prefix
4631 ,(map (lambda (label)
4632 (string-append (assoc-ref inputs label)
4633 "/lib/qt5/plugins"))
4634 '("qtbase" "qtmultimedia" "qtsvg")))
4635 `("QML2_IMPORT_PATH" ":" prefix
4636 ,(map (lambda (label)
4637 (string-append (assoc-ref inputs label)
4638 "/lib/qt5/qml"))
4639 '("qtmultimedia"))))
4640 #t))))))
4641 (inputs
4642 `(("alsa-lib" ,alsa-lib)
4643 ("fftw" ,fftw)
4644 ("jack" ,jack-1)
4645 ("portaudio" ,portaudio)
4646 ("qtbase" ,qtbase)
4647 ("qtmultimedia" ,qtmultimedia)
4648 ("qtsvg" ,qtsvg)))
4649 (native-inputs
4650 `(("gettext" ,gnu-gettext)
4651 ("hicolor-icon-theme" ,hicolor-icon-theme)
4652 ("itstool" ,itstool)
4653 ("qttools" ,qttools)))
4654 (synopsis "Musical instrument tuner")
4655 (description "FMIT is a graphical utility for tuning musical instruments,
4656with error and volume history, and advanced features.")
4657 (home-page "https://gillesdegottex.github.io/fmit/")
4658 ;; Most of the code is under GPL2+, but some abstract or helper classes
4659 ;; are under LGPL2.1.
4660 (license (list license:gpl2+ license:lgpl2.1))))
f5870246
RW
4661
4662(define-public mloop
4663 (let ((commit "adebff98b0b4dc5872a03acb82e89c77cb29c127")
4664 (revision "0"))
4665 (package
4666 (name "mloop")
4667 (version (git-version "0.0.1" revision commit))
4668 (source (origin
4669 (method git-fetch)
4670 (uri (git-reference
4671 (url "http://git.fuzzle.org/mloop")
4672 (commit commit)))
4673 (file-name (git-file-name name version))
4674 (sha256
4675 (base32
4676 "175gxvg5slq0bllcx1c381rjlq3xpxww8c3kpiw5i2kfr4m52myz"))))
4677 (build-system waf-build-system)
4678 (arguments
4679 `(#:python ,python-2
4680 #:tests? #f)) ; no "check" target
4681 (inputs
4682 `(("jack" ,jack-1)
4683 ("ncurses" ,ncurses)))
4684 (native-inputs
4685 `(("pkg-config" ,pkg-config)))
4686 (home-page "https://fuzzle.org/~petern/mloop.html")
4687 (synopsis "Live MIDI looper")
4688 (description "mloop is a live MIDI looping system, using jack-midi.
4689Loops are recorded, optionally with beat quantization, and can then be played
4690back, either once or looping. A 'note cache' system is implemented to
4691remember which notes are pressed and their velocities. This allows for a loop
4692to start off with the currently pressed notes, making seamless loops much
4693easier to perform. Features include:
4694
4695@itemize
4696@item Quantisation; end a loop on a beat exactly.
4697@item Delayed recording; wait for a MIDI event before starting a loop record.
4698@item Adjust tempo; Playback speed of loops can be adjusted on the fly.
4699@end itemize\n")
4700 (license license:gpl2))))
0163b900
EB
4701
4702(define-public pragha
4703 (package
4704 (name "pragha")
4705 (version "1.3.4")
4706 (source (origin
4707 (method url-fetch)
4708 (uri (string-append "https://github.com/pragha-music-player/pragha/"
4709 "releases/download/v" version "/pragha-" version
4710 ".tar.bz2"))
4711 (sha256
4712 (base32
4713 "19kbhq99bkimx3aqrdzln0vlr4slkpx6kq66j731jvqyq76nlkp5"))))
4714 (build-system glib-or-gtk-build-system)
4715 (native-inputs
4716 `(("intltool" ,intltool)
4717 ("pkg-config" ,pkg-config)))
4718 (inputs
4719 `(("glib" ,glib)
4720 ("grilo" ,grilo)
4721 ("gstreamer" ,gstreamer)
4722 ("gst-plugins-base" ,gst-plugins-base)
4723 ("gst-plugins-good" ,gst-plugins-good)
4724 ("gtk+" ,gtk+)
4725 ("libcddb" ,libcddb)
4726 ("libcdio" ,libcdio)
4727 ("libcdio-paranoia" ,libcdio-paranoia)
4728 ("libgudev" ,libgudev)
4729 ("libnotify" ,libnotify)
4730 ("libpeas" ,libpeas)
4731 ("libsoup" ,libsoup)
4732 ("sqlite" ,sqlite)
4733 ("taglib" ,taglib)))
4734 (arguments
4735 `(#:phases
4736 (modify-phases %standard-phases
4737 (add-after 'install 'wrap-program
4738 (lambda* (#:key inputs outputs #:allow-other-keys)
4739 (let ((out (assoc-ref outputs "out"))
4740 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
4741 (wrap-program (string-append out "/bin/pragha")
4742 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path)))
4743 #t))))))
4744 (home-page "https://pragha-music-player.github.io")
4745 (synopsis "Music player")
4746 (description "Pragha is a lightweight music player based on Gtk and
4747sqlite. It is constructed to be fast, light, and simultaneously tries to be
4748complete without obstructing your daily work.")
4749 (license license:gpl3+)))
1c463524
DW
4750
4751(define-public playerctl
4752 (package
4753 (name "playerctl")
4754 (version "2.0.2")
4755 (source (origin
4756 (method git-fetch)
4757 (uri (git-reference
4758 (url "https://github.com/altdesktop/playerctl.git")
4759 (commit (string-append "v" version))))
4760 (file-name (git-file-name name version))
4761 (sha256
4762 (base32
4763 "1f3njnpd52djx3dmhh9a8p5a67f0jmr1gbk98icflr2q91149gjz"))))
4764 (build-system meson-build-system)
4765 (arguments
4766 `(#:configure-flags '("-Dintrospection=false" "-Dgtk-doc=false")))
4767 (inputs `(("python-pygobject" ,python-pygobject)))
4768 (native-inputs
4769 `(("glib:bin" ,glib "bin")
4770 ("pkg-config" ,pkg-config)))
4771 (synopsis "Control MPRIS-supporting media player applications")
4772 (description
4773 "Playerctl is a command-line utility and library for controlling media
4774players that implement the MPRIS D-Bus Interface Specification. Playerctl
4775makes it easy to bind player actions, such as play and pause, to media keys.
4776You can also get metadata about the playing track such as the artist and title
4777for integration into status line generators or other command-line tools.")
4778 (home-page "https://github.com/altdesktop/playerctl")
4779 (license license:lgpl3+)))
50c5215c
AT
4780
4781(define-public artyfx
4782 (package
4783 (name "artyfx")
4784 (version "1.3")
4785 (source (origin
4786 (method git-fetch)
4787 (uri (git-reference
4788 (url
4789 "https://github.com/openAVproductions/openAV-ArtyFX.git")
4790 (commit (string-append "release-" version))))
4791 (file-name (git-file-name name version))
4792 (sha256
4793 (base32
4794 "012hcy1mxl7gs2lipfcqp5x0xv1azb9hjrwf0h59yyxnzx96h7c9"))))
4795 (build-system cmake-build-system)
4796 (arguments
4797 `(#:tests? #f ; no tests included
4798 #:phases
4799 (modify-phases %standard-phases
4800 (add-after 'unpack 'remove-architecture-specific-flags
4801 (lambda _
4802 (substitute* "CMakeLists.txt"
4803 (("-msse2 -mfpmath=sse") ""))
4804 #t)))))
4805 (inputs
4806 `(("cairo" ,cairo)
4807 ("libsndfile" ,libsndfile)))
4808 (native-inputs
4809 `(("pkg-config" ,pkg-config)
4810 ("lv2" ,lv2)))
4811 (home-page "http://openavproductions.com/artyfx/")
4812 (synopsis "Audio effect LV2 plugin bundle")
4813 (description "ArtyFX is an LV2 plugin bundle of artistic real-time audio
4814effects. It contains a bitcrusher, delay, distortion, equalizer, compressor,
4815and reverb.")
4816 (license license:gpl2+)))
5182fbe0
AT
4817
4818(define-public sherlock-lv2
4819 (package
4820 (name "sherlock-lv2")
4821 (version "0.20.0")
4822 (source
4823 (origin
4824 (method url-fetch)
4825 (uri (string-append
4826 "https://git.open-music-kontrollers.ch/lv2/"
4827 "sherlock.lv2/snapshot/sherlock.lv2-"
4828 version ".tar.xz"))
4829 (sha256
4830 (base32
4831 "1c5xajpss9h8lbyx160bbzg8va50n2d74qwnxig9sf468rzmha1y"))))
4832 (build-system meson-build-system)
4833 (inputs
4834 `(("libx11" ,libx11)
4835 ("mesa" ,mesa)
4836 ("sratom" ,sratom)))
4837 (native-inputs
4838 `(("flex" ,flex)
4839 ("pkg-config" ,pkg-config)))
4840 (synopsis "Investigative LV2 plugin bundle")
4841 (description "The Sherlock plugin bundle contains LV2 plugins for
4842visualizing LV2 atom, MIDI and OSC events. They can be used for monitoring
4843and debugging of event signal flows inside plugin graphs.")
4844 (home-page "https://open-music-kontrollers.ch/lv2/sherlock/")
4845 (license license:artistic2.0)))
fe06a6ee
AT
4846
4847(define-public x42-plugins
4848 (package
4849 (name "x42-plugins")
41dc70f4 4850 (version "20191215")
fe06a6ee
AT
4851 (source
4852 (origin
4853 (method url-fetch)
4854 (uri
4855 (string-append "http://gareus.org/misc/x42-plugins/x42-plugins-"
4856 version ".tar.xz"))
4857 (sha256
41dc70f4 4858 (base32 "1mwfvhsvc0qgjyiwd8pmmam1mav43lmv39fljhmj9yri558v5g1c"))))
fe06a6ee
AT
4859 (build-system gnu-build-system)
4860 (arguments
4861 `(#:tests? #f ; no "check" target
4862 #:make-flags
4863 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
4864 "LIBZITACONVOLVER=-lzita-convolver"
4865 (string-append "FONTFILE="
4866 (assoc-ref %build-inputs "font-dejavu")
4867 "/share/fonts/truetype/DejaVuSans-Bold.ttf"))
4868 #:phases
4869 (modify-phases %standard-phases
4870 (add-before 'build 'set-CC-variable
4871 (lambda _
4872 (setenv "CC" "gcc")
4873 #t))
4874 (delete 'configure))))
4875 (inputs
4876 `(("cairo" ,cairo)
4877 ("fftwf" ,fftwf)
4878 ("ftgl" ,ftgl)
4879 ("glib" ,glib)
4880 ("glu" ,glu)
4881 ("hicolor-icon-theme" ,hicolor-icon-theme)
4882 ("jack" ,jack-1)
4883 ("libltc" ,libltc)
4884 ("libsamplerate" ,libsamplerate)
4885 ("libx11" ,libx11)
4886 ("pango" ,pango)
4887 ("zita-convolver" ,zita-convolver)))
4888 (native-inputs
4889 `(("help2man" ,help2man)
4890 ("liblo" ,liblo)
4891 ("lv2" ,lv2)
4892 ("font-dejavu" ,font-dejavu)
4893 ("pkg-config" ,pkg-config)))
4894 (synopsis "Collection of LV2/JACK audio/MIDI processing plugins")
4895 (description "x42-plugins is a collection of over 80 cross-platform LV2
4896audio and MIDI plugins that can also run as standalone JACK applications.")
4897 (home-page "https://x42-plugins.com/x42/")
4898 (license license:gpl2+)))
9a00130a
AT
4899
4900(define-public zam-plugins
4901 (package
4902 (name "zam-plugins")
a69b59e1 4903 (version "3.12")
9a00130a
AT
4904 (source
4905 (origin
4906 (method git-fetch)
4907 (uri
4908 (git-reference
4909 (url "https://github.com/zamaudio/zam-plugins.git")
4910 (commit version)
4911 ;; Recursive to fetch the DISTRHO plugin framework. This
4912 ;; framework is intended to be included in the sources
4913 ;; and not to be used as a library.
4914 (recursive? #t)))
4915 (file-name (git-file-name name version))
4916 (sha256
a69b59e1 4917 (base32 "0icsbarc9azcp0kjjydmiqn401v60jmf16zdcp4040q8g7bpfmfa"))))
9a00130a
AT
4918 (build-system gnu-build-system)
4919 (arguments
4920 `(#:tests? #f ;no "check" target
4921 #:make-flags
4922 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
4923 "HAVE_ZITA_CONVOLVER=true")
4924 #:phases
4925 (modify-phases %standard-phases
4926 (add-before 'build 'set-CC-variable
4927 (lambda _
4928 (setenv "CC" "gcc") #t))
4929 (delete 'configure))))
4930 (inputs
4931 `(("fftwf" ,fftwf)
4932 ("jack" ,jack-1) ;for the standalone JACK application
4933 ("liblo" ,liblo)
4934 ("libsamplerate" ,libsamplerate)
4935 ("mesa" ,mesa)
4936 ("zita-convolver" ,zita-convolver)))
4937 (native-inputs
4938 `(("ladspa" ,ladspa)
4939 ("lv2" ,lv2)
4940 ("pkg-config" ,pkg-config)))
4941 (synopsis "Collection of audio processing plugins")
4942 (description
4943 "Zam plugins is a collection of audio processing plugins in the LADSPA,
4944LV2 and VST2 formats, as well as standalone JACK versions. The collection
4945includes ZaMaximX2, ZamAutoSat, ZamComp, ZamCompX2, ZamEQ2, ZamGEQ31,
4946ZamHeadX2, ZamPhono, ZamGate, ZamGateX2, ZamTube, ZamDelay, ZamDynamicEQ,
4947ZaMultiComp, ZaMultiCompX2 and ZamSynth.")
4948 (home-page "http://www.zamaudio.com/?p=976")
4949 (license license:gpl2+)))
2ac65b9c
AT
4950
4951(define-public geonkick
4952 (package
4953 (name "geonkick")
4954 (version "1.9.0")
4955 (source
4956 (origin
2f491b88
MB
4957 (method git-fetch)
4958 (uri (git-reference
4959 (url "https://gitlab.com/geontime/geonkick.git")
4960 (commit (string-append "v" version))))
4961 (file-name (git-file-name name version))
2ac65b9c
AT
4962 (sha256
4963 (base32
2f491b88 4964 "17mwxnmxszdm2wjbigciwh8qx0487q9qhf4sl92y6nqdb0dlghnl"))))
2ac65b9c
AT
4965 (build-system cmake-build-system)
4966 (arguments
4967 `(#:tests? #f ;no tests included
4968 #:configure-flags
4969 (list (string-append "-DGKICK_REDKITE_SDK_PATH="
4970 (assoc-ref %build-inputs "redkite"))
4971 (string-append "-DCMAKE_INSTALL_PREFIX="
4972 (assoc-ref %outputs "out")))))
4973 (inputs
4974 `(("cairo" ,cairo)
4975 ("hicolor-icon-theme" ,hicolor-icon-theme)
4976 ("jack" ,jack-1) ;for the standalone JACK application
4977 ("libsndfile" ,libsndfile)
4978 ("libx11" ,libx11)
4979 ("redkite" ,redkite)
4980 ("rapidjson" ,rapidjson)))
4981 (native-inputs
4982 `(("lv2" ,lv2)
4983 ("pkg-config" ,pkg-config)
4984 ("sord" ,sord)))
4985 (synopsis "Percussion synthesizer")
4986 (description "Geonkick is a synthesizer that can synthesize elements
4987of percussion such as kicks, snares, hit-hats, shakers, claps and sticks.
4988It can also play and mix samples.")
4989 (home-page "https://gitlab.com/geontime/geonkick")
4990 (license license:gpl3+)))
5b1bf92e
AT
4991
4992(define-public dpf-plugins
4993 (package
4994 (name "dpf-plugins")
4995 (version "1.3")
4996 (source
4997 (origin
4998 (method git-fetch)
4999 (uri
5000 (git-reference
5001 (url "https://github.com/DISTRHO/DPF-Plugins.git")
5002 (commit (string-append "v" version))))
5003 (file-name (git-file-name name version))
5004 (sha256
5005 (base32
5006 "1hsfmpv3kvpiwk8nfw9xpaipzy0n27i83y2v1yr93lznwm5rqrbs"))))
5007 (build-system gnu-build-system)
5008 (arguments
5009 `(#:tests? #f ; no "check" target
5010 #:make-flags
5011 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
5012 #:phases
5013 (modify-phases %standard-phases
5014 (add-before 'build 'set-CC-variable
5015 (lambda _ (setenv "CC" "gcc") #t))
5016 (delete 'configure))))
5017 (inputs
5018 `(("cairo" ,cairo)
5019 ("liblo" ,liblo) ; for dssi plugins
5020 ("jack" ,jack-1) ; for standalone applications
5021 ("mesa" ,mesa)))
5022 (native-inputs
5023 `(("pkg-config" ,pkg-config)
5024 ("dssi" ,dssi)
5025 ("lv2" ,lv2)))
5026 (home-page "https://github.com/DISTRHO/DPF-Plugins")
5027 (synopsis "Audio plugin collection")
5028 (description "Collection of audio plugins built with the DISTRHO Plugin
5029Framework (DPF) available in LADSPA, DSSI, LV2 and VST2 formats. This
5030package includes the following plugins: glBars, Kars, Max-Gen examples
5031(MaBitcrush, MaFreeverb, MaGigaverb, MaPitchshift), Mini-Series (3BandEQ,
50323BandSplitter, PingPongPan), ndc-Plugs (Amplitude Imposer, Cycle Shifter,
5033Soul Force), MVerb, Nekobi, and ProM.")
5034 ;; This package consists of several plugins refactored to use the
5035 ;; DISTHRO Plugin Framework (DPF). Different copyrights and licenses
5036 ;; apply to different plugins. The root LICENSE file has a table with
5037 ;; license information for each plugin and paths to each license
5038 (license (list license:isc license:gpl3 license:lgpl3 license:expat license:gpl2))))
bcf851bc
AT
5039
5040(define-public avldrums-lv2
5041 (package
5042 (name "avldrums-lv2")
aaa41b41 5043 (version "0.4.1")
bcf851bc
AT
5044 (source
5045 (origin
5046 (method git-fetch)
5047 (uri (git-reference
5048 (url "https://github.com/x42/avldrums.lv2.git")
5049 (commit (string-append "v" version))
5050 ;; This plugin expects the robtk submodule's source files to be
5051 ;; there in order to build.
5052 (recursive? #t)))
5053 (file-name (git-file-name name version))
5054 (sha256
aaa41b41 5055 (base32 "1vwdp3d8qzd493qa99ddya7iql67bbfxmbcl8hk96lxif2lhmyws"))))
bcf851bc
AT
5056 (build-system gnu-build-system)
5057 (arguments
5058 `(#:tests? #f ; no "check" target
5059 #:make-flags
5060 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
5061 #:phases
5062 (modify-phases %standard-phases
5063 (add-before 'build 'set-CC-variable
5064 (lambda _
5065 (setenv "CC" "gcc") #t))
5066 (delete 'configure))))
5067 (inputs
5068 `(("cairo" ,cairo)
5069 ("dssi" ,dssi)
5070 ("glu" ,glu)
5071 ("mesa" ,mesa)
5072 ("pango" ,pango)))
5073 (native-inputs
5074 `(("pkg-config" ,pkg-config)
5075 ("lv2" ,lv2)))
5076 (home-page "https://x42-plugins.com/x42/x42-avldrums")
5077 (synopsis "Drum sample player LV2 plugin dedicated to the AVLinux Drumkits")
5078 (description "AVLdrums is a drum sample player LV2 plugin dedicated to Glen
5079MacArthur's AVLdrums. This plugin provides a convenient way to sequence and mix
5080MIDI drums and comes as two separate drumkits: Black Pearl and Red Zeppelin.")
5081 (license license:gpl2+)))
7281c8fd
AT
5082
5083(define-public helm
5084 (package
5085 (name "helm")
5086 (version "0.9.0")
5087 (source
5088 (origin
5089 (method git-fetch)
5090 (uri
5091 (git-reference
5092 (url "https://github.com/mtytel/helm.git")
5093 (commit (string-append "v" version))))
5094 (file-name (git-file-name name version))
5095 (sha256
5096 (base32
5097 "17ys2vvhncx9i3ydg3xwgz1d3gqv4yr5mqi7vr0i0ca6nad6x3d4"))))
5098 (build-system gnu-build-system)
5099 (arguments
5100 `(#:tests? #f ; no "check" target
5101 #:make-flags
5102 (list (string-append "DESTDIR=" (assoc-ref %outputs "out"))
5103 "lv2" "standalone")
5104 #:phases
5105 (modify-phases %standard-phases
5106 (add-after 'unpack 'include-pnglib-code-and-remove-usr-from-paths
5107 (lambda _
5108 (substitute* "standalone/builds/linux/Makefile"
5109 (("JUCE_INCLUDE_PNGLIB_CODE=0")
5110 "JUCE_INCLUDE_PNGLIB_CODE=1"))
5111 (substitute* "builds/linux/LV2/Makefile"
5112 (("JUCE_INCLUDE_PNGLIB_CODE=0")
5113 "JUCE_INCLUDE_PNGLIB_CODE=1"))
5114 (substitute* "Makefile"
5115 (("/usr") ""))
5116 #t))
5117 (add-before 'reset-gzip-timestamps 'make-gz-files-writable
5118 (lambda* (#:key outputs #:allow-other-keys)
5119 (for-each make-file-writable
5120 (find-files (string-append (assoc-ref outputs "out"))
5121 ".*\\.gz$"))
5122 #t))
5123 (delete 'configure))))
5124 (inputs
5125 `(("alsa-lib" ,alsa-lib)
5126 ("curl" ,curl)
5127 ("freetype2" ,freetype)
5128 ("hicolor-icon-theme" ,hicolor-icon-theme)
5129 ("libxcursor" ,libxcursor)
5130 ("libxinerama", libxinerama)
5131 ("jack", jack-1)
5132 ("mesa" ,mesa)))
5133 (native-inputs
5134 `(("pkg-config" ,pkg-config)
5135 ("lv2", lv2)))
5136 (home-page "https://tytel.org/helm/")
5137 (synopsis "Polyphonic synth with lots of modulation")
5138 (description "Helm is a cross-platform polyphonic synthesizer available standalone
5139and as an LV2 plugin.")
5140 (license license:gpl3+)))
93f4511e
AT
5141
5142(define-public zrythm
5143 (package
5144 (name "zrythm")
6a428d45 5145 (version "0.7.474")
93f4511e
AT
5146 (source
5147 (origin
5148 (method url-fetch)
5149 (uri (string-append "https://www.zrythm.org/releases/zrythm-"
5150 version ".tar.xz"))
5151 (sha256
5152 (base32
6a428d45 5153 "0qq9v8y27zhamcb7nq7pl76874ws8x8cxhp5r685b8binvl9p0az"))))
93f4511e
AT
5154 (build-system meson-build-system)
5155 (arguments
5156 `(#:glib-or-gtk? #t
5157 #:configure-flags
5158 `("-Denable_tests=true" "-Dmanpage=true"
6a428d45
AT
5159 "-Dinstall_dseg_font=false" "-Denable_ffmpeg=true")
5160 #:phases
5161 (modify-phases %standard-phases
5162 (add-after 'unpack 'patch-xdg-open
5163 (lambda _
5164 (substitute* "src/utils/io.c"
5165 (("OPEN_DIR_CMD")
5166 (string-append "\"" (which "xdg-open") "\"")))
5167 #t)))))
93f4511e
AT
5168 (inputs
5169 `(("alsa-lib" ,alsa-lib)
5170 ("jack" ,jack-1)
5171 ("font-dseg", font-dseg)
5172 ("ffmpeg", ffmpeg)
5173 ("fftw", fftw)
5174 ("fftwf", fftwf)
5175 ("gettext", gettext-minimal)
5176 ("glibc", glibc)
5177 ("gtk+", gtk+)
5178 ("libsamplerate" ,libsamplerate)
5179 ("libsndfile" ,libsndfile)
5180 ("libyaml" ,libyaml)
5181 ("lilv", lilv)
5182 ("xdg-utils", xdg-utils)
5183 ("rubberband", rubberband)))
5184 (native-inputs
5185 `(("pkg-config", pkg-config)
5186 ("help2man", help2man)
5187 ("libaudec" ,libaudec)
5188 ("lv2", lv2)
5189 ("glib" ,glib "bin"))) ;for 'glib-compile-resources'
5190 (synopsis "Digital audio workstation focusing on usability")
5191 (description "Zrythm is a digital audio workstation designed to be
5192featureful and easy to use. It offers unlimited automation options, LV2
5193plugin support, JACK support and chord assistance.")
5194 (home-page "https://www.zrythm.org")
5195 (license license:agpl3+)))