Curiosity is bliss    Archive    Feed    About    Search

Julien Couvreur's programming blog and more

Networked audio driver for windows

 

Linux and MacOS X already have network audio support thru esound, polypaudio or nas. There are also ports of the esound or nas server to windows, using cygwin or java.
But one piece is still missing to complete the picture: a windows device driver that can channel the sound to a remote esound server.

Could such a driver could be used for general-purpose sound channeling?
For example, it might not work nicely for the sound in movies, as the synchronization between the audio and the video is critical. Or is there a way to delay the image, to compensate for the lag on the audio stream?

Links:
Esound server on windows (using cygwin).
Network Audio Driver for Darwin (Mac OS X)
Esound server implementation in java.
Winamp 3 esound plugin.
Microsoft page on audio device drivers.

______________________________________

Man, are the spiders fast! Found this entry on Google today; but I wished you already had a solution here and not only the idea ;)

I believe it should be easy to write such a Win driver/emu that connects to a remote sound server; though I don't have any interest in doing it. Would like to use this to get one server to play sounds for a dozen other machines in the same room that each lack a soundcard.

Posted by: milky (November 16, 2004 06:20 PM) ______________________________________

It is a great idea and one that I have also thought about on and off for a while. I wrote an RPC driven sound distribution system for Unix over ten years ago, great for spaming sound effect sound bites around the office at inopportune moments. The same for Windows should be easy right? And just make it appear as a sound driver so that you can then send audio from your laptop to your main sound system, or vis-versa. Even better would be if Windows let you just network share your audio devices in the normal way.

The problem is that all this stuff would make obsolete at least half of those multimedia streaming boxes people fork out tons of cash for. I think Microsoft has an interest in continuing to make audio streaming something special and proprietary instead of easy and ordinary (and most importantly FREE). They can do it with Windows Desktop connection, why not make it a standalone feature?

Posted by: Blog Gently (November 25, 2004 10:54 PM) ______________________________________

One thing I've done on Windows, and this is far from optimal, is use the Virtual Audio Cable driver. It lets you reroute sound to another program. I reroute it to Winamp running a Shoutcast source, and then on the UNIX system have an mp3 player reading that stream

There are definite buffering issues. I haven't tweaked any of the settings, I don't know if it's possible to decrease the buffer size, to get it more in sync.

Posted by: Joshua Gerrish (December 3, 2004 07:24 PM) ______________________________________

One thing I've done on Windows, and this is far from optimal, is use the Virtual Audio Cable driver. It lets you reroute sound to another program. I reroute it to Winamp running a Shoutcast source, and then on the UNIX system have an mp3 player reading that stream

There are definite buffering issues. I haven't tweaked any of the settings, I don't know if it's possible to decrease the buffer size, to get it more in sync.

Posted by: Joshua Gerrish (December 3, 2004 07:25 PM) ______________________________________

Any new finds on this? I've been trying to figure out if there's already software out there to do this too.

Posted by: Walker (March 18, 2005 10:08 AM) ______________________________________

Check http://www.clingman.org/winesd/

Posted by: Tomas (April 9, 2005 03:42 PM) ______________________________________

Thanks for the pointer Tomas, I'll check it out.

Posted by: Julien Couvreur (April 15, 2005 03:47 PM) ______________________________________

Has anyone made any progress with this?

Posted by: Dan (May 9, 2005 10:13 PM) ______________________________________

http://www.liquid-reality.de/main/projects/esound + http://www.clingman.org/winesd/ == networked sound.

Have not tried this yet, but I don't see why it wouldn't work. Will report if it works once I reboot.

Posted by: Keith Rothman (August 2, 2005 05:23 PM) ______________________________________

Thanks Keith. I look forward from hearing back from your experiment.

Posted by: Julien (August 3, 2005 11:47 AM) ______________________________________

Well it works very well for anything that doesn't need timing. There is a 3-5 second delay before playing. Also the beeping coming from the driver during a failure is extremely annoying. Add to that the setup is a pain in the ass, even if it is well documented.

I wanted to pick up the old code and fix some of the problems, but the code is for a very old DDK, and I am not good enough with the DDK to even build it again. Bleh.

Posted by: Keith Rothman (August 3, 2005 01:52 PM) ______________________________________

I second that, works very well even over a 802.11b connection! Exactly what I've been looking for even though its a little clunky to setup.

Thanks to everyone above who found what I couldn't!

Posted by: Ian Gilmour (October 25, 2005 03:00 AM) ______________________________________

found ur page while trying to solve the same problem....2 pcs...1set of speakers...surely i can send audio over ethernet...and so the search began. so far the only thing ive managed to get working is called AudioTX Communicator can find it here http://www.audiotx.com/main.html 30day demo with 20min timeout. the app is extremely ugly..but it works with almost 0 delay. audio/video sync can usually be sorted using a decent player like mpc[media player classic] if need be. hope this helps.

Posted by: cray- (January 12, 2006 08:08 AM) ______________________________________

I have decided to try and take the task upon myself. I plan to write a virtual audio/server app and a client app. The server will probably only run on Win 2000, XP, and Server 2003 but I should be able to make the client run on older Win so you can use an old tower as a proxy to a stereo system. That's what I'm working on setting up. I'll proly do an installer also for easy setup. could be several weeks though.

Posted by: coder0xff (February 24, 2006 04:02 PM) ______________________________________

Sounds awesome.
Let me know when you make some progress.

Posted by: Julien Couvreur (February 24, 2006 04:40 PM) ______________________________________

I dont have access to an NT DDK or I'd give a go @ working on the WinESD driver :(

