gnu: Add ganv.
[jackhill/guix/guix.git] / gnu / packages / audio.scm
CommitLineData
fb68469f
RW
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
3;;;
4;;; This file is part of GNU Guix.
5;;;
6;;; GNU Guix is free software; you can redistribute it and/or modify it
7;;; under the terms of the GNU General Public License as published by
8;;; the Free Software Foundation; either version 3 of the License, or (at
9;;; your option) any later version.
10;;;
11;;; GNU Guix is distributed in the hope that it will be useful, but
12;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14;;; GNU General Public License for more details.
15;;;
16;;; You should have received a copy of the GNU General Public License
17;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
18
19(define-module (gnu packages audio)
20 #:use-module (guix packages)
21 #:use-module (guix download)
22 #:use-module (guix git-download)
23 #:use-module ((guix licenses) #:prefix license:)
24 #:use-module (guix build-system gnu)
c54a8981 25 #:use-module (guix build-system waf)
fb68469f 26 #:use-module (gnu packages)
d55f912a 27 #:use-module (gnu packages algebra)
88efb2c3
RW
28 #:use-module (gnu packages boost)
29 #:use-module (gnu packages curl)
fb68469f 30 #:use-module (gnu packages databases)
88efb2c3 31 #:use-module (gnu packages glib)
f3ab6ad3 32 #:use-module (gnu packages gtk)
88efb2c3 33 #:use-module (gnu packages gnome)
f3ab6ad3 34 #:use-module (gnu packages qt)
c54a8981 35 #:use-module (gnu packages linux)
88efb2c3
RW
36 #:use-module (gnu packages mp3) ;taglib
37 #:use-module (gnu packages perl)
c54a8981
RW
38 #:use-module (gnu packages pkg-config)
39 #:use-module (gnu packages pulseaudio) ;libsndfile, libsamplerate
d55f912a 40 #:use-module (gnu packages python)
5279eb6f 41 #:use-module (gnu packages rdf)
c54a8981
RW
42 #:use-module (gnu packages readline)
43 #:use-module (gnu packages xiph)
da49086a
RW
44 #:use-module (gnu packages xml)
45 #:use-module (srfi srfi-1))
fb68469f 46
d55f912a
RW
47(define-public aubio
48 (package
49 (name "aubio")
50 (version "0.4.1")
51 (source (origin
52 (method url-fetch)
53 (uri (string-append
54 "http://aubio.org/pub/aubio-" version ".tar.bz2"))
55 (sha256
56 (base32
57 "15f6nf76y7iyl2kl4ny7ky0zpxfxr8j3902afvd6ydnnkh5dzmr5"))))
58 (build-system waf-build-system)
59 (arguments
60 `(#:tests? #f ; no check target
61 #:configure-flags
62 '("--enable-fftw3f"
63 "--enable-jack"
64 "--enable-sndfile"
65 "--enable-samplerate"
66 ;; enable compilation with avcodec once available
67 "--disable-avcodec")
68 #:python ,python-2))
69 (inputs
70 `(("jack" ,jack-1)
71 ("libuuid" ,util-linux)
72 ("libsndfile" ,libsndfile)
73 ("libsamplerate" ,libsamplerate)
74 ("fftwf" ,fftwf)))
75 (native-inputs
76 `(("pkg-config" ,pkg-config)))
77 (home-page "http://aubio.org/")
78 (synopsis "A library for audio labelling")
79 (description
80 "aubio is a tool designed for the extraction of annotations from audio
81signals. Its features include segmenting a sound file before each of its
82attacks, performing pitch detection, tapping the beat and producing MIDI
83streams from live audio.")
84 (license license:gpl3+)))
85
88efb2c3
RW
86(define-public ardour
87 (package
88 (name "ardour")
89 (version "3.5.403")
90 (source (origin
91 ;; The project only provides tarballs upon individual request
92 ;; (or after payment) so we take the code from git.
93 (method git-fetch)
94 (uri (git-reference
95 (url "git://git.ardour.org/ardour/ardour.git")
96 (commit version)))
97 (snippet
98 '(call-with-output-file
99 "libs/ardour/revision.cc"
100 (lambda (port)
101 (format port "#include \"ardour/revision.h\"
102namespace ARDOUR { const char* revision = \"3.5-403-gec2cb31\" ; }"))))
103 (sha256
104 (base32
105 "01b0wxh0wlxjfz5j8gcwwqhxc6q2kn4njz2fcmzv9fr3xaya5dbp"))
106 (file-name (string-append name "-" version))))
107 (build-system waf-build-system)
108 (arguments
109 `(#:tests? #f ; no check target
110 #:python ,python-2))
111 (inputs
112 `(("alsa-lib" ,alsa-lib)
113 ("aubio" ,aubio)
114 ("lrdf" ,lrdf)
115 ("boost" ,boost)
116 ("atkmm" ,atkmm)
117 ("cairomm" ,cairomm)
118 ("gtkmm" ,gtkmm-2)
119 ("glibmm" ,glibmm)
120 ("libart-lgpl" ,libart-lgpl)
121 ("libgnomecanvasmm" ,libgnomecanvasmm)
122 ("pangomm" ,pangomm)
123 ("liblo" ,liblo)
124 ("libsndfile" ,libsndfile)
125 ("libsamplerate" ,libsamplerate)
126 ("libxml2" ,libxml2)
127 ("libogg" ,libogg)
128 ("libvorbis" ,libvorbis)
129 ("flac" ,flac)
130 ("lv2" ,lv2)
131 ("vamp" ,vamp)
132 ("curl" ,curl)
133 ("libuuid" ,util-linux)
134 ("fftw" ,fftw)
135 ("fftwf" ,fftwf)
136 ("jack" ,jack-1)
137 ("serd" ,serd)
138 ("sord" ,sord)
139 ("sratom" ,sratom)
140 ("suil" ,suil)
141 ("lilv" ,lilv)
142 ("rasqal" ,rasqal)
143 ("raptor2" ,raptor2)
144 ("redland" ,redland)
145 ("rubberband" ,rubberband)
146 ("taglib" ,taglib)
147 ("python-rdflib" ,python-rdflib)))
148 (native-inputs
149 `(("perl" ,perl)
150 ("pkg-config" ,pkg-config)))
151 (home-page "http://ardour.org")
152 (synopsis "Digital audio workstation")
153 (description
154 "Ardour is a multi-channel digital audio workstation, allowing users to
155record, edit, mix and master audio and MIDI projects. It is targeted at audio
156engineers, musicians, soundtrack editors and composers.")
157 (license license:gpl2+)))
158
fb68469f
RW
159(define-public jack-1
160 (package
161 (name "jack")
162 (version "0.124.1")
163 (source (origin
164 (method url-fetch)
165 (uri (string-append
166 "http://jackaudio.org/downloads/jack-audio-connection-kit-"
167 version
168 ".tar.gz"))
169 (sha256
170 (base32
171 "1mk1wnx33anp6haxfjjkfhwbaknfblsvj35nxvz0hvspcmhdyhpb"))))
172 (build-system gnu-build-system)
173 (inputs
2f9ae82f
RW
174 `(("alsa-lib" ,alsa-lib)
175 ("bdb" ,bdb)
176 ("readline" ,readline)
fb68469f 177 ("libuuid" ,util-linux)))
2f9ae82f
RW
178 (native-inputs
179 `(("pkg-config" ,pkg-config)))
fb68469f
RW
180 (home-page "http://jackaudio.org/")
181 (synopsis "JACK audio connection kit")
182 (description
183 "JACK is a low-latency audio server. It can connect a number of
184different applications to an audio device, as well as allowing them to share
185audio between themselves. JACK is different from other audio server efforts
186in that it has been designed from the ground up to be suitable for
187professional audio work. This means that it focuses on two key areas:
188synchronous execution of all clients, and low latency operation.")
189 ;; Most files are licensed under the GPL. However, the libjack/ tree is
190 ;; licensed under the LGPL in order to allow for proprietary usage.
e89fa047 191 (license (list license:gpl2+ license:lgpl2.1+))))
c54a8981
RW
192
193(define-public jack-2
194 (package (inherit jack-1)
314275c7 195 (name "jack2")
c54a8981
RW
196 (version "1.9.10")
197 (source (origin
198 (method url-fetch)
199 (uri (string-append
200 "https://github.com/jackaudio/jack2/archive/v"
201 version
202 ".tar.gz"))
203 (sha256
204 (base32
205 "03b0iiyk3ng3vh5s8gaqwn565vik7910p56mlbk512bw3dhbdwc8"))))
206 (build-system waf-build-system)
207 (arguments
208 `(#:tests? #f ; no check target
209 #:configure-flags '("--dbus"
210 "--alsa")))
211 (inputs
212 `(("alsa-lib" ,alsa-lib)
213 ("dbus" ,dbus)
214 ("expat" ,expat)
215 ("libsamplerate" ,libsamplerate)
216 ("opus" ,opus)
217 ("readline" ,readline)))
218 (native-inputs
219 `(("pkg-config" ,pkg-config)))
220 ;; Most files are under GPLv2+, but some headers are under LGPLv2.1+
221 (license (list license:gpl2+ license:lgpl2.1+))))
f47cba0e 222
2cc7ce31
RW
223(define-public ladspa
224 (package
225 (name "ladspa")
226 (version "1.13")
227 (source (origin
228 (method url-fetch)
229 (uri (string-append
230 "http://www.ladspa.org/download/ladspa_sdk_"
231 version
232 ".tgz"))
233 (sha256
234 (base32
235 "0srh5n2l63354bc0srcrv58rzjkn4gv8qjqzg8dnq3rs4m7kzvdm"))))
236 (build-system gnu-build-system)
237 (arguments
238 `(#:tests? #f ; the "test" target is a listening test only
239 #:phases
240 (alist-replace
241 'configure
242 (lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
243 (chdir "src")
244 (let ((out (assoc-ref outputs "out")))
245 (substitute* "makefile"
246 (("/usr/lib/ladspa/") (string-append out "/lib/ladspa/"))
247 (("/usr/include/") (string-append out "/include/"))
248 (("/usr/bin/") (string-append out "/bin/"))
249 (("-mkdirhier") "mkdir -p")
250 (("^CC.*") "CC = gcc\n")
251 (("^CPP.*") "CPP = g++\n"))))
252 (alist-delete 'build %standard-phases))))
253 (home-page "http://ladspa.org")
254 (synopsis "Linux Audio Developer's Simple Plugin API (LADSPA)")
255 (description
256 "LADSPA is a standard that allows software audio processors and effects
257to be plugged into a wide range of audio synthesis and recording packages.")
258 (license license:lgpl2.1+)))
259
da49086a
RW
260(define-public lash
261 (package
262 (name "lash")
263 (version "0.6.0-rc2")
264 (source (origin
265 (method url-fetch)
266 ;; The tilde is not permitted in the builder name, but is used
267 ;; in the tarball.
268 (uri (string-append
269 "mirror://savannah/lash/lash-"
270 (string-join (string-split version #\-) "~")
271 ".tar.bz2"))
272 (file-name (string-append name "-" version ".tar.bz2"))
273 (sha256
274 (base32
275 "12z1vx3krrzsfccpah9xjs68900xvr7bw92wx8np5871i2yv47iw"))))
276 (build-system gnu-build-system)
277 (inputs
278 `(("bdb" ,bdb)
279 ("gtk" ,gtk+-2)
280 ("jack" ,jack-1)
281 ("libuuid" ,util-linux)
282 ("readline" ,readline)
283 ("python" ,python-2)))
284 ;; According to pkg-config, packages depending on lash also need to have
285 ;; at least the following packages declared as inputs.
286 (propagated-inputs
287 `(("alsa-lib" ,alsa-lib)
288 ("dbus" ,dbus)
289 ("libxml2" ,libxml2)))
290 (native-inputs
291 `(("pkg-config" ,pkg-config)))
292 (home-page "http://www.nongnu.org/lash/")
293 (synopsis "Audio application session manager")
294 (description
295 "LASH is a session management system for audio applications. It allows
296you to save and restore audio sessions consisting of multiple interconneced
297applications, restoring program state (i.e. loaded patches) and the
298connections between them.")
299 (license license:gpl2+)))
300
f47cba0e
RW
301(define-public liblo
302 (package
303 (name "liblo")
304 (version "0.28")
305 (source (origin
306 (method url-fetch)
307 (uri (string-append
308 "mirror://sourceforge/liblo/liblo-"
309 version
310 ".tar.gz"))
311 (sha256
312 (base32
313 "02drgnpirvl2ihvzgsmn02agr5sj3vipzzw9vma56qlkgfvak56s"))))
314 (build-system gnu-build-system)
315 (arguments
316 `(;; liblo test FAILED
317 ;; liblo server error 19 in setsockopt(IP_ADD_MEMBERSHIP): No such device
318 #:tests? #f))
319 (home-page "http://liblo.sourceforge.net")
320 (synopsis "Implementation of the Open Sound Control protocol")
321 (description
322 "liblo is a lightweight library that provides an easy to use
323implementation of the Open Sound Control (OSC) protocol.")
324 (license license:lgpl2.1+)))
e2420191 325
332aad1b
RW
326(define-public lilv
327 (package
328 (name "lilv")
329 (version "0.20.0")
330 (source (origin
331 (method url-fetch)
332 (uri (string-append "http://download.drobilla.net/lilv-"
333 version
334 ".tar.bz2"))
335 (sha256
336 (base32
337 "0aj2plkx56iar8vzjbq2l7hi7sp0ml99m0h44rgwai2x4vqkk2j2"))))
338 (build-system waf-build-system)
339 (arguments `(#:tests? #f)) ; no check target
340 (inputs
341 `(("lv2" ,lv2)
342 ("serd" ,serd)
343 ("sord" ,sord)
344 ("sratom" ,sratom)))
345 (native-inputs
346 `(("pkg-config" ,pkg-config)))
347 (home-page "http://drobilla.net/software/lilv/")
348 (synopsis "Library to simplify use of LV2 plugins in applications")
349 (description
350 "Lilv is a C library to make the use of LV2 plugins as simple as possible
351for applications. Lilv is the successor to SLV2, rewritten to be
352significantly faster and have minimal dependencies.")
353 (license license:isc)))
354
e2420191
RW
355(define-public lv2
356 (package
357 (name "lv2")
358 (version "1.10.0")
359 (source (origin
360 (method url-fetch)
361 (uri (string-append "http://lv2plug.in/spec/lv2-"
362 version
363 ".tar.bz2"))
364 (sha256
365 (base32
366 "1md41x9snrp4mcfyli7lyfpvcfa78nfy6xkdy84kppnl8m5qw378"))))
367 (build-system waf-build-system)
368 (arguments
369 `(#:tests? #f ; no check target
370 #:configure-flags '("--lv2-system")))
371 (inputs
372 ;; Leaving off cairo and gtk+-2.0 which are needed for example plugins
373 `(("libsndfile" ,libsndfile)))
374 (native-inputs
375 `(("pkg-config" ,pkg-config)))
376 (home-page "http://lv2plug.in/")
377 (synopsis "LV2 audio plugin specification")
378 (description
379 "LV2 is an open specification for audio plugins and host applications.
380At its core, LV2 is a simple stable interface, accompanied by extensions which
381add functionality to support the needs of increasingly powerful audio
382software.")
383 (license license:isc)))
5279eb6f 384
c1718190
RW
385(define-public lvtk
386 (package
387 (name "lvtk")
388 (version "1.2.0")
389 (source (origin
390 (method url-fetch)
391 (uri (string-append "https://github.com/lvtk/lvtk/archive/"
392 version
393 ".tar.gz"))
394 (sha256
395 (base32
396 "03nbj2cqcklqwh50zj2gwm07crh5iwqbpxbpzwbg5hvgl4k4rnjd"))))
397 (build-system waf-build-system)
398 (arguments
399 `(#:tests? #f ; no check target
400 #:python ,python-2
401 #:configure-flags
402 (list (string-append "--boost-includes="
403 (assoc-ref %build-inputs "boost")
404 "/include"))))
405 (inputs
406 `(("boost" ,boost)
407 ("lv2" ,lv2)))
408 (native-inputs
409 `(("pkg-config" ,pkg-config)))
410 (home-page "https://github.com/lvtk/lvtk")
411 (synopsis "C++ libraries for LV2 plugins")
412 (description
413 "The LV2 Toolkit (LVTK) contains libraries that wrap the LV2 C API and
414extensions into easy to use C++ classes. It is the successor of
415lv2-c++-tools.")
416 (license license:gpl3+)))
417
57238ff2
RW
418(define-public rubberband
419 (package
420 (name "rubberband")
421 (version "1.8.1")
422 (source (origin
423 (method url-fetch)
424 (uri
425 (string-append "https://bitbucket.org/breakfastquay/rubberband/get/v"
426 version
427 ".tar.bz2"))
428 (sha256
429 (base32
430 "05amrbrxx0da3w7m237q51799r8xgs4ffqabi2qv06hq8dpcj386"))))
431 (build-system gnu-build-system)
432 (arguments `(#:tests? #f)) ; no check target
433 (inputs
434 `(("ladspa" ,ladspa)
435 ("libsamplerate" ,libsamplerate)
436 ("vamp" ,vamp)))
437 (native-inputs
438 `(("pkg-config" ,pkg-config)))
439 (home-page "http://breakfastquay.com/rubberband/")
440 (synopsis "Audio time-stretching and pitch-shifting library")
441 (description
442 "Rubber Band is a library and utility program that permits changing the
443tempo and pitch of an audio recording independently of one another.")
444 (license license:gpl2+)))
445
5279eb6f
RW
446(define-public sratom
447 (package
448 (name "sratom")
449 (version "0.4.6")
450 (source (origin
451 (method url-fetch)
452 (uri (string-append "http://download.drobilla.net/sratom-"
453 version
454 ".tar.bz2"))
455 (sha256
456 (base32
457 "080jjiyxjnj7hf25844hd9rb01grvzz1rk8mxcdnakywmspbxfd4"))))
458 (build-system waf-build-system)
459 (arguments `(#:tests? #f)) ; no check target
460 (inputs
461 `(("lv2" ,lv2)
462 ("serd" ,serd)
463 ("sord" ,sord)))
464 (native-inputs
465 `(("pkg-config" ,pkg-config)))
466 (home-page "http://drobilla.net/software/sratom/")
467 (synopsis "Library for serialising LV2 atoms to/from RDF")
468 (description
469 "Sratom is a library for serialising LV2 atoms to/from RDF, particularly
470the Turtle syntax.")
471 (license license:isc)))
f3ab6ad3
RW
472
473(define-public suil
474 (package
475 (name "suil")
476 (version "0.8.2")
477 (source (origin
478 (method url-fetch)
479 (uri (string-append "http://download.drobilla.net/suil-"
480 version
481 ".tar.bz2"))
482 (sha256
483 (base32
484 "1s3adyiw7sa5gfvm5wasa61qa23629kprxyv6w8hbxdiwp0hhxkq"))))
485 (build-system waf-build-system)
486 (arguments `(#:tests? #f)) ; no check target
487 (inputs
488 `(("lv2" ,lv2)
489 ("gtk+-2" ,gtk+-2)
490 ("qt-4" ,qt-4)))
491 (native-inputs
492 `(("pkg-config" ,pkg-config)))
493 (home-page "http://drobilla.net/software/suil/")
494 (synopsis "Library for loading and wrapping LV2 plugin UIs")
495 (description
496 "Suil is a lightweight C library for loading and wrapping LV2 plugin UIs.
497
498Suil makes it possible to load a UI of a toolkit in a host using another
499toolkit. The API is designed such that hosts do not need to explicitly
500support specific toolkits – if Suil supports a particular toolkit, then UIs in
501that toolkit will work in all hosts that use Suil automatically.
502
503Suil currently supports every combination of Gtk 2, Qt 4, and X11.")
504 (license license:isc)))
db46f2fc
RW
505
506(define-public vamp
507 (package
508 (name "vamp")
509 (version "2.5")
510 (source (origin
511 (method url-fetch)
512 (uri (string-append
513 "https://code.soundsoftware.ac.uk"
514 "/attachments/download/690/vamp-plugin-sdk-"
515 version
516 ".tar.gz"))
517 (sha256
518 (base32
519 "178kfgq08cmgdzv7g8dwyjp4adwx8q04riimncq4nqkm8ng9ywbv"))))
520 (build-system gnu-build-system)
521 (arguments `(#:tests? #f)) ; no check target
522 (inputs
523 `(("libsndfile" ,libsndfile)))
524 (native-inputs
525 `(("pkg-config" ,pkg-config)))
526 (home-page "http://vamp-plugins.org")
527 (synopsis "Modular and extensible audio processing system")
528 (description
529 "Vamp is an audio processing plugin system for plugins that extract
530descriptive information from audio data — typically referred to as audio
531analysis plugins or audio feature extraction plugins.")
532 (license
533 (license:x11-style
534 "https://code.soundsoftware.ac.uk/projects/vamp-plugin-sdk/repository/entry/COPYING"))))