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