From: wingka on
Hi

I want to have a virtual audio driver that sits behind a 3rd party
application to 'intercept' the sound input/output.

E.g. when that application plays sound, instead of going to the
speaker, the audio stream would be captured and processed elsewhere. I
may also pump in an audio stream to that application like it's being
recorded on a microphone.

Is such setup possible with a virtual audio driver? I'm currently
looking at the MSVAD sample from DDK. It seems like the kind of thing
I'm looking for, but I have a few problems:

1. After installing 'MSVAD (Simple)', when I play sound, I got some
small wave files with no audio contents. Why is that so? I made 'MSVAD
(Simple)' the default playback driver and play music with iTunes.

2. Is IDmaChannel::CopyTo and IDmaChannel::CopyFrom the two functions I
have to work with if I want to capture sound from an application?

3. Is developing an virtual audio driver best way for this kind of
problem? I'm very new to this kind of things and I don't know if
there's another easier way to do it!

Thanks all !!

wingka

From: pro-grammer on

wingka wrote:
> Hi
>
> I want to have a virtual audio driver that sits behind a 3rd party
> application to 'intercept' the sound input/output.
>
> E.g. when that application plays sound, instead of going to the
> speaker, the audio stream would be captured and processed elsewhere. I
> may also pump in an audio stream to that application like it's being
> recorded on a microphone.
>
> Is such setup possible with a virtual audio driver? I'm currently
> looking at the MSVAD sample from DDK. It seems like the kind of thing
> I'm looking for, but I have a few problems:
>
> 1. After installing 'MSVAD (Simple)', when I play sound, I got some
> small wave files with no audio contents. Why is that so? I made 'MSVAD
> (Simple)' the default playback driver and play music with iTunes.

change the error log level to blab in the sources.inc file to get more
info on whats goin on. I hope ur using debugview.

> 2. Is IDmaChannel::CopyTo and IDmaChannel::CopyFrom the two functions I
> have to work with if I want to capture sound from an application?

yes

> 3. Is developing an virtual audio driver best way for this kind of
> problem? I'm very new to this kind of things and I don't know if
> there's another easier way to do it!

dont expect msvad to function as a full fledged audio driver. Use it
for the sole purpose of storing/processing audio that is not destined
to be actuall played. when you want to play the data, open an already
existing audio driver as the waveout destination(this can be done from
user mode).

if u want the data u r processing to be played too, what u r looking
for is a filter driver, somthing that sits on top of an already
existing function driver( msvad is installed as a function driver). A
filter driver introduces a whole new set of challenges and hurdles. If
u do succeed in making one, do the world a favour and tell us how u did
it.
> Thanks all !!
>
> wingka