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