hello xdg,<br><br>I propose here a sound API for casual use, playing events and
writing very simple audio players. <br>There is no std API that address this, and
it would be good to have one on fd.o, no? <br><br>Doxydoc is here <a href="http://etudiant.epita.fr/%7Elureau_m/ds-0.1/doc/html/index.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://etudiant.epita.fr/~lureau_m/ds-0.1/doc/html/index.html
</a>.<br><br>It could be implemented freely for different backends, this is similar/close to PortAudio design choices - in
a way. Thus, implementation is not discussed here. This API avoid all
the current workarounds/features specifics for each API (such as esd, that I would like
to get rid of in GNOME [1]). <br><br>By casual, it means it does not cover advanced functions. It
makes the assumption that concurrent playbacks are available (mixed
hw/sw). Nevertheless, errors should be reported if the
device is locked or mixing of sounds is not possible. The interface should hide the fact of sound caching mechanism (this
can be done transparently by the library or at a lower level). The
introspection of device/host is only a low level issue, dependent on
the backend. Anyway, most of the lower level
APIs seems to be able to use or map a string representation to identify
a device/driver/pipeline. I am not sure if such API should provide a
way to query the available outputs and their representations.<br>Initialization of the driver/sound backend should not be a user concern (this is argueable).<br>
<br>Simple crossfading between sounds can be implemented. Nice desktop things should be possible (see documentation).<br><br>Design choice take care of a future "sound manager" ([2] and/or [3]), and a themable sound specs (see [4] and [5]).
<br><br>Pb. It is asynchronous and depend on a common event/mainloop API/vtable. That is a big issue for such library, that try to be concise and flexible (if no solution, it might end up with a "once-again" vtable facilities)
<br><br>[1] <a href="http://live.gnome.org/PulseAudio" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://live.gnome.org/PulseAudio
</a> (and sekretly kill libgnome-sound and libesd).<br>[2] <a href="http://www.pulseaudio.org/" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://www.pulseaudio.org</a><br>
[3] <a href="http://live.gnome.org/GSmartMix" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://live.gnome.org/GSmartMix</a><br>
[4] Hopefully Coming Sound Event Spec <a href="http://lists.freedesktop.org/archives/xdg/2006-November/008706.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://lists.freedesktop.org/archives/xdg/2006-November/008706.html
</a><br>[5] Bango <a href="http://www.freedesktop.org/wiki/Bango" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://www.freedesktop.org/wiki/Bango</a><br clear="all"><br>-- <br>Marc-André Lureau, GSmartMix