polypaudio @PACKAGE_VERSION@

Copyright 2004-2006 Lennart Poettering <@PACKAGE_BUGREPORT@> and Pierre Ossman

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 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.

You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

News

Fri Jun 2 2006:

Version 0.9.1 released; changes include: load modules even when libtool .la files are missing; generate better ALSA device names from module-detect; if an ALSA device doesn't support the requested number of channels or the frequency, accept what ALSA suggests instead; amd64 portability; drop .sh suffix of esdcompat.sh; build system fixes; No API or ABI changes were made

Fri May 26 2006:

Version 0.9.0 released; changes include: new module module-volume-restore; new OSS API emulation tool padsp; require valid UTF8 strings everywhere; properly support ALSA channel maps for surround sound; increase maximum number of channels per stream to 32; add new threaded main loop API for synchronous programs; introduce real shared object versioning; a few API additions; many, many bugfixes

Fri Apr 28 2006:

Version 0.8.1 released; changes include: support for specifying the channel map on the command lines of paplay and pacat and as arguments to the driver modules; ALSA hardware mixer compatibility; fix linking; properly remove PF_UNIX sockets when unloading protocol modules; fix sample cache; many other fixes

Thu Apr 13 2006:

Version 0.8 released; changes include: too many to count - consider reading this blog entry for more information; many, many minor fixes.

Sun Nov 21 2004:

Version 0.7 released; changes include: IPv6 support; PID file support; publish credentials in X11 root window (module-x11-publish; new tool pacmd; ESOUND backend; new command load-sample-dir-lazy; many, many minor fixes.

Thu Oct 28 2004:

Version 0.6 released; changes include: TCP wrappers support; don't load the complete sound file into memory when playing back using pa_play_file(); autoload API change; don't load all sound files as FLOAT32; shorten default buffers; client-side latency interpolation; add new user volume metrics; add module-tunnel, module-null-sink, module-match and new tool paplay; new API version macros; many client API improvements; correctly lock cookie file generation; correctly lock daemon autospawning; print daemon layout to STDERR on SIGHUP; new options for pacat: allow sample type specification.

Mon Sep 24 2004:

Version 0.5.1 released; changes include: improve esound protocol compatibility; fix autospawning via libesd; make use of POSIX capabilities; allow SCHED_FIFO scheduling only for users in group realtime; minor build system fix.

Mon Sep 20 2004:

Version 0.5 released; changes include: extensive API improvements, new module module-combine for combining multiple sound cards into one, gcc 2.95 compatibility, configuration files, add "lazy" samples, support for source and network latency measurements, add module-pipe-source, many other fixes and improvements.

Wed Sep 8 2004:

Version 0.4 released; changes include: daemon auto spawning, support for SCHED_FIFO scheduling, three new modules, proper logging, CPU load watchdog, many fixes.

Fri Aug 27 2004:

Version 0.3 released; changes include: support for both glib 2.0 and glib 1.2, future cancellation, API updates, many fixes, relicense client library to LGPL.

Fri Aug 20 2004:

Version 0.2 released; changes include: added sample cache, introspection API, client API documentation, module autoloading, glib support, a module for intercepting X11 bell events, and much more.

Sat Jul 17 2004:

Version 0.1 released

Overview

polypaudio is a networked sound server for Linux and other Unix like operating systems and Microsoft Windows. It is intended to be an improved drop-in replacement for the Enlightened Sound Daemon (ESOUND). In addition to the features ESOUND provides polypaudio has:

Both the core and the client API are completely asynchronous making use of a simple main loop abstraction layer. This allows easy integration with asynchronous applications using the glib/gtk mainloop. Since the asynchronous API available through polyplib is quite difficult to use there is a simplified synchronous API wrapper polyplib-simple available. A simple main loop implementation is available as well.

The following modules are currently available:

A GTK GUI manager application for polypaudio is the Polypaudio Manager. Other GTK GUI tool for Polypaudio are the Polypaudio Volume Meter and the Polypaudio Volume Control .

There are output plugins for XMMS, libao (merged in libao SVN) and gstreamer (merged in gstreamer-plugins CVS), MPlayer (merged in MPlayer CVS) and Xine (merged in Xine CVS). Drivers for PortAudio will be released shortly.

Current Status

Version @PACKAGE_VERSION@ is quite usable. It matches and supersedes ESOUND's feature set in nearly all areas.

Documentation

There is some preliminary documentation available: modules.html, cli.html, daemon.html and FAQ.html.

There is a Trac based Wiki for Polypaudio available.

First Steps

Simply start the polypaudio daemon with the argument -nC

polypaudio -nC

This will present you a screen like this:

Welcome to polypaudio! Use "help" for usage information.
>>> 

Now you can issue CLI commands as described in cli.html. Another way to start polypaudio is by specifying a configuration script like that one included in the distribution on the command line :

polypaudio -nF polypaudio.pa

This will load some drivers and protocols automatically.

The best idea is to configure your daemon in /etc/polypaudio/daemon.conf and /etc/polypaudio/default.pa and to run polypaudio without any arguments.

Beware! Unless you pass the option --sysconfdir=/etc to configure, the directory /etc/polypaudio/ is really /usr/local/etc/polypaudio/.

Developing polypaudio Clients

You may browse the Doxygen generated programing documentation for the client API. (Run make doxygen to generate this documentation from the source tree)

Developing polypaudio Modules

There are several reasons for writing loadable modules for polypaudio:

There is currently no documentation how to write loadable modules for polypaudio. Read the source, Luke! If you are interested in writing new modules feel free to contact the author in case you have any questions.

Requirements

Currently, polypaudio is tested on Linux, FreeBSD, Solaris and Microsoft Windows. It requires an OSS, ALSA, Win32 or Solaris compatible soundcard.

polypaudio was developed and tested on Debian GNU/Linux "testing" from November 2004, 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.

polypaudio needs Secret Rabbit Code (aka libsamplerate), libsndfile, liboil.

Optionally it can make use of libwrap, alsa-lib, libasyncns, lirc, HOWL (or preferably the compatibility layer included in its superior replacement Avahi) and GLIB. (The latter is required for building the GLIB main loop integration module only.)

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 polypaudio.

Acknowledgements

Eric B. Mitchell for writing ESOUND

Jeff Waugh for creating Ubuntu packages (and hopefully soon Debian)

Miguel Freitas for writing a Polypaudio driver for Xine

Joe Marcus Clarke for porting Polypaudio to FreeBSD

Cendio AB for paying for Pierre's work on Polypaudio

Sebastien ESTIENNE for testing

Igor Zubkov for some portability patches

Download

The newest release is always available from @PACKAGE_URL@

The current release is @PACKAGE_VERSION@

Get polypaudio's development sources from the Subversion repository (viewcvs):

svn checkout svn://0pointer.de/polypaudio/trunk polypaudio

Community

If you want to be notified whenever I release a new version of this software use the subscription feature of Freshmeat.

There is a general discussion mailing list for polypaudio available. In addition, you can subscribe to SVN changes and Trac Tickets.

Polypaudio is being tracked at CIA.

There's a chance to meet the Polypaudio developers on our IRC channel #polypaudio on irc.freenode.org.

There is a Trac based Wiki for Polypaudio available.

Please report bugs to our Trac ticket system.


Lennart Poettering <@PACKAGE_BUGREPORT@>, June 2006
$Id$