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