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