1
votes

I have developed a pretty complex audio software for my client with plugins for Winamp, Windows Media player and VST. Now the client is interested in some method to avoid maintaining the multitude of plugins, we have no way to support all the media players out there.

The client does not care for Unix/Mac yet, so I can look only at Windows XP and Vista/7/ Basically, what we need is a way to always reliably intercept as much audio stream protocols as possible (well, except maybe ASIO, that's another story, I guess), then pass this audio through our custom effects engine and then route back to the default audio device, whatever it is.

Now I am thinking, what options do I have (theoretically).

I could use hooks. I need to hook globally older vaweOut and also DirectSound.

But will this still work on Vista/7?

I could use a virtual driver, like the author of the Virtual Audio Cable did: http://software.muzychenko.net/eng/vac.htm

Seems a pretty daunting task. Anyway, the client will contact the author of VAC to see if he agrees to sell his source code for a reasonable price.

This driver could install itself as a default audio output device, intercept the audio stream from Windows, and pass it back to default device. Hmm, but what about various DirectSound audio buffers, do I have to mix them myself or is there any way I could tell Windows mixer to mix all for me and pass a single mixed audio stream? It seems, this custom driver will of course kill all the hardware audio acceleration, but we can live with that, if we warn our customers about this issue.

As I understand, the most current Windows driver standard is WDF.

But maybe it does not work for audio on Windows Vista/7? I know, Vista/7 has a different audio stack from XP.

If I can do it using WDF, what driver should I write - kernel mode or user mode?

Maybe I am missing more elegant and simple options to intercept, process and route audio on Windows?

1

1 Answers

1
votes

Try Virtual Audio Streaming SDK. Also virutal sound card and let you read/process audio data in realtime.

http://www.virtualaudiostreaming.net/sdk-license.html