gnu: Add PulseAudio and related libraries.
* gnu/packages/pulseaudio.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it.
This commit is contained in:
parent
37e6cdcdd7
commit
37bfb4488d
@ -143,6 +143,7 @@ GNU_SYSTEM_MODULES = \
|
||||
gnu/packages/plotutils.scm \
|
||||
gnu/packages/popt.scm \
|
||||
gnu/packages/pth.scm \
|
||||
gnu/packages/pulseaudio.scm \
|
||||
gnu/packages/python.scm \
|
||||
gnu/packages/qemu.scm \
|
||||
gnu/packages/qt.scm \
|
||||
|
187
gnu/packages/pulseaudio.scm
Normal file
187
gnu/packages/pulseaudio.scm
Normal file
@ -0,0 +1,187 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages pulseaudio)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module ((guix licenses)
|
||||
#:renamer (symbol-prefix-proc 'l:))
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages oggvorbis)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages avahi)
|
||||
#:use-module (gnu packages glib)
|
||||
#:use-module (gnu packages algebra)
|
||||
#:use-module ((gnu packages autotools) #:select (libtool))
|
||||
#:use-module (gnu packages gdbm)
|
||||
#:use-module (gnu packages m4)
|
||||
#:use-module (gnu packages check)
|
||||
#:export (libsndfile
|
||||
libsamplerate
|
||||
json-c
|
||||
pulseaudio))
|
||||
|
||||
(define libsndfile
|
||||
(package
|
||||
(name "libsndfile")
|
||||
(version "1.0.25")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://www.mega-nerd.com/libsndfile/files/libsndfile-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"10j8mbb65xkyl0kfy0hpzpmrp0jkr12c7mfycqipxgka6ayns0ar"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("libvorbis" ,libvorbis)
|
||||
("libogg" ,libogg)
|
||||
("flac" ,flac)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(home-page "http://www.mega-nerd.com/libsndfile/")
|
||||
(synopsis "Reading and writing files containing sampled sound")
|
||||
(description
|
||||
"Libsndfile is a C library for reading and writing files containing
|
||||
sampled sound (such as MS Windows WAV and the Apple/SGI AIFF format) through
|
||||
one standard library interface.
|
||||
|
||||
It was designed to handle both little-endian (such as WAV) and
|
||||
big-endian (such as AIFF) data, and to compile and run correctly on
|
||||
little-endian (such as Intel and DEC/Compaq Alpha) processor systems as well
|
||||
as big-endian processor systems such as Motorola 68k, Power PC, MIPS and
|
||||
SPARC. Hopefully the design of the library will also make it easy to extend
|
||||
for reading and writing new sound file formats.")
|
||||
(license l:gpl2+)))
|
||||
|
||||
(define libsamplerate
|
||||
(package
|
||||
(name "libsamplerate") ; aka. Secret Rabbit Code (SRC)
|
||||
(version "0.1.8")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://www.mega-nerd.com/SRC/libsamplerate-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"01hw5xjbjavh412y63brcslj5hi9wdgkjd3h9csx5rnm8vglpdck"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("pkg-config" ,pkg-config)))
|
||||
(propagated-inputs
|
||||
`(("libsndfile" ,libsndfile)
|
||||
("fftw" ,fftw)))
|
||||
(home-page "http://www.mega-nerd.com/SRC/index.html")
|
||||
(synopsis "Audio sample rate conversion library")
|
||||
(description
|
||||
"Secret Rabbit Code (aka. libsamplerate) is a Sample Rate Converter for
|
||||
audio. One example of where such a thing would be useful is converting audio
|
||||
from the CD sample rate of 44.1kHz to the 48kHz sample rate used by DAT
|
||||
players.
|
||||
|
||||
SRC is capable of arbitrary and time varying conversions; from downsampling by
|
||||
a factor of 256 to upsampling by the same factor. Arbitrary in this case means
|
||||
that the ratio of input and output sample rates can be an irrational
|
||||
number. The conversion ratio can also vary with time for speeding up and
|
||||
slowing down effects.
|
||||
|
||||
SRC provides a small set of converters to allow quality to be traded off
|
||||
against computation cost. The current best converter provides a
|
||||
signal-to-noise ratio of 145dB with -3dB passband extending from DC to 96% of
|
||||
the theoretical best bandwidth for a given pair of input and output sample
|
||||
rates. ")
|
||||
(license l:gpl2+)))
|
||||
|
||||
(define json-c
|
||||
(package
|
||||
(name "json-c")
|
||||
(version "0.11")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://s3.amazonaws.com/json-c_releases/releases/json-c-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1324jja19jgsvcz9ij3nf4sgkrf4fg0ilw77vzqls3fw8m8wdpr8"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments '(#:parallel-build? #f
|
||||
#:parallel-tests? #f))
|
||||
(home-page "https://github.com/json-c/json-c/wiki")
|
||||
(synopsis "JSON implementation in C")
|
||||
(description
|
||||
"JSON-C implements a reference counting object model that allows you to
|
||||
easily construct JSON objects in C, output them as JSON formatted strings and
|
||||
parse JSON formatted strings back into the C representation of JSON objects.")
|
||||
(license l:x11)))
|
||||
|
||||
(define pulseaudio
|
||||
(package
|
||||
(name "pulseaudio")
|
||||
(version "4.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://freedesktop.org/software/pulseaudio/releases/pulseaudio-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1bndz4l8jxyq3zq128gzp3gryxl6yjs66j2y1d7yabw2n5mv7kim"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:configure-flags '("--localstatedir=/var" ;"--sysconfdir=/etc"
|
||||
"--disable-oss-output")
|
||||
#:phases (alist-cons-before
|
||||
'check 'pre-check
|
||||
(lambda _
|
||||
;; 'tests/lock-autospawn-test.c' wants to create a file
|
||||
;; under ~/.config/pulse.
|
||||
(setenv "HOME" (getcwd)))
|
||||
%standard-phases)))
|
||||
(inputs
|
||||
;; TODO: Add optional inputs (GTK+?).
|
||||
`(;; ("sbc" ,sbc)
|
||||
("alsa-lib" ,alsa-lib)
|
||||
("json-c" ,json-c)
|
||||
("speex" ,speex)
|
||||
("libsndfile" ,libsndfile)
|
||||
("libsamplerate" ,libsamplerate)
|
||||
("dbus" ,dbus)
|
||||
("glib" ,glib)
|
||||
("intltool" ,intltool)
|
||||
("pkg-config" ,pkg-config)
|
||||
("m4" ,m4)
|
||||
("libtool" ,libtool)
|
||||
("fftw" ,fftw)
|
||||
("avahi" ,avahi)
|
||||
("check" ,check)))
|
||||
(propagated-inputs
|
||||
;; 'libpulse*.la' contain `-lgdbm' and `-lcap', so propagate them.
|
||||
`(;; ("libcap" ,libcap)
|
||||
("gdbm" ,gdbm)))
|
||||
(home-page "http://www.pulseaudio.org/")
|
||||
(synopsis "Sound server")
|
||||
(description
|
||||
"PulseAudio is a sound server. It is basically a proxy for your sound applications.
|
||||
It allows you to do advanced operations on your sound data as it passes
|
||||
between your application and your hardware. Things like transferring the
|
||||
audio to a different machine, changing the sample format or channel count and
|
||||
mixing several sounds into one are easily achieved using a sound server. ")
|
||||
|
||||
;; PulseAudio is LGPLv2+, but some of the optional dependencies (GNU dbm,
|
||||
;; FFTW, etc.) are GPL'd, so the result is effectively GPLv2+. See
|
||||
;; 'LICENSE' for details.
|
||||
(license l:gpl2+)))
|
Loading…
Reference in New Issue
Block a user