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