gnu: drumstick: Remove unused ‘-DLIB_SUFFIX=’.
[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 ;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
38 ;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot>
39 ;;;
40 ;;; This file is part of GNU Guix.
41 ;;;
42 ;;; GNU Guix is free software; you can redistribute it and/or modify it
43 ;;; under the terms of the GNU General Public License as published by
44 ;;; the Free Software Foundation; either version 3 of the License, or (at
45 ;;; your option) any later version.
46 ;;;
47 ;;; GNU Guix is distributed in the hope that it will be useful, but
48 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
49 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
50 ;;; GNU General Public License for more details.
51 ;;;
52 ;;; You should have received a copy of the GNU General Public License
53 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
54
55 (define-module (gnu packages music)
56 #:use-module (guix utils)
57 #:use-module (guix packages)
58 #:use-module (guix download)
59 #:use-module (guix git-download)
60 #:use-module ((guix licenses) #:prefix license:)
61 #:use-module (guix build-system gnu)
62 #:use-module (guix build-system ant)
63 #:use-module (guix build-system cmake)
64 #:use-module (guix build-system meson)
65 #:use-module (guix build-system perl)
66 #:use-module (guix build-system python)
67 #:use-module (guix build-system scons)
68 #:use-module (guix build-system glib-or-gtk)
69 #:use-module (guix build-system waf)
70 #:use-module (guix build-system trivial)
71 #:use-module (guix build-system go)
72 #:use-module (gnu packages)
73 #:use-module (gnu packages admin)
74 #:use-module (gnu packages algebra)
75 #:use-module (gnu packages apr)
76 #:use-module (gnu packages audio)
77 #:use-module (gnu packages autotools)
78 #:use-module (gnu packages backup)
79 #:use-module (gnu packages base) ;libbdf
80 #:use-module (gnu packages bash)
81 #:use-module (gnu packages bison)
82 #:use-module (gnu packages boost)
83 #:use-module (gnu packages build-tools)
84 #:use-module (gnu packages cdrom)
85 #:use-module (gnu packages code)
86 #:use-module (gnu packages check)
87 #:use-module (gnu packages cmake)
88 #:use-module (gnu packages compression)
89 #:use-module (gnu packages cpp)
90 #:use-module (gnu packages crypto)
91 #:use-module (gnu packages curl)
92 #:use-module (gnu packages cyrus-sasl)
93 #:use-module (gnu packages datastructures)
94 #:use-module (gnu packages docbook)
95 #:use-module (gnu packages documentation)
96 #:use-module (gnu packages emacs)
97 #:use-module (gnu packages file)
98 #:use-module (gnu packages flex)
99 #:use-module (gnu packages fltk)
100 #:use-module (gnu packages fonts)
101 #:use-module (gnu packages fontutils)
102 #:use-module (gnu packages freedesktop)
103 #:use-module (gnu packages game-development)
104 #:use-module (gnu packages gcc)
105 #:use-module (gnu packages gnupg)
106 #:use-module (gnu packages gettext)
107 #:use-module (gnu packages ghostscript)
108 #:use-module (gnu packages gl)
109 #:use-module (gnu packages glib)
110 #:use-module (gnu packages gnome)
111 #:use-module (gnu packages gpodder)
112 #:use-module (gnu packages graphics)
113 #:use-module (gnu packages graphviz)
114 #:use-module (gnu packages gstreamer)
115 #:use-module (gnu packages gtk)
116 #:use-module (gnu packages guile)
117 #:use-module (gnu packages haskell)
118 #:use-module (gnu packages image)
119 #:use-module (gnu packages imagemagick)
120 #:use-module (gnu packages java)
121 #:use-module (gnu packages libffi)
122 #:use-module (gnu packages libusb)
123 #:use-module (gnu packages linux) ; for alsa-utils
124 #:use-module (gnu packages lirc)
125 #:use-module (gnu packages llvm)
126 #:use-module (gnu packages man)
127 #:use-module (gnu packages mp3)
128 #:use-module (gnu packages mpd)
129 #:use-module (gnu packages ncurses)
130 #:use-module (gnu packages netpbm)
131 #:use-module (gnu packages pcre)
132 #:use-module (gnu packages pdf)
133 #:use-module (gnu packages perl)
134 #:use-module (gnu packages perl-web)
135 #:use-module (gnu packages pkg-config)
136 #:use-module (gnu packages protobuf)
137 #:use-module (gnu packages pulseaudio) ;libsndfile
138 #:use-module (gnu packages python)
139 #:use-module (gnu packages python-web)
140 #:use-module (gnu packages python-xyz)
141 #:use-module (gnu packages qt)
142 #:use-module (gnu packages rdf)
143 #:use-module (gnu packages readline)
144 #:use-module (gnu packages rsync)
145 #:use-module (gnu packages sdl)
146 #:use-module (gnu packages sqlite)
147 #:use-module (gnu packages stb)
148 #:use-module (gnu packages tcl)
149 #:use-module (gnu packages texinfo)
150 #:use-module (gnu packages tex)
151 #:use-module (gnu packages time)
152 #:use-module (gnu packages tls)
153 #:use-module (gnu packages version-control)
154 #:use-module (gnu packages video)
155 #:use-module (gnu packages vim) ;for 'xxd'
156 #:use-module (gnu packages web)
157 #:use-module (gnu packages webkit)
158 #:use-module (gnu packages wxwidgets)
159 #:use-module (gnu packages xdisorg)
160 #:use-module (gnu packages xml)
161 #:use-module (gnu packages xorg)
162 #:use-module (gnu packages xiph)
163 #:use-module (gnu packages golang)
164 #:use-module (gnu packages lua)
165 #:use-module ((srfi srfi-1) #:select (last)))
166
167 (define-public audacious
168 (package
169 (name "audacious")
170 (version "4.0.5")
171 (source
172 (origin
173 (method url-fetch)
174 (uri (string-append "https://distfiles.audacious-media-player.org/"
175 "audacious-" version ".tar.bz2"))
176 (sha256
177 (base32 "028zjgz0p7ys15lk2a30m5zcv9xrx3ga50wjsh4m4zxilgkakbji"))))
178 (build-system gnu-build-system)
179 (arguments
180 `(#:configure-flags
181 (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib"))
182 #:tests? #f ; no check target
183 #:phases
184 (modify-phases %standard-phases
185 (add-after 'install 'unpack-plugins
186 (lambda* (#:key inputs #:allow-other-keys)
187 (let ((plugins (assoc-ref inputs "audacious-plugins")))
188 (invoke "tar" "xvf" plugins)
189 #t)))
190 (add-after 'unpack-plugins 'configure-plugins
191 (lambda* (#:key configure-flags outputs #:allow-other-keys)
192 (let ((out (assoc-ref outputs "out")))
193 (with-directory-excursion
194 (string-append "audacious-plugins-" ,version)
195 (substitute* "configure"
196 (("/bin/sh") (which "sh")))
197 (apply invoke "./configure"
198 (append configure-flags
199 ;; audacious-plugins requires audacious to build.
200 (list (string-append "PKG_CONFIG_PATH="
201 out "/lib/pkgconfig:"
202 (getenv "PKG_CONFIG_PATH"))
203 (string-append "--prefix=" out))))))))
204 (add-after 'configure-plugins 'build-plugins
205 (lambda _
206 (with-directory-excursion
207 (string-append "audacious-plugins-" ,version)
208 (invoke "make" "-j" (number->string (parallel-job-count))))))
209 (add-after 'build-plugins 'install-plugins
210 (lambda _
211 (with-directory-excursion
212 (string-append "audacious-plugins-" ,version)
213 (invoke "make" "install")))))))
214 (native-inputs
215 `(("audacious-plugins"
216 ,(origin
217 (method url-fetch)
218 (uri (string-append "https://distfiles.audacious-media-player.org/"
219 "audacious-plugins-" version ".tar.bz2"))
220 (sha256
221 (base32 "0ny5w1agr9jaz5w3wyyxf1ygmzmd1sivaf97lcm4z4w6529520lz"))))
222 ("gettext" ,gettext-minimal)
223 ("glib:bin" ,glib "bin") ; for gdbus-codegen
224 ("pkg-config" ,pkg-config)))
225 (inputs
226 `(("dbus" ,dbus)
227 ("qtbase" ,qtbase)
228 ("qtmultimedia" ,qtmultimedia)
229 ;; Plugin dependencies
230 ("alsa-lib" ,alsa-lib)
231 ("curl" ,curl)
232 ("faad2" ,faad2)
233 ("ffmpeg" ,ffmpeg)
234 ("flac" ,flac)
235 ("fluidsynth" ,fluidsynth)
236 ("lame" ,lame)
237 ("libbs2b" ,libbs2b)
238 ("libcddb" ,libcddb)
239 ("libcdio-paranoia" ,libcdio-paranoia)
240 ("libcue" ,libcue)
241 ("libmodplug" ,libmodplug)
242 ("libnotify" ,libnotify)
243 ("libogg" ,libogg)
244 ("libsamplerate" ,libsamplerate)
245 ("libsndfile" ,libsndfile)
246 ("libvorbis" ,libvorbis)
247 ("libxcomposite" ,libxcomposite)
248 ("libxml2" ,libxml2)
249 ("libxrender" ,libxrender)
250 ("lirc" ,lirc)
251 ("jack" ,jack-1)
252 ("mesa" ,mesa)
253 ("mpg123" ,mpg123)
254 ("neon" ,neon)
255 ("pulseaudio" ,pulseaudio)
256 ("sdl2" ,sdl2)
257 ("soxr" ,soxr)
258 ("wavpack" ,wavpack)))
259 (home-page "https://audacious-media-player.org")
260 (synopsis "Modular and skinnable audio player")
261 (description
262 "Audacious is an audio player descended from XMMS. Drag and drop
263 folders and individual song files, search for artists and albums in
264 your entire music library, or create and edit your own custom
265 playlists. Listen to CD’s or stream music from the Internet. Tweak
266 the sound with the graphical equalizer or experiment with LADSPA
267 effects. Enjoy the modern GTK-themed interface or change things up
268 with Winamp Classic skins. Use the plugins included with Audacious to
269 fetch lyrics for your music, to set an alarm in the morning, and
270 more.")
271 ;; According to COPYING, Audacious and its plugins are licensed
272 ;; under the BSD 2-clause license and libguess is licensed under
273 ;; the BSD 3-clause license.
274 (license (list license:bsd-2
275 license:bsd-3
276 ;; Plugin licenses that aren't BSD 2- or 3-clause.
277 license:lgpl2.1
278 license:gpl2
279 license:gpl3
280 license:expat
281 license:isc
282 license:lgpl2.0))))
283
284 (define-public aria-maestosa
285 (package
286 (name "aria-maestosa")
287 (version "1.4.13")
288 (source (origin
289 (method url-fetch)
290 (uri (string-append "mirror://sourceforge/ariamaestosa/ariamaestosa/"
291 version "/AriaSrc-" version ".tar.bz2"))
292 (sha256
293 (base32
294 "1cs3z6frx2ch7rm5ammx9p0rxcjrbj1vq14hvcbimpaw39rdsn3d"))))
295 (build-system scons-build-system)
296 (arguments
297 `(#:tests? #f ;no tests
298 #:scons-flags
299 (list (string-append "prefix=" (assoc-ref %outputs "out")))
300 #:scons ,scons-python2
301 #:phases
302 (modify-phases %standard-phases
303 (delete 'configure)
304 (add-after 'unpack 'scons-propagate-environment
305 (lambda _
306 ;; By design, SCons does not, by default, propagate
307 ;; environment variables to subprocesses. See:
308 ;; <http://comments.gmane.org/gmane.linux.distributions.nixos/4969>
309 ;; Here, we modify the SConstruct file to arrange for
310 ;; environment variables to be propagated.
311 (substitute* "SConstruct"
312 (("env = Environment\\(\\)")
313 "env = Environment(ENV=os.environ)")
314 ;; Scons errors out when copying subdirectories from Resources,
315 ;; so we move them instead.
316 (("Copy") "Move")
317 ;; We move the "score" and "Documentation" directories at once,
318 ;; so we have to ignore files contained therein.
319 (("if \".svn\" in file" line)
320 (string-append line
321 " or \"score/\" in file"
322 " or \"Documentation/\" in file")))
323 #t))
324 (add-after 'install 'fix-directory-permissions
325 (lambda* (#:key outputs #:allow-other-keys)
326 (let ((out (assoc-ref outputs "out")))
327 (chmod (string-append out "/share/Aria/Documentation") #o555)
328 (chmod (string-append out "/share/Aria/score") #o555)
329 #t))))))
330 (inputs
331 `(("wxwidgets" ,wxwidgets)
332 ("glib" ,glib)
333 ("alsa-lib" ,alsa-lib)))
334 (native-inputs
335 `(("pkg-config" ,pkg-config)))
336 (home-page "http://ariamaestosa.sourceforge.net/")
337 (synopsis "MIDI sequencer and editor")
338 (description
339 "Aria Maestosa is a MIDI sequencer and editor. It lets you compose, edit
340 and play MIDI files with a few clicks in a user-friendly interface offering
341 score, keyboard, guitar, drum and controller views.")
342 (license license:gpl3+)))
343
344 (define-public clementine
345 (package
346 (name "clementine")
347 (version "1.4.0rc1-450-g2725ef99d")
348 (source (origin
349 (method git-fetch)
350 (uri (git-reference
351 (url "https://github.com/clementine-player/Clementine")
352 (commit version)))
353 (file-name (git-file-name name version))
354 (sha256
355 (base32
356 "1pcwwi9b2qcfjn748577gqx6d1hgg7cisw2dn43npwafdvvkdb90"))
357 (modules '((guix build utils)
358 (ice-9 regex)))
359 (snippet
360 '(begin
361 (use-modules ((ice-9 regex)))
362 (for-each
363 (lambda (dir)
364 ;; TODO: The following dependencies are still bundled:
365 ;; - "qxt": Appears to be unmaintained upstream.
366 ;; - "qsqlite"
367 ;; - "qtsingleapplication"
368 ;; - "qocoa"
369 ;; - "qtiocompressor"
370 (let ((bundled '("qsqlite"
371 "qtsingleapplication"
372 "qxt"
373 "qocoa"
374 "qtiocompressor")))
375 (if (not
376 (string-match
377 (string-append ".?*(" (string-join bundled "|") ")")
378 dir))
379 (delete-file-recursively dir))))
380 (find-files "3rdparty"
381 (lambda (file stat)
382 (string-match "^3rdparty/[^/]*$" file))
383 #:directories? #t))
384 #t))))
385 (build-system cmake-build-system)
386 (arguments
387 '(#:test-target "clementine_test"
388 #:configure-flags
389 (list ;; Requires unpackaged "projectm"
390 "-DENABLE_VISUALISATIONS=OFF"
391 ;; Otherwise it may try to download a non-free library at run-time.
392 ;; TODO In an origin snippet, remove the code that performs the
393 ;; download.
394 "-DHAVE_SPOTIFY_DOWNLOADER=FALSE"
395 ;; Clementine checks that the taglib version is higher than 1.11,
396 ;; because of https://github.com/taglib/taglib/issues/864. Remove
397 ;; this flag when 1.12 is released.
398 "-DUSE_SYSTEM_TAGLIB=TRUE")
399 #:phases
400 (modify-phases %standard-phases
401 (add-after 'install 'wrap-program
402 (lambda* (#:key inputs outputs #:allow-other-keys)
403 (let ((out (assoc-ref outputs "out"))
404 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
405 (wrap-program (string-append out "/bin/clementine")
406 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path)))
407 #t))))))
408 (native-inputs
409 `(("gettext" ,gettext-minimal)
410 ("googletest" ,googletest)
411 ("pkg-config" ,pkg-config)
412 ("qtlinguist" ,qttools)))
413 (inputs
414 `(("boost" ,boost)
415 ("chromaprint" ,chromaprint)
416 ("fftw" ,fftw)
417 ("glib" ,glib)
418 ("glu" ,glu)
419 ("gstreamer" ,gstreamer)
420 ("gst-plugins-base" ,gst-plugins-base)
421 ("gst-plugins-good" ,gst-plugins-good)
422 ("gst-libav" ,gst-libav)
423 ("libcdio" ,libcdio)
424 ("libmygpo-qt" ,libmygpo-qt)
425 ;; TODO: Package libgpod.
426 ("libmtp" ,libmtp)
427 ("libxml2" ,libxml2)
428 ("protobuf" ,protobuf)
429 ("pulseaudio" ,pulseaudio)
430 ("qtbase" ,qtbase)
431 ("qtx11extras" ,qtx11extras)
432 ("sqlite" ,sqlite)
433 ("sparsehash" ,sparsehash)
434 ("taglib" ,taglib)))
435 (home-page "https://clementine-player.org")
436 (synopsis "Music player and library organizer")
437 (description "Clementine is a multiplatform music player. It is inspired
438 by Amarok 1.4, focusing on a fast and easy-to-use interface for searching and
439 playing your music.")
440 (license (list
441 ;; clementine and qtiocompressor are under GPLv3.
442 license:gpl3+
443 ;; qxt is under CPL1.0.
444 license:cpl1.0
445 ;; qsqlite and qtsingleapplication are under LGPL2.1+.
446 license:lgpl2.1+
447 ;; qocoa is under MIT and CC by-sa for the icons.
448 license:cc-by-sa3.0))))
449
450 (define-public strawberry
451 (package
452 (name "strawberry")
453 (version "0.9.2")
454 (source (origin
455 (method git-fetch)
456 (uri (git-reference
457 (url "https://github.com/strawberrymusicplayer/strawberry")
458 (commit version)))
459 (file-name (git-file-name name version))
460 (sha256
461 (base32
462 "0d9asg21j9ai23sb35cimws8bd8fsnpha777rgscraa7i09q0rx2"))
463 (modules '((guix build utils)
464 (ice-9 regex)))
465 (snippet
466 '(begin
467 (use-modules ((ice-9 regex)))
468 (for-each
469 (lambda (dir)
470 ;; TODO: The following dependencies are still bundled:
471 ;; - "singleapplication"
472 (let ((bundled '("singleapplication")))
473 (if (not
474 (string-match
475 (string-append ".?*(" (string-join bundled "|") ")")
476 dir))
477 (delete-file-recursively dir))))
478 (find-files "3rdparty"
479 (lambda (file stat)
480 (string-match "^3rdparty/[^/]*$" file))
481 #:directories? #t))
482 #t))))
483 (build-system cmake-build-system)
484 (arguments
485 `(#:test-target "run_strawberry_tests"
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.21")
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 "1ym7kns7hfgxdwm2nzvpdm5vjxpkwb9dssjiic6rrpicv1p2v59m"))))
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.21")
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 "1kz8hcpzhrkvxpah6irz5gbah4m7knjhi4rk5hs1kwiikn7p6vgk"))))
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.21")
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 "0s28l8vp9b85s4bdm18qm57dh8dx8rx7659r05p44828g4053ipl"))))
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 #:phases
2654 (modify-phases %standard-phases
2655 (add-before 'configure 'fix-docbook
2656 (lambda* (#:key inputs #:allow-other-keys)
2657 (substitute* "cmake_admin/CreateManpages.cmake"
2658 (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
2659 (string-append (assoc-ref inputs "docbook-xsl")
2660 "/xml/xsl/docbook-xsl-"
2661 ,(package-version docbook-xsl)
2662 "/manpages/docbook.xsl")))
2663 #t)))))
2664 (inputs
2665 `(("qtbase" ,qtbase)
2666 ("qtsvg" ,qtsvg)
2667 ("qttools" ,qttools)
2668 ("alsa-lib" ,alsa-lib)))
2669 (native-inputs
2670 `(("pkg-config" ,pkg-config)
2671 ("libxslt" ,libxslt) ; for xsltproc
2672 ("docbook-xsl" ,docbook-xsl)
2673 ("doxygen" ,doxygen)
2674 ("graphviz" ,graphviz))) ; for dot
2675 (home-page "http://drumstick.sourceforge.net/")
2676 (synopsis "C++ MIDI library")
2677 (description
2678 "Drumstick is a set of MIDI libraries using C++/Qt5 idioms and style. It
2679 includes a C++ wrapper around the ALSA library sequencer interface. A
2680 complementary library provides classes for processing SMF (Standard MIDI
2681 files: .MID/.KAR), Cakewalk (.WRK), and Overture (.OVE) file formats. A
2682 multiplatform realtime MIDI I/O library is also provided with various output
2683 backends, including ALSA, OSS, Network and FluidSynth.")
2684 (license license:gpl2+)))
2685
2686 (define-public vmpk
2687 (package
2688 (name "vmpk")
2689 (version "0.8.0")
2690 (source (origin
2691 (method url-fetch)
2692 (uri (string-append "mirror://sourceforge/vmpk/vmpk/"
2693 version "/vmpk-" version ".tar.bz2"))
2694 (sha256
2695 (base32
2696 "0wn45c4sbvan7schq93zmsgg5fcf144mbbawxn5kq699vrbc3473"))))
2697 (build-system cmake-build-system)
2698 (arguments
2699 `(#:tests? #f ; no test target
2700 #:phases
2701 (modify-phases %standard-phases
2702 (add-before 'configure 'fix-docbook
2703 (lambda* (#:key inputs #:allow-other-keys)
2704 (substitute* "cmake_admin/CreateManpages.cmake"
2705 (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
2706 (string-append (assoc-ref inputs "docbook-xsl")
2707 "/xml/xsl/docbook-xsl-"
2708 ,(package-version docbook-xsl)
2709 "/manpages/docbook.xsl")))
2710 #t)))))
2711 (inputs
2712 `(("drumstick" ,drumstick)
2713 ("qtbase" ,qtbase)
2714 ("qtsvg" ,qtsvg)
2715 ("qtx11extras" ,qtx11extras)))
2716 (native-inputs
2717 `(("libxslt" ,libxslt) ;for xsltproc
2718 ("docbook-xsl" ,docbook-xsl)
2719 ("qttools" ,qttools)
2720 ("pkg-config" ,pkg-config)))
2721 (home-page "https://vmpk.sourceforge.io/")
2722 (synopsis "Virtual MIDI piano keyboard")
2723 (description
2724 "Virtual MIDI Piano Keyboard is a MIDI events generator and receiver. It
2725 doesn't produce any sound by itself, but can be used to drive a MIDI
2726 synthesizer (either hardware or software, internal or external). You can use
2727 the computer's keyboard to play MIDI notes, and also the mouse. You can use
2728 the Virtual MIDI Piano Keyboard to display the played MIDI notes from another
2729 instrument or MIDI file player.")
2730 (license license:gpl3+)))
2731
2732 (define-public zynaddsubfx
2733 (package
2734 (name "zynaddsubfx")
2735 (version "3.0.5")
2736 (source (origin
2737 (method url-fetch)
2738 (uri (string-append
2739 "mirror://sourceforge/zynaddsubfx/zynaddsubfx/"
2740 version "/zynaddsubfx-" version ".tar.bz2"))
2741 (sha256
2742 (base32
2743 "0qwzg14h043rmyf9jqdylxhyfy4sl0vsr0gjql51wjhid0i34ivl"))))
2744 (build-system cmake-build-system)
2745 (arguments
2746 `(#:phases
2747 (modify-phases %standard-phases
2748 ;; Move SSE compiler optimization flags from generic target to
2749 ;; athlon64 and core2 targets, because otherwise the build would fail
2750 ;; on non-Intel machines.
2751 (add-after 'unpack 'remove-sse-flags-from-generic-target
2752 (lambda _
2753 (substitute* "src/CMakeLists.txt"
2754 (("-msse -msse2 -mfpmath=sse") "")
2755 (("-march=(athlon64|core2)" flag)
2756 (string-append flag " -msse -msse2 -mfpmath=sse")))
2757 #t)))))
2758 (inputs
2759 `(("liblo" ,liblo)
2760 ("ntk" ,ntk)
2761 ("mesa" ,mesa)
2762 ("alsa-lib" ,alsa-lib)
2763 ("jack" ,jack-1)
2764 ("fftw" ,fftw)
2765 ("minixml" ,minixml)
2766 ("libxpm" ,libxpm)
2767 ("zlib" ,zlib)))
2768 (native-inputs
2769 `(("pkg-config" ,pkg-config)))
2770 (home-page "http://zynaddsubfx.sf.net/")
2771 (synopsis "Software synthesizer")
2772 (description
2773 "ZynAddSubFX is a feature heavy realtime software synthesizer. It offers
2774 three synthesizer engines, multitimbral and polyphonic synths, microtonal
2775 capabilities, custom envelopes, effects, etc.")
2776 (license license:gpl2)))
2777
2778 (define-public yoshimi
2779 (package
2780 (name "yoshimi")
2781 (version "1.7.4")
2782 (source
2783 (origin
2784 (method url-fetch)
2785 (uri (string-append "mirror://sourceforge/yoshimi/"
2786 (version-major+minor version)
2787 "/yoshimi-" version ".tar.bz2"))
2788 (sha256
2789 (base32 "0lxfqj4p4njww3n0wa6yfj38zfls16y3wszd47gvc5asmqyg5vjd"))))
2790 (build-system cmake-build-system)
2791 (arguments
2792 `(#:tests? #f ; there are no tests
2793 #:configure-flags
2794 (list (string-append "-DCMAKE_INSTALL_DATAROOTDIR="
2795 (assoc-ref %outputs "out") "/share"))
2796 #:phases
2797 (modify-phases %standard-phases
2798 (add-before 'configure 'enter-dir
2799 (lambda _ (chdir "src") #t))
2800 ;; Move SSE compiler optimization flags from generic target to
2801 ;; athlon64 and core2 targets, because otherwise the build would fail
2802 ;; on non-Intel machines.
2803 (add-after 'unpack 'remove-sse-flags-from-generic-target
2804 (lambda _
2805 (substitute* "src/CMakeLists.txt"
2806 (("-msse -msse2 -mfpmath=sse") "")
2807 (("-march=(athlon64|core2)" flag)
2808 (string-append flag " -msse -msse2 -mfpmath=sse")))
2809 #t)))))
2810 (inputs
2811 `(("boost" ,boost)
2812 ("fftwf" ,fftwf)
2813 ("alsa-lib" ,alsa-lib)
2814 ("jack" ,jack-1)
2815 ("fontconfig" ,fontconfig)
2816 ("minixml" ,minixml)
2817 ("mesa" ,mesa)
2818 ("fltk" ,fltk)
2819 ("lv2" ,lv2)
2820 ("readline" ,readline)
2821 ("ncurses" ,ncurses)
2822 ("cairo" ,cairo)
2823 ("zlib" ,zlib)))
2824 (native-inputs
2825 `(("pkg-config" ,pkg-config)))
2826 (home-page "http://yoshimi.sourceforge.net/")
2827 (synopsis "Multi-paradigm software synthesizer")
2828 (description
2829 "Yoshimi is a fork of ZynAddSubFX, a feature-heavy real-time software
2830 synthesizer. It offers three synthesizer engines, multitimbral and polyphonic
2831 synths, microtonal capabilities, custom envelopes, effects, etc. Yoshimi
2832 improves on support for JACK features, such as JACK MIDI.")
2833 (license license:gpl2)))
2834
2835 (define-public libgig
2836 (package
2837 (name "libgig")
2838 (version "4.2.0")
2839 (source (origin
2840 (method url-fetch)
2841 (uri (string-append "http://download.linuxsampler.org/packages/"
2842 "libgig-" version ".tar.bz2"))
2843 (sha256
2844 (base32
2845 "1zs5yy124bymfyapsnljr6rv2lnn5inwchm0xnwiw44b2d39l8hn"))))
2846 (build-system gnu-build-system)
2847 (inputs
2848 `(("libuuid" ,util-linux "lib")
2849 ("libsndfile" ,libsndfile)))
2850 (native-inputs
2851 `(("pkg-config" ,pkg-config)))
2852 (home-page "https://linuxsampler.org/libgig/")
2853 (synopsis "C++ library for working with Gigasampler (.gig) files")
2854 (description
2855 "Libgig is a C++ library for loading, modifying existing and creating new
2856 Gigasampler (.gig) files and DLS (Downloadable Sounds) Level 1/2 files, KORG
2857 sample based instruments (.KSF and .KMP files), SoundFont v2 (.sf2) files and
2858 AKAI sampler data. The package includes a couple of command line tools based
2859 on the library.")
2860 ;; The library and tools are released under the GPL, except the AKAI
2861 ;; classes which are released under the LGPL.
2862 (license (list license:gpl2+ license:lgpl2.1+))))
2863
2864 (define-public jack-keyboard
2865 (package
2866 (name "jack-keyboard")
2867 (version "2.5")
2868 (source
2869 (origin
2870 (method url-fetch)
2871 (uri (string-append "mirror://sourceforge/jack-keyboard/jack-keyboard/"
2872 version "/jack-keyboard-" version ".tar.gz"))
2873 (sha256
2874 (base32
2875 "0mzmg8aavybcfdlq2yd9d0vscqd6is5p6jzrgfpfm5j3xdcvh2s3"))))
2876 (build-system gnu-build-system)
2877 (inputs
2878 `(("jack" ,jack-1)
2879 ("lash" ,lash)
2880 ("gtk+" ,gtk+-2)))
2881 (native-inputs
2882 `(("pkg-config" ,pkg-config)))
2883 (home-page "http://jack-keyboard.sourceforge.net/")
2884 (synopsis "Virtual MIDI keyboard")
2885 (description "Jack-keyboard is a virtual MIDI keyboard, a program that
2886 allows you to send JACK MIDI events (i.e. play) using your PC keyboard.")
2887 (license license:bsd-2)))
2888
2889 (define-public jack-capture
2890 (package
2891 (name "jack-capture")
2892 (version "0.9.73")
2893 (source (origin
2894 (method git-fetch)
2895 (uri (git-reference
2896 (url "https://github.com/kmatheussen/jack_capture")
2897 (commit version)))
2898 (file-name (string-append name "-" version "-checkout"))
2899 (sha256
2900 (base32
2901 "0jcqky96q8xgya6wqv1p8pj9fkf2wh7ynl67ah7x5bn3basgfclf"))))
2902 (build-system gnu-build-system)
2903 (arguments
2904 `(#:make-flags
2905 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
2906 #:tests? #f ; there are none
2907 #:phases
2908 (modify-phases %standard-phases
2909 (delete 'configure))))
2910 (native-inputs
2911 `(("pkg-config" ,pkg-config)
2912 ("which" ,which)))
2913 (inputs
2914 `(("gtk+" ,gtk+-2)
2915 ("jack" ,jack-1)
2916 ("libogg" ,libogg)
2917 ("liblo" ,liblo)
2918 ("lame" ,lame)
2919 ("libsndfile" ,libsndfile)))
2920 (home-page "https://github.com/kmatheussen/jack_capture")
2921 (synopsis "Program for recording sound files with JACK")
2922 (description "This is a program for recording sound files with JACK. It
2923 can connect to any JACK port and record the output into a stereo WAV file.")
2924 (license license:gpl2+)))
2925
2926 (define-public jack-select
2927 (package
2928 (name "jack-select")
2929 (version "1.5.0")
2930 (source (origin
2931 (method url-fetch)
2932 (uri (pypi-uri "jack-select" version))
2933 (sha256
2934 (base32
2935 "1zijk9ly2fczxsnnrqr8s0ajmlyx1j1vd8gk0rm5dj5zyhhmia7f"))))
2936 (build-system gnu-build-system)
2937 (arguments
2938 `(#:modules ((guix build gnu-build-system)
2939 ((guix build python-build-system) #:prefix python:)
2940 (guix build utils))
2941 #:imported-modules (,@%gnu-build-system-modules
2942 (guix build python-build-system))
2943 #:make-flags
2944 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
2945 #:tests? #f ; there are none
2946 #:phases
2947 (modify-phases %standard-phases
2948 (replace 'configure
2949 (lambda* (#:key inputs #:allow-other-keys)
2950 ;; python-dbus cannot be found but it's really there. See
2951 ;; https://github.com/SpotlightKid/jack-select/issues/2
2952 (substitute* "setup.py"
2953 (("'dbus-python',") ""))
2954 ;; Fix reference to dlopened libraries.
2955 (substitute* "jackselect/alsainfo.py"
2956 (("libasound.so.2")
2957 (string-append (assoc-ref inputs "alsa-lib")
2958 "/lib/libasound.so.2")))
2959 #t))
2960 (replace 'build
2961 (assoc-ref python:%standard-phases 'build))
2962 (add-after 'install 'wrap
2963 (assoc-ref python:%standard-phases 'wrap)))))
2964 (native-inputs
2965 `(("pkg-config" ,pkg-config)))
2966 (inputs
2967 `(("alsa-lib" ,alsa-lib)
2968 ("python" ,python-wrapper)
2969 ("python-pyudev" ,python-pyudev)
2970 ("python-pyxdg" ,python-pyxdg)
2971 ("python-dbus" ,python-dbus)
2972 ("python-pygobject" ,python-pygobject)))
2973 (home-page "https://github.com/SpotlightKid/jack-select")
2974 (synopsis "Systray application to quickly change the JACK-DBus configuration")
2975 (description "This application displays an icon in the system tray (also
2976 known as notification area) of your desktop, which shows the status of the
2977 JACK audio server and when you click on it, a menu pops up, which lets you
2978 quickly select from the JACK configuration presets you created with QjackCtl.
2979 When you select a preset, its JACK engine and driver configuration settings
2980 are loaded via DBus into JACK and then the server is restarted. This allows
2981 you to switch between different audio setups with just two mouse clicks.")
2982 (license license:expat)))
2983
2984 (define-public cursynth
2985 (package
2986 (name "cursynth")
2987 (version "1.5")
2988 (source
2989 (origin
2990 (method url-fetch)
2991 (uri (string-append "mirror://gnu/cursynth/cursynth-"
2992 version ".tar.gz"))
2993 (sha256
2994 (base32 "1dhphsya41rv8z6yqcv9l6fwbslsds4zh1y56zizi39nd996d40v"))
2995 (patches (search-patches "cursynth-wave-rand.patch"))))
2996 (build-system gnu-build-system)
2997 (native-inputs `(("pkg-config" ,pkg-config)))
2998 ;; TODO: See https://github.com/iyoko/cursynth/issues/4 which currently
2999 ;; prevents us from using pulseaudio
3000 (inputs `(("ncurses" ,ncurses)
3001 ("alsa" ,alsa-lib)))
3002 (home-page "https://www.gnu.org/software/cursynth/")
3003 (synopsis "Polyphonic and MIDI subtractive music synthesizer using curses")
3004 (description "GNU cursynth is a polyphonic synthesizer that runs
3005 graphically in the terminal. It is built on a full-featured subtractive
3006 synthesis engine. Notes and parameter changes may be entered via MIDI or the
3007 computer's keyboard.")
3008 (license license:gpl3+)))
3009
3010 (define-public aj-snapshot
3011 (package
3012 (name "aj-snapshot")
3013 (version "0.9.9")
3014 (source (origin
3015 (method url-fetch)
3016 (uri (string-append "mirror://sourceforge/aj-snapshot/"
3017 "aj-snapshot-" version ".tar.bz2"))
3018 (sha256
3019 (base32
3020 "0z8wd5yvxdmw1h1rj6km9h01xd4xmp4d86gczlix7hsc7zrf0wil"))))
3021 (build-system gnu-build-system)
3022 (inputs
3023 `(("minixml" ,minixml)
3024 ("jack" ,jack-1)
3025 ("alsa-lib" ,alsa-lib)))
3026 (native-inputs
3027 `(("pkg-config" ,pkg-config)))
3028 (home-page "http://aj-snapshot.sourceforge.net/")
3029 (synopsis "Snapshot connections between ALSA and JACK clients")
3030 (description "Aj-snapshot is a small program that can be used to make
3031 snapshots of the connections made between JACK and/or ALSA clients. Because
3032 JACK can provide both audio and MIDI support to programs, aj-snapshot can
3033 store both types of connections for JACK. ALSA, on the other hand, only
3034 provides routing facilities for MIDI clients. Aj-snapshot is meant to be used
3035 from the command line.")
3036 (license license:gpl3+)))
3037
3038 (define-public qtractor
3039 (package
3040 (name "qtractor")
3041 (version "0.9.21")
3042 (source (origin
3043 (method url-fetch)
3044 (uri (string-append "https://downloads.sourceforge.net/qtractor/"
3045 "qtractor-" version ".tar.gz"))
3046 (sha256
3047 (base32
3048 "12hn17hqs3jndv6238wj8yhw07n99s0zachab4kfvhwa0qfflsbl"))))
3049 (build-system gnu-build-system)
3050 (arguments
3051 `(#:tests? #f)) ; no "check" target
3052 (inputs
3053 `(("qt" ,qtbase)
3054 ("qtx11extras" ,qtx11extras)
3055 ("alsa-lib" ,alsa-lib)
3056 ("jack" ,jack-1)
3057 ("libsndfile" ,libsndfile)
3058 ("ladspa" ,ladspa)
3059 ("lv2" ,lv2)
3060 ("lilv" ,lilv)
3061 ("suil" ,suil)
3062 ("libsamplerate" ,libsamplerate)
3063 ("libvorbis" ,libvorbis)
3064 ("libmad" ,libmad)
3065 ("rubberband" ,rubberband)
3066 ("liblo" ,liblo)
3067 ("zlib" ,zlib)))
3068 (native-inputs
3069 `(("pkg-config" ,pkg-config)
3070 ("qttools" ,qttools)))
3071 (home-page "https://qtractor.org/")
3072 (synopsis "Audio/MIDI multi-track sequencer")
3073 (description
3074 "Qtractor is an Audio/MIDI multi-track sequencer application. It uses
3075 JACK for audio and ALSA sequencer for MIDI as multimedia infrastructures and
3076 follows a traditional multi-track tape recorder control paradigm.")
3077 (license license:gpl2+)))
3078
3079 (define-public ams-lv2
3080 (package
3081 (name "ams-lv2")
3082 (version "1.2.2")
3083 (source
3084 (origin
3085 (method git-fetch)
3086 (uri (git-reference
3087 (url "https://github.com/blablack/ams-lv2")
3088 (commit (string-append "v" version))))
3089 (file-name (git-file-name name version))
3090 (sha256
3091 (base32 "1lz2mvk4gqsyf92yxd3aaldx0d0qi28h4rnnvsaz4ls0ccqm80nk"))))
3092 (build-system waf-build-system)
3093 (arguments
3094 `(#:phases
3095 (modify-phases %standard-phases
3096 (add-after 'unpack 'remove-sse-flags
3097 (lambda* (#:key system #:allow-other-keys)
3098 (unless (or (string-prefix? "x86_64" system)
3099 (string-prefix? "i686" system))
3100 (substitute* "wscript"
3101 (("'-msse', '-mfpmath=sse', ") "")))
3102 #t)))
3103 #:tests? #f)) ; no tests
3104 (inputs
3105 `(("cairo" ,cairo)
3106 ("fftw" ,fftw)
3107 ("gtk" ,gtk+-2)
3108 ("gtkmm" ,gtkmm-2)
3109 ("lv2" ,lv2)
3110 ("lvtk" ,lvtk)))
3111 (native-inputs
3112 `(("pkg-config" ,pkg-config)))
3113 (home-page "https://github.com/blablack/ams-lv2")
3114 (synopsis "Port of Alsa Modular Synth internal modules into LV2")
3115 (description "This set of LV2 plugins is a port of the internal modules
3116 found in Alsa Modular Synth. These plugins are used to create modular
3117 synthesizers and contain: VCO, VCF, VCA, LFO, slew limiter, envelopes, sample
3118 and hold, etc.")
3119 (license license:gpl2)))
3120
3121 (define-public gxtuner
3122 (package
3123 (name "gxtuner")
3124 (version "2.4")
3125 (source (origin
3126 (method git-fetch)
3127 (uri (git-reference
3128 (url "https://github.com/brummer10/gxtuner")
3129 (commit (string-append "v" version))))
3130 (file-name (git-file-name name version))
3131 (sha256
3132 (base32
3133 "1fxd2akan2njlr7fpkh84830783qhh1gg7yakswqk5dd466dcn96"))))
3134 (build-system gnu-build-system)
3135 (arguments
3136 `(#:make-flags
3137 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
3138 (string-append "INCLUDE_L_DIR="
3139 (assoc-ref %build-inputs "zita-resampler")
3140 "/include/"))
3141 #:phases
3142 (modify-phases %standard-phases
3143 (delete 'configure))))
3144 (inputs
3145 `(("gtk+" ,gtk+)
3146 ("jack" ,jack-1)
3147 ("fftwf" ,fftwf)
3148 ("cairo" ,cairo)
3149 ("zita-resampler" ,zita-resampler)))
3150 (native-inputs
3151 `(("pkg-config" ,pkg-config)))
3152 (home-page "https://github.com/brummer10/gxtuner")
3153 (synopsis "Guitar tuner")
3154 (description "GXtuner is a simple guitar tuner for JACK with an
3155 analogue-like user interface.")
3156 (license license:gpl2+)))
3157
3158 (define-public mod-host
3159 ;; The last release was in 2014 but since then hundreds of commits have
3160 ;; been made.
3161 (let ((commit "1726ad06b11323da7e1aaed690ff8aef91f702b5")
3162 (revision "3"))
3163 (package
3164 (name "mod-host")
3165 (version (string-append "0.10.6-" revision "." (string-take commit 9)))
3166 (source (origin
3167 (method git-fetch)
3168 (uri (git-reference
3169 (url "https://github.com/moddevices/mod-host")
3170 (commit commit)))
3171 (sha256
3172 (base32
3173 "1nrd37c35w6z6ldczgrwmmd9hx1n3zyvcjcgb3mi4cygqdanvspv"))
3174 (file-name (string-append name "-" version "-checkout"))))
3175 (build-system gnu-build-system)
3176 (arguments
3177 `(#:tests? #f ; no tests included
3178 #:make-flags
3179 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
3180 "CC=gcc")
3181 #:phases
3182 (modify-phases %standard-phases
3183 (delete 'configure)
3184 (add-after 'unpack 'fix-jack-installation-directory
3185 (lambda _
3186 ;; Do not attempt to install files to output of "jack" package.
3187 (substitute* "Makefile"
3188 (("\\$\\(shell pkg-config --variable=libdir jack\\)")
3189 "lib"))
3190 #t)))))
3191 (inputs
3192 `(("lilv" ,lilv)
3193 ("fftw" ,fftw)
3194 ("fftwf" ,fftwf)
3195 ("lv2" ,lv2)
3196 ("jack" ,jack-1)
3197 ("readline" ,readline)))
3198 (native-inputs
3199 `(("pkg-config" ,pkg-config)
3200 ("python" ,python-2)))
3201 (home-page "https://github.com/moddevices/mod-host")
3202 (synopsis "LV2 host for Jack controllable via socket or command line")
3203 (description "mod-host is an LV2 plugin host for JACK, controllable via
3204 socket or command line.")
3205 (license license:gpl3+))))
3206
3207 (define-public curseradio
3208 (let ((commit "1bd4bd0faeec675e0647bac9a100b526cba19f8d")
3209 (revision "1"))
3210 (package
3211 (name "curseradio")
3212 (version (git-version "0" revision commit))
3213 (source (origin
3214 (method git-fetch)
3215 (uri (git-reference
3216 (url "https://github.com/chronitis/curseradio")
3217 (commit commit)))
3218 (file-name (git-file-name name version))
3219 (sha256
3220 (base32
3221 "11bf0jnj8h2fxhpdp498189r4s6b47vy4wripv0z4nx7lxajl88i"))))
3222 (build-system python-build-system)
3223 (arguments
3224 `(#:phases
3225 (modify-phases %standard-phases
3226 (add-after 'unpack 'link-to-mpv
3227 (lambda* (#:key inputs #:allow-other-keys)
3228 (substitute* "curseradio/curseradio.py"
3229 (("/usr/bin/mpv")
3230 (string-append (assoc-ref inputs "mpv") "/bin/mpv")))
3231 #t)))))
3232 (propagated-inputs
3233 `(("python-lxml" ,python-lxml)
3234 ("python-requests" ,python-requests)
3235 ("python-pyxdg" ,python-pyxdg)))
3236 (inputs
3237 `(("mpv" ,mpv)))
3238 (home-page "https://github.com/chronitis/curseradio")
3239 (synopsis "Command-line Internet radio player")
3240 (description "Curseradio is a Curses-based radio player that uses a
3241 tune-in sender list from @url{http://opml.radiotime.com}.")
3242 (license license:expat))))
3243
3244 (define-public pianobar
3245 (package
3246 (name "pianobar")
3247 (version "2020.11.28")
3248 (source (origin
3249 (method git-fetch)
3250 (uri (git-reference
3251 (url "https://github.com/PromyLOPh/pianobar")
3252 (commit version)))
3253 (file-name (git-file-name name version))
3254 (sha256
3255 (base32
3256 "13qx52a1yj2wghf7yd9jf4ar92scbc8zgqdq0kkqf4p9isf1phf3"))))
3257 (build-system gnu-build-system)
3258 (arguments
3259 `(#:tests? #f ; no tests
3260 #:make-flags (list "CC=gcc" (string-append "PREFIX=" %output))
3261 #:phases (modify-phases %standard-phases
3262 (delete 'configure))))
3263 (inputs
3264 `(("ao" ,ao)
3265 ("curl" ,curl)
3266 ("libgcrypt" ,libgcrypt)
3267 ("json-c" ,json-c)
3268 ("ffmpeg" ,ffmpeg)))
3269 (native-inputs
3270 `(("pkg-config" ,pkg-config)))
3271 (home-page "https://6xq.net/pianobar/")
3272 (synopsis "Console-based pandora.com player")
3273 (description "pianobar is a console-based music player for the
3274 personalized online radio pandora.com. It has configurable keys for playing
3275 and managing stations, can be controlled remotely via fifo, and can run
3276 event-based scripts for scrobbling, notifications, etc.")
3277 (license license:expat)))
3278
3279 (define-public picard
3280 (package
3281 (name "picard")
3282 (version "2.4.4")
3283 (source (origin
3284 (method url-fetch)
3285 (uri (string-append
3286 "https://musicbrainz.osuosl.org/pub/musicbrainz/"
3287 "picard/picard-" version ".tar.gz"))
3288 (sha256
3289 (base32
3290 "1c5l7i43jaj3s4wklc0cba6nn2x9cmpcggk4q4h9m1bci2xilsiy"))
3291 (patches (search-patches "picard-fix-id3-rename-test.patch"))))
3292 (build-system python-build-system)
3293 (arguments
3294 '(#:use-setuptools? #f
3295 #:configure-flags
3296 (list "--root=/"
3297 ;; Don't phone home or show ‘Check for Update…’ in the Help menu.
3298 "--disable-autoupdate")
3299 #:phases
3300 (modify-phases %standard-phases
3301 (add-after 'unpack 'patch-source
3302 (lambda* (#:key inputs #:allow-other-keys)
3303 (substitute* "picard/const/__init__.py"
3304 (("pyfpcalc")
3305 (string-append
3306 "pyfpcalc', '"
3307 (assoc-ref inputs "chromaprint") "/bin/fpcalc")))
3308 #t)))))
3309 (native-inputs
3310 `(("gettext" ,gettext-minimal)
3311 ("python-dateutil" ,python-dateutil)))
3312 (inputs
3313 `(("chromaprint" ,chromaprint)
3314 ("python-discid" ,python-discid)
3315 ("python-pyqt" ,python-pyqt)
3316 ("python-mutagen" ,python-mutagen)))
3317 (home-page "https://picard.musicbrainz.org/")
3318 (synopsis "Graphical music tagging application")
3319 (description
3320 "MusicBrainz Picard is a music tagging application, supporting multiple
3321 formats, looking up tracks through metadata and audio fingerprints.")
3322 (license license:gpl2+)))
3323
3324 (define-public python-mutagen
3325 (package
3326 (name "python-mutagen")
3327 (version "1.45.1")
3328 (source (origin
3329 (method url-fetch)
3330 (uri (pypi-uri "mutagen" version))
3331 (sha256
3332 (base32
3333 "1qdk6i8gyhbi1c4j5jmbfpac3q8sff2ysri1pnp7nb9wzcp615v3"))))
3334 (build-system python-build-system)
3335 (native-inputs
3336 `(("python-pytest" ,python-pytest)
3337 ("python-hypothesis" ,python-hypothesis)
3338 ("python-flake8" ,python-flake8)))
3339 (home-page "https://bitbucket.org/lazka/mutagen")
3340 (synopsis "Read and write audio tags")
3341 (description "Mutagen is a Python module to handle audio metadata. It
3342 supports ASF, FLAC, M4A, Monkey’s Audio, MP3, Musepack, Ogg FLAC, Ogg Speex, Ogg
3343 Theora, Ogg Vorbis, True Audio, WavPack and OptimFROG audio files. All versions
3344 of ID3v2 are supported, and all standard ID3v2.4 frames are parsed. It can read
3345 Xing headers to accurately calculate the bitrate and length of MP3s. ID3 and
3346 APEv2 tags can be edited regardless of audio format. It can also manipulate Ogg
3347 streams on an individual packet/page level.")
3348 (license license:gpl2))) ; "later version" never mentioned
3349
3350 (define-public python-mediafile
3351 (package
3352 (name "python-mediafile")
3353 (version "0.6.0")
3354 (source
3355 (origin
3356 (method url-fetch)
3357 (uri (pypi-uri "mediafile" version))
3358 (patches (search-patches "python-mediafile-wavpack.patch"))
3359 (sha256
3360 (base32
3361 "0jmsp3f57xj35ayp8b6didk85nxgl3viw34s5px3l5dwgc055yx3"))))
3362 (build-system python-build-system)
3363 (propagated-inputs
3364 `(("python-mutagen" ,python-mutagen)
3365 ("python-six" ,python-six)
3366 ("python-tox" ,python-tox)))
3367 (home-page "https://github.com/beetbox/mediafile")
3368 (synopsis "Read and write audio file tags")
3369 (description
3370 "MediaFile is a simple interface to the metadata tags for many audio file
3371 formats. It wraps Mutagen, a high-quality library for low-level tag
3372 manipulation, with a high-level, format-independent interface for a common set
3373 of tags.")
3374 (license license:expat)))
3375
3376 (define-public python-musicbrainzngs
3377 (package
3378 (name "python-musicbrainzngs")
3379 (version "0.6")
3380 (source (origin
3381 (method url-fetch)
3382 (uri (pypi-uri "musicbrainzngs" version))
3383 (sha256
3384 (base32
3385 "1dddarpjawryll2wss65xq3v9q8ln8dan7984l5dxzqx88d2dvr8"))))
3386 (build-system python-build-system)
3387 (arguments
3388 '(;; The tests fail suffer from race conditions:
3389 ;; https://github.com/alastair/python-musicbrainzngs/issues/211
3390 #:tests? #f))
3391 (home-page "https://python-musicbrainzngs.readthedocs.org/")
3392 (synopsis "Python bindings for MusicBrainz NGS webservice")
3393 (description "Musicbrainzngs implements Python bindings of the MusicBrainz
3394 web service. This library can be used to retrieve music metadata from the
3395 MusicBrainz database.")
3396 ;; 'musicbrainzngs/compat.py' is ISC licensed.
3397 (license (list license:bsd-2 license:isc))))
3398
3399 (define-public python2-musicbrainzngs
3400 (package-with-python2 python-musicbrainzngs))
3401
3402 (define-public python-isrcsubmit
3403 (package
3404 (name "python-isrcsubmit")
3405 (version "2.0.1")
3406 (source
3407 (origin
3408 (method url-fetch)
3409 (uri (pypi-uri "isrcsubmit" version))
3410 (sha256
3411 (base32
3412 "0jh4cni8qhri6dh83cmp0i0m0384vv0vznlygv49wj9xzh1d99qv"))))
3413 (build-system python-build-system)
3414 (propagated-inputs
3415 `(("python-discid" ,python-discid)
3416 ("python-musicbrainzngs" ,python-musicbrainzngs)))
3417 (home-page "https://github.com/JonnyJD/musicbrainz-isrcsubmit")
3418 (synopsis "Submit ISRCs from CDs to MusicBrainz")
3419 (description "@code{isrcsubmit} is a tool to extract @dfn{International
3420 Standard Recording Code} (ISRCs) from audio CDs and submit them to
3421 @url{https://musicbrainz.org/, MusicBrainz}.")
3422 (license license:gpl3+)))
3423
3424 (define-public python2-pyechonest
3425 (package
3426 (name "python2-pyechonest")
3427 (version "9.0.0")
3428 (source (origin
3429 (method url-fetch)
3430 (uri (pypi-uri "pyechonest" version))
3431 (sha256
3432 (base32
3433 "1584nira3rkiman9dm81kdshihmkj21s8navndz2l8spnjwb790x"))))
3434 (build-system python-build-system)
3435 (arguments
3436 `(;; Python 3 is not supported:
3437 ;; https://github.com/echonest/pyechonest/issues/42
3438 #:python ,python-2))
3439 (home-page "https://github.com/echonest/pyechonest")
3440 (synopsis "Python interface to The Echo Nest APIs")
3441 (description "Pyechonest is a Python library for the Echo Nest API. With
3442 Pyechonest you have Python access to the entire set of API methods including:
3443
3444 @enumerate
3445 @item artist - search for artists by name, description, or attribute, and get
3446 back detailed information about any artist including audio, similar artists,
3447 blogs, familiarity, hotttnesss, news, reviews, urls and video.
3448 @item song - search songs by artist, title, description, or attribute (tempo,
3449 duration, etc) and get detailed information back about each song, such as
3450 hotttnesss, audio_summary, or tracks.
3451 @item track - upload a track to the Echo Nest and receive summary information
3452 about the track including key, duration, mode, tempo, time signature along with
3453 detailed track info including timbre, pitch, rhythm and loudness information.
3454 @end enumerate\n")
3455 (license license:bsd-3)))
3456
3457 (define-public python-pylast
3458 (package
3459 (name "python-pylast")
3460 (version "2.0.0")
3461 (source (origin
3462 (method url-fetch)
3463 (uri (pypi-uri "pylast" version))
3464 (sha256
3465 (base32
3466 "0r9h7g8i8l2mgqjwkda3v6prfbkb2im5kap1az9ppmhjm9i4jkcf"))))
3467 (build-system python-build-system)
3468 ;; Tests require network access. See
3469 ;; https://github.com/pylast/pylast/issues/105
3470 (arguments '(#:tests? #f))
3471 (native-inputs
3472 `(("python-coverage" ,python-coverage)
3473 ("python-pycodestyle" ,python-pycodestyle)
3474 ("python-mock" ,python-mock)
3475 ("python-pep8" ,python-pep8)
3476 ("python-pytest" ,python-pytest)
3477 ("python-flaky" ,python-flaky)
3478 ("python-pyflakes" ,python-pyflakes)
3479 ("python-pyyaml" ,python-pyyaml)))
3480 (propagated-inputs
3481 `(("python-six" ,python-six)))
3482 (home-page "https://github.com/pylast/pylast")
3483 (synopsis "Python interface to Last.fm and Libre.fm")
3484 (description "A Python interface to Last.fm and other API-compatible
3485 websites such as Libre.fm.")
3486 (license license:asl2.0)))
3487
3488 (define-public python2-pylast
3489 (package-with-python2 python-pylast))
3490
3491 (define-public instantmusic
3492 (let ((commit "300891d09c703525215fa5a116b9294af1c923c8")
3493 (revision "1"))
3494 (package
3495 (name "instantmusic")
3496 (version (git-version "1.0" revision commit))
3497 (source (origin
3498 (method git-fetch)
3499 (uri (git-reference
3500 (url "https://github.com/yask123/Instant-Music-Downloader")
3501 (commit commit)))
3502 (file-name (git-file-name name version))
3503 (sha256
3504 (base32
3505 "0j7qivaa04bpdz3anmgci5833dgiyfqqwq9fdrpl9m68b34gl773"))))
3506 (build-system python-build-system)
3507 (propagated-inputs
3508 `(("python-requests" ,python-requests)
3509 ("eyed3" ,eyed3)
3510 ("python-beautifulsoup4" ,python-beautifulsoup4)
3511 ("youtube-dl" ,youtube-dl)))
3512 (arguments
3513 '(#:modules ((guix build python-build-system)
3514 (guix build utils)
3515 (srfi srfi-26))
3516 #:phases (modify-phases %standard-phases
3517 (add-before 'build 'change-directory
3518 (lambda _
3519 (chdir "instantmusic-0.1") #t))
3520 (add-before 'install 'fix-file-permissions
3521 (lambda _
3522 ;; Fix some read-only files that would cause a build failure
3523 (for-each (cut chmod <> #o644)
3524 (find-files "instantmusic.egg-info"
3525 "PKG-INFO|.*\\.txt"))
3526 #t)))))
3527 (home-page "https://github.com/yask123/Instant-Music-Downloader")
3528 (synopsis "Command-line program to download a song from YouTube")
3529 (description "InstantMusic downloads a song from YouTube in MP3 format.
3530 Songs can be searched by artist, name or even by a part of the song text.")
3531 (license license:expat))))
3532
3533 (define-public beets
3534 (package
3535 (name "beets")
3536 (version "1.4.9")
3537 (source (origin
3538 (method url-fetch)
3539 (uri (pypi-uri "beets" version))
3540 (patches (search-patches "beets-werkzeug-compat.patch"))
3541 (sha256
3542 (base32
3543 "0m40rjimvfgy1dv04p8f8d5dvi2855v4ix99a9xr900cmcn476yj"))))
3544 (build-system python-build-system)
3545 (arguments
3546 `(#:phases
3547 (modify-phases %standard-phases
3548 ;; Reported upstream: <https://github.com/beetbox/beets/issues/3771>.
3549 ;; Disable the faulty test as the fix is unclear.
3550 (add-after 'unpack 'disable-failing-tests
3551 (lambda _
3552 (substitute* "test/test_mediafile.py"
3553 (("def test_read_audio_properties") "def _test_read_audio_properties"))
3554 #t))
3555 (add-after 'unpack 'set-HOME
3556 (lambda _
3557 (setenv "HOME" (string-append (getcwd) "/tmp"))
3558 #t))
3559 (replace 'check
3560 (lambda _
3561 (invoke "nosetests" "-v")))
3562 ;; Wrap the executable, so it can find python-gi (aka pygobject) and
3563 ;; gstreamer plugins.
3564 (add-after 'wrap 'wrap-typelib
3565 (lambda* (#:key outputs #:allow-other-keys)
3566 (let ((prog (string-append (assoc-ref outputs "out")
3567 "/bin/beet"))
3568 (plugins (getenv "GST_PLUGIN_SYSTEM_PATH"))
3569 (types (getenv "GI_TYPELIB_PATH")))
3570 (wrap-program prog
3571 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,plugins))
3572 `("GI_TYPELIB_PATH" ":" prefix (,types)))
3573 #t))))))
3574 (native-inputs
3575 `(("python-beautifulsoup4" ,python-beautifulsoup4)
3576 ("python-flask" ,python-flask)
3577 ("python-mock" ,python-mock)
3578 ("python-mpd2" ,python-mpd2)
3579 ("python-nose" ,python-nose)
3580 ("python-pathlib" ,python-pathlib)
3581 ("python-pyxdg" ,python-pyxdg)
3582 ("python-pylast" ,python-pylast)
3583 ("python-rarfile" ,python-rarfile)
3584 ("python-responses" ,python-responses)))
3585 ;; TODO: Install optional plugins and dependencies.
3586 (inputs
3587 `(("python-discogs-client" ,python-discogs-client)
3588 ("python-jellyfish" ,python-jellyfish)
3589 ("python-munkres" ,python-munkres)
3590 ("python-musicbrainzngs" ,python-musicbrainzngs)
3591 ("python-mutagen" ,python-mutagen)
3592 ("python-pyacoustid" ,python-pyacoustid)
3593 ("python-pyyaml" ,python-pyyaml)
3594 ("python-unidecode" ,python-unidecode)
3595 ;; For plugin replaygain.
3596 ("python-pygobject" ,python-pygobject)
3597 ("gobject-introspection" ,gobject-introspection)
3598 ("gst-plugins-base" ,gst-plugins-base)
3599 ("gst-plugins-good" ,gst-plugins-good)
3600 ("gstreamer" ,gstreamer)))
3601 (home-page "https://beets.io")
3602 (synopsis "Music organizer")
3603 (description "The purpose of beets is to get your music collection right
3604 once and for all. It catalogs your collection, automatically improving its
3605 metadata as it goes using the MusicBrainz database. Then it provides a variety
3606 of tools for manipulating and accessing your music.")
3607 (license license:expat)))
3608
3609 (define-public beets-next
3610 (let ((commit "04ea754d00e2873ae9aa2d9e07c5cefd790eaee2")
3611 (revision "1"))
3612 (package
3613 (inherit beets)
3614 (name "beets-next")
3615 (version (git-version (package-version beets) revision commit))
3616 (source (origin
3617 (method git-fetch)
3618 (uri (git-reference
3619 (url "https://github.com/beetbox/beets")
3620 (commit commit)))
3621 (file-name (git-file-name "beets" version))
3622 (sha256
3623 (base32
3624 "092a9sss2shhcjmpgbwvscv8brpm5970i5hddkhi81xcff3bg1h4"))))
3625 (arguments
3626 `(#:phases
3627 (modify-phases %standard-phases
3628 ;; XXX: unclear why this fails
3629 (add-after 'unpack 'disable-failing-tests
3630 (lambda _
3631 (substitute* "test/test_zero.py"
3632 (("def test_album_art") "def _test_album_art"))
3633 #t))
3634 (add-after 'unpack 'set-HOME
3635 (lambda _
3636 (setenv "HOME" (string-append (getcwd) "/tmp"))
3637 #t))
3638 (replace 'check
3639 (lambda _
3640 ;; Resources must be writable.
3641 (for-each make-file-writable
3642 (find-files "test/rsrc" "."))
3643 (invoke "nosetests" "-v")))
3644 ;; Wrap the executable, so it can find python-gi (aka pygobject) and
3645 ;; gstreamer plugins.
3646 (add-after 'wrap 'wrap-typelib
3647 (lambda* (#:key outputs #:allow-other-keys)
3648 (let ((prog (string-append (assoc-ref outputs "out")
3649 "/bin/beet"))
3650 (plugins (getenv "GST_PLUGIN_SYSTEM_PATH"))
3651 (types (getenv "GI_TYPELIB_PATH")))
3652 (wrap-program prog
3653 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,plugins))
3654 `("GI_TYPELIB_PATH" ":" prefix (,types)))
3655 #t))))))
3656 (inputs
3657 `(("python-confuse" ,python-confuse)
3658 ("python-mediafile" ,python-mediafile)
3659 ("python-reflink" ,python-reflink)
3660 ("python-requests-oauthlib" ,python-requests-oauthlib)
3661 ("opusfile" ,opusfile)
3662 ,@(package-inputs beets))))))
3663
3664 (define-public beets-bandcamp
3665 (package
3666 (name "beets-bandcamp")
3667 (version "0.1.3")
3668 (source (origin
3669 (method url-fetch)
3670 (uri (pypi-uri "beets-bandcamp" version))
3671 (sha256
3672 (base32
3673 "04awg0zdhhg5h510fc1p3qkvr2l1qm6nf85hlr9z8im8a7xlka0i"))))
3674 (build-system python-build-system)
3675 (arguments '(#:tests? #f)) ; there are no tests
3676 (propagated-inputs
3677 `(("beets" ,beets)
3678 ("python-isodate" ,python-isodate)))
3679 (inputs
3680 `(("python-beautifulsoup4" ,python-beautifulsoup4)
3681 ("python-requests" ,python-requests)
3682 ("python-six" ,python-six)))
3683 (home-page "https://github.com/unrblt/beets-bandcamp")
3684 (synopsis "Bandcamp plugin for beets")
3685 (description
3686 "This plugin for beets automatically obtains tag data from @uref{Bandcamp,
3687 https://bandcamp.com/}. It's also capable of getting song lyrics and album art
3688 using the beets FetchArt plugin.")
3689 (license license:gpl2)))
3690
3691 (define-public milkytracker
3692 (package
3693 (name "milkytracker")
3694 (version "1.03.00")
3695 (source (origin
3696 (method git-fetch)
3697 (uri (git-reference
3698 (url "https://github.com/milkytracker/MilkyTracker")
3699 (commit (string-append "v" version))))
3700 (file-name (git-file-name name version))
3701 (sha256
3702 (base32
3703 "025fj34gq2kmkpwcswcyx7wdxb89vm944dh685zi4bxx0hz16vvk"))
3704 (modules '((guix build utils)))
3705 ;; Remove non-FSDG compliant sample songs.
3706 (snippet
3707 '(begin
3708 (delete-file-recursively "resources/music")
3709 (substitute* "CMakeLists.txt"
3710 (("add_subdirectory\\(resources/music\\)") ""))
3711 #t))))
3712 (build-system cmake-build-system)
3713 (arguments
3714 '(#:tests? #f ; no check target
3715 ;; This flag ensures that MilkyTracker links with the JACK library.
3716 #:configure-flags '("-DCMAKE_CXX_FLAGS=-ljack")))
3717 (inputs
3718 `(("alsa-lib" ,alsa-lib)
3719 ("lhasa" ,lhasa)
3720 ("jack" ,jack-1)
3721 ("rtmidi" ,rtmidi)
3722 ("sdl" ,sdl2)
3723 ("zlib" ,zlib)
3724 ("zziplib" ,zziplib)))
3725 (native-inputs
3726 `(("pkg-config" ,pkg-config)))
3727 (synopsis "Music tracker for working with .MOD/.XM module files")
3728 (description "MilkyTracker is a music application for creating .MOD and .XM
3729 module files. It attempts to recreate the module replay and user experience of
3730 the popular DOS program Fasttracker II, with special playback modes available
3731 for improved Amiga ProTracker 2/3 compatibility.")
3732 (home-page "https://milkytracker.titandemo.org/")
3733 ;; 'src/milkyplay' is under Modified BSD, the rest is under GPL3 or later.
3734 (license (list license:bsd-3 license:gpl3+))))
3735
3736 (define-public schismtracker
3737 (package
3738 (name "schismtracker")
3739 (version "20190805")
3740 (source (origin
3741 (method git-fetch)
3742 (uri (git-reference
3743 (url "https://github.com/schismtracker/schismtracker")
3744 (commit version)))
3745 (file-name (git-file-name name version))
3746 (sha256
3747 (base32
3748 "0qqps20vvn3rgpg8174bjrrm38gqcci2z5z4c1r1vhbccclahgsd"))
3749 (modules '((guix build utils)))
3750 (snippet
3751 ;; Remove use of __DATE__ and __TIME__ for reproducibility.
3752 `(begin
3753 (substitute* "schism/version.c"
3754 (("Schism Tracker built %s %s.*$")
3755 (string-append "Schism Tracker version " ,version "\") ;")))
3756 #t))))
3757 (build-system gnu-build-system)
3758 (arguments
3759 `(#:phases
3760 (modify-phases %standard-phases
3761 (add-before 'configure 'link-libm
3762 (lambda _ (setenv "LIBS" "-lm") #t)))))
3763 (native-inputs
3764 `(("autoconf" ,autoconf)
3765 ("automake" ,automake)
3766 ("python" ,python)))
3767 (inputs
3768 `(("alsa-lib" ,alsa-lib) ; for asound dependency
3769 ("libx11" ,libx11)
3770 ("libxext" ,libxext)
3771 ("sdl" ,sdl)))
3772 (home-page "http://schismtracker.org")
3773 (synopsis "Oldschool sample-based music composition tool")
3774 (description
3775 "Schism Tracker is a reimplementation of Impulse Tracker, a program used to
3776 create high quality music without the requirements of specialized, expensive
3777 equipment, and with a unique \"finger feel\" that is difficult to replicate in
3778 part. The player is based on a highly modified version of the ModPlug engine,
3779 with a number of bugfixes and changes to improve IT playback.")
3780 (license license:gpl2+)))
3781
3782 (define-public sooperlooper
3783 (package
3784 (name "sooperlooper")
3785 (version "1.7.6")
3786 (source
3787 (origin
3788 (method url-fetch)
3789 (uri (string-append "http://essej.net/sooperlooper/sooperlooper-"
3790 version ".tar.gz"))
3791 (sha256
3792 (base32 "0kbb1pj62rl32c88j6p7dg823kvs0gb5s42qy3bl6yg0wn10dksj"))))
3793 (build-system gnu-build-system)
3794 (arguments
3795 `(#:phases
3796 (modify-phases %standard-phases
3797 (add-after 'unpack 'add-sigc++-includes
3798 (lambda* (#:key inputs #:allow-other-keys)
3799 (let ((sig (assoc-ref inputs "libsigc++"))
3800 (xml (assoc-ref inputs "libxml2"))
3801 (cwd (getcwd)))
3802 (setenv "CPATH"
3803 (string-append sig "/include/sigc++-2.0:"
3804 sig "/lib/sigc++-2.0/include:"
3805 xml "/include/libxml2/:"
3806 cwd "/libs/pbd:"
3807 cwd "/libs/midi++:"
3808 (or (getenv "CPATH") ""))))
3809 (substitute* '("src/control_osc.hpp"
3810 "src/gui/app_frame.hpp"
3811 "src/gui/config_panel.hpp"
3812 "src/gui/keys_panel.hpp"
3813 "src/gui/latency_panel.hpp"
3814 "src/gui/main_panel.hpp"
3815 "src/gui/midi_bind_panel.hpp"
3816 "src/gui/prefs_dialog.hpp")
3817 (("sigc\\+\\+/object.h")
3818 "sigc++/sigc++.h"))
3819 (substitute* '("src/engine.cpp"
3820 "src/gui/latency_panel.cpp"
3821 "src/gui/looper_panel.cpp"
3822 "src/gui/main_panel.cpp")
3823 (("(\\(| )bind " _ pre)
3824 (string-append pre "sigc::bind ")))
3825 #t))
3826 (add-after 'unpack 'fix-xpm-warnings
3827 (lambda _
3828 (substitute* (find-files "." "\\.xpm$")
3829 (("static char") "static const char"))
3830 #t)))))
3831 (inputs
3832 `(("jack" ,jack-1)
3833 ("alsa-lib" ,alsa-lib)
3834 ("wxwidgets" ,wxwidgets-gtk2)
3835 ("libsndfile" ,libsndfile)
3836 ("libsamplerate" ,libsamplerate)
3837 ("liblo" ,liblo)
3838 ("rubberband" ,rubberband)
3839 ("libxml2" ,libxml2)
3840 ("libsigc++" ,libsigc++)
3841 ("ncurses" ,ncurses)))
3842 (native-inputs
3843 `(("pkg-config" ,pkg-config)))
3844 (home-page "http://essej.net/sooperlooper/")
3845 (synopsis "Live looping sampler")
3846 (description
3847 "SooperLooper is a live looping sampler capable of immediate loop
3848 recording, overdubbing, multiplying, reversing and more. It allows for
3849 multiple simultaneous multi-channel loops limited only by your computer's
3850 available memory.")
3851 (license license:gpl2+)))
3852
3853 (define-public moc
3854 (package
3855 (name "moc")
3856 (version "2.5.2")
3857 (source (origin
3858 (method url-fetch)
3859 (uri (string-append "http://ftp.daper.net/pub/soft/"
3860 name "/stable/"
3861 name "-" version ".tar.bz2"))
3862 (sha256
3863 (base32
3864 "026v977kwb0wbmlmf6mnik328plxg8wykfx9ryvqhirac0aq39pk"))))
3865 (build-system gnu-build-system)
3866 (inputs
3867 `(("alsa-lib" ,alsa-lib)
3868 ("curl" ,curl)
3869 ("faad2" ,faad2)
3870 ("ffmpeg" ,ffmpeg-3.4)
3871 ("file" ,file)
3872 ("jack" ,jack-1)
3873 ("libid3tag" ,libid3tag)
3874 ("libltdl" ,libltdl)
3875 ("libmodplug" ,libmodplug)
3876 ("libmpcdec" ,libmpcdec)
3877 ("libmad" ,libmad)
3878 ("libogg" ,libogg)
3879 ("libvorbis" ,libvorbis)
3880 ("ncurses" ,ncurses)
3881 ("openssl" ,openssl)
3882 ("sasl" ,cyrus-sasl)
3883 ("speex" ,speex)
3884 ("taglib" ,taglib)
3885 ("wavpack" ,wavpack)
3886 ("zlib" ,zlib)))
3887 (native-inputs
3888 `(("pkg-config" ,pkg-config)))
3889 (synopsis "Console audio player designed to be powerful and easy to use")
3890 (description
3891 "Music on Console is a console audio player that supports many file
3892 formats, including most audio formats recognized by FFMpeg.")
3893 (home-page "http://moc.daper.net")
3894 (license license:gpl2+)))
3895
3896 (define-public midicsv
3897 (package
3898 (name "midicsv")
3899 (version "1.1")
3900 (source (origin
3901 (method url-fetch)
3902 (uri (string-append "http://www.fourmilab.ch/webtools/midicsv/"
3903 name "-" version ".tar.gz"))
3904 (sha256
3905 (base32
3906 "1vvhk2nf9ilfw0wchmxy8l13hbw9cnpz079nsx5srsy4nnd78nkw"))))
3907 (build-system gnu-build-system)
3908 (arguments
3909 `(#:phases (modify-phases %standard-phases (delete 'configure))
3910 #:make-flags (list "CC=gcc" (string-append "INSTALL_DEST=" %output))))
3911 (synopsis "Convert MIDI files to and from CSV")
3912 (description
3913 "Midicsv reads a standard MIDI file and decodes it into a comma-separated
3914 value file (CSV), which preserves all the information in the MIDI file. The
3915 ASCII CSV file may be loaded into a spreadsheet or database application, or
3916 processed by a program to transform the MIDI data (for example, to key
3917 transpose a composition or extract a track from a multi-track sequence). A
3918 CSV file in the format created by midicsv may be converted back into a
3919 standard MIDI file with the csvmidi program.")
3920 (home-page "http://www.fourmilab.ch/webtools/midicsv/")
3921 (license license:public-domain)))
3922
3923 (define-public gx-guvnor-lv2
3924 (package
3925 (name "gx-guvnor-lv2")
3926 (version "0.1")
3927 (source (origin
3928 (method git-fetch)
3929 (uri (git-reference
3930 (url "https://github.com/brummer10/GxGuvnor.lv2")
3931 (commit (string-append "v" version))))
3932 (file-name (string-append name "-" version "-checkout"))
3933 (sha256
3934 (base32
3935 "1wa5070j40p7f0b3kr259pzm99xb6cf2badr2capayjvgayd6gnm"))))
3936 (build-system gnu-build-system)
3937 (arguments
3938 `(;; The check target is used only to output a warning.
3939 #:tests? #f
3940 #:make-flags
3941 (list (string-append "DESTDIR=" (assoc-ref %outputs "out")))
3942 #:phases
3943 (modify-phases %standard-phases
3944 (replace 'configure
3945 (lambda _
3946 (substitute* "Makefile"
3947 (("INSTALL_DIR = .*") "INSTALL_DIR=/lib/lv2\n")
3948 (("install : all") "install :"))
3949 #t)))))
3950 (inputs
3951 `(("lv2" ,lv2)))
3952 (home-page "https://github.com/brummer10/GxGuvnor.lv2")
3953 (synopsis "Overdrive/distortion pedal simulation")
3954 (description "This package provides the LV2 plugin \"GxGuvnor\", a
3955 simulation of an overdrive or distortion pedal for guitars.")
3956 ;; The LICENSE file says GPLv3 but the license headers in the files say
3957 ;; GPLv2 or later. The whole project is released under GPLv3 or later
3958 ;; according to https://github.com/brummer10/GxGuvnor.lv2/issues/1
3959 (license license:gpl3+)))
3960
3961 (define-public gx-vbass-preamp-lv2
3962 (let ((commit "eb999b0ca0ef4da40a59e458a9ab6e7042b96c99")
3963 (revision "2"))
3964 (package (inherit gx-guvnor-lv2)
3965 (name "gx-vbass-preamp-lv2")
3966 (version (string-append "0-" revision "." (string-take commit 9)))
3967 (source (origin
3968 (method git-fetch)
3969 (uri (git-reference
3970 (url "https://github.com/brummer10/GxVBassPreAmp.lv2")
3971 (commit commit)))
3972 (sha256
3973 (base32
3974 "0firap073ldw4nrykkd7jvyyj0jbl1nslxyzjj4kswazp99x7d9h"))
3975 (file-name (string-append name "-" version "-checkout"))))
3976 (inputs
3977 `(("lv2" ,lv2)
3978 ("gtk+" ,gtk+-2)))
3979 (native-inputs
3980 `(("pkg-config" ,pkg-config)))
3981 (home-page "https://github.com/brummer10/GxVBassPreAmp.lv2")
3982 (synopsis "Simulation of the Vox Venue Bass 100 Pre Amp Section")
3983 (description "This package provides the LV2 plugin \"GxVBassPreAmp\", a
3984 pre-amplifier simulation modelled after the 1984 Vox Venue Bass 100 Pre Amp
3985 Section."))))
3986
3987 (define-public gx-overdriver-lv2
3988 (let ((commit "ed71801987449414bf3adaa0dbfac68e8775f1ce")
3989 (revision "1"))
3990 (package (inherit gx-guvnor-lv2)
3991 (name "gx-overdriver-lv2")
3992 (version (string-append "0-" revision "." (string-take commit 9)))
3993 (source (origin
3994 (method git-fetch)
3995 (uri (git-reference
3996 (url "https://github.com/brummer10/GxOverDriver.lv2")
3997 (commit commit)))
3998 (sha256
3999 (base32
4000 "13j614jh525fbkby79nnzwj0z1ac0c9wclyn5pfqvkmx6a7j24r8"))
4001 (file-name (string-append name "-" version "-checkout"))))
4002 (home-page "https://github.com/brummer10/GxOverDriver.lv2")
4003 (synopsis "Overdrive effect with level and tone control")
4004 (description "This package provides the LV2 plugin \"GxOverDriver\", an
4005 overdrive effect."))))
4006
4007 (define-public gx-tone-mender-lv2
4008 (let ((commit "b6780b4a3e4782b3ed0e5882d6788f178aed138f")
4009 (revision "1"))
4010 (package (inherit gx-guvnor-lv2)
4011 (name "gx-tone-mender-lv2")
4012 (version (string-append "0-" revision "." (string-take commit 9)))
4013 (source (origin
4014 (method git-fetch)
4015 (uri (git-reference
4016 (url "https://github.com/brummer10/GxToneMender.lv2")
4017 (commit commit)))
4018 (sha256
4019 (base32
4020 "07qdcfsvv2vdnfnjh91pfgvjdcs5y91nvwfm8c0z8fp6b4bk7a9q"))
4021 (file-name (string-append name "-" version "-checkout"))))
4022 (home-page "https://github.com/brummer10/GxToneMender.lv2")
4023 (synopsis "Clean boost with a 3-knob tonestack")
4024 (description "This package provides the LV2 plugin \"GxToneMender\", a
4025 clean boost effect with a 3-knob tonestack."))))
4026
4027 (define-public gx-push-pull-lv2
4028 (let ((commit "7f76ae2068498643ac8671ee0930b13ee3fd8eb5")
4029 (revision "1"))
4030 (package (inherit gx-guvnor-lv2)
4031 (name "gx-push-pull-lv2")
4032 (version (string-append "0-" revision "." (string-take commit 9)))
4033 (source (origin
4034 (method git-fetch)
4035 (uri (git-reference
4036 (url "https://github.com/brummer10/GxPushPull.lv2")
4037 (commit commit)))
4038 (sha256
4039 (base32
4040 "12f5hwck2irph0gjbj8xy8jqcqdwb8l1hlwf29k0clz52h1jhb5q"))
4041 (file-name (string-append name "-" version "-checkout"))))
4042 (home-page "https://github.com/brummer10/GxPushPull.lv2")
4043 (synopsis "Octave up push pull transistor fuzz simulation")
4044 (description "This package provides the LV2 plugin \"GxPushPull\", a
4045 simulation of a push pull transistor fuzz effect with added high octave."))))
4046
4047 (define-public gx-suppa-tone-bender-lv2
4048 (package (inherit gx-guvnor-lv2)
4049 (name "gx-suppa-tone-bender-lv2")
4050 (version "0.1")
4051 (source (origin
4052 (method git-fetch)
4053 (uri (git-reference
4054 (url "https://github.com/brummer10/GxSuppaToneBender.lv2")
4055 (commit (string-append "v" version))))
4056 (file-name (string-append name "-" version "-checkout"))
4057 (sha256
4058 (base32
4059 "01x6bjmllkmvxfzc5xwdix7w021j26js71awv728cxsmkxgqw0zy"))))
4060 (home-page "https://github.com/brummer10/GxSuppaToneBender.lv2")
4061 (synopsis "Simulation of the Vox Suppa Tone Bender pedal")
4062 (description "This package provides the LV2 plugin
4063 \"GxSuppaToneBender\", a simulation modelled after the Vox Suppa Tone Bender
4064 pedal.")))
4065
4066 (define-public gx-saturator-lv2
4067 (let ((commit "605330f432c94b6eb3f8203cbe472befae959532")
4068 (revision "3"))
4069 (package (inherit gx-vbass-preamp-lv2)
4070 (name "gx-saturator-lv2")
4071 (version (string-append "0-" revision "." (string-take commit 9)))
4072 (source (origin
4073 (method git-fetch)
4074 (uri (git-reference
4075 (url "https://github.com/brummer10/GxSaturator.lv2")
4076 (commit commit)))
4077 (sha256
4078 (base32
4079 "1w4nvh0rmxrv3s3hmh4fs74f3hc0jn31v00j769j7v68mqr7kawy"))
4080 (file-name (string-append name "-" version "-checkout"))))
4081 (home-page "https://github.com/brummer10/GxSaturator.lv2")
4082 (synopsis "Saturation effect")
4083 (description "This package provides the LV2 plugin \"GxSaturator\", a
4084 saturation effect."))))
4085
4086 (define-public gx-hyperion-lv2
4087 (package (inherit gx-guvnor-lv2)
4088 (name "gx-hyperion-lv2")
4089 (version "0.1")
4090 (source (origin
4091 (method git-fetch)
4092 (uri (git-reference
4093 (url "https://github.com/brummer10/GxHyperion.lv2")
4094 (commit (string-append "v" version))))
4095 (file-name (string-append name "-" version "-checkout"))
4096 (sha256
4097 (base32
4098 "1vx79s6s9if117y2g0ppdja2sv2wcny6xcfl3j1z4cipahnildxf"))))
4099 (home-page "https://github.com/brummer10/GxHyperion.lv2")
4100 (synopsis "Simulation of the Hyperion Fuzz pedal")
4101 (description "This package provides the LV2 plugin \"GxHyperion\", a
4102 simulation of the Hyperion Fuzz pedal.")))
4103
4104 (define-public gx-voodoo-fuzz-lv2
4105 (package (inherit gx-guvnor-lv2)
4106 (name "gx-voodoo-fuzz-lv2")
4107 (version "0.1")
4108 (source (origin
4109 (method git-fetch)
4110 (uri (git-reference
4111 (url "https://github.com/brummer10/GxVoodoFuzz.lv2")
4112 (commit (string-append "v" version))))
4113 (file-name (string-append name "-" version "-checkout"))
4114 (sha256
4115 (base32
4116 "1v0scphivri1fk4hl20j13f92i48mnx1zsil4hgnadsmm4nsfw43"))))
4117 (home-page "https://github.com/brummer10/GxVoodoFuzz.lv2")
4118 (synopsis "Fuzz effect modelled after the Voodoo Lab SuperFuzz")
4119 (description "This package provides the LV2 plugin \"GxVoodooFuzz\", a
4120 simulation modelled after the Voodoo Lab SuperFuzz pedal. It's basically a
4121 Bosstone circuit, followed by the tone control of the FoxToneMachine in
4122 parallel with a DarkBooster, followed by a volume control.")))
4123
4124 (define-public gx-super-fuzz-lv2
4125 (package (inherit gx-guvnor-lv2)
4126 (name "gx-super-fuzz-lv2")
4127 (version "0.1")
4128 (source (origin
4129 (method git-fetch)
4130 (uri (git-reference
4131 (url "https://github.com/brummer10/GxSuperFuzz.lv2")
4132 (commit (string-append "v" version))))
4133 (file-name (string-append name "-" version "-checkout"))
4134 (sha256
4135 (base32
4136 "1jlljd9hlgfflbiizq47lv1xbbgjyx3v835mf24zmh1q5zsw4np4"))))
4137 (home-page "https://github.com/brummer10/GxSuperFuzz.lv2")
4138 (synopsis "Fuzz effect modelled after the UniVox SuperFuzz")
4139 (description "This package provides the LV2 plugin \"GxSuperFuzz\", an
4140 analog simulation of the UniVox SuperFuzz pedal. In this simulation the trim
4141 pot, which is usually in the housing, is exposed as a control parameter. It
4142 adjusts the amount of harmonics.")))
4143
4144 (define-public gx-vintage-fuzz-master-lv2
4145 (package (inherit gx-guvnor-lv2)
4146 (name "gx-vintage-fuzz-master-lv2")
4147 (version "0.1")
4148 (source (origin
4149 (method git-fetch)
4150 (uri (git-reference
4151 (url "https://github.com/brummer10/GxVintageFuzzMaster.lv2")
4152 (commit (string-append "v" version))))
4153 (file-name (string-append name "-" version "-checkout"))
4154 (sha256
4155 (base32
4156 "02jb211z8rw2qr5r1z5mdxlqgiw6cbc319xpqplvn6k21c59mskv"))))
4157 (home-page "https://github.com/brummer10/GxVintageFuzzMaster.lv2")
4158 (synopsis "Fuzz effect simulation of the vintage Fuzz Master")
4159 (description "This package provides the LV2 plugin
4160 \"GxVintageFuzzMaster\", a simulation of the vintage Fuzz Master pedal.")))
4161
4162 (define-public gx-slow-gear-lv2
4163 (let ((commit "5d37e775b0feef1d82feee94e2a7a2d7e57efe2d")
4164 (revision "3"))
4165 (package (inherit gx-vbass-preamp-lv2)
4166 (name "gx-slow-gear-lv2")
4167 (version (string-append "0-" revision "." (string-take commit 9)))
4168 (source (origin
4169 (method git-fetch)
4170 (uri (git-reference
4171 (url "https://github.com/brummer10/GxSlowGear.lv2")
4172 (commit commit)))
4173 (sha256
4174 (base32
4175 "141mz69zkhk3lm54bb6wgpnghb92zm1ig7fv07240cmhydqji1q1"))
4176 (file-name (string-append name "-" version "-checkout"))))
4177 (home-page "https://github.com/brummer10/GxSlowGear.lv2")
4178 (synopsis "Slow gear audio effect")
4179 (description "This package provides the LV2 plugin \"GxSlowGear\", a
4180 slow gear audio effect to produce volume swells."))))
4181
4182 (define-public gx-switchless-wah-lv2
4183 (let ((commit "7b08691203314612999f0ce2328cdc1161cd6665")
4184 (revision "2"))
4185 (package (inherit gx-guvnor-lv2)
4186 (name "gx-switchless-wah-lv2")
4187 (version (string-append "0-" revision "." (string-take commit 9)))
4188 (source (origin
4189 (method git-fetch)
4190 (uri (git-reference
4191 (url "https://github.com/brummer10/GxSwitchlessWah.lv2")
4192 (commit commit)))
4193 (sha256
4194 (base32
4195 "04jqfpncmrrqn34p21w4v9m2x5a5wsqwbm4f3byxvq4vcibwxzk2"))
4196 (file-name (string-append name "-" version "-checkout"))))
4197 (home-page "https://github.com/brummer10/GxSwitchlessWah.lv2")
4198 (synopsis "Wah emulation with switchless activation")
4199 (description "This package provides the LV2 plugin \"GxSwitchlessWah\",
4200 a simulation of an analog Wah pedal with switchless activation."))))
4201
4202 (define-public rkrlv2
4203 ;; This commit corresponds to the beta_3 tag
4204 (let ((commit "7edcb4e29a358623bfd57fa2c27e5da60adfcec3")
4205 (revision "2"))
4206 (package
4207 (name "rkrlv2")
4208 (version (git-version "0" revision commit))
4209 (source (origin
4210 (method git-fetch)
4211 (uri (git-reference
4212 (url "https://github.com/ssj71/rkrlv2")
4213 (commit commit)))
4214 (sha256
4215 (base32
4216 "16i4ajrib7kb0abdcn4901g8a4lkwkp2fyqyms38dhqq84slyfjs"))
4217 (file-name (git-file-name name version))))
4218 (build-system cmake-build-system)
4219 (arguments '(#:tests? #f)) ; there are no tests
4220 (inputs
4221 `(("fftw" ,fftw)
4222 ("libsamplerate" ,libsamplerate)
4223 ("lv2" ,lv2)))
4224 (native-inputs
4225 `(("pkg-config" ,pkg-config)))
4226 (home-page "https://github.com/ssj71/rkrlv2")
4227 (synopsis "Rakarrack effects ported to LV2 plugins")
4228 (description "This package provides the Rakarrack effects as LV2
4229 plugins. The ports are done such that hopefully when Rakarrack gets an active
4230 maintainer these will get merged into the original project.")
4231 (license license:gpl2))))
4232
4233 (define-public mod-utilities
4234 (let ((commit "80ea3ea9f52fab7f191671f4810bf90fc955a046")
4235 (revision "2"))
4236 (package
4237 (name "mod-utilities")
4238 (version (string-append "0-" revision "." (string-take commit 9)))
4239 (source (origin
4240 (method git-fetch)
4241 (uri (git-reference
4242 (url "https://github.com/moddevices/mod-utilities")
4243 (commit commit)))
4244 (file-name (string-append name "-" version "-checkout"))
4245 (sha256
4246 (base32
4247 "1v55zmzmlg0ka7341x5lsvb44amy17vk27s669ps1basd1bk5s5v"))))
4248 (build-system gnu-build-system)
4249 (arguments
4250 `(#:tests? #f ; there are no tests
4251 #:make-flags
4252 (list (string-append "INSTALL_PATH="
4253 (assoc-ref %outputs "out")
4254 "/lib/lv2")
4255 (string-append "PREFIX=" (assoc-ref %outputs "out"))
4256 "CC=gcc")
4257 #:phases
4258 (modify-phases %standard-phases
4259 (delete 'configure))))
4260 (inputs
4261 `(("lv2" ,lv2)))
4262 (home-page "https://github.com/moddevices/mod-utilities")
4263 (synopsis "LV2 utility plugins")
4264 (description "This package provides LV2 audio utility plugins, such as
4265 filters, crossovers, simple gain plugins without zipper noise, switch box
4266 plugins, a switch trigger, a toggle switch, and a peakmeter.")
4267 (license license:gpl2+))))
4268
4269 (define-public ingen
4270 (let ((commit "cc4a4db33f4d126a07a4a498e053c5fb9a883be3")
4271 (revision "2"))
4272 (package
4273 (name "ingen")
4274 (version (string-append "0.0.0-" revision "."
4275 (string-take commit 9)))
4276 (source
4277 (origin
4278 (method git-fetch)
4279 (uri (git-reference
4280 (url "https://git.drobilla.net/ingen.git")
4281 (commit commit)))
4282 (file-name (string-append name "-" version "-checkout"))
4283 (sha256
4284 (base32
4285 "1wg47vjw9djn99gbnsl2bcwj4xhdid61m4wrbn2nlp797flj91ic"))))
4286 (build-system waf-build-system)
4287 (arguments
4288 `(#:python ,python-2
4289 #:tests? #f ; no "check" target
4290 #:configure-flags (list "--no-webkit")
4291 #:phases
4292 (modify-phases %standard-phases
4293 (add-after 'unpack 'patch-wscript
4294 (lambda* (#:key outputs #:allow-other-keys)
4295 (let ((out (assoc-ref outputs "out")))
4296 (substitute* "wscript"
4297 ;; FIXME: Our version of lv2specgen.py does not behave as
4298 ;; expected. Maybe this requires a development version of
4299 ;; LV2.
4300 (("lv2specgen.py") "touch ingen.lv2/ingen.html; echo")
4301 ;; Add libraries to RUNPATH.
4302 (("^(.+)target.*= 'src/ingen/ingen'," line prefix)
4303 (string-append prefix
4304 "linkflags=[\"-Wl,-rpath="
4305 out "/lib" "\"]," line)))
4306 (substitute* '("src/wscript"
4307 "src/server/wscript")
4308 ;; Add libraries to RUNPATH.
4309 (("bld.env.PTHREAD_LINKFLAGS" line)
4310 (string-append line
4311 " + [\"-Wl,-rpath=" out "/lib" "\"]")))
4312 (substitute* "src/client/wscript"
4313 ;; Add libraries to RUNPATH.
4314 (("^(.+)target.*= 'ingen_client'," line prefix)
4315 (string-append prefix
4316 "linkflags=[\"-Wl,-rpath="
4317 out "/lib" "\"]," line)))
4318 (substitute* "src/gui/wscript"
4319 ;; Add libraries to RUNPATH.
4320 (("^(.+)target.* = 'ingen_gui.*" line prefix)
4321 (string-append prefix
4322 "linkflags=[\"-Wl,-rpath="
4323 out "/lib" "\"]," line))))
4324 #t)))))
4325 (inputs
4326 `(("boost" ,boost)
4327 ("python-rdflib" ,python-rdflib)
4328 ("python" ,python)
4329 ("jack" ,jack-1)
4330 ("lv2" ,lv2)
4331 ("lilv" ,lilv)
4332 ("raul" ,raul-devel)
4333 ("ganv" ,ganv)
4334 ("suil" ,suil)
4335 ("serd" ,serd)
4336 ("sord" ,sord)
4337 ("sratom" ,sratom)
4338 ("gtkmm" ,gtkmm-2)))
4339 (native-inputs
4340 `(("pkg-config" ,pkg-config)
4341 ("python-pygments" ,python-pygments)))
4342 (home-page "https://drobilla.net/software/ingen")
4343 (synopsis "Modular audio processing system")
4344 (description "Ingen is a modular audio processing system for JACK and
4345 LV2 based systems. Ingen is built around LV2 technology and a strict
4346 separation of engine from user interface. The engine is controlled
4347 exclusively through a protocol, and can execute as a headless process, with an
4348 in-process GUI, or as an LV2 plugin. The GUI can run as a program which
4349 communicates over a Unix or TCP/IP socket, or as an embeddable LV2 GUI which
4350 communicates via LV2 ports. Any saved Ingen graph can be loaded as an LV2
4351 plugin on any system where Ingen is installed. This allows users to visually
4352 develop custom plugins for use in other applications without programming.")
4353 (license license:agpl3+))))
4354
4355 (define-public qmidiarp
4356 (package
4357 (name "qmidiarp")
4358 (version "0.6.5")
4359 (source (origin
4360 (method url-fetch)
4361 (uri (string-append "mirror://sourceforge/qmidiarp/qmidiarp/"
4362 version "/qmidiarp-" version ".tar.bz2"))
4363 (sha256
4364 (base32
4365 "043yh1p0rrbj1v840y27529m9260g55gvh1km8az4jxy7mns58r2"))))
4366 (build-system gnu-build-system)
4367 (arguments
4368 `(#:configure-flags
4369 (list "--enable-qt5")))
4370 (inputs
4371 `(("qtbase" ,qtbase)
4372 ("alsa-lib" ,alsa-lib)
4373 ("jack" ,jack-1)
4374 ("liblo" ,liblo)
4375 ("lv2" ,lv2)))
4376 (native-inputs
4377 `(("pkg-config" ,pkg-config)
4378 ("qttools" ,qttools)))
4379 (home-page "http://qmidiarp.sourceforge.net/")
4380 (synopsis "MIDI arpeggiator")
4381 (description "QMidiArp is an advanced MIDI arpeggiator, programmable step
4382 sequencer and LFO. It can hold any number of arpeggiator, sequencer, or LFO
4383 modules running in parallel.")
4384 (license license:gpl2+)))
4385
4386 (define-public qmidiroute
4387 (package
4388 (name "qmidiroute")
4389 (version "0.4.0")
4390 (source (origin
4391 (method url-fetch)
4392 (uri (string-append "mirror://sourceforge/alsamodular/QMidiRoute/"
4393 version "/qmidiroute-" version ".tar.bz2"))
4394 (sha256
4395 (base32
4396 "19v1ppbglgl3z9v7xdqc0k33w71cqq8a7d6ihvfs7iz77dygrih9"))))
4397 (build-system gnu-build-system)
4398 (arguments
4399 `(#:configure-flags
4400 (list "--enable-qt5")))
4401 (inputs
4402 `(("qtbase" ,qtbase)
4403 ("alsa-lib" ,alsa-lib)))
4404 (native-inputs
4405 `(("pkg-config" ,pkg-config)
4406 ("qttools" ,qttools)))
4407 (home-page "http://alsamodular.sourceforge.net/")
4408 (synopsis "MIDI event router and filter")
4409 (description "QMidiRoute is a MIDI event router and filter. MIDI note,
4410 control change, program change and pitch bend events are logged, and can be
4411 filtered, redirected and transformed into other events according to MIDI maps
4412 defined as tabs in the main control surface.")
4413 (license license:gpl2+)))
4414
4415 (define-public seq24
4416 (package
4417 (name "seq24")
4418 (version "0.9.3")
4419 (source (origin
4420 (method url-fetch)
4421 (uri (string-append "https://launchpad.net/seq24/trunk/"
4422 version "/+download/seq24-"
4423 version ".tar.bz2"))
4424 (sha256
4425 (base32
4426 "12dphdhnvfk1k0vmagi1v2lhyxjyj1j3cz6ksjw0ydcvid1x8ap2"))
4427 (patches (search-patches "seq24-rename-mutex.patch"))))
4428 (build-system gnu-build-system)
4429 (inputs
4430 `(("gtkmm" ,gtkmm-2)
4431 ("alsa-lib" ,alsa-lib)
4432 ("jack" ,jack-1)
4433 ("lash" ,lash)))
4434 (native-inputs
4435 `(("pkg-config" ,pkg-config)))
4436 (home-page "https://edge.launchpad.net/seq24/")
4437 (synopsis "Real-time MIDI sequencer")
4438 (description "Seq24 is a real-time MIDI sequencer. It was created to
4439 provide a very simple interface for editing and playing MIDI loops.")
4440 (license license:gpl2+)))
4441
4442 (define-public python-discogs-client
4443 (package
4444 (name "python-discogs-client")
4445 (version "2.2.1")
4446 (source (origin
4447 (method url-fetch)
4448 (uri (pypi-uri "discogs-client" version))
4449 (sha256
4450 (base32
4451 "053ld2psh0yj3z0kg6z5bn4y3cr562m727494n0ayhgzbkjbacly"))))
4452 (build-system python-build-system)
4453 (propagated-inputs
4454 `(("python-oauthlib" ,python-oauthlib)
4455 ("python-requests" ,python-requests)))
4456 (native-inputs
4457 `(("python-six" ,python-six)))
4458 (home-page "https://github.com/discogs/discogs_client")
4459 (synopsis "Official Python client for the Discogs API")
4460 (description "This is the official Discogs API client for Python. It enables
4461 you to query the Discogs database for information on artists, releases, labels,
4462 users, Marketplace listings, and more. It also supports OAuth 1.0a
4463 authorization, which allows you to change user data such as profile information,
4464 collections and wantlists, inventory, and orders.")
4465 (license license:bsd-2)))
4466
4467 (define-public python2-discogs-client
4468 (package-with-python2 python-discogs-client))
4469
4470 (define-public libsmf
4471 (package
4472 (name "libsmf")
4473 (version "1.3")
4474 (source
4475 (origin
4476 (method url-fetch)
4477 ;; SF download page says development moved, but the link it points to
4478 ;; is gone (https://github.com/nilsgey/libsmf). Someone else adopted
4479 ;; it but made no release so far (https://github.com/stump/libsmf).
4480 (uri (string-append "mirror://sourceforge/libsmf/libsmf/"
4481 version "/libsmf-" version ".tar.gz"))
4482 (sha256
4483 (base32
4484 "16c0n40h0r56gzbh5ypxa4dwp296dan3jminml2qkb4lvqarym6k"))))
4485 (build-system gnu-build-system)
4486 (outputs '("out"
4487 "static")) ; 88KiB of .a files
4488 (arguments
4489 `(#:phases
4490 (modify-phases %standard-phases
4491 (add-after 'install 'move-static-libraries
4492 (lambda* (#:key outputs #:allow-other-keys)
4493 ;; Move static libraries to the "static" output.
4494 (let* ((out (assoc-ref outputs "out"))
4495 (lib (string-append out "/lib"))
4496 (static (assoc-ref outputs "static"))
4497 (slib (string-append static "/lib")))
4498 (mkdir-p slib)
4499 (for-each (lambda (file)
4500 (install-file file slib)
4501 (delete-file file))
4502 (find-files lib "\\.a$"))
4503 #t))))))
4504 (inputs
4505 `(("readline" ,readline)
4506 ("glib" ,glib)))
4507 (native-inputs
4508 `(("doxygen" ,doxygen)
4509 ("pkg-config" ,pkg-config)))
4510 (home-page "http://libsmf.sourceforge.net/")
4511 (synopsis "Standard MIDI File format library")
4512 (description
4513 "LibSMF is a C library for handling SMF (\"*.mid\") files. It transparently handles
4514 conversions between time and pulses, tempo map handling and more. The only dependencies
4515 are a C compiler and glib. Full API documentation and examples are included.")
4516 (license license:bsd-2)))
4517
4518 (define-public lmms
4519 (package
4520 (name "lmms")
4521 (version "1.2.2")
4522 (source
4523 (origin
4524 (method git-fetch)
4525 (uri (git-reference
4526 (url "https://github.com/LMMS/lmms")
4527 (commit (string-append "v" version))))
4528 (file-name (git-file-name name version))
4529 (sha256
4530 (base32
4531 "11xgf461cnmq0jkgdgx5bddi87ammpik4whg1m4fcvd3i0d5i601"))))
4532 (build-system cmake-build-system)
4533 (arguments
4534 `(#:tests? #f ; no tests
4535 ;; Qt 5 support must be explicitly enabled in the 1.2 stable versions of
4536 ;; LMMS, so try removing "-DWANT_QT5=ON" in later versions.
4537 ;; Also, explicitly disabling VST support gets rid of the in-tree
4538 ;; dependency on qt5-x11embed.
4539 #:configure-flags '("-DWANT_QT5=ON"
4540 "-DWANT_VST=OFF")
4541 #:phases
4542 (modify-phases %standard-phases
4543 (add-after 'unpack 'unpack-rpmalloc
4544 (lambda* (#:key inputs #:allow-other-keys)
4545 (copy-recursively (assoc-ref inputs "rpmalloc")
4546 "src/3rdparty/rpmalloc/rpmalloc")
4547 #t))
4548 (add-before 'configure 'set-ldflags
4549 (lambda* (#:key outputs #:allow-other-keys)
4550 (setenv "LDFLAGS"
4551 (string-append
4552 "-Wl,-rpath=\""
4553 (assoc-ref outputs "out") "/lib/lmms"
4554 ":"
4555 (assoc-ref outputs "out") "/lib/lmms/ladspa"
4556 "\""))
4557 #t))
4558 (add-before 'reset-gzip-timestamps 'make-manpages-writable
4559 (lambda* (#:key outputs #:allow-other-keys)
4560 (map (lambda (file)
4561 (make-file-writable file))
4562 (find-files (string-append (assoc-ref outputs "out")
4563 "/share/man")
4564 ".*\\.gz$"))
4565 #t)))))
4566 (native-inputs
4567 `(("pkg-config" ,pkg-config)
4568 ("qttools" ,qttools)
4569 ;; rpmalloc is a public domain memory allocator. This version specified
4570 ;; below is the version required by LMMS.
4571 ;; To get the new commit of rpmalloc to use here, run
4572 ;; `git submodule--helper list | grep rpmalloc | cut -f2 -d' '`
4573 ;; in the cloned LMMS repository.
4574 ("rpmalloc"
4575 ,(origin
4576 (method git-fetch)
4577 (uri (git-reference
4578 (url "https://github.com/mjansson/rpmalloc")
4579 (commit "b5bdc18051bb74a22f0bde4bcc90b01cf590b496")))
4580 (sha256
4581 (base32
4582 "0g9pls46iggg7rdm65vzfj8nyr3v2n5xkp54c4qbh9hhalpsw4ay"))))))
4583 (inputs
4584 `(("sdl" ,sdl)
4585 ("qtbase" ,qtbase)
4586 ("qtx11extras" ,qtx11extras)
4587 ("fltk" ,fltk)
4588 ("libogg" ,libogg)
4589 ("libsamplerate" ,libsamplerate)
4590 ("fluidsynth" ,fluidsynth)
4591 ("libvorbis" ,libvorbis)
4592 ("alsa-lib" ,alsa-lib)
4593 ("portaudio" ,portaudio)
4594 ("ladspa" ,ladspa)
4595 ("libsndfile1" ,libsndfile)
4596 ("libxft" ,libxft)
4597 ("freetype2" ,freetype)
4598 ("fftw3f" ,fftwf)
4599 ("jack" ,jack-1)
4600 ("carla" ,carla)))
4601 (home-page "https://lmms.io/")
4602 (synopsis "Music composition tool")
4603 (description "LMMS is a digital audio workstation. It includes tools for sequencing
4604 melodies and beats and for mixing and arranging songs. LMMS includes instruments based on
4605 audio samples and various soft sythesizers. It can receive input from a MIDI keyboard.")
4606 (license license:gpl2+)))
4607
4608 (define-public liquidsfz
4609 (package
4610 (name "liquidsfz")
4611 (version "0.2.3")
4612 (source (origin
4613 (method url-fetch)
4614 (uri (string-append "https://space.twc.de/~stefan/liquidsfz/"
4615 "liquidsfz-" version ".tar.bz2"))
4616 (sha256
4617 (base32
4618 "1hb4hc3gkvjfbx0ls6wxzavhv2hf9ix11cz8yvndyb6q9lwkimwl"))))
4619 (build-system gnu-build-system)
4620 (arguments
4621 `(#:configure-flags '("--enable-shared")))
4622 (native-inputs
4623 `(("pkg-config" ,pkg-config)
4624 ;; Fails with default gcc (#include <filesystem> not found).
4625 ("gcc" ,gcc-9)))
4626 (inputs
4627 `(("jack" ,jack-2)
4628 ("lv2" ,lv2)
4629 ("readline" ,readline)
4630 ("libsndfile" ,libsndfile)))
4631 (home-page "https://github.com/swesterfeld/liquidsfz")
4632 (synopsis "Sampler library")
4633 (description "The main goal of liquidsfz is to provide an SFZ sampler
4634 implementation library that is easy to integrate into other projects. A
4635 standalone JACK client and an LV2 plugin is also available.")
4636 (license license:lgpl2.1+)))
4637
4638 (define-public musescore
4639 (package
4640 (name "musescore")
4641 (version "3.6.2")
4642 (source
4643 (origin
4644 (method git-fetch)
4645 (uri (git-reference
4646 (url "https://github.com/musescore/MuseScore")
4647 (commit (string-append "v" version))))
4648 (file-name (git-file-name name version))
4649 (sha256
4650 (base32 "0szvb6mlzy9df9lrq546rrpixa480knzij1wgh6ilflxz87q048q"))
4651 (modules '((guix build utils)))
4652 (snippet
4653 ;; Remove unused libraries.
4654 '(begin
4655 (for-each delete-file-recursively
4656 '("thirdparty/freetype"
4657 "thirdparty/openssl"
4658 "thirdparty/portmidi"
4659 "thirdparty/qt-google-analytics"))
4660 #t))))
4661 (build-system cmake-build-system)
4662 (arguments
4663 `(#:configure-flags
4664 `("-DBUILD_TELEMETRY_MODULE=OFF" ;don't phone home
4665 "-DBUILD_WEBENGINE=OFF"
4666 "-DDOWNLOAD_SOUNDFONT=OFF"
4667 "-DMUSESCORE_BUILD_CONFIG=release"
4668 "-DUSE_SYSTEM_FREETYPE=ON")
4669 ;; There are tests, but no simple target to run. The command used to
4670 ;; run them is:
4671 ;;
4672 ;; make debug && sudo make installdebug && cd \
4673 ;; build.debug/mtest && make && ctest
4674 ;;
4675 ;; Basically, it requires to start a whole new build process.
4676 ;; So we simply skip them.
4677 #:tests? #f))
4678 (inputs
4679 `(("alsa-lib" ,alsa-lib)
4680 ("freetype" ,freetype)
4681 ("gtk+-bin" ,gtk+ "bin") ;for gtk-update-icon-cache
4682 ("jack" ,jack-1)
4683 ("lame" ,lame)
4684 ("libogg" ,libogg)
4685 ("libsndfile" ,libsndfile)
4686 ("libvorbis" ,libvorbis)
4687 ("portaudio" ,portaudio)
4688 ("portmidi" ,portmidi)
4689 ("pulseaudio" ,pulseaudio)
4690 ("qtbase" ,qtbase)
4691 ("qtdeclarative" ,qtdeclarative)
4692 ("qtquickcontrols2" ,qtquickcontrols2)
4693 ("qtscript" ,qtscript)
4694 ("qtsvg" ,qtsvg)
4695 ("qtxmlpatterns" ,qtxmlpatterns)))
4696 (native-inputs
4697 `(("pkg-config" ,pkg-config)
4698 ("qttools" ,qttools)))
4699 (synopsis "Music composition and notation software")
4700 (description
4701 "MuseScore is a music score typesetter. Its main purpose is the creation
4702 of high-quality engraved musical scores in a WYSIWYG environment.
4703
4704 It supports unlimited staves, linked parts and part extraction, tablature,
4705 MIDI input, percussion notation, cross-staff beaming, automatic transposition,
4706 lyrics (multiple verses), fretboard diagrams, and in general everything
4707 commonly used in sheet music. Style options and style sheets to change the
4708 appearance and layout are provided.
4709
4710 MuseScore can also play back scores through the built-in sequencer and SoundFont
4711 sample library.")
4712 (home-page "https://musescore.org")
4713 (license license:gpl2)))
4714
4715 (define-public muse-sequencer
4716 (package
4717 (name "muse-sequencer")
4718 (version "3.1.1")
4719 (source (origin
4720 (method git-fetch)
4721 (uri (git-reference
4722 (url "https://github.com/muse-sequencer/muse")
4723 (commit (string-append "muse_"
4724 (string-map (lambda (c)
4725 (if (char=? c #\.)
4726 #\_ c)) version)))))
4727 (file-name (git-file-name name version))
4728 (sha256
4729 (base32
4730 "1rasp2v1ds2aw296lbf27rzw0l9fjl0cvbvw85d5ycvh6wkm301p"))))
4731 (build-system cmake-build-system)
4732 (arguments
4733 `(#:tests? #f ; there is no test target
4734 #:configure-flags
4735 (list "-DENABLE_INSTPATCH=OFF" ; FIXME: not packaged
4736 "-DENABLE_VST_NATIVE=OFF"
4737 (string-append "-DCMAKE_EXE_LINKER_FLAGS="
4738 "-Wl,-rpath="
4739 (assoc-ref %outputs "out") "/lib/muse-"
4740 ,(version-major+minor version) "/modules")
4741 (string-append "-DCMAKE_SHARED_LINKER_FLAGS="
4742 "-Wl,-rpath="
4743 (assoc-ref %outputs "out") "/lib/muse-"
4744 ,(version-major+minor version) "/modules"))
4745 #:phases
4746 (modify-phases %standard-phases
4747 (add-after 'unpack 'chdir
4748 (lambda _ (chdir "muse3") #t))
4749 (add-after 'chdir 'fix-include
4750 (lambda _
4751 (substitute* "muse/driver/rtaudio.h"
4752 (("rtaudio/RtAudio.h") "RtAudio.h"))
4753 #t)))))
4754 (inputs
4755 `(("alsa-lib" ,alsa-lib)
4756 ("lash" ,lash)
4757 ("jack" ,jack-1)
4758 ("liblo" ,liblo)
4759 ("dssi" ,dssi)
4760 ("ladspa" ,ladspa)
4761 ("lv2" ,lv2)
4762 ("lilv" ,lilv)
4763 ("sord" ,sord)
4764 ("libsndfile" ,libsndfile)
4765 ("libsamplerate" ,libsamplerate)
4766 ("lrdf" ,lrdf)
4767 ("fluidsynth" ,fluidsynth)
4768 ("pcre" ,pcre)
4769 ("pulseaudio" ,pulseaudio) ; required by rtaudio
4770 ("qtbase" ,qtbase)
4771 ("qtsvg" ,qtsvg)
4772 ("rtaudio" ,rtaudio)
4773 ("rubberband" ,rubberband)))
4774 (native-inputs
4775 `(("pkg-config" ,pkg-config)
4776 ("qttools" ,qttools)))
4777 (home-page "https://muse-sequencer.github.io/")
4778 (synopsis "MIDI/Audio sequencer")
4779 (description "MusE is a MIDI/Audio sequencer with recording and editing
4780 capabilities. Its audio sequencer supports the LADSPA, DSSI, and LV2 audio
4781 plugin formats; the MIDI sequencer provides a piano roll, a drum editor, a
4782 list view, and a score editor. MusE aims to be a complete multitrack virtual
4783 studio.")
4784 (license license:gpl2+)))
4785
4786 (define-public gsequencer
4787 (package
4788 (name "gsequencer")
4789 (version "3.7.48")
4790 (source
4791 (origin
4792 (method git-fetch)
4793 (uri (git-reference
4794 (url "https://git.savannah.gnu.org/git/gsequencer.git/")
4795 (commit version)))
4796 (file-name (git-file-name name version))
4797 (sha256
4798 (base32 "0pqaj09x3lzcj0zbbkqpyaky9i1w462bhhvg1akh73nzwvyy46zd"))))
4799 (build-system gnu-build-system)
4800 (arguments
4801 `(#:phases
4802 (modify-phases %standard-phases
4803 (add-before 'build 'prepare-x-for-test
4804 (lambda _
4805 (system "Xvfb &")
4806 (setenv "DISPLAY" ":0")
4807 #t)))))
4808 (native-inputs
4809 `(("autoconf" ,autoconf)
4810 ("automake" ,automake)
4811 ("cunit" ,cunit)
4812 ("gettext" ,gettext-minimal)
4813 ("gobject-introspection" ,gobject-introspection)
4814 ("gtk-doc" ,gtk-doc)
4815 ("libtool" ,libtool)
4816 ("libxslt" ,libxslt)
4817 ("pkg-config" ,pkg-config)
4818 ("xorg-server" ,xorg-server-for-tests)))
4819 (inputs
4820 `(("alsa-lib" ,alsa-lib)
4821 ("dssi" ,dssi)
4822 ("fftw" ,fftw)
4823 ("gst-plugins-base" ,gst-plugins-base)
4824 ("gstreamer" ,gstreamer)
4825 ("gtk+" ,gtk+)
4826 ("jack" ,jack-1)
4827 ("ladspa" ,ladspa)
4828 ("libinstpatch" ,libinstpatch)
4829 ("libsamplerate" ,libsamplerate)
4830 ("libsndfile" ,libsndfile)
4831 ("libsoup" ,libsoup)
4832 ("libuuid" ,util-linux "lib")
4833 ("libxml2" ,libxml2)
4834 ("lv2" ,lv2)
4835 ("pulseaudio" ,pulseaudio)
4836 ("webkitgtk" ,webkitgtk)))
4837 (home-page "https://nongnu.org/gsequencer/")
4838 (synopsis "Advanced Gtk+ Sequencer")
4839 (description
4840 "GSequencer allows you to play, capture and create music. There is a piano
4841 roll, automation and wave form editor. It has machines for playing drum samples,
4842 Soundfont2 sound containers and synthesizers. They usually can be connected to a
4843 MIDI input source (instrument). It has support for various audio backends like
4844 ALSA, Pulseaudio, JACK, OSSv4 and CoreAudio.")
4845 (license license:gpl3+)))
4846
4847 (define-public dssi
4848 (package
4849 (name "dssi")
4850 (version "1.1.1")
4851 (source (origin
4852 (method url-fetch)
4853 (uri (string-append
4854 "mirror://sourceforge/dssi/dssi/" version
4855 "/dssi-" version ".tar.gz"))
4856 (sha256
4857 (base32
4858 "0kl1hzhb7cykzkrqcqgq1dk4xcgrcxv0jja251aq4z4l783jpj7j"))))
4859 (build-system gnu-build-system)
4860 (inputs
4861 `(("alsa-lib" ,alsa-lib)
4862 ("jack" ,jack-1)
4863 ("ladspa" ,ladspa)
4864 ("libsamplerate" ,libsamplerate)
4865 ("libsndfile" ,libsndfile)
4866 ("liblo" ,liblo)))
4867 (native-inputs
4868 `(("pkg-config" ,pkg-config)))
4869 (synopsis "Audio plugin API for soft synths and effects")
4870 (description "DSSI is a plugin API for software instruments with user
4871 interfaces, permitting them to be hosted in-process by audio applications.
4872 It is intended to be simple, GUI-toolkit-agnostic, and slightly biased
4873 towards familiarity with MIDI. The DSSI distribution package contains
4874 a JACK/ALSA-sequencer reference host and some plugins as well as the
4875 specification and header.")
4876 (home-page "http://dssi.sourceforge.net/")
4877 ;; The DSSI interface is LGPL2.1+, some tests and examples are GPL2+.
4878 ;; The vast majority of examples are in the public domain.
4879 (license (list license:lgpl2.1+ license:gpl2+))))
4880
4881 (define-public rosegarden
4882 (package
4883 (name "rosegarden")
4884 (version "20.12")
4885 (source
4886 (origin
4887 (method url-fetch)
4888 (uri (string-append "mirror://sourceforge/rosegarden/rosegarden/"
4889 version "/rosegarden-" version ".tar.bz2"))
4890 (sha256
4891 (base32 "0nqw2caxmv6mqh485wzvywa024yvi18q87sd4dw9b2l5qnpq8rl8"))))
4892 (build-system cmake-build-system)
4893 (arguments
4894 `(#:configure-flags '("-DCMAKE_BUILD_TYPE=Release")
4895 #:phases
4896 (modify-phases %standard-phases
4897 (add-after 'unpack 'patch-tests
4898 (lambda _
4899 (substitute* "CMakeLists.txt"
4900 (("BUILD_TESTING OFF") "BUILD_TESTING ON")
4901 ;; Make tests work.
4902 ((" -fvisibility=hidden") ""))
4903 #t))
4904 (add-after 'unpack 'fix-references
4905 (lambda* (#:key inputs #:allow-other-keys)
4906 (substitute* "src/gui/general/ProjectPackager.cpp"
4907 (("\"flac\\>")
4908 (string-append "\"" (assoc-ref inputs "flac") "/bin/flac"))
4909 (("\"wavpack\\>")
4910 (string-append "\"" (assoc-ref inputs "wavpack") "/bin/wavpack"))
4911 (("\"wvunpack\\>")
4912 (string-append "\"" (assoc-ref inputs "wavpack") "/bin/wvunpack"))
4913 (("\"bash\\>")
4914 (string-append "\"" (assoc-ref inputs "bash") "/bin/bash"))
4915 (("\"tar\\>")
4916 (string-append "\"" (assoc-ref inputs "tar") "/bin/tar")))
4917 (substitute* "src/gui/general/LilyPondProcessor.cpp"
4918 (("\"convert-ly\\>")
4919 (string-append "\"" (assoc-ref inputs "lilypond") "/bin/convert-ly"))
4920 (("\"lilypond\\>")
4921 (string-append "\"" (assoc-ref inputs "lilypond") "/bin/lilypond")))
4922 #t))
4923 (add-after 'unpack 'make-reproducible
4924 (lambda _
4925 ;; Prevent Last-Modified from being written.
4926 ;; The "*.qm" files that are used in locale.qrc would have a new
4927 ;; mtime otherwise that is written into qrc_locale.cpp in the
4928 ;; end - except when we disable it.
4929 (substitute* "src/CMakeLists.txt"
4930 (("COMMAND [$][{]QT_RCC_EXECUTABLE[}]")
4931 "COMMAND ${QT_RCC_EXECUTABLE} --format-version 1")
4932 ;; Extraneous.
4933 ;;(("qt5_add_resources[(]rg_SOURCES ../data/data.qrc[)]")
4934 ;; "qt5_add_resources(rg_SOURCES ../data/data.qrc OPTIONS --format-version 1)")
4935 )
4936 ;; Make hashtable traversal order predicable.
4937 (setenv "QT_RCC_TEST" "1") ; important
4938 #t))
4939 (add-before 'check 'prepare-check
4940 (lambda _
4941 (setenv "QT_QPA_PLATFORM" "offscreen")
4942 ;; Tests create files in $HOME/.local/share/rosegarden .
4943 (mkdir-p "/tmp/foo")
4944 (setenv "HOME" "/tmp/foo")
4945 (setenv "XDG_RUNTIME_DIR" "/tmp/foo")
4946 #t)))))
4947 (inputs
4948 `(("alsa-lib" ,alsa-lib)
4949 ("bash" ,bash)
4950 ("dssi" ,dssi)
4951 ("flac" ,flac)
4952 ("fftwf" ,fftwf)
4953 ("jack" ,jack-1)
4954 ("ladspa" ,ladspa)
4955 ("liblo" ,liblo)
4956 ("libsamplerate" ,libsamplerate)
4957 ("lilypond" ,lilypond)
4958 ("lrdf" ,lrdf)
4959 ("qtbase" ,qtbase)
4960 ("tar" ,tar)
4961 ("lirc" ,lirc)
4962 ("wavpack" ,wavpack)
4963 ("zlib" ,zlib)))
4964 (native-inputs
4965 `(("pkg-config" ,pkg-config)
4966 ("qtlinguist" ,qttools)))
4967 (synopsis "Music composition and editing environment based around a MIDI
4968 sequencer")
4969 (description "Rosegarden is a music composition and editing environment
4970 based around a MIDI sequencer that features a rich understanding of music
4971 notation and includes basic support for digital audio.")
4972 (home-page "https://www.rosegardenmusic.com/")
4973 (license license:gpl2)))
4974
4975 (define-public patchmatrix
4976 (package
4977 (name "patchmatrix")
4978 (version "0.16.0")
4979 (source (origin
4980 (method git-fetch)
4981 (uri (git-reference
4982 (url "https://github.com/OpenMusicKontrollers/patchmatrix")
4983 (commit version)))
4984 (file-name (git-file-name "patchmatrix" version))
4985 (sha256
4986 (base32
4987 "020vp7zzxxzzjfic57vkpg68dm8hi98ilr1bj88xjsv6i47xmjbn"))))
4988 (build-system meson-build-system)
4989 (arguments '(#:tests? #f)) ; no test target
4990 (inputs
4991 `(("jack" ,jack-1)
4992 ("lv2" ,lv2)
4993 ("mesa" ,mesa)))
4994 (native-inputs
4995 `(("pkg-config" ,pkg-config)))
4996 (home-page "https://github.com/OpenMusicKontrollers/patchmatrix")
4997 (synopsis "Simple JACK patch bay")
4998 (description "PatchMatrix is a patch bay for the JACK audio connection
4999 kit. It provides a patch bay in flow matrix style for audio, MIDI, CV, and
5000 OSC connections.")
5001 (license license:artistic2.0)))
5002
5003 (define-public sorcer
5004 (package
5005 (name "sorcer")
5006 (version "1.1.3")
5007 (source (origin
5008 (method url-fetch)
5009 (uri (string-append "https://github.com/openAVproductions/"
5010 "openAV-Sorcer/archive/release-"
5011 version ".tar.gz"))
5012 (file-name (string-append name "-" version ".tar.gz"))
5013 (sha256
5014 (base32
5015 "07iyqj28wm0xc4arrq893bm12xjpz65db7ynrlmf6w8krg8wjmd0"))))
5016 (build-system cmake-build-system)
5017 (arguments
5018 `(#:tests? #f ; no tests included
5019 #:phases
5020 (modify-phases %standard-phases
5021 (add-after 'unpack 'remove-architecture-specific-flags
5022 (lambda _
5023 (substitute* "CMakeLists.txt"
5024 (("-msse2 -mfpmath=sse") ""))
5025 #t))
5026 (add-after 'unpack 'build-faust-sources
5027 (lambda* (#:key inputs #:allow-other-keys)
5028 (with-directory-excursion "faust"
5029 (delete-file "main.cpp")
5030 (invoke "faust" "-i"
5031 "-a" "lv2synth.cpp"
5032 "-o" "main.cpp" "main.dsp")))))))
5033 (inputs
5034 `(("boost" ,boost)
5035 ("lv2" ,lv2)
5036 ("ntk" ,ntk)))
5037 (native-inputs
5038 `(("faust" ,faust)
5039 ("pkg-config" ,pkg-config)))
5040 (home-page "http://openavproductions.com/sorcer/")
5041 (synopsis "Wavetable LV2 plugin synth")
5042 (description "Sorcer is a wavetable LV2 plugin synthesizer, targeted at
5043 the electronic or dubstep genre.")
5044 (license license:gpl3+)))
5045
5046 (define-public sonivox-eas
5047 (package
5048 (name "sonivox-eas")
5049 (version "1.1.0")
5050 (source (origin
5051 (method git-fetch)
5052 (uri (git-reference
5053 (url "https://github.com/pedrolcl/Linux-SonivoxEas")
5054 (commit (string-append "v" version))))
5055 (file-name (string-append name "-" version "-checkout"))
5056 (sha256
5057 (base32
5058 "0l9gs00p5g4k4qy6i7nv1mfi2n2wnsycwjrgrh9hxzam4irf2mw2"))))
5059 (build-system cmake-build-system)
5060 (arguments '(#:tests? #f)) ; there are no tests
5061 (inputs
5062 `(("alsa-lib" ,alsa-lib)
5063 ("drumstick" ,drumstick)
5064 ("pulseaudio" ,pulseaudio)
5065 ("qtbase" ,qtbase)))
5066 (native-inputs
5067 `(("pkg-config" ,pkg-config)))
5068 (home-page "https://github.com/pedrolcl/Linux-SonivoxEas")
5069 (synopsis "MIDI synthesizer library")
5070 (description "This project is a real time General MIDI synthesizer based
5071 on the Sonivox EAS Synthesizer by Google. It does not need external
5072 soundfonts, using embedded samples instead.")
5073 ;; Sonivox is released under the ASL2.0; the rest of the code is under
5074 ;; GPLv2+.
5075 (license (list license:gpl2+ license:asl2.0))))
5076
5077 (define-public whysynth
5078 (package
5079 (name "whysynth")
5080 (version "20170701")
5081 (source (origin
5082 (method url-fetch)
5083 (uri (string-append "http://smbolton.com/whysynth/whysynth-"
5084 version ".tar.bz2"))
5085 (sha256
5086 (base32
5087 "02qbn0hbvn1iym4zxv35b201blg31yjpgh71h8db0j5zls2xc0m6"))))
5088 (build-system gnu-build-system)
5089 (inputs
5090 `(("dssi" ,dssi)
5091 ("liblo" ,liblo)
5092 ("fftwf" ,fftwf)
5093 ("gtk+" ,gtk+-2)
5094 ("ladspa" ,ladspa)
5095 ("alsa-lib" ,alsa-lib)))
5096 (native-inputs
5097 `(("pkg-config" ,pkg-config)))
5098 (home-page "http://smbolton.com/whysynth.html")
5099 (synopsis "DSSI software synthesizer")
5100 (description "WhySynth is a versatile softsynth which operates as a plugin
5101 for the DSSI Soft Synth Interface. A brief list of features:
5102
5103 @enumerate
5104 @item 4 oscillators, 2 filters, 3 LFOs, and 5 envelope generators per voice.
5105 @item 11 oscillator modes: minBLEP, wavecycle, chorused wavecycle,
5106 asynchronous granular, three FM modes, waveshaper, noise, PADsynth, and phase
5107 distortion.
5108 @item 10 filter modes.
5109 @item flexible modulation and mixdown options, plus effects.
5110 @end enumerate
5111 ")
5112 (license license:gpl2+)))
5113
5114 (define-public libdiscid
5115 (package
5116 (name "libdiscid")
5117 (version "0.6.2")
5118 (source
5119 (origin
5120 (method url-fetch)
5121 (uri (string-append
5122 "http://ftp.musicbrainz.org/pub/musicbrainz/libdiscid/libdiscid-"
5123 version ".tar.gz"))
5124 (sha256
5125 (base32
5126 "1f9irlj3dpb5gyfdnb1m4skbjvx4d4hwiz2152f83m0d9jn47r7r"))))
5127 (arguments `(#:test-target "check"))
5128 (build-system cmake-build-system)
5129 (home-page "https://musicbrainz.org/doc/libdiscid")
5130 (synopsis "Disc id reader library")
5131 (description "libdiscid is a C library for creating MusicBrainz and freedb
5132 disc IDs from audio CDs. It reads a CD's table of contents (TOC) and generates
5133 an identifier which can be used to lookup the CD at MusicBrainz. Additionally,
5134 it provides a submission URL for adding the disc ID to the database and gathers
5135 ISRCs and the MCN (=UPC/EAN) from disc.")
5136 (license license:lgpl2.1+)))
5137
5138 (define-public python-discid
5139 (package
5140 (name "python-discid")
5141 (version "1.1.1")
5142 (source
5143 (origin
5144 (method url-fetch)
5145 (uri (pypi-uri "discid" version))
5146 (sha256
5147 (base32
5148 "1fgp67nhqlbvhhwrcxq5avil7alpzw4s4579hlyvxzbphdnbz8vq"))))
5149 (build-system python-build-system)
5150 (inputs
5151 `(("libdiscid" ,libdiscid)))
5152 (arguments
5153 `(#:phases
5154 (modify-phases %standard-phases
5155 (add-before 'build 'set-libdiscid
5156 ;; Set path of libdiscid
5157 (lambda* (#:key inputs #:allow-other-keys)
5158 (let ((discid (assoc-ref inputs "libdiscid")))
5159 (substitute* "discid/libdiscid.py"
5160 (("lib_name = (.*)$" all name)
5161 (string-append "lib_name = \"" discid
5162 "/lib/libdiscid.so.0\"\n")))
5163 #t))))))
5164 (home-page "https://python-discid.readthedocs.io/")
5165 (synopsis "Python bindings for Libdiscid")
5166 (description
5167 "This package provides Python bindings for the Libdiscid library. The
5168 main purpose is the calculation of @url{https://musicbrainz.org/doc/Disc%20ID,
5169 Disc IDs} for use with the MusicBrainz database. Additionally the disc
5170 @dfn{Media Catalog Number} (MCN) and track @dfn{International Standard
5171 Recording Code} (ISRC) can be extracted.}")
5172 (license license:lgpl3+)))
5173
5174 (define-public libmusicbrainz
5175 (package
5176 (name "libmusicbrainz")
5177 (version "5.1.0")
5178 (source
5179 (origin
5180 (method url-fetch)
5181 (uri (string-append
5182 "https://github.com/metabrainz/libmusicbrainz/releases/download/release-"
5183 version "/libmusicbrainz-" version ".tar.gz"))
5184 (sha256
5185 (base32
5186 "0ikb9igyyk28jm34raxfzkw2qyn4nzzwsymdyprp7cmvi6g2ajb7"))))
5187 (build-system cmake-build-system)
5188 (arguments
5189 `(#:phases
5190 (modify-phases %standard-phases
5191 (replace 'check
5192 (lambda _
5193 ;; requires network connections
5194 ;; (invoke "tests/mbtest")
5195 (invoke "tests/ctest")
5196 #t)))))
5197 (inputs `(("neon" ,neon)
5198 ("libxml2" ,libxml2)))
5199 (native-inputs `(("pkg-config" ,pkg-config)))
5200 (home-page "https://musicbrainz.org/doc/libmusicbrainz")
5201 (synopsis "MusicBrainz client library")
5202 (description "The MusicBrainz Client Library (libmusicbrainz), also known as
5203 mb_client, is a development library geared towards developers who wish to add
5204 MusicBrainz lookup capabilities to their applications.")
5205 (license license:lgpl2.1+)))
5206
5207 (define-public perl-musicbrainz-discid
5208 (package
5209 (name "perl-musicbrainz-discid")
5210 (version "0.04")
5211 (source (origin
5212 (method url-fetch)
5213 (uri (string-append
5214 "mirror://cpan/authors/id/N/NJ/NJH/MusicBrainz-DiscID-"
5215 version ".tar.gz"))
5216 (sha256
5217 (base32
5218 "1i4qk1qfcmxdibqkyfjrrjdq2zk42vjcz590qgiyc47fi9p6xx1j"))))
5219 (build-system perl-build-system)
5220 (native-inputs `(("pkg-config" ,pkg-config)
5221 ("which" ,which)))
5222 (inputs `(("libdiscid" ,libdiscid)))
5223 (home-page "https://metacpan.org/release/MusicBrainz-DiscID")
5224 (synopsis "Perl interface to the MusicBrainz libdiscid library")
5225 (description
5226 "The @code{MusicBrainz::DiscID} module is a Perl interface to the
5227 MusicBrainz libdiscid library, allowing you to manipulate digital audio
5228 compact disc (CDDA) identifiers.")
5229 (license license:gpl2)))
5230
5231 (define-public perl-webservice-musicbrainz
5232 (package
5233 (name "perl-webservice-musicbrainz")
5234 (version "1.0.5")
5235 (source (origin
5236 (method url-fetch)
5237 (uri (string-append
5238 "mirror://cpan/authors/id/B/BF/BFAIST/WebService-MusicBrainz-"
5239 version ".tar.gz"))
5240 (sha256
5241 (base32
5242 "16chs1l58cf000d5kalkyph3p31ci73p1rlyx98mfv10d2cq6fsj"))))
5243 (build-system perl-build-system)
5244 (arguments
5245 ;; Tests try to connect to http://musicbrainz.org.
5246 '(#:tests? #f))
5247 (native-inputs
5248 `(("perl-module-build" ,perl-module-build)))
5249 (propagated-inputs
5250 `(("perl-mojolicious" ,perl-mojolicious)))
5251 (home-page "https://metacpan.org/release/WebService-MusicBrainz")
5252 (synopsis "Web service API to the MusicBrainz database")
5253 (description
5254 "This module searches the MusicBrainz database through their web service
5255 at @code{musicbrainz.org}.")
5256 (license license:perl-license)))
5257
5258 (define-public clyrics
5259 (package
5260 (name "clyrics")
5261 (version "0.12")
5262 (source
5263 (origin
5264 (method git-fetch)
5265 (uri (git-reference
5266 (url "https://github.com/trizen/clyrics")
5267 (commit version)))
5268 (file-name (git-file-name name version))
5269 (sha256
5270 (base32 "1l9iqz6vxrrxapv7s110g360bqxksir4dcqd8w0l4lhmnfmz3vnk"))))
5271 (build-system trivial-build-system)
5272 (inputs
5273 `(("bash" ,bash) ; for the wrapped program
5274 ("perl" ,perl)
5275 ("perl-www-mechanize" ,perl-www-mechanize)
5276 ("perl-lwp-protocol-https" ,perl-lwp-protocol-https)
5277 ;; Required or else LWP will fail with "GET https://www.google.com/ ==>
5278 ;; 500 Can't verify SSL peers without knowing which Certificate
5279 ;; Authorities to trust".
5280 ("perl-mozilla-ca" ,perl-mozilla-ca)))
5281 (arguments
5282 `(#:modules ((guix build utils))
5283 #:builder (begin
5284 (use-modules (guix build utils)
5285 (ice-9 match)
5286 (srfi srfi-26))
5287 (let* ((source (assoc-ref %build-inputs "source"))
5288 (output (assoc-ref %outputs "out")))
5289 (setenv "PATH"
5290 (string-append
5291 (assoc-ref %build-inputs "bash") "/bin" ":"
5292 (assoc-ref %build-inputs "perl") "/bin" ":"))
5293 (copy-recursively source (getcwd))
5294 (patch-shebang "clyrics")
5295 (substitute* "clyrics"
5296 (("/usr/share") output))
5297 (install-file "clyrics" (string-append output "/bin"))
5298 (wrap-program (string-append output "/bin/clyrics")
5299 `("PERL5LIB" ":" =
5300 ,(delete
5301 ""
5302 (map (match-lambda
5303 (((? (cut string-prefix? "perl-" <>) name) . dir)
5304 (string-append dir "/lib/perl5/site_perl"))
5305 (_ ""))
5306 %build-inputs))))
5307 (copy-recursively "plugins" (string-append output "/clyrics"))
5308 #t))))
5309 (home-page "https://github.com/trizen/clyrics")
5310 (synopsis "Extensible lyrics fetcher")
5311 (description
5312 "Clyrics is an extensible command-line tool to fetch the lyrics of songs.
5313 It can be used in daemon mode along with the Music-on-Console (MOC) and cmus
5314 console music players.")
5315 (license license:gpl3+)))
5316
5317 (define-public demlo
5318 (let ((commit "fe9ec4c8ac2fa995ec18e6ac86d50d46df06ec01")
5319 (revision "0"))
5320 (package
5321 (name "demlo")
5322 (version (git-version "3.8" revision commit))
5323 (source
5324 (origin
5325 (method git-fetch)
5326 (uri (git-reference
5327 (url
5328 "https://gitlab.com/ambrevar/demlo")
5329 (commit commit)))
5330 (file-name (git-file-name name version))
5331 (sha256
5332 (base32
5333 "1afkbqhzn6da7zaf5ab7dvyqj1izqhzprwfb4hw448fllda9bdvk"))))
5334 (build-system go-build-system)
5335 (native-inputs
5336 `(("lua" ,lua)
5337 ("go-github-com-mattn-go-isatty" ,go-github-com-mattn-go-isatty)
5338 ("go-github-com-mattn-go-colorable" ,go-github-com-mattn-go-colorable)
5339 ("go-github-com-aarzilli-golua" ,go-github-com-aarzilli-golua)
5340 ("go-gitlab-com-ambrevar-damerau" ,go-gitlab-com-ambrevar-damerau)
5341 ("go-gitlab-com-ambrevar-golua-unicode" ,go-gitlab-com-ambrevar-golua-unicode)
5342 ("go-github-com-mgutz-ansi" ,go-github-com-mgutz-ansi)
5343 ("go-github-com-michiwend-gomusicbrainz" ,go-github-com-michiwend-gomusicbrainz)
5344 ("go-github-com-stevedonovan-luar" ,go-github-com-stevedonovan-luar)
5345 ("go-github-com-wtolson-go-taglib" ,go-github-com-wtolson-go-taglib)
5346 ("go-github-com-yookoala-realpath" ,go-github-com-yookoala-realpath)))
5347 (inputs
5348 `(("chromaprint" ,chromaprint)
5349 ("ffmpeg" ,ffmpeg)))
5350 (arguments
5351 `(#:import-path "gitlab.com/ambrevar/demlo"
5352 #:phases
5353 (modify-phases %standard-phases
5354 (add-after 'install 'wrap-program
5355 (lambda* (#:key inputs outputs #:allow-other-keys)
5356 (let ((out (assoc-ref outputs "out"))
5357 (ffmpeg (assoc-ref inputs "ffmpeg"))
5358 (chromaprint (assoc-ref inputs "chromaprint")))
5359 (wrap-program (string-append out "/bin/demlo")
5360 `("XDG_DATA_DIRS" ":" prefix (,out))
5361 `("PATH" ":" prefix
5362 ,(map (lambda (dir)
5363 (string-append dir "/bin:"
5364 dir "/sbin"))
5365 (list ffmpeg chromaprint))))
5366 #t)))
5367 (add-after 'install 'install-scripts
5368 (lambda* (#:key outputs #:allow-other-keys)
5369 (let* ((out (assoc-ref outputs "out"))
5370 (root (string-append out "/src/gitlab.com/ambrevar/demlo"))
5371 (xdg-data-dirs (string-append out "/demlo")))
5372 (copy-recursively (string-append root "/actions")
5373 (string-append xdg-data-dirs "/actions"))
5374 (copy-recursively (string-append root "/scripts")
5375 (string-append xdg-data-dirs "/scripts"))
5376 (install-file (string-append root "/config.lua") xdg-data-dirs)
5377 ;; TODO: Test fish completion.
5378 (install-file (string-append root "/completion/demlo.fish")
5379 (string-append out "/share/fish/vendor_completions.d"))
5380 #t))))))
5381 (home-page "https://gitlab.com/ambrevar/demlo")
5382 (synopsis "Dynamic and extensible music library organizer")
5383 (description "Demlo is a music library organizer. It can encode, fix
5384 case, change folder hierarchy according to tags or file properties, tag from
5385 an online database, copy covers while ignoring duplicates or those below a
5386 quality threshold, and much more. It makes it possible to manage your
5387 libraries uniformly and dynamically. You can write your own rules to fit your
5388 needs best.
5389
5390 Demlo can address any of these recurring music library issues (and much more):
5391
5392 @itemize
5393 @item Fix the lack of folder structure.
5394 @item Normalize tags, fix their case, chose which tags to keep and which to
5395 discard.
5396 @item Handle lossy and lossless audio differently.
5397 @item Handle mp3 id3tags hell...
5398 @item Handle multiple covers, whether embedded and/or external, resize covers,
5399 discard bad quality ones.
5400 @end itemize\n")
5401 (license license:expat))))
5402
5403 (define-public fmit
5404 (package
5405 (name "fmit")
5406 (version "1.2.14")
5407 (source (origin
5408 (method git-fetch)
5409 (uri (git-reference
5410 (url "https://github.com/gillesdegottex/fmit/")
5411 (commit (string-append "v" version))))
5412 (file-name (git-file-name name version))
5413 (sha256
5414 (base32
5415 "1q062pfwz2vr9hbfn29fv54ip3jqfd9r99nhpr8w7mn1csy38azx"))))
5416 (build-system gnu-build-system)
5417 (arguments
5418 '(#:phases
5419 (modify-phases %standard-phases
5420 (delete 'configure)
5421 (add-before 'build 'qmake
5422 (lambda _
5423 (let ((out (assoc-ref %outputs "out")))
5424 (invoke "qmake"
5425 "fmit.pro"
5426 (string-append "PREFIX=" out)
5427 (string-append "PREFIXSHORTCUT=" out)
5428 "CONFIG+=acs_qt acs_alsa acs_jack acs_portaudio"))))
5429 (add-after 'install 'wrap-executable
5430 (lambda* (#:key inputs outputs #:allow-other-keys)
5431 (let ((out (assoc-ref outputs "out")))
5432 (wrap-program (string-append out "/bin/fmit")
5433 `("QT_PLUGIN_PATH" ":" prefix
5434 ,(map (lambda (label)
5435 (string-append (assoc-ref inputs label)
5436 "/lib/qt5/plugins"))
5437 '("qtbase" "qtmultimedia" "qtsvg")))
5438 `("QML2_IMPORT_PATH" ":" prefix
5439 ,(map (lambda (label)
5440 (string-append (assoc-ref inputs label)
5441 "/lib/qt5/qml"))
5442 '("qtmultimedia"))))
5443 #t))))))
5444 (inputs
5445 `(("alsa-lib" ,alsa-lib)
5446 ("fftw" ,fftw)
5447 ("jack" ,jack-1)
5448 ("portaudio" ,portaudio)
5449 ("qtbase" ,qtbase)
5450 ("qtmultimedia" ,qtmultimedia)
5451 ("qtsvg" ,qtsvg)))
5452 (native-inputs
5453 `(("gettext" ,gettext-minimal)
5454 ("hicolor-icon-theme" ,hicolor-icon-theme)
5455 ("itstool" ,itstool)
5456 ("qttools" ,qttools)))
5457 (synopsis "Musical instrument tuner")
5458 (description "FMIT is a graphical utility for tuning musical instruments,
5459 with error and volume history, and advanced features.")
5460 (home-page "https://gillesdegottex.github.io/fmit/")
5461 ;; Most of the code is under GPL2+, but some abstract or helper classes
5462 ;; are under LGPL2.1.
5463 (license (list license:gpl2+ license:lgpl2.1))))
5464
5465 (define-public mloop
5466 (let ((commit "adebff98b0b4dc5872a03acb82e89c77cb29c127")
5467 (revision "0"))
5468 (package
5469 (name "mloop")
5470 (version (git-version "0.0.1" revision commit))
5471 (source (origin
5472 (method git-fetch)
5473 (uri (git-reference
5474 (url "http://git.fuzzle.org/mloop")
5475 (commit commit)))
5476 (file-name (git-file-name name version))
5477 (sha256
5478 (base32
5479 "175gxvg5slq0bllcx1c381rjlq3xpxww8c3kpiw5i2kfr4m52myz"))))
5480 (build-system waf-build-system)
5481 (arguments
5482 `(#:python ,python-2
5483 #:tests? #f)) ; no "check" target
5484 (inputs
5485 `(("jack" ,jack-1)
5486 ("ncurses" ,ncurses)))
5487 (native-inputs
5488 `(("pkg-config" ,pkg-config)))
5489 (home-page "https://fuzzle.org/~petern/mloop.html")
5490 (synopsis "Live MIDI looper")
5491 (description "mloop is a live MIDI looping system, using jack-midi.
5492 Loops are recorded, optionally with beat quantization, and can then be played
5493 back, either once or looping. A 'note cache' system is implemented to
5494 remember which notes are pressed and their velocities. This allows for a loop
5495 to start off with the currently pressed notes, making seamless loops much
5496 easier to perform. Features include:
5497
5498 @itemize
5499 @item Quantisation; end a loop on a beat exactly.
5500 @item Delayed recording; wait for a MIDI event before starting a loop record.
5501 @item Adjust tempo; Playback speed of loops can be adjusted on the fly.
5502 @end itemize\n")
5503 (license license:gpl2))))
5504
5505 (define-public pragha
5506 (package
5507 (name "pragha")
5508 (version "1.3.4")
5509 (source (origin
5510 (method url-fetch)
5511 (uri (string-append "https://github.com/pragha-music-player/pragha/"
5512 "releases/download/v" version "/pragha-" version
5513 ".tar.bz2"))
5514 (sha256
5515 (base32
5516 "19kbhq99bkimx3aqrdzln0vlr4slkpx6kq66j731jvqyq76nlkp5"))))
5517 (build-system glib-or-gtk-build-system)
5518 (native-inputs
5519 `(("intltool" ,intltool)
5520 ("pkg-config" ,pkg-config)))
5521 (inputs
5522 `(("glib" ,glib)
5523 ("grilo" ,grilo)
5524 ("gstreamer" ,gstreamer)
5525 ("gst-plugins-base" ,gst-plugins-base)
5526 ("gst-plugins-good" ,gst-plugins-good)
5527 ("gtk+" ,gtk+)
5528 ("libcddb" ,libcddb)
5529 ("libcdio" ,libcdio)
5530 ("libcdio-paranoia" ,libcdio-paranoia)
5531 ("libgudev" ,libgudev)
5532 ("libnotify" ,libnotify)
5533 ("libpeas" ,libpeas)
5534 ("libsoup" ,libsoup)
5535 ("sqlite" ,sqlite)
5536 ("taglib" ,taglib)))
5537 (arguments
5538 `(#:phases
5539 (modify-phases %standard-phases
5540 (add-after 'install 'wrap-program
5541 (lambda* (#:key inputs outputs #:allow-other-keys)
5542 (let ((out (assoc-ref outputs "out"))
5543 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
5544 (wrap-program (string-append out "/bin/pragha")
5545 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path)))
5546 #t))))))
5547 (home-page "https://pragha-music-player.github.io")
5548 (synopsis "Music player")
5549 (description "Pragha is a lightweight music player based on Gtk and
5550 sqlite. It is constructed to be fast, light, and simultaneously tries to be
5551 complete without obstructing your daily work.")
5552 (license license:gpl3+)))
5553
5554 (define-public playerctl
5555 (package
5556 (name "playerctl")
5557 (version "2.2.1")
5558 (source (origin
5559 (method git-fetch)
5560 (uri (git-reference
5561 (url "https://github.com/altdesktop/playerctl")
5562 (commit (string-append "v" version))))
5563 (file-name (git-file-name name version))
5564 (sha256
5565 (base32
5566 "17hi33sw3663qz5v54bqqil31sgkrlxkb2l5bgqk87pac6x2wnbz"))))
5567 (build-system meson-build-system)
5568 (arguments
5569 `(#:configure-flags '("-Dintrospection=false" "-Dgtk-doc=false")))
5570 (inputs `(("python-pygobject" ,python-pygobject)))
5571 (native-inputs
5572 `(("glib:bin" ,glib "bin")
5573 ("pkg-config" ,pkg-config)))
5574 (synopsis "Control MPRIS-supporting media player applications")
5575 (description
5576 "Playerctl is a command-line utility and library for controlling media
5577 players that implement the MPRIS D-Bus Interface Specification. Playerctl
5578 makes it easy to bind player actions, such as play and pause, to media keys.
5579 You can also get metadata about the playing track such as the artist and title
5580 for integration into status line generators or other command-line tools.")
5581 (home-page "https://github.com/altdesktop/playerctl")
5582 (license license:lgpl3+)))
5583
5584 (define-public artyfx
5585 (package
5586 (name "artyfx")
5587 (version "1.3.1")
5588 (source (origin
5589 (method git-fetch)
5590 (uri (git-reference
5591 (url
5592 "https://github.com/openAVproductions/openAV-ArtyFX")
5593 (commit (string-append "release-" version))))
5594 (file-name (git-file-name name version))
5595 (sha256
5596 (base32
5597 "0cxikdnxgjk5gp6kmml4dx2jy2cy4x0c837h7bwraj2pfz0nfgqq"))))
5598 (build-system cmake-build-system)
5599 (arguments
5600 `(#:tests? #f ; no tests included
5601 #:phases
5602 (modify-phases %standard-phases
5603 (add-after 'unpack 'remove-architecture-specific-flags
5604 (lambda _
5605 (substitute* "CMakeLists.txt"
5606 (("-msse2 -mfpmath=sse") ""))
5607 #t)))))
5608 (inputs
5609 `(("cairo" ,cairo)
5610 ("libsndfile" ,libsndfile)))
5611 (native-inputs
5612 `(("pkg-config" ,pkg-config)
5613 ("lv2" ,lv2)))
5614 (home-page "http://openavproductions.com/artyfx/")
5615 (synopsis "Audio effect LV2 plugin bundle")
5616 (description "ArtyFX is an LV2 plugin bundle of artistic real-time audio
5617 effects. It contains a bitcrusher, delay, distortion, equalizer, compressor,
5618 and reverb.")
5619 (license license:gpl2+)))
5620
5621 (define-public lsp-plugins
5622 (package
5623 (name "lsp-plugins")
5624 (version "1.1.26")
5625 (source
5626 (origin
5627 (method git-fetch)
5628 (uri (git-reference
5629 (url "https://github.com/sadko4u/lsp-plugins")
5630 (commit (string-append "lsp-plugins-" version))))
5631 (file-name (git-file-name name version))
5632 (sha256
5633 (base32 "1apw8zh3a3il4smkjji6bih4vbsymj0hjs10fgkrd4nazqkjvgyd"))))
5634 (build-system gnu-build-system)
5635 (arguments
5636 `(#:make-flags
5637 (list
5638 (string-append "CC=" ,(cc-for-target))
5639 "BUILD_MODULES=\"lv2 ladspa jack\"" "VST_UI=0"
5640 (string-append "PREFIX=" (assoc-ref %outputs "out"))
5641 (string-append "ETC_PATH=" (assoc-ref %outputs "out") "/etc"))
5642 #:phases
5643 (modify-phases %standard-phases
5644 (delete 'configure)) ; no configure script
5645 #:test-target "test"))
5646 (inputs
5647 `(("cairo" ,cairo)
5648 ("hicolor-icon-theme" ,hicolor-icon-theme)
5649 ("jack" ,jack-1)
5650 ("ladspa" ,ladspa)
5651 ("libsndfile" ,libsndfile)
5652 ("lv2" ,lv2)
5653 ("mesa" ,mesa)))
5654 (native-inputs
5655 `(("pkg-config" ,pkg-config)))
5656 (synopsis "Audio plugin collection")
5657 (description "LSP (Linux Studio Plugins) is a collection of audio
5658 plugins available as LADSPA/LV2 plugins and as standalone JACK
5659 applications.")
5660 (home-page "https://lsp-plug.in/")
5661 (license license:lgpl3)))
5662
5663 (define-public sherlock-lv2
5664 (package
5665 (name "sherlock-lv2")
5666 (version "0.24.0")
5667 (source
5668 (origin
5669 (method url-fetch)
5670 (uri (string-append
5671 "https://git.open-music-kontrollers.ch/lv2/"
5672 "sherlock.lv2/snapshot/sherlock.lv2-"
5673 version ".tar.xz"))
5674 (sha256
5675 (base32
5676 "08gjfx7vrsx9zvj04j8cr3vscxmq6jr2hbdi6dfgp1l1dnnpxsgq"))))
5677 (build-system meson-build-system)
5678 (inputs
5679 `(("glu" ,glu)
5680 ("libx11" ,libx11)
5681 ("mesa" ,mesa)
5682 ("sratom" ,sratom)))
5683 (native-inputs
5684 `(("flex" ,flex)
5685 ("pkg-config" ,pkg-config)))
5686 (synopsis "Investigative LV2 plugin bundle")
5687 (description "The Sherlock plugin bundle contains LV2 plugins for
5688 visualizing LV2 atom, MIDI and OSC events. They can be used for monitoring
5689 and debugging of event signal flows inside plugin graphs.")
5690 (home-page "https://open-music-kontrollers.ch/lv2/sherlock/")
5691 (license license:artistic2.0)))
5692
5693 (define-public foo-yc20
5694 (package
5695 (name "foo-yc20")
5696 (version "1.3.0")
5697 (source
5698 (origin
5699 (method url-fetch)
5700 (uri (string-append "https://github.com/sampov2/foo-yc20/releases/download/"
5701 version "/foo-yc20-" version ".tar.bz2"))
5702 (sha256
5703 (base32
5704 "1drzfyr7mzb58pdv0gsqkg6ds6kbgp6g25rrv1yya1611cljgvjh"))))
5705 (build-system gnu-build-system)
5706 (arguments
5707 `(#:make-flags
5708 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
5709 #:tests? #f ; no automated test
5710 #:phases
5711 (modify-phases %standard-phases
5712 (replace 'configure
5713 (lambda _
5714 (substitute* "Makefile"
5715 (("-mtune=native") "")
5716 (("-march=native") ""))
5717 #t)))))
5718 (inputs
5719 `(("jack" ,jack-1)
5720 ("lv2" ,lv2)
5721 ("cairo" ,cairo)
5722 ("gtk" ,gtk+-2)))
5723 (native-inputs
5724 `(("faust" ,faust)
5725 ("pkg-config" ,pkg-config)))
5726 (home-page "https://foo-yc20.codeforcode.com/")
5727 (synopsis "Implementation of Yamaha YC-20 combo organ from 1969")
5728 (description "This is a Faust implementation of a 1969 designed Yamaha
5729 combo organ, the YC-20. This package provides an LV2 plugin and a standalone
5730 version. Processing for the organ is based on original schematics and
5731 measurements from a working specimen. This instrument simulates the circutry
5732 as a whole to realisticly reproduce the features and flaws of the real deal.")
5733 ;; Note that after 1.3.0 the license was changed.
5734 (license license:gpl3+)))
5735
5736 (define-public spectacle-analyzer
5737 (package
5738 (name "spectacle-analyzer")
5739 (version "1.0")
5740 (source
5741 (origin
5742 (method git-fetch)
5743 (uri (git-reference
5744 (url "https://github.com/jpcima/spectacle")
5745 (commit (string-append "v" version))
5746 ;; Bundles a specific commit of the DISTRHO plugin framework.
5747 (recursive? #t)))
5748 (file-name (git-file-name name version))
5749 (sha256
5750 (base32
5751 "0xiqa6z8g68lcvnwhws4j7c4py35r9d20cirrili7ycyp3a6149a"))))
5752 (build-system gnu-build-system)
5753 (arguments
5754 `(#:tests? #f ; no check target
5755 #:make-flags
5756 (list "CC=gcc"
5757 (string-append "PREFIX=" (assoc-ref %outputs "out")))
5758 #:phases
5759 (modify-phases %standard-phases
5760 (delete 'configure))))
5761 (native-inputs
5762 `(("pkg-config" ,pkg-config)
5763 ("xxd" ,xxd)))
5764 (inputs
5765 `(("cairo" ,cairo)
5766 ("fftw" ,fftw)
5767 ("fftwf" ,fftwf)
5768 ("jack" ,jack-1)
5769 ("lv2" ,lv2)
5770 ("mesa" ,mesa)))
5771 (synopsis "Realtime graphical spectrum analyzer")
5772 (description "Spectacle is a real-time spectral analyzer using the
5773 short-time Fourier transform, available as LV2 audio plugin and JACK client.")
5774 (home-page "https://github.com/jpcima/spectacle")
5775 ;; The project is licensed under the ISC license, and files in
5776 ;; sources/plugin carry the Expat license.
5777 (license (list license:isc license:expat))))
5778
5779 (define-public x42-plugins
5780 (package
5781 (name "x42-plugins")
5782 (version "20200714")
5783 (source
5784 (origin
5785 (method url-fetch)
5786 (uri
5787 (string-append "https://gareus.org/misc/x42-plugins/x42-plugins-"
5788 version ".tar.xz"))
5789 (sha256
5790 (base32 "1av05ykph8x67018hm9zfgh1vk0zi39mvrsxkj6bm4hkarxf0vvl"))))
5791 (build-system gnu-build-system)
5792 (arguments
5793 `(#:tests? #f ; no "check" target
5794 #:make-flags
5795 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
5796 "LIBZITACONVOLVER=-lzita-convolver"
5797 (string-append "FONTFILE="
5798 (assoc-ref %build-inputs "font-dejavu")
5799 "/share/fonts/truetype/DejaVuSans-Bold.ttf"))
5800 #:phases
5801 (modify-phases %standard-phases
5802 (add-before 'build 'set-CC-variable
5803 (lambda _
5804 (setenv "CC" "gcc")
5805 #t))
5806 (delete 'configure))))
5807 (inputs
5808 `(("cairo" ,cairo)
5809 ("fftwf" ,fftwf)
5810 ("ftgl" ,ftgl)
5811 ("glib" ,glib)
5812 ("glu" ,glu)
5813 ("hicolor-icon-theme" ,hicolor-icon-theme)
5814 ("jack" ,jack-1)
5815 ("libltc" ,libltc)
5816 ("libsamplerate" ,libsamplerate)
5817 ("libx11" ,libx11)
5818 ("pango" ,pango)
5819 ("zita-convolver" ,zita-convolver)))
5820 (native-inputs
5821 `(("help2man" ,help2man)
5822 ("liblo" ,liblo)
5823 ("lv2" ,lv2)
5824 ("font-dejavu" ,font-dejavu)
5825 ("pkg-config" ,pkg-config)))
5826 (synopsis "Collection of LV2/JACK audio/MIDI processing plugins")
5827 (description "x42-plugins is a collection of over 80 cross-platform LV2
5828 audio and MIDI plugins that can also run as standalone JACK applications.")
5829 (home-page "https://x42-plugins.com/x42/")
5830 (license license:gpl2+)))
5831
5832 (define-public zam-plugins
5833 (package
5834 (name "zam-plugins")
5835 (version "3.13")
5836 (source
5837 (origin
5838 (method git-fetch)
5839 (uri
5840 (git-reference
5841 (url "https://github.com/zamaudio/zam-plugins")
5842 (commit version)
5843 ;; Recursive to fetch the DISTRHO plugin framework. This
5844 ;; framework is intended to be included in the sources
5845 ;; and not to be used as a library.
5846 (recursive? #t)))
5847 (file-name (git-file-name name version))
5848 (sha256
5849 (base32 "0bxvssqnnd7bph3w1d6xcmxradv4cqq3wyzyv1a1hfm71a0pdahs"))))
5850 (build-system gnu-build-system)
5851 (arguments
5852 `(#:tests? #f ;no "check" target
5853 #:make-flags
5854 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
5855 "HAVE_ZITA_CONVOLVER=true")
5856 #:phases
5857 (modify-phases %standard-phases
5858 (add-before 'build 'set-CC-variable
5859 (lambda _
5860 (setenv "CC" "gcc") #t))
5861 (delete 'configure))))
5862 (inputs
5863 `(("fftwf" ,fftwf)
5864 ("jack" ,jack-1) ;for the standalone JACK application
5865 ("liblo" ,liblo)
5866 ("libsamplerate" ,libsamplerate)
5867 ("mesa" ,mesa)
5868 ("zita-convolver" ,zita-convolver)))
5869 (native-inputs
5870 `(("ladspa" ,ladspa)
5871 ("lv2" ,lv2)
5872 ("pkg-config" ,pkg-config)))
5873 (synopsis "Collection of audio processing plugins")
5874 (description
5875 "Zam plugins is a collection of audio processing plugins in the LADSPA,
5876 LV2 and VST2 formats, as well as standalone JACK versions. The collection
5877 includes ZaMaximX2, ZamAutoSat, ZamComp, ZamCompX2, ZamEQ2, ZamGEQ31,
5878 ZamHeadX2, ZamPhono, ZamGate, ZamGateX2, ZamTube, ZamDelay, ZamDynamicEQ,
5879 ZaMultiComp, ZaMultiCompX2 and ZamSynth.")
5880 (home-page "http://www.zamaudio.com/?p=976")
5881 (license license:gpl2+)))
5882
5883 (define-public geonkick
5884 (package
5885 (name "geonkick")
5886 (version "2.7.0")
5887 (source
5888 (origin
5889 (method git-fetch)
5890 (uri (git-reference
5891 (url "https://gitlab.com/iurie-sw/geonkick")
5892 (commit (string-append "v" version))))
5893 (file-name (git-file-name name version))
5894 (sha256
5895 (base32 "0w1mvqm46qdwldcl81svaykwii4wvx7mcr57kwvnj0iv2qrc891i"))))
5896 (build-system cmake-build-system)
5897 (arguments
5898 `(#:tests? #f ;no tests included
5899 #:configure-flags
5900 (list (string-append "-DGKICK_REDKITE_SDK_PATH="
5901 (assoc-ref %build-inputs "redkite"))
5902 (string-append "-DCMAKE_INSTALL_PREFIX="
5903 (assoc-ref %outputs "out")))))
5904 (inputs
5905 `(("hicolor-icon-theme" ,hicolor-icon-theme)
5906 ("jack" ,jack-1) ;for the standalone JACK application
5907 ("libsndfile" ,libsndfile)
5908 ("libx11" ,libx11)
5909 ("redkite" ,redkite)
5910 ("rapidjson" ,rapidjson)))
5911 (native-inputs
5912 `(("lv2" ,lv2)
5913 ;; Fails with default gcc (#include <filesystem> not found).
5914 ("gcc" ,gcc-9)
5915 ("pkg-config" ,pkg-config)
5916 ("sord" ,sord)))
5917 (synopsis "Percussion synthesizer")
5918 (description "Geonkick is a synthesizer that can synthesize elements
5919 of percussion such as kicks, snares, hit-hats, shakers, claps and sticks.
5920 It can also play and mix samples.")
5921 (home-page "https://gitlab.com/iurie-sw/geonkick")
5922 (license license:gpl3+)))
5923
5924 (define-public mamba
5925 (package
5926 (name "mamba")
5927 (version "2.1")
5928 (source
5929 (origin
5930 (method git-fetch)
5931 (uri
5932 (git-reference
5933 (url "https://github.com/brummer10/Mamba")
5934 (commit (string-append "v" version))
5935 (recursive? #t))) ; references specific commit of libxputty
5936 (file-name (git-file-name name version))
5937 (sha256
5938 (base32
5939 "1bq6sqsij3cdwcsj3wpsnivi4c7jl4l5gwfywhqnib70v60smdja"))))
5940 (build-system gnu-build-system)
5941 (arguments
5942 `(#:tests? #f ; no "check" target
5943 #:make-flags
5944 (list (string-append "PREFIX="
5945 (assoc-ref %outputs "out"))
5946 "CC=gcc")
5947 #:phases
5948 (modify-phases %standard-phases
5949 (delete 'configure))))
5950 (inputs
5951 `(("alsa-lib" ,alsa-lib)
5952 ("cairo" ,cairo)
5953 ("fluidsynth" ,fluidsynth)
5954 ("jack" ,jack-1)
5955 ("liblo" ,liblo)
5956 ("libsigc++" ,libsigc++)
5957 ("libsmf" ,libsmf)
5958 ("libx11" ,libx11)))
5959 (native-inputs
5960 `(("pkg-config" ,pkg-config)))
5961 (home-page "https://github.com/brummer10/Mamba")
5962 (synopsis "Virtual MIDI keyboard and MIDI file player/recorder for JACK")
5963 (description "Mamba is a virtual MIDI keyboard and MIDI file
5964 player/recorder for the JACK Audio Connection Kit. It comes with predefined
5965 keymaps for QWERTZ, QWERTY and AZERTY keyboards and also allows custom
5966 ones.")
5967 (license license:bsd-0)))
5968
5969 (define-public dpf-plugins
5970 (package
5971 (name "dpf-plugins")
5972 (version "1.3")
5973 (source
5974 (origin
5975 (method git-fetch)
5976 (uri
5977 (git-reference
5978 (url "https://github.com/DISTRHO/DPF-Plugins")
5979 (commit (string-append "v" version))))
5980 (file-name (git-file-name name version))
5981 (sha256
5982 (base32
5983 "1hsfmpv3kvpiwk8nfw9xpaipzy0n27i83y2v1yr93lznwm5rqrbs"))))
5984 (build-system gnu-build-system)
5985 (arguments
5986 `(#:tests? #f ; no "check" target
5987 #:make-flags
5988 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
5989 #:phases
5990 (modify-phases %standard-phases
5991 (add-before 'build 'set-CC-variable
5992 (lambda _ (setenv "CC" "gcc") #t))
5993 (delete 'configure))))
5994 (inputs
5995 `(("cairo" ,cairo)
5996 ("liblo" ,liblo) ; for dssi plugins
5997 ("jack" ,jack-1) ; for standalone applications
5998 ("mesa" ,mesa)))
5999 (native-inputs
6000 `(("pkg-config" ,pkg-config)
6001 ("dssi" ,dssi)
6002 ("lv2" ,lv2)))
6003 (home-page "https://github.com/DISTRHO/DPF-Plugins")
6004 (synopsis "Audio plugin collection")
6005 (description "Collection of audio plugins built with the DISTRHO Plugin
6006 Framework (DPF) available in LADSPA, DSSI, LV2 and VST2 formats. This
6007 package includes the following plugins: glBars, Kars, Max-Gen examples
6008 (MaBitcrush, MaFreeverb, MaGigaverb, MaPitchshift), Mini-Series (3BandEQ,
6009 3BandSplitter, PingPongPan), ndc-Plugs (Amplitude Imposer, Cycle Shifter,
6010 Soul Force), MVerb, Nekobi, and ProM.")
6011 ;; This package consists of several plugins refactored to use the
6012 ;; DISTHRO Plugin Framework (DPF). Different copyrights and licenses
6013 ;; apply to different plugins. The root LICENSE file has a table with
6014 ;; license information for each plugin and paths to each license
6015 (license (list license:isc license:gpl3 license:lgpl3 license:expat license:gpl2))))
6016
6017 (define-public avldrums-lv2
6018 (package
6019 (name "avldrums-lv2")
6020 (version "0.4.1")
6021 (source
6022 (origin
6023 (method git-fetch)
6024 (uri (git-reference
6025 (url "https://github.com/x42/avldrums.lv2")
6026 (commit (string-append "v" version))
6027 ;; This plugin expects the robtk submodule's source files to be
6028 ;; there in order to build.
6029 (recursive? #t)))
6030 (file-name (git-file-name name version))
6031 (sha256
6032 (base32 "1vwdp3d8qzd493qa99ddya7iql67bbfxmbcl8hk96lxif2lhmyws"))))
6033 (build-system gnu-build-system)
6034 (arguments
6035 `(#:tests? #f ; no "check" target
6036 #:make-flags
6037 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
6038 #:phases
6039 (modify-phases %standard-phases
6040 (add-before 'build 'set-CC-variable
6041 (lambda _
6042 (setenv "CC" "gcc") #t))
6043 (delete 'configure))))
6044 (inputs
6045 `(("cairo" ,cairo)
6046 ("dssi" ,dssi)
6047 ("glu" ,glu)
6048 ("mesa" ,mesa)
6049 ("pango" ,pango)))
6050 (native-inputs
6051 `(("pkg-config" ,pkg-config)
6052 ("lv2" ,lv2)))
6053 (home-page "https://x42-plugins.com/x42/x42-avldrums")
6054 (synopsis "Drum sample player LV2 plugin dedicated to the AVLinux Drumkits")
6055 (description "AVLdrums is a drum sample player LV2 plugin dedicated to Glen
6056 MacArthur's AVLdrums. This plugin provides a convenient way to sequence and mix
6057 MIDI drums and comes as two separate drumkits: Black Pearl and Red Zeppelin.")
6058 (license license:gpl2+)))
6059
6060 (define-public helm
6061 (package
6062 (name "helm")
6063 (version "0.9.0")
6064 (source
6065 (origin
6066 (method git-fetch)
6067 (uri
6068 (git-reference
6069 (url "https://github.com/mtytel/helm")
6070 (commit (string-append "v" version))))
6071 (file-name (git-file-name name version))
6072 (sha256
6073 (base32
6074 "17ys2vvhncx9i3ydg3xwgz1d3gqv4yr5mqi7vr0i0ca6nad6x3d4"))))
6075 (build-system gnu-build-system)
6076 (arguments
6077 `(#:tests? #f ; no "check" target
6078 #:make-flags
6079 (list (string-append "DESTDIR=" (assoc-ref %outputs "out"))
6080 "lv2" "standalone")
6081 #:phases
6082 (modify-phases %standard-phases
6083 (add-after 'unpack 'include-pnglib-code-and-remove-usr-from-paths
6084 (lambda _
6085 (substitute* "standalone/builds/linux/Makefile"
6086 (("JUCE_INCLUDE_PNGLIB_CODE=0")
6087 "JUCE_INCLUDE_PNGLIB_CODE=1"))
6088 (substitute* "builds/linux/LV2/Makefile"
6089 (("JUCE_INCLUDE_PNGLIB_CODE=0")
6090 "JUCE_INCLUDE_PNGLIB_CODE=1"))
6091 (substitute* "Makefile"
6092 (("/usr") ""))
6093 #t))
6094 (add-before 'reset-gzip-timestamps 'make-gz-files-writable
6095 (lambda* (#:key outputs #:allow-other-keys)
6096 (for-each make-file-writable
6097 (find-files (string-append (assoc-ref outputs "out"))
6098 ".*\\.gz$"))
6099 #t))
6100 (delete 'configure))))
6101 (inputs
6102 `(("alsa-lib" ,alsa-lib)
6103 ("curl" ,curl)
6104 ("freetype2" ,freetype)
6105 ("hicolor-icon-theme" ,hicolor-icon-theme)
6106 ("libxcursor" ,libxcursor)
6107 ("libxinerama" ,libxinerama)
6108 ("jack" ,jack-1)
6109 ("mesa" ,mesa)))
6110 (native-inputs
6111 `(("pkg-config" ,pkg-config)
6112 ("lv2" ,lv2)))
6113 (home-page "https://tytel.org/helm/")
6114 (synopsis "Polyphonic synth with lots of modulation")
6115 (description "Helm is a cross-platform polyphonic synthesizer available standalone
6116 and as an LV2 plugin.")
6117 (license license:gpl3+)))
6118
6119 (define-public zrythm
6120 (package
6121 ;; Zrythm contains trademarks and comes with a trademark policy found in
6122 ;; TRADMARKS.md inside the release distribution. The trademark policy
6123 ;; allows verbatim re-distribution, and it also allows FSF-approved
6124 ;; distros to make necessary changes to integrate the software into the
6125 ;; distribution.
6126 (name "zrythm")
6127 (version "1.0.0-alpha.12.0.1")
6128 (source
6129 (origin
6130 (method url-fetch)
6131 (uri (string-append "https://www.zrythm.org/releases/zrythm-"
6132 version ".tar.xz"))
6133 (sha256
6134 (base32
6135 "1si4n8rdg0a3frlbj6yqpyzr4f20v3cpl4m6kv0yf7r25psyl5pk"))))
6136 (build-system meson-build-system)
6137 (arguments
6138 `(#:glib-or-gtk? #t
6139 #:meson ,meson-0.55
6140 #:configure-flags
6141 `("-Dtests=true"
6142 "-Dmanpage=true"
6143 "-Ddseg_font=false"
6144 "-Dgraphviz=enabled" ; for exporting routing graphs
6145 "-Dguile=enabled" ; for Guile scripting
6146 "-Djack=enabled" ; for JACK audio/MIDI backend
6147 "-Drtmidi=enabled" ; for RtMidi backend (ALSA sequencer)
6148 "-Dsdl=enabled"))) ; for SDL audio backend (which uses ALSA)
6149 (inputs
6150 `(("alsa-lib" ,alsa-lib)
6151 ("jack" ,jack-1)
6152 ("font-dseg" ,font-dseg)
6153 ("fftw" ,fftw)
6154 ("fftwf" ,fftwf)
6155 ("gettext" ,gettext-minimal)
6156 ("glibc" ,glibc)
6157 ("graphviz" ,graphviz)
6158 ("gtk+" ,gtk+)
6159 ("gtksourceview" ,gtksourceview)
6160 ("guile" ,guile-2.2)
6161 ("libaudec" ,libaudec)
6162 ("libcyaml" ,libcyaml)
6163 ("libsamplerate" ,libsamplerate)
6164 ("libsndfile" ,libsndfile)
6165 ("libyaml" ,libyaml)
6166 ("lilv" ,lilv)
6167 ("lv2" ,lv2)
6168 ("pulseaudio" ,pulseaudio)
6169 ("reproc" ,reproc)
6170 ("rubberband" ,rubberband)
6171 ("rtmidi" ,rtmidi)
6172 ("sdl2" ,sdl2)
6173 ("xdg-utils" ,xdg-utils)
6174 ("zstd" ,zstd "lib")))
6175 (native-inputs
6176 `(("pkg-config" ,pkg-config)
6177 ("help2man" ,help2man)
6178 ("glib" ,glib "bin"))) ; for 'glib-compile-resources'
6179 (synopsis "Digital audio workstation focusing on usability")
6180 (description "Zrythm is a digital audio workstation designed to be
6181 featureful and easy to use. It offers unlimited automation options, LV2
6182 plugin support, JACK support and chord assistance.")
6183 (home-page "https://www.zrythm.org")
6184 (license license:agpl3+)))
6185
6186 (define-public dragonfly-reverb
6187 (package
6188 (name "dragonfly-reverb")
6189 (version "3.2.1")
6190 (source
6191 (origin
6192 (method git-fetch)
6193 (uri
6194 (git-reference
6195 (url "https://github.com/michaelwillis/dragonfly-reverb")
6196 (commit version)
6197 ;; Bundles a specific commit of the DISTRHO plugin framework.
6198 (recursive? #t)))
6199 (file-name (git-file-name name version))
6200 (sha256
6201 (base32 "0vfm2510shah67k87mdyar4wr4vqwii59y9lqfhwm6blxparkrqa"))))
6202 (build-system gnu-build-system)
6203 (arguments
6204 `(#:tests? #f ; no check target
6205 #:make-flags (list "CC=gcc")
6206 #:phases
6207 (modify-phases %standard-phases
6208 (delete 'configure) ;no configure target
6209 (replace 'install ;no install target
6210 (lambda* (#:key outputs #:allow-other-keys)
6211 (let* ((out (assoc-ref outputs "out"))
6212 (bin (string-append out "/bin"))
6213 (lv2 (string-append out "/lib/lv2")))
6214 ;; Install LV2.
6215 (for-each
6216 (lambda (file)
6217 (copy-recursively file
6218 (string-append lv2 "/" (basename file))))
6219 (find-files "bin" "\\.lv2$" #:directories? #t))
6220 ;; Install executables.
6221 (for-each
6222 (lambda (file)
6223 (install-file file bin))
6224 (find-files "bin"
6225 (lambda (name stat)
6226 (and
6227 (equal? (dirname name) "bin")
6228 (not (string-suffix? ".so" name))
6229 (not (string-suffix? ".lv2" name))))))
6230 #t))))))
6231 (native-inputs
6232 `(("pkg-config" ,pkg-config)))
6233 (inputs
6234 `(("jack" ,jack-1)
6235 ("libx11" ,libx11)
6236 ("mesa" ,mesa)))
6237 (home-page "https://michaelwillis.github.io/dragonfly-reverb/")
6238 (synopsis "Concert hall reverb and room reverb effects")
6239 (description
6240 "Dragonfly Reverb is a bundle of two free audio effects: a concert
6241 hall reverb and a room reverb. Both are available as LV2 plugins as well
6242 as JACK standalone applications.")
6243 (license license:gpl3+)))
6244
6245 (define-public zplugins
6246 (package
6247 (name "zplugins")
6248 (version "0.1.7")
6249 (source
6250 (origin
6251 (method git-fetch)
6252 (uri
6253 (git-reference
6254 (url "https://git.zrythm.org/git/zplugins")
6255 (commit (string-append "v" version))))
6256 (file-name (git-file-name name version))
6257 (sha256
6258 (base32
6259 "1rkm2xajmyik6289b20rp5a5br9f3sh1xk8nb1bs6qpmcrfirgbs"))))
6260 (build-system meson-build-system)
6261 (inputs
6262 `(("guile" ,guile-2.2)
6263 ("libsndfile" ,libsndfile)
6264 ("lv2" ,lv2)
6265 ("ztoolkit-rsvg" ,ztoolkit-rsvg)))
6266 (native-inputs
6267 `(("pkg-config" ,pkg-config)))
6268 (synopsis "Audio plugin collection")
6269 (description "ZPlugins is a collection of audio DSP plugins intended
6270 to be bundled with the Zrythm @dfn{digital audio workstation} (DAW).")
6271 (home-page "https://www.zrythm.org/en/plugins.html")
6272 (license license:agpl3+)))
6273
6274 (define-public zlfo
6275 ;; The "zlfo" package is now included in zplugins
6276 (deprecated-package "zlfo" zplugins))
6277
6278 (define-public remid-lv2
6279 (package
6280 (name "remid-lv2")
6281 (version "0.3")
6282 (source
6283 (origin
6284 (method git-fetch)
6285 (uri (git-reference
6286 (url "https://github.com/ssj71/reMID.lv2")
6287 (commit (string-append "v" version))))
6288 (file-name (git-file-name name version))
6289 (sha256
6290 (base32
6291 "062kriniidsrhzwrf89kfxm9wb0cmgrl07asnlmgil8vcl7gl9y5"))))
6292 (build-system cmake-build-system)
6293 (arguments
6294 `(#:tests? #f)) ; no tests included
6295 (inputs
6296 `(("alsa-lib" ,alsa-lib)
6297 ("glib" ,glib)
6298 ("jack" ,jack-1)
6299 ("lv2" ,lv2)))
6300 (native-inputs
6301 `(("pkg-config" ,pkg-config)))
6302 (home-page "https://github.com/ssj71/reMID.lv2")
6303 (synopsis
6304 "MIDI-controlled implementation of the SID 6581 chip used in the
6305 Commodore 64")
6306 (description
6307 "The 6581 SID chip is the sound chip used in the Commodore 64 computer.
6308 reMID is a MIDI implementation of the 6581 SID chip using the reSID library
6309 to provide a virtual SID-based synthesizer, controllable in real-time via
6310 MIDI. It includes support for scripted instruments that allow complex sonic
6311 control of the chip.")
6312 (license license:gpl2+)))
6313
6314 (define-public vl1-emulator
6315 (package
6316 (name "vl1-emulator")
6317 (version "1.1.0.0")
6318 (source
6319 (origin
6320 (method git-fetch)
6321 (uri (git-reference
6322 (url "https://github.com/linuxmao-org/VL1-emulator")
6323 (commit (string-append "v" version))
6324 ;; bundles a specific commit of the DISTRHO plugin framework
6325 (recursive? #t)))
6326 (file-name (git-file-name name version))
6327 (sha256
6328 (base32
6329 "1npc86vqma8gk1hawa0lii0r2xmnv846plyl1ci3bdswyrdk5chm"))))
6330 (build-system gnu-build-system)
6331 (arguments
6332 `(#:tests? #f ;no check target
6333 #:make-flags
6334 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
6335 "CC=gcc")
6336 #:phases
6337 (modify-phases %standard-phases
6338 (delete 'configure)))) ;no configure target
6339 (inputs
6340 `(("cairo" ,cairo)
6341 ("jack" ,jack-1)
6342 ("mesa" ,mesa)))
6343 (native-inputs
6344 `(("pkg-config" ,pkg-config)))
6345 (home-page "https://github.com/linuxmao-org/VL1-emulator")
6346 (synopsis "Emulator of Casio VL-Tone VL1")
6347 (description "The VL1-Emulator is an emulator of Casio VL-Tone VL1,
6348 based on source code by PolyValens, offered as an LV2 plugin and a
6349 standalone JACK application.")
6350 ;; Expat or CC0
6351 (license (list license:expat license:cc0))))
6352
6353 (define-public regrader
6354 (package
6355 (inherit vl1-emulator)
6356 (name "regrader")
6357 (version "1.0.0")
6358 (source
6359 (origin
6360 (method git-fetch)
6361 (uri (git-reference
6362 (url "https://github.com/linuxmao-org/regrader")
6363 (commit (string-append "v" version))
6364 ;; bundles a specific commit of the DISTRHO plugin framework
6365 (recursive? #t)))
6366 (file-name (git-file-name name version))
6367 (sha256
6368 (base32
6369 "0gl4d5lf2afqknz22jz7hh7029sc9v1xrz6nbz9dlv42bwc0cvl0"))))
6370 (home-page "https://github.com/linuxmao-org/regrader")
6371 (synopsis "Delay effect plugin")
6372 (description
6373 "Regrader is a delay effect where the repeats degrade in resolution.
6374 This is an unofficial port of the Regrader plugin created by Igorski. It
6375 is available as an LV2 plugin and a standalone JACK application.")
6376 (license license:expat)))
6377
6378 (define-public fogpad
6379 (package
6380 (inherit vl1-emulator)
6381 (name "fogpad")
6382 (version "1.0.0")
6383 (source
6384 (origin
6385 (method git-fetch)
6386 (uri (git-reference
6387 (url "https://github.com/linuxmao-org/fogpad")
6388 (commit (string-append "v" version))
6389 ;; bundles a specific commit of the DISTRHO plugin framework
6390 (recursive? #t)))
6391 (file-name (git-file-name name version))
6392 (sha256
6393 (base32
6394 "1j1hbya2dsqpf22zkpi4kwz3dram9g1ndxzmgfwpmf3i4jd3csgb"))))
6395 (home-page "https://github.com/linuxmao-org/fogpad")
6396 (synopsis "Reverb effect plugin")
6397 (description
6398 "Fogpad is a reverb effect in which the reflections can be frozen,
6399 filtered, pitch shifted and ultimately disintegrated. This is an unofficial
6400 port of the Regrader plugin created by Igorski. It is available as an LV2
6401 plugin and a standalone JACK application.")
6402 (license license:expat)))
6403
6404 (define-public tap-lv2
6405 (let ((commit "cab6e0dfb2ce20e4ad34b067d1281ec0b193598a")
6406 (revision "1"))
6407 (package
6408 (name "tap-lv2")
6409 (version (git-version "0.0" revision commit))
6410 (source
6411 (origin
6412 (method git-fetch)
6413 (uri (git-reference
6414 (url "https://github.com/moddevices/tap-lv2")
6415 (commit commit)))
6416 (file-name (git-file-name name version))
6417 (sha256
6418 (base32
6419 "0q480djfqd9g8mzrggc4vl7yclrhdjqx563ghs8mvi2qq8liycw3"))))
6420 (build-system gnu-build-system)
6421 (arguments
6422 `(#:tests? #f ; no check target
6423 #:make-flags
6424 (list "CC=gcc")
6425 #:phases
6426 (modify-phases %standard-phases
6427 (delete 'configure) ; no configure
6428 (replace 'install
6429 (lambda _
6430 (invoke "make"
6431 (string-append "INSTALL_PATH="
6432 (assoc-ref %outputs "out")
6433 "/lib/lv2")
6434 "install"))))))
6435 (inputs
6436 `(("lv2" ,lv2)))
6437 (native-inputs
6438 `(("pkg-config" ,pkg-config)))
6439 (synopsis "Audio plugin collection")
6440 (description "TAP (Tom's Audio Processing) plugins is a collection of
6441 audio effect plugins originally released as LADSPA plugins. This package
6442 offers an LV2 version ported by moddevices.")
6443 (home-page "http://tap-plugins.sourceforge.net/")
6444 (license license:gpl2))))
6445
6446 (define-public wolf-shaper
6447 (package
6448 (name "wolf-shaper")
6449 (version "0.1.8")
6450 (source
6451 (origin
6452 (method git-fetch)
6453 (uri (git-reference
6454 (url "https://github.com/pdesaulniers/wolf-shaper")
6455 (commit (string-append "v" version))
6456 ;; Bundles a specific commit of the DISTRHO plugin framework.
6457 (recursive? #t)))
6458 (file-name (git-file-name name version))
6459 (sha256
6460 (base32
6461 "1j9xmh1nkf45ay1c5dz2g165qvrwlanzcq6mvb3nfxar265drd9q"))))
6462 (build-system gnu-build-system)
6463 (arguments
6464 `(#:tests? #f ; no check target
6465 #:make-flags (list "CC=gcc")
6466 #:phases
6467 (modify-phases %standard-phases
6468 (delete 'configure) ;no configure target
6469 (replace 'install ;no install target
6470 (lambda* (#:key outputs #:allow-other-keys)
6471 (let* ((out (assoc-ref outputs "out"))
6472 (bin (string-append out "/bin"))
6473 (lv2 (string-append out "/lib/lv2")))
6474 ;; Install LV2.
6475 (for-each
6476 (lambda (file)
6477 (copy-recursively file
6478 (string-append lv2 "/" (basename file))))
6479 (find-files "bin" "\\.lv2$" #:directories? #t))
6480 ;; Install executables.
6481 (for-each
6482 (lambda (file)
6483 (install-file file bin))
6484 (find-files "bin"
6485 (lambda (name stat)
6486 (and
6487 (equal? (dirname name) "bin")
6488 (not (string-suffix? ".so" name))
6489 (not (string-suffix? ".lv2" name))))))
6490 #t))))))
6491 (native-inputs
6492 `(("pkg-config" ,pkg-config)))
6493 (inputs
6494 `(("jack" ,jack-1)
6495 ("lv2" ,lv2)
6496 ("mesa" ,mesa)))
6497 (synopsis "Waveshaper plugin")
6498 (description "Wolf Shaper is a waveshaper plugin with a graph editor.
6499 It is provided as an LV2 plugin and as a standalone Jack application.")
6500 (home-page "https://pdesaulniers.github.io/wolf-shaper/")
6501 (license license:gpl3)))
6502
6503 (define-public wolf-spectrum
6504 (package
6505 (inherit wolf-shaper)
6506 (name "wolf-spectrum")
6507 (version "1.0.0")
6508 (source
6509 (origin
6510 (method git-fetch)
6511 (uri (git-reference
6512 (url "https://github.com/pdesaulniers/wolf-spectrum")
6513 (commit (string-append "v" version))
6514 ;; Bundles a specific commit of the DISTRHO plugin framework.
6515 (recursive? #t)))
6516 (file-name (git-file-name name version))
6517 (sha256
6518 (base32
6519 "17db1jlj7vb1xyvkdhhrsvdbwb7jqw6i4168cdvlj3yvn2ra8gpm"))))
6520 (synopsis "2D spectrogram plugin")
6521 (description "Wolf Spectrum is a real-time 2D spectrogram plugin.
6522 It is provided as an LV2 plugin and as a standalone Jack application.")
6523 (home-page "https://github.com/pdesaulniers/wolf-spectrum")
6524 (license license:gpl3)))
6525
6526 (define-public shiru-lv2
6527 (let ((commit "08853f99140012234649e67e5647906fda74f6cc")
6528 (revision "1"))
6529 (package
6530 (name "shiru-lv2")
6531 (version (git-version "0.0" revision commit))
6532 (source
6533 (origin
6534 (method git-fetch)
6535 (uri (git-reference
6536 (url "https://github.com/linuxmao-org/shiru-plugins")
6537 (commit commit)
6538 ;; Bundles a specific commit of the DISTRHO plugin framework.
6539 (recursive? #t)))
6540 (file-name (git-file-name name version))
6541 (sha256
6542 (base32
6543 "00rf6im3rhg98h60sgl1r2s37za5vr5h14pybwi07h8zbc8mi6fm"))))
6544 (build-system gnu-build-system)
6545 (arguments
6546 `(#:tests? #f ; no check target
6547 #:make-flags (list "CC=gcc")
6548 #:phases
6549 (modify-phases %standard-phases
6550 (delete 'configure) ;no configure target
6551 (replace 'install ;no install target
6552 (lambda* (#:key outputs #:allow-other-keys)
6553 (let* ((out (assoc-ref outputs "out"))
6554 (bin (string-append out "/bin"))
6555 (lv2 (string-append out "/lib/lv2")))
6556 ;; Install LV2.
6557 (for-each
6558 (lambda (file)
6559 (copy-recursively file
6560 (string-append lv2 "/" (basename file))))
6561 (find-files "bin" "\\.lv2$" #:directories? #t))
6562 ;; Install executables.
6563 (for-each
6564 (lambda (file)
6565 (install-file file bin))
6566 (find-files "bin"
6567 (lambda (name stat)
6568 (and
6569 (equal? (dirname name) "bin")
6570 (not (string-suffix? ".so" name))
6571 (not (string-suffix? ".lv2" name))))))
6572 #t))))))
6573 (native-inputs
6574 `(("pkg-config" ,pkg-config)))
6575 (inputs
6576 `(("cairo" ,cairo)
6577 ("glu" ,glu)
6578 ("jack" ,jack-1)
6579 ("lv2" ,lv2)
6580 ("mesa" ,mesa)
6581 ("pango" ,pango)))
6582 (synopsis "Audio plugin collection")
6583 (description "Shiru plugins is a collection of audio plugins created
6584 by Shiru, ported to LV2 by the Linux MAO project using the DISTRHO plugin
6585 framework.")
6586 (home-page "http://shiru.untergrund.net/software.shtml")
6587 (license license:wtfpl2))))