Subject: Proposed package: audio/pulseaudio
To: None <pkgsrc-users@netbsd.org>
From: Blair Sadewitz <blair.sadewitz@gmail.com>
List: pkgsrc-users
Date: 10/25/2006 00:40:13
------=_Part_8457_18317745.1161751213845
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

See www.pulseaudio.org.  I think this would be a useful addition to pkgsrc,
namely to replace the moribund audio/esound.

>From the web site:

     Library licensed under LGPL
<http://www.gnu.org/copyleft/lesser.html>and server daemon under
GPL <http://www.gnu.org/copyleft/gpl.html>
     Extensible plugin architecture (by loading dynamic loadable modules
with dlopen())
     Support for static linking of modules, allowing a single binary for all
your needs
     Module autoloading
     Support for more than one sink/source
     Good low latency behaviour
     Very accurate latency measurement for playback and recording.
     Client side latency interpolation
     Embedabble into other software (the core is available as C library)
     Completely asynchronous C API, complemented by two synchronous variants
for simple use in synchronous applications
     Simple command line interface for reconfiguring the daemon while
running
     Flexible, implicit sample type conversion and resampling
     "Zero-Copy" architecture
     May be used to combine multiple sound cards to one (with sample rate
adjustment)
     Ability to fully synchronize multiple playback streams



"PulseAudio can stream audio data to an IP multicast group via the standard
protocols RTP, SAP and SDP (RFC3550, RFC3551, RFC2327, RFC2327). This can be
used for multiple different purposes: for sharing a single microphone on
multiple computers on the local LAN, for streaming music from a single
controlling PC to multiple PCs with speakers or to implement a simple
"always-on" teleconferencing solution.

The current implementation is designed to be used exlusively in local area
networks, though Internet multicasting is theoretically supported. Only
uncompressed audio is supported, hence you won't be able to multicast more
than a few streams at the same time over a standard LAN.

PulseAudio implements both a sender and a reciever for RTP traffic. The
sender announces itself via SAP/SDP on the same multicast group as it sends
the RTP data to. The reciever picks up the SAP/SDP announcements and creates
a playback stream for each session. Alternatively you can use any RTP
capable client to recieve and play back the RTP data (such as mplayer)."
module-xeroconf-publish:
Publish all local sinks/sources using mDNS Zeroconf.


There are __many__ more interesting features aside from those here.
Moreover, they've already done Linux, FreeBSD, and win32 ports.
Surely this would be a superior option to esound on Interix, for example.
And how about using this among different domains in Xen (or a cluster of
machines) using this module:

module-combine:

This combines two or more sinks into one. A new virtual sink is allocated.
All data written to it is forwarded to all connected sinks. In aequidistant
intervals the sample rates of the output sinks is recalculated: i.e. even
when the sinks' crystals deviate (which is normally the case) output appears
synchronously to the human ear. The resampling required for this may be very
CPU intensive.

Please explore the wiki, especially noting all of the plugins here:

http://pulseaudio.org/wiki/Modules

IMHO, adding this to pkgsrc would significantly enahnce NetBSD's audio
capability and flexibility, not to mention
improve the "desktop experience".

I'm going to try this out on my machine, but I'm no pkgsrc developer (hope
to get there at some point, heh); perhaps
someone else more pkgsrc-savvy would care to work on this?

Regards,

--Blair

------=_Part_8457_18317745.1161751213845
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

