# libcanberra 0.30

Copyright 2008-2012 Lennart Poettering <mzyvopnaoreen (at) 0pointer (dot) de>

## License

This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 2.1 of the License, or (at your option) any later version.

This program 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 Lesser General Public License for more details.

## News

Tue 25 Sep 2012:

Version 0.30 released; Port to GStreamer 1.0.

Tue 15 May 2012:

Version 0.29 released; A couple of bugfixes, drop GConf usage.

Thu 24 Feb 2011:

Version 0.28 released; Hook properly into GNOME 3.0 sessions; this drops support for GNOME 2.0 sessions, but not applications.

Fri 18 Feb 2011:

Version 0.27 released; Gtk+ 3.x fixes; add new tool to implement boot-up sounds when used with systemd; other fixes

Mon 4 Oct 2010:

Version 0.26 released; Gtk+ 3.x fixes.

Sun 13 Jun 2010:

Version 0.25 released; Optionally build with Gtk+ 3.x in addition to Gtk+ 2.x.

Mon 19 Apr 2010:

Version 0.24 released; GTK code is now fine with GSEAL. Minor fixes in the PulseAudio backend, other fixes.

Sat 20 Feb 2010:

Version 0.23 released; various minor fixes in the pulse and gstreamer backends as well in the Vala API. Support for the recently standardized Vorbis 6.1/7.1 multichannel modes.

Tue 20 Oct 2009:

Version 0.22 released; small fix to make sure we don't dereference a null pointer.

Fri 16 Oct 2009:

Version 0.21 released; suppress casting warning

Thu 15 Oct 2009:

Version 0.20 released; minor casting fix

Wed 14 Oct 2009:

Version 0.19 released; some important fixes for the Gtk support

Sun 20 Sep 2009:

Version 0.18 released; numerous updates for the Gtk support

Fri 12 Sep 2009:

Version 0.17 released; add vala vapi file; numerous updates to Gtk support

Thu 27 Aug 2009:

Version 0.16 released; add new `ca_context_playing()` call

Wed 5 Aug 2009:

Version 0.15 released; bug fixes

Thu 2 Jul 2009:

Version 0.14 released; bug fixes

Tue 23 Jun 2009:

Version 0.13 released; multichannel support; gtk multihead support; bug fixes

Mon 13 Apr 2009:

Version 0.12 released; changes include: various fixes and updates for the PulseAudio backend; detect forks and return an error for all functions in that case

Wed 21 Jan 2009:

Version 0.11 released; changes include: major GStreamer backend fixes; update to libtool 2.2; a few other fixes

Mon 6 Oct 2008:

Version 0.10 released; changes include: install Gtk+ module using GConf; a few other fixes

Tue 9 Sep 2008:

Version 0.9 released; changes include: GStreamer fixes, include (optional) libtdb based lookup cache.

Thu 28 Aug 2008:

Version 0.8 released; changes include: new OSS and GStreamer backend; portability fixes for FreeBSD/Solaris; the multi backend works now

Thu 14 Aug 2008:

Version 0.7 released; changes include: documentation updates; various bug fixes; add this web site/README; allow playback of event sounds with only a sound file path specified; other changes

## Overview

`libcanberra` is an implementation of the XDG Sound Theme and Name Specifications, for generating event sounds on free desktops, such as GNOME. It comes with several backends (ALSA, PulseAudio, OSS, GStreamer, null) and is designed to be portable. It consists of the following parts:

1. `libcanberra`: the main library
2. `libcanberra-gtk`: some glue code to make it easier to use `libcanberra` from Gtk+ applications
3. `libcanberra-gtk-module`: a Gtk+ module that uses `libcanberra-gtk` to trigger input feedback event sounds

For more information see the original announcement.

## Current Status

`libcanberra` is mostly feature complete. For now however it includes backends only for ALSA, PulseAudio, OSS and GStreamer.

`libcanberra` has been declared a blessed GNOME dependency.

The OSS driver is incomplete: only sound files that are in a format natively understood by the sound card are supported. If the sample type, channel map or sampling rate of the sound file are not supported by the sound card no automatic conversion will take place and the file will not be played. Also note that the OSS backend is most likely incompatible with OSS4, due to subtle incompatibilities between OSS4 and the OSS 3.x.

It is recommended to always take the "shortest" path from libcanberra to the audio device. I.e. don't use the GStreamer plugin if libcanberra supports the final output target natively. Besides being more resource-friendly and less error-prone, some advanced functionality might get lost with each layer you add to your stack. For example: while you could use libcanberra's Gstreamer backend to output to a PulseAudio server this will not be able to make use of sample cacheing or will be able to attach additional meta data to the sounds played, which might be necessary for effects like positional event sounds.

## Documentation

You may browse the gtkdoc generated programing documentation of the API.

## Requirements

Currently, `libcanberra` is tested on Linux only.

`libcanberra` was developed and tested on Fedora Rawhide from August 2008, it should work on most other Linux distributions (and maybe Unix versions) since it uses GNU autoconf and GNU libtool for source code configuration and shared library management.

`libcanberra` has no dependencies besides the OGG Vorbis development headers and whatever the selected backends require. Gtk+ support is optional. An optional lookup cache can be used if Samba's tdb trivial database is available.

## Installation

As this package is made with the GNU autotools you should run `./configure` inside the distribution directory for configuring the source tree. After that you should run `make` for compilation and `make install` (as root) for installation of `libcanberra`.

## Acknowledgements

Marc-André Lureau and Brian Cameron for the GStreamer backend.

Joe Marcus Clarke for the OSS backend.

Diego Elio Pettenò for various build system fixes.

## Download

The newest release is always available from http://0pointer.de/lennart/projects/libcanberra/

The current release is 0.30

Get `libcanberra`'s development sources from the GIT repository (gitweb):

    git clone git://git.0pointer.de/libcanberra

If you want to report bugs, have questions or want to be notified about new releases, please join the `libcanberra-discuss` mailing list.

If you want to be notified about new git commits, please join the `libcanberra-commits` mailing list.

`libcanberra`'s bugs are tracked at bugs.freedesktop.org.