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