The ESD driver on NT is a Good Thing, anyone who *can* work on this, here's a wishlist: ESD server incorporated as a Line In driver, get rid of the blasted "hello" demo boxes left right & centre, & the beeping.
Nonetheless, on my Win2K box, it works great to the local ESD server with a minute delay, although chews up a bit of cpu (it's only a 350). Will be interesting to see if I can get the ESD client stuff to compile under Interix now...

Posted by: Nathanael Bettridge (March 8, 2006 06:01 AM) ______________________________________

arf, so there aren't any free (opensource) solutions yet. Just had a "lighting strike"-type idea of making an audio server attached to my home gigalan that could mix audio from different machines. But if there isn't even a stable&reliable windows driver yet it's gonna take a while till we get end-user ready 5.1 streaming without delays =) oh well, curiosity is bliss.

Posted by: deice (March 27, 2006 01:15 PM) ______________________________________

I really have a hard time trying to install the WinESD driver on my XPSP2 box but since it is meant for NT (dated 2000) that does not come as a surprise. I gave up eventually and looked into other solutions.

I have just successfully installed the WinAmp2 Esound output plugin by Lorenzo Keller and depsite it being pretty buggy it kind of 'just works' for me.

I have a zero-decibel homeserver (http://www.lex.com.tw:8080/product/LIGHT.htm) connected to my amp and now am happily playing music from my laptop. Only downside (yes first bug here) is that the volume cannot be controlled from some reason...

Posted by: Dick Visser (May 2, 2006 01:08 PM) ______________________________________

this is a stupid question, but I cannot follow the steps on the windows NT enlightened sound site for XP. he says:
# After unzipping the zip file, go to the "Multimedia" control panel.
# Select the "devices" tab.
# Click on "Add"
# choose "Unlisted or Updated driver"

I do not see the "Multimedia" control panel and all subsequent tabs/dialogs. any ideas?

Posted by: red (August 30, 2006 05:03 PM) ______________________________________

Hallo everyone!!

This is for google: send Stream sound audio from windows to linux win esd over net via network lan

I succeed in getting WinESD driver work on my XPSP2 box.
Let me tell you how to do it.

First of all, I apologise for my English. It is not my native language so it could be some mistakes. Furthermore, I use russian version of WINXPSP2 and I do not have English one so window names, button names and etc. in your windows version may be name in different way than I mentioned. You should keep this in mind and choose similar things.

So I made a sound stream from my windows box to linux box. They are connected to the one switch and located in one room. Linux box has good speakers connected, that is why I stream windows sound to it.

It is 1-1,5 second gap (delay) between windows sound feed program and sound start playing at linux box. I dont like it. So if you known how to get rid of it please let us know. I think esd daemon buffer(cache) at linux side should be changed to minimum but anyway I dont know how.

Edcast+ogg.codec+Icecast+mplayer(30k buffer) chain gave me 2-2,5 sec delay.


Steps are:

1.Disable sound hardware you have.
2.Make registry key.(HKEY_LOCAL_MACHINE\SOFTWARE\Enlightened\WinESD\ESPEAKER=your.host.ip.addr:5001)
3.Run a esd daemon at linux side.
4.Setup WinEsd nt driver.

OK and now in detail:

1.Disable sound hardware you have.
open My computer>
Properties>
Device manager(should be in some tab)>
Sound and ... devices>
right click on each and click disable option(except gameport)
If it ask for reboot do it.

2.Make registry key.
run regedit.(push "START">"run">type in it "regedit" or run regedit in other way.)
make this key - HKEY_LOCAL_MACHINE\SOFTWARE\Enlightened\WinESD\ESPEAKER (REG_SZ)
set it to "your.host.ip.addr:5001" (my esd daemon works good at 5001 port only)
set permissions read and write to "Enlightened" key and "WinESD" key (right click on each.)

3. Run a esd daemon at linux side.
Check you disro for esd binaries. My slax already had them. If yours doesnt get esd in your favourite way.
run in console
# esd -port 5001 -public -promiscuous -tcp
and esd server begins to wait for clients.

4.Setup WinEsd nt driver
Thanks to Bryan Clingman for Windows NT Enlightenment Sound Driver he wrote.
Download http://www.clingman.org/winesd/WinESD-0.03.zip (I use this version)
Unzip it at folder you like
Open Explorer>
Control panel>
Add new devices (or similar)>
Device is connected>
Next>
(go to buttom of the list and choose "add new device"
I have no icon near it)>
Set path manualy(or similar)>
Next>
(choose Sound and ... devices)>
Next>
(push "set up from disc(CD)" button)>
(Push browse button)>
(Select path to unzipped WinEsd folder and select OEMSETUP.INF)>
Open>
OK>
(select "Enlightment Driver")>
Next>
Next>
(if it ask for esddrv.dll browse to unzipped WinEsd folder and choose it)>
(Hello mini window will appear with only OK button on it. click it.)
(Push Finish button at Device setup manager)>
(If windows asks for reboot - do it.)

After reboot go to Control panel>Sound ... devices>Audio tab. There should be WinESD selected.

If there is no beep from your speaker everything is ok.

If there are some beeps - check registry key (may be restrict permissions) and your lan(ip addr or windows firewall is enabled).

That is all. Everything should work fine.

P.S. winamp works ugly with Nullsoft Direct Sound Output driver (v2.49(d) [out_ds.dll]) so I changed it to Nullsoft Crossfading Output driver (v0.95 (x86) (experimental) [out_xf.dll]). It works perfect.


Posted by: Pasha (June 10, 2009 03:18 PM)
comments powered by Disqus