2004-09-07 22:40:43 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								<?xml version="1.0" encoding="iso-8859-1"?>  <!--   - * - html - helper - * -   --> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< html  xmlns = "http://www.w3.org/1999/xhtml" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< head > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< title > polypaudio: FAQ< / title > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< link  rel = "stylesheet"  type = "text/css"  href = "style.css"  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / head > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< body > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< h1 > Frequently Asked Questions< / h1 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< ol > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < li > < p > < b > How does Polypaudio compare with ESOUND/aRts/NAS?< / b > < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < p > Polypaudio is sound daemon similar to ESOUND and NAS, but much more
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  powerful. aRts is a realtime-synthesizer-cum-sound-server, i.e. it
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  does much more than Polypaudio. However, I believe that Polypaudio
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  does what it does much better than any other free sound server.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < li > < p > < b > What about ESOUND compatibility?< / b > < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < p > Polypaudio is a drop in replacement for ESOUND. That means: you can
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  load a esound compatibility module which implements an ESOUND
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  compatible protocol which allows you to use most of the classic ESOUND
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  compatible programs (including the command line programs like
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < tt > esdcat< / tt > ).< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < li > < p > < b > Is Polypaudio a GNOME program?< / b > < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < p > No, Polypaudio has no dependency on GNOME/GTK/GLIB. All it requires
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  is a UNIX-like operating system and very few dependency
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  libraries. However, the accompanying GUI tools are writen with
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  gtkmm, i.e. require both GLIB and GTK.< / p > < / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < li > < p > < b > Can I integrate Polypaudio in my GLIB/GTK/GNOME application?< / b > < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < p > Yes! Polypaudio comes with a GLIB main loop adapter. You can embed
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  both the client library and the daemon (!) into your GLIB based
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  application.< / p > < / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < li > < p > < b > Can I integrate Polypaudio in my Qt/KDE application?< / b > < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < p > Yes! Polypaudio uses a main loop abstraction layer that allows you
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  to integrate Polypaudio in any program that supports main
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  loops. Unfortunately there is no adapter for Qt publicly available yet.< / p > < / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < li > < p > < b > I want to write a new driver for Polypaudio, are there any docs?< / b > < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < p > Currently, only the client API is documented with doxygen. Read
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  the source and base your work on a simple module like
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < tt > module-pipe-sink< / tt > .< / p > < / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < li > < p > < b > What about compatibility with NAS?< / b > < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < p > Is not available (yet?). It is doable, but noone has implemented it yet.< / p > < / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < li > < p > < b > What about compatibility with aRts?< / b > < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < p > Is not available. Since aRts is as synthesizer application you'd have to
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  reimplement very much code for Polypaudio. It should be easy to
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  implement limited support for < tt > libartsc< / tt >  based
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  applications. Noone has done this yet. It is probably a better idea to
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  run < tt > arts< / tt >  on top of Polypaudio (through a polypaudio driver
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  for aRts, which nobody has written yet). Another solution would be to
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  embed Polypaudio in the aRts process.< / p > < / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < li > < p > < b > I often hear noises when playing back with Polypaudio, what can I do?< / b > < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2004-09-23 23:26:15 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  < p > There are to possible solutions: run polypaudio with argument
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< tt > --high-priority=1< / tt >  and make yourself member of the group
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< tt > realtime< / tt > , or increase the fragment sizes of the audio
							 
						 
					
						
							
								
									
										
										
										
											2004-09-07 22:40:43 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  drivers. The former will allow Polypaudio to activate
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < tt > SCHED_FIFO< / tt >  high priority scheduling (root rights are dropped
							 
						 
					
						
							
								
									
										
										
										
											2006-04-16 13:34:09 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  immediately after this). Keep in mind that this is a potential security hole!< / p > < / li > 
							 
						 
					
						
							
								
									
										
										
										
											2004-09-23 23:26:15 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   < li > < p > < b > The < tt > polypaudio< / tt >   executable is installed SUID root by default. Why this? Isn't this a potential security hole?< / b > < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < p > Polypaudio activates < tt > SCHED_FIFO< / tt >  scheduling if the user
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								passes < tt > --high-priority=1< / tt > . This will only succeed when
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								executed as root, therefore the binary is marked SUID root by
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								default. Yes, this is a potential security hole. However, polypaudio
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								tries its best to minimize the security threat: immediately after
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								startup polypaudio drops all capabilities except
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< tt > CAP_SYS_NICE< / tt >  (At least on systems that support it, like Linux; see < tt > man 7
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								capabilities< / tt >  for more information). If the calling user is not a
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								member of the group < tt > realtime< / tt >  (which is required to have a GID
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								<  1000 ) ,  root  rights  are  dropped  immediately .  This  means ,  you  can 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								install polypaudio SUID root, but only a subset of your users (the
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								members of the group < tt > realtime< / tt > ) may make use of realtime
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								scheduling. Keep in mind that these users might load their own binary
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								modules into the polypaudio daemon which may freeze the machine. The
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								daemon has a minimal protection against CPU hogging (the daemon is
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								killed after hogging more than 70% CPU for 5 seconds), but this may
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								be circumvented easily by evildoers.< / p > < / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < li > < p > < b > I want to run polypaudio only when it is needed, how do I do this?< / b > < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2004-09-20 20:52:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < p > Set < tt > autospawn = yes< / tt >  in < tt > client.conf< / tt > . That
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								configuration file may be found either in < tt > /etc/polypaudio/< / tt >  or
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								in < tt > ~/.polypaudio/< / tt > .< / p > < / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < li > < p > < b > How do I list all polypaudio modules installed?< / b > < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   < p > < tt > polypaudio --dump-modules< / tt > < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   < p > Add < tt > -v< / tt >  for terse usage instructions.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-09-23 23:26:15 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								< li > < p > < b > How do I use polypaudio over the network?< / b > < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-16 13:34:09 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								< p > Just set < tt > $POLYP_SERVER< / tt >  to the host name of the polypaudio
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								server. For authentication you need the same auth cookies on all sides. For
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								that copy < tt > ~./polypaudio-cookie< / tt >  to all clients that shall
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								be allowed to connect.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< p > Alternatively the authorization cookies can be stored in the X11 server.< / p > < / li > 
							 
						 
					
						
							
								
									
										
										
										
											2004-09-23 23:26:15 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< li > < p > < b > Is polypaudio capable of providing synchronized audio playback over the network for movie players like < tt > mplayer< / tt > ?< / b > < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< p > Yes! Unless your network is congested in some way (i.e. transfer latencies vary strongly) it works perfectly. Drop me an email for experimental patches for MPlayer.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   < li > < p > < b > What environment variables does polypaudio care about?< / b > < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2004-09-20 20:52:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< p > The client honors: < tt > POLYP_SINK< / tt >  (default sink to connect to), < tt > POLYP_SOURCE< / tt >  (default source to connect to), < tt > POLYP_SERVER< / tt >  (default server to connect to, like < tt > ESPEAKER< / tt > ), < tt > POLYP_BINARY< / tt >  (the binary to start when autospawning a daemon), < tt > POLYP_CLIENTCONFIG< / tt >  (path to the client configuration file).< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< p > The daemon honors: < tt > POLYP_SCRIPT< / tt >  (default CLI script file run after startup), < tt > POLYP_CONFIG< / tt >  (default daemon configuration file), < tt > POLYP_DLPATH< / tt >  (colon separated list of paths where to look for modules)< / p > < / li > 
							 
						 
					
						
							
								
									
										
										
										
											2004-09-23 23:26:15 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< li > < p > < b > I saw that SIGUSR2 provokes loading of the module < tt > module-cli-protocol-unix< / tt > . But how do I make use of that?< / b > < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< p > A brilliant guy named Lennart Poettering once wrote a nifty tool
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								for that purpose: < a 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								href="http://0pointer.de/lennart/projects/bidilink/">bidilink< / a > . To
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								connect to a running polypaudio daemon try using the following commands:< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< pre > killall -USR2 polypaudio
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								bidilink unix-client:/tmp/polypaudio/cli< / pre > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-16 13:34:09 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								< p > < i > BTW: Someone should package this great tool for Debian!< / i > < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2004-11-08 23:48:19 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-11-21 22:07:47 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								< p > < b > New:< / b >  There's now a tool < tt > pacmd< / tt >  that automates sending SIGUSR2 to the daemon and running a bidilink like tool for you.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / li > 
							 
						 
					
						
							
								
									
										
										
										
											2004-11-08 23:48:19 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< li > < p > < b > How do the polypaudio libraries decide where to connect to?< / b > < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< p > The following rule applies:< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< ol > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < li > If the the application using the library specifies a server to connect to it is used. If the connection fails, the library fails too.< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < li > If the environment variable < tt > POLYP_SERVER< / tt >  is defined the library connects to that server. If the connection fails, the library fails too.< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < li > If < tt > $DISPLAY< / tt >  is set, the library tries to connect to that server and looks for the root window property < tt > POYLP_SERVER< / tt >  for the host to connect to. If < tt > POLYP_COOKIE< / tt >  is set it is used as authentication cookie.< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < li > If the client configuration file (< tt > ~/.polypaudio/client.conf< / tt >  or < tt > /etc/polypaudio/client.conf< / tt > ) sets the server address, the library connects to that server. If the connection fails, the library fails too.< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < li > The library tries to connect to the default local UNIX socket for polypaudio servers. If the connection fails, it proceeds with the next item.< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < li > The library tries to connect to the default local TCP socket for polypaudio servers. If the connection fails, it proceeds with the next item.< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < li > If < tt > $DISPLAY< / tt >  is set, the library tries to connect to the default TCP port of that host. If the connection fails, it proceeds with the next item.< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < li > The connection fails.< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / ol > 
							 
						 
					
						
							
								
									
										
										
										
											2004-09-23 23:26:15 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-11-21 22:07:47 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								< li > < p > < b > Why the heck does libpolyp link against libX11?< / b > < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-16 13:34:09 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								< p > The Polypaudio client libraries look for some X11 root window
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								properties for the credentials of the Polypaudio server to access. You
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								may compile Polypaudio without X11 for disabling this feature.< / p > < / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< li > < p > < b > How can I use Polypaudio as an RTP based N:N multicast
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								conferencing solution for the LAN?< / b > < / p >  < p > After loading all the
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								necessary audio drivers for recording and playback, just load the RTP
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								reciever and sender modules with default parameters:< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< pre > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								load-module module-rtp-send
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								load-module module-rtp-recv
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / pre > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< p > As long as the Polypaudio daemon runs, the microphone data will be
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								streamed to the network and the data from other hosts is played back
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								locally. Please note that this may cause quite a lot of traffic. Hence
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								consider passing < tt > rate=8000 format=ulaw channels=1< / tt >  to the
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								sender module to save bandwith while still maintaining good quality
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								for speech transmission.< / p > < / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< li > < p > < b > What is this RTP/SDP/SAP thing all about?< / b > < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< p > RTP is the < i > Realtime Transfer Protocol< / i > . It is a well-known
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								protocol for transferring audio and video data over IP. SDP is the < i > Session
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Description Protocol< / i >  and can be used to describe RTP sessions. SAP
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								is the < i > Session Announcement Protocol< / i >  and can be used to
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								announce RTP sessions that are described with SDP. (Modern SIP based VoIP phones use RTP/SDP for their sessions, too)< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< p > All three protocols are defined in IETF RFCs (RFC3550, RFC3551,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								RFC2327, RFC2327). They can be used in both multicast and unicast
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								fashions. Polypaudio exclusively uses multicast RTP/SDP/SAP containing audio data.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< p > For more information about using these technologies with Polypaudio have a look on the < a  href = "modules.html#rtp" > respective module's documentation< / a > .
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< li > < p > < b > How can I use Polypaudio to stream music from my main PC to my LAN with multiple PCs with speakers?< / b > < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< p > On the sender side create an RTP sink:< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< pre > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								load-module module-null-sink sink_name=rtp
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								load-module module-rtp-send source=rtp_monitor
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								set-default-sink rtp
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / pre > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< p > This will make < tt > rtp< / tt >  the default sink, i.e. all applications will write to this virtual RTP device by default.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< p > On the client sides just load the reciever module:< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< pre > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								load-module module-rtp-recv
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / pre > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< p > Now you can play your favourite music on the sender side and all clients will output it simultaneously.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< p > BTW: You can have more than one sender machine set up like this. The audio data will be mixed on the client side.< / p > < / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< li > < p > < b > How can I use Polypaudio to share a single LINE-IN/MIC jack on the entire LAN?< / b > < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< p > On the sender side simply load the RTP sender module:< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< pre > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								load-module module-rtp-send
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / pre > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< p > On the reciever sides, create an RTP source:< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< pre > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								load-module module-null-sink sink_name=rtp
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								load-module module-rtp-recv sink=rtp
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								set-default-source rtp_monitor
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / pre > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-26 21:31:51 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								< p > Now the audio data will be available from the default source < tt > rtp_monitor< / tt > .< / p > < / li > 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-16 13:34:09 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< li > < p > < b > When sending multicast RTP traffic it is recieved on the entire LAN but not by the sender machine itself!< / b > < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< p > Pass < tt > loop=1< / tt >  to the sender module!< / p > < / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< li > < p > < b > Can I have more than one multicast RTP group?< / b > < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< p > Yes! Simply use a new multicast group address. Use
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								the < tt > destination< / tt > /< tt > sap_address< / tt >  arguments of the RTP
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								modules to select them. Choose your group addresses from the range
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< tt > 225.0.0.x< / tt >  to make sure the audio data never leaves the LAN.< / p > < / li > 
							 
						 
					
						
							
								
									
										
										
										
											2004-11-21 22:07:47 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-26 21:31:51 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< li > < p > < b > Can I use Polypaudio to playback music on two sound cards simultaneously?< / b > < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< p > Yes! Use < a  href = "modules.html#module-combine" > < tt > module-combine< / tt > < / a >  for that.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< pre > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								load-module module-oss-mmap device="/dev/dsp" sink_name=output0
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								load-module module-oss-mmap device="/dev/dsp1" sink_name=output1
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								load-module module-combine sink_name=combined master=output0 slaves=output1
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								set-sink-default combined
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / pre > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< p > This will combine the two sinks < tt > output0< / tt >  and
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< tt > output1< / tt >  into a new sink < tt > combined< / tt > . Every sample
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								written to the latter will be forwarded to the former two. Polypaudio
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								will make sure to adjust the sample rate of the slave device in case
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								it deviates from the master device. You can have more than one slave
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								sink attached to the combined sink, and hence combine even three and
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								more sound cards.< / p >  < / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< li > < p > < b > Can I use Polypaudio to combine two stereo soundcards into a virtual surround sound card?< / b > < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< p > Yes! You can use use < a  href = "modules.html#module-combine" > < tt > module-combine< / tt > < / a >  for that.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< pre > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								load-module module-oss-mmap device="/dev/dsp" sink_name=output0 channel_map=left,right channels=2
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								load-module module-oss-mmap device="/dev/dsp1" sink_name=output1 channel_map=rear-left,rear-right channels=2
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								load-module module-combine sink_name=combined master=output0 slaves=output1 channel_map=left,right,rear-left,rear-right channels=4
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / pre > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< p > This is mostly identical to the previous example. However, this
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								time we manually specify the channel mappings for the sinks to make
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								sure everything is routed correctly.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< p > Please keep in mind that Polypaudio will constantly adjust the
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								sample rate to compensate for the deviating quartzes of the sound
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								devices. This is not perfect, however. Deviations in a range of
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								1/44100s (or 1/48000s depending on the sampling frequency) can not be
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								compensated. The human ear will decode these deviations as minor
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								movements (less than 1cm) of the positions of the sound sources
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								you hear. < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-09-07 22:40:43 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								< / ol > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< hr / > 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-13 15:10:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								< address  class = "grey" > Lennart Poettering < @PACKAGE_BUGREPORT@> , April 2006< / address > 
							 
						 
					
						
							
								
									
										
										
										
											2004-09-07 22:40:43 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "grey" > < i > $Id$< / i > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / body >  < / html >