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

Thu Apr 13 2006:

Version 0.8 released; changes include: too many to count; 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:

polypaudio is the successor of my previous, ill-fated attempt to write a sound server, asd.

A GTK GUI manager application for polypaudio is the Polypaudio Manager. Another GTK GUI tool for Polypaudio is the Polypaudio Volume Meter.

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.

Warning: polypaudio's client API and protocol are not stable yet. The client interface is still a moving target and changes from release to release. The client API's library version number is currently fixed to 0.0.0.

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

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

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.

There is a Trac based Wiki for Polypaudio available.

Please report bugs to our Trac ticket system.


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