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