gnu: Add Vamp SDK.
[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)
fb68469f 28 #:use-module (gnu packages databases)
c54a8981 29 #:use-module (gnu packages glib) ;dbus
f3ab6ad3
RW
30 #:use-module (gnu packages gtk)
31 #:use-module (gnu packages qt)
c54a8981
RW
32 #:use-module (gnu packages linux)
33 #:use-module (gnu packages pkg-config)
34 #:use-module (gnu packages pulseaudio) ;libsndfile, libsamplerate
d55f912a 35 #:use-module (gnu packages python)
5279eb6f 36 #:use-module (gnu packages rdf)
c54a8981
RW
37 #:use-module (gnu packages readline)
38 #:use-module (gnu packages xiph)
39 #:use-module (gnu packages xml))
fb68469f 40
d55f912a
RW
41(define-public aubio
42 (package
43 (name "aubio")
44 (version "0.4.1")
45 (source (origin
46 (method url-fetch)
47 (uri (string-append
48 "http://aubio.org/pub/aubio-" version ".tar.bz2"))
49 (sha256
50 (base32
51 "15f6nf76y7iyl2kl4ny7ky0zpxfxr8j3902afvd6ydnnkh5dzmr5"))))
52 (build-system waf-build-system)
53 (arguments
54 `(#:tests? #f ; no check target
55 #:configure-flags
56 '("--enable-fftw3f"
57 "--enable-jack"
58 "--enable-sndfile"
59 "--enable-samplerate"
60 ;; enable compilation with avcodec once available
61 "--disable-avcodec")
62 #:python ,python-2))
63 (inputs
64 `(("jack" ,jack-1)
65 ("libuuid" ,util-linux)
66 ("libsndfile" ,libsndfile)
67 ("libsamplerate" ,libsamplerate)
68 ("fftwf" ,fftwf)))
69 (native-inputs
70 `(("pkg-config" ,pkg-config)))
71 (home-page "http://aubio.org/")
72 (synopsis "A library for audio labelling")
73 (description
74 "aubio is a tool designed for the extraction of annotations from audio
75signals. Its features include segmenting a sound file before each of its
76attacks, performing pitch detection, tapping the beat and producing MIDI
77streams from live audio.")
78 (license license:gpl3+)))
79
fb68469f
RW
80(define-public jack-1
81 (package
82 (name "jack")
83 (version "0.124.1")
84 (source (origin
85 (method url-fetch)
86 (uri (string-append
87 "http://jackaudio.org/downloads/jack-audio-connection-kit-"
88 version
89 ".tar.gz"))
90 (sha256
91 (base32
92 "1mk1wnx33anp6haxfjjkfhwbaknfblsvj35nxvz0hvspcmhdyhpb"))))
93 (build-system gnu-build-system)
94 (inputs
95 `(("bdb" ,bdb)
96 ("libuuid" ,util-linux)))
97 (home-page "http://jackaudio.org/")
98 (synopsis "JACK audio connection kit")
99 (description
100 "JACK is a low-latency audio server. It can connect a number of
101different applications to an audio device, as well as allowing them to share
102audio between themselves. JACK is different from other audio server efforts
103in that it has been designed from the ground up to be suitable for
104professional audio work. This means that it focuses on two key areas:
105synchronous execution of all clients, and low latency operation.")
106 ;; Most files are licensed under the GPL. However, the libjack/ tree is
107 ;; licensed under the LGPL in order to allow for proprietary usage.
e89fa047 108 (license (list license:gpl2+ license:lgpl2.1+))))
c54a8981
RW
109
110(define-public jack-2
111 (package (inherit jack-1)
112 (name "jack")
113 (version "1.9.10")
114 (source (origin
115 (method url-fetch)
116 (uri (string-append
117 "https://github.com/jackaudio/jack2/archive/v"
118 version
119 ".tar.gz"))
120 (sha256
121 (base32
122 "03b0iiyk3ng3vh5s8gaqwn565vik7910p56mlbk512bw3dhbdwc8"))))
123 (build-system waf-build-system)
124 (arguments
125 `(#:tests? #f ; no check target
126 #:configure-flags '("--dbus"
127 "--alsa")))
128 (inputs
129 `(("alsa-lib" ,alsa-lib)
130 ("dbus" ,dbus)
131 ("expat" ,expat)
132 ("libsamplerate" ,libsamplerate)
133 ("opus" ,opus)
134 ("readline" ,readline)))
135 (native-inputs
136 `(("pkg-config" ,pkg-config)))
137 ;; Most files are under GPLv2+, but some headers are under LGPLv2.1+
138 (license (list license:gpl2+ license:lgpl2.1+))))
f47cba0e
RW
139
140(define-public liblo
141 (package
142 (name "liblo")
143 (version "0.28")
144 (source (origin
145 (method url-fetch)
146 (uri (string-append
147 "mirror://sourceforge/liblo/liblo-"
148 version
149 ".tar.gz"))
150 (sha256
151 (base32
152 "02drgnpirvl2ihvzgsmn02agr5sj3vipzzw9vma56qlkgfvak56s"))))
153 (build-system gnu-build-system)
154 (arguments
155 `(;; liblo test FAILED
156 ;; liblo server error 19 in setsockopt(IP_ADD_MEMBERSHIP): No such device
157 #:tests? #f))
158 (home-page "http://liblo.sourceforge.net")
159 (synopsis "Implementation of the Open Sound Control protocol")
160 (description
161 "liblo is a lightweight library that provides an easy to use
162implementation of the Open Sound Control (OSC) protocol.")
163 (license license:lgpl2.1+)))
e2420191 164
332aad1b
RW
165(define-public lilv
166 (package
167 (name "lilv")
168 (version "0.20.0")
169 (source (origin
170 (method url-fetch)
171 (uri (string-append "http://download.drobilla.net/lilv-"
172 version
173 ".tar.bz2"))
174 (sha256
175 (base32
176 "0aj2plkx56iar8vzjbq2l7hi7sp0ml99m0h44rgwai2x4vqkk2j2"))))
177 (build-system waf-build-system)
178 (arguments `(#:tests? #f)) ; no check target
179 (inputs
180 `(("lv2" ,lv2)
181 ("serd" ,serd)
182 ("sord" ,sord)
183 ("sratom" ,sratom)))
184 (native-inputs
185 `(("pkg-config" ,pkg-config)))
186 (home-page "http://drobilla.net/software/lilv/")
187 (synopsis "Library to simplify use of LV2 plugins in applications")
188 (description
189 "Lilv is a C library to make the use of LV2 plugins as simple as possible
190for applications. Lilv is the successor to SLV2, rewritten to be
191significantly faster and have minimal dependencies.")
192 (license license:isc)))
193
e2420191
RW
194(define-public lv2
195 (package
196 (name "lv2")
197 (version "1.10.0")
198 (source (origin
199 (method url-fetch)
200 (uri (string-append "http://lv2plug.in/spec/lv2-"
201 version
202 ".tar.bz2"))
203 (sha256
204 (base32
205 "1md41x9snrp4mcfyli7lyfpvcfa78nfy6xkdy84kppnl8m5qw378"))))
206 (build-system waf-build-system)
207 (arguments
208 `(#:tests? #f ; no check target
209 #:configure-flags '("--lv2-system")))
210 (inputs
211 ;; Leaving off cairo and gtk+-2.0 which are needed for example plugins
212 `(("libsndfile" ,libsndfile)))
213 (native-inputs
214 `(("pkg-config" ,pkg-config)))
215 (home-page "http://lv2plug.in/")
216 (synopsis "LV2 audio plugin specification")
217 (description
218 "LV2 is an open specification for audio plugins and host applications.
219At its core, LV2 is a simple stable interface, accompanied by extensions which
220add functionality to support the needs of increasingly powerful audio
221software.")
222 (license license:isc)))
5279eb6f
RW
223
224(define-public sratom
225 (package
226 (name "sratom")
227 (version "0.4.6")
228 (source (origin
229 (method url-fetch)
230 (uri (string-append "http://download.drobilla.net/sratom-"
231 version
232 ".tar.bz2"))
233 (sha256
234 (base32
235 "080jjiyxjnj7hf25844hd9rb01grvzz1rk8mxcdnakywmspbxfd4"))))
236 (build-system waf-build-system)
237 (arguments `(#:tests? #f)) ; no check target
238 (inputs
239 `(("lv2" ,lv2)
240 ("serd" ,serd)
241 ("sord" ,sord)))
242 (native-inputs
243 `(("pkg-config" ,pkg-config)))
244 (home-page "http://drobilla.net/software/sratom/")
245 (synopsis "Library for serialising LV2 atoms to/from RDF")
246 (description
247 "Sratom is a library for serialising LV2 atoms to/from RDF, particularly
248the Turtle syntax.")
249 (license license:isc)))
f3ab6ad3
RW
250
251(define-public suil
252 (package
253 (name "suil")
254 (version "0.8.2")
255 (source (origin
256 (method url-fetch)
257 (uri (string-append "http://download.drobilla.net/suil-"
258 version
259 ".tar.bz2"))
260 (sha256
261 (base32
262 "1s3adyiw7sa5gfvm5wasa61qa23629kprxyv6w8hbxdiwp0hhxkq"))))
263 (build-system waf-build-system)
264 (arguments `(#:tests? #f)) ; no check target
265 (inputs
266 `(("lv2" ,lv2)
267 ("gtk+-2" ,gtk+-2)
268 ("qt-4" ,qt-4)))
269 (native-inputs
270 `(("pkg-config" ,pkg-config)))
271 (home-page "http://drobilla.net/software/suil/")
272 (synopsis "Library for loading and wrapping LV2 plugin UIs")
273 (description
274 "Suil is a lightweight C library for loading and wrapping LV2 plugin UIs.
275
276Suil makes it possible to load a UI of a toolkit in a host using another
277toolkit. The API is designed such that hosts do not need to explicitly
278support specific toolkits – if Suil supports a particular toolkit, then UIs in
279that toolkit will work in all hosts that use Suil automatically.
280
281Suil currently supports every combination of Gtk 2, Qt 4, and X11.")
282 (license license:isc)))
db46f2fc
RW
283
284(define-public vamp
285 (package
286 (name "vamp")
287 (version "2.5")
288 (source (origin
289 (method url-fetch)
290 (uri (string-append
291 "https://code.soundsoftware.ac.uk"
292 "/attachments/download/690/vamp-plugin-sdk-"
293 version
294 ".tar.gz"))
295 (sha256
296 (base32
297 "178kfgq08cmgdzv7g8dwyjp4adwx8q04riimncq4nqkm8ng9ywbv"))))
298 (build-system gnu-build-system)
299 (arguments `(#:tests? #f)) ; no check target
300 (inputs
301 `(("libsndfile" ,libsndfile)))
302 (native-inputs
303 `(("pkg-config" ,pkg-config)))
304 (home-page "http://vamp-plugins.org")
305 (synopsis "Modular and extensible audio processing system")
306 (description
307 "Vamp is an audio processing plugin system for plugins that extract
308descriptive information from audio data — typically referred to as audio
309analysis plugins or audio feature extraction plugins.")
310 (license
311 (license:x11-style
312 "https://code.soundsoftware.ac.uk/projects/vamp-plugin-sdk/repository/entry/COPYING"))))