<br>See <a href="http://www.pulseaudio.org">www.pulseaudio.org</a>.&nbsp; I think this would be a useful addition to pkgsrc, namely to replace the moribund audio/esound.<br><br>From the web site:<br><br>&nbsp;&nbsp;&nbsp;&nbsp; Library licensed under 
<a class="ext-link" href="http://www.gnu.org/copyleft/lesser.html"><span class="icon"></span>LGPL</a> and server daemon under <a class="ext-link" href="http://www.gnu.org/copyleft/gpl.html"><span class="icon"></span>GPL</a>
<br>&nbsp;&nbsp;&nbsp;&nbsp; Extensible plugin architecture (by loading dynamic loadable modules with dlopen())<br>&nbsp;&nbsp;&nbsp;&nbsp; Support for static linking of modules, allowing a single binary for all your needs<br>&nbsp;&nbsp;&nbsp;&nbsp; Module autoloading<br>&nbsp;&nbsp;&nbsp;&nbsp; Support for more than one sink/source
<br>&nbsp;&nbsp;&nbsp;&nbsp; Good low latency behaviour<br>&nbsp;&nbsp;&nbsp;&nbsp; Very accurate latency measurement for playback and recording.<br>&nbsp;&nbsp;&nbsp;&nbsp; Client side latency interpolation<br>&nbsp;&nbsp;&nbsp;&nbsp; Embedabble into other software (the core is available as C library)
<br>&nbsp;&nbsp;&nbsp;&nbsp; Completely asynchronous C API, complemented by two synchronous variants for simple use in synchronous applications<br>&nbsp;&nbsp;&nbsp;&nbsp; Simple command line interface for reconfiguring the daemon while running<br>&nbsp;&nbsp;&nbsp;&nbsp; Flexible, implicit sample type conversion and resampling
<br>&nbsp;&nbsp;&nbsp;&nbsp; &quot;Zero-Copy&quot; architecture<br>&nbsp;&nbsp;&nbsp;&nbsp; May be used to combine multiple sound cards to one (with sample rate adjustment)<br>&nbsp;&nbsp;&nbsp;&nbsp; Ability to fully synchronize multiple playback streams
<br><br>&nbsp;&nbsp;&nbsp;&nbsp; <br><p>&quot;PulseAudio can stream audio data to an IP multicast group via the
standard protocols RTP, SAP and SDP (RFC3550, RFC3551, RFC2327,
RFC2327). This can be used for multiple different purposes: for sharing
a single microphone on multiple computers on the local LAN, for
streaming music from a single controlling PC to multiple PCs with
speakers or to implement a simple &quot;always-on&quot; teleconferencing
solution.
</p>
<p>The current implementation is designed to be used exlusively in
local area networks, though Internet multicasting is theoretically
supported. Only uncompressed audio is supported, hence you won't be
able to multicast more than a few streams at the same time over a
standard LAN.
</p>
<p>PulseAudio implements both a sender and a reciever for RTP traffic.
The sender announces itself via SAP/SDP on the same multicast group as
it sends the RTP data to. The reciever picks up the SAP/SDP
announcements and creates a playback stream for each session.
Alternatively you can use any RTP capable client to recieve and play
back the RTP data (such as mplayer).&quot;</p>module-xeroconf-publish:<br>Publish all local sinks/sources using mDNS Zeroconf.<br><br><br>There are __many__ more interesting features aside from those here.&nbsp; Moreover, they've already done Linux, FreeBSD, and win32 ports.
<br>Surely this would be a superior option to esound on Interix, for example.&nbsp; And how about using this among different domains in Xen (or a cluster of machines) using this module:<br><br>
<p>module-combine:<br>
</p><p>This combines two or more sinks into one. A new virtual sink is
allocated. All data written to it is forwarded to all connected sinks.
In aequidistant intervals the sample rates of the output sinks is
recalculated: i.e. even when the sinks' crystals deviate (which is
normally the case) output appears synchronously to the human ear. The
resampling required for this may be very CPU intensive.
</p><br>Please explore the wiki, especially noting all of the plugins here:<br><br><a href="http://pulseaudio.org/wiki/Modules">http://pulseaudio.org/wiki/Modules</a><br><br>IMHO, adding this to pkgsrc would significantly enahnce NetBSD's audio capability and flexibility, not to mention
<br>improve the &quot;desktop experience&quot;.<br><br>I'm going to try this out on my machine, but I'm no pkgsrc developer (hope to get there at some point, heh); perhaps<br>someone else more pkgsrc-savvy would care to work on this?
<br><br>Regards,<br><br>--Blair<br><br>

------=_Part_8457_18317745.1161751213845--