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