href="cli.html"><tt>cli.html</tt></a>, <a
href="daemon.html"><tt>daemon.html</tt></a>.</p>
-<p>You may browse the <a href="http://www.doxygen.org/">Doxygen</a> generated <a
-href="http://0pointer.de/lennart/projects/polypaudio/doxygen/">programing
-documentation</a> for the client API. (Run <tt>make doxygen</tt> to generate this documentation from the source tree)</p>
-
<h3>First Steps</h3>
<p>Simply start the polypaudio daemon with the argument <tt>-C</tt></p>
<p>Now you can issue CLI commands as described in <a
href="cli.html"><tt>cli.html</tt></a>. Another way to start
-<tt>polypaudio</tt> is by specifying a configuration script on the
-command line like that one included in the distribution:</p>
+<tt>polypaudio</tt> is by specifying a configuration script like that one included in the distribution on the
+command line :</p>
<pre>polypaudio -F polypaudio.pa</pre>
<p>This will load some drivers and protocols automatically.</p>
+<h3>Developing polypaudio Clients</h3>
+
+<p>You may browse the <a href="http://www.doxygen.org/">Doxygen</a> generated <a
+href="http://0pointer.de/lennart/projects/polypaudio/doxygen/">programing
+documentation</a> for the client API. (Run <tt>make doxygen</tt> to generate this documentation from the source tree)</p>
+
+<h3>Developing polypaudio Modules</h3>
+
+<p>There are several reasons for writing loadable modules for polypaudio:</p>
+
+<ul>
+ <li>Device driver support in addition to ALSA/OSS</li>
+ <li>Protocol support beyond ESOUND's protocol and the native protocol. (such as NAS or a subset of aRts)</li>
+ <li>New programming interfaces such as XMLRPC or DBUS for controlling the daemon.</li>
+ <li>Hooking audio event sources directly into polypaudio (similar to <tt>module-x11-bell</tt>)</li>
+ <li>For low latency applications such as VOIP: load the VOIP core directly into polypaudio and have a slim GUI frontend to control it.</li>
+</ul>
+
+<p>There is currently no documentation how to write loadable modules
+for polypaudio. <i>Read the source, Luke!</i> If you are interested in
+writing new modules feel free to contact the author in case you have any
+questions.</p>
+
<h2><a name="requirements">Requirements</a></h2>
<p>Currently, <tt>polypaudio</tt> is tested on Linux only. It requires an OSS or ALSA compatible soundcard.</p>
(resp. ssource) by its index in the sink (resp. source) list or by its
name.</p>
-<h2>Killing clients/streams</h2>
+<h2>Sample Cache</h2>
+
+<h3><tt>scache_list</tt></h3>
+
+<p>Lists the contents of the sample cache.</p>
+
+<h3><tt>scache_play</tt></h3>
+
+<p>Play a sample cache entry to a sink. Expects the sample name and the sink name as arguments.</p>
+
+<h3><tt>sache_remove</tt></h3>
+
+<p>Remove an entry from the sample cache. Expects the sample name as argument.</p>
+
+<h3><tt>sache_load</tt></h3>
+
+<p>Load an audio file to the sample cache. Expects the file name to load and the desired sample name as arguments.</p>
+
+<h2>Module Autoloading</h2>
+
+<h3><tt>autoload_list</tt></h3>
+
+<p>Lists all currently defined autoloading entries.</p>
+
+<h3><tt>autoload_sink_add/autoload_source_add</tt></h3>
+
+<p>Adds an autoloading entry for a sink (resp. source). Expects the sink name (resp. source name), the module name and the module arguments as arguments.</p>
+
+<h3><tt>autoload_sink_remove/autoload_source_remove</tt></h3>
+
+<p>Remove an autoloading entry. Expects the sink name (resp. source name) as argument.</p>
+
+<h2>Miscellaneous Commands</h2>
+
+<h3><tt>play_file</tt></h3>
+
+<p>Play an audio file to a sink. Expects the file name and the sink name as argumens.</p>
+
+<h2>Killing Clients/Streams</h2>
<h3><tt>kill_client</tt></h3>
<h2>Example Configuration Script</h2>
+<p>Mark the following script as executable (<tt>chmod +x</tt>) and run it for a sensible polypaudio configuration.</p>
+
<pre>
#!/usr/bin/polaudio -F
-# Load audio drivers
-load module-alsa-sink device=plughw:0,0 rate=48000
-load module-alsa-source device=hw:1,0
+# Create autoload entries for the device drivers
+autoload_sink_add output module-alsa-sink device=plughw:0,0 rate=48000 sink_name=output
+autoload_source_add input load module-alsa-source device=hw:1,0 source_name=input
# Load several protocols
load module-esound-protocol-tcp
# Load the CLI module (This is similar to passing "-C" on the command line of polypaudio)
load module-cli
+# Make some devices default
+sink_default output
+source_default input
+
+# Don't fail if the audio files referred to below don't exist
.nofail
-# Make some devices default
-sink_default alsa_output
-source_default alsa_input
+# Load an audio to the sample cache for usage with module-x11-bell
+scache_load /usr/share/sounds/KDE_Notify.wav x11-bell
+load module-x11-bell
-# Use digital amplification
-sink_volume alsa_output 0x200
+# Play a welcome sound
+play_file /usr/share/sounds/startup3.wav output
</pre>
<hr/>
-<address class="grey">Lennart Poettering <@PACKAGE_BUGREPORT@>, July 2004</address>
+<address class="grey">Lennart Poettering <@PACKAGE_BUGREPORT@>, August 2004</address>
<div class="grey"><i>$Id$</i></div>
</body> </html>
<tr><td><tt>cookie=</tt></td><td>Name of the cookie file for authentication purposes</td></tr>
</table>
+<h3>module-x11-bell</h3>
+
+<p>Intercepts X11 bell events and plays a sample from the sample cache on each occurence.</p>
+
+<table>
+ <tr><td><tt>display=</tt></td><td>X11 display to connect to. If ommited defaults to the value of <tt>$DISPLAY</tt></td></tr>
+ <tr><td><tt>sample=</tt></td><td>The sample to play. If ommited defaults to <tt>x11-bell</tt>.</td></tr>
+ <tr><td><tt>sink=</tt></td><td>Name of the sink to play the sample on. If ommited defaults to the default sink.</td></tr>
+</table>
<hr/>
-<address class="grey">Lennart Poettering <@PACKAGE_BUGREPORT@>, July 2004</address>
+<address class="grey">Lennart Poettering <@PACKAGE_BUGREPORT@>, August 2004</address>
<div class="grey"><i>$Id$</i></div>
</body> </html>