[wdmaudiodev] Re: VAD processing and re-routing streams

  • From: "Vincent Burel \(VB-Audio\)" <vincent.burel@xxxxxxxxxxxx>
  • To: <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Tue, 28 Apr 2020 08:01:34 +0200

Hello,

 

As simpler alternative, especially to make your POC, prototype,

you may develop a simple application connected to Voicemeeter Audio Callback

(to manage easily any Mono to 7.1 audio sources and any speakers setup). 

 

Voicemeeter Remote & Audio API:

https://forum.vb-audio.com/viewtopic.php?f=8 ;
<https://forum.vb-audio.com/viewtopic.php?f=8&t=346> &t=346

(see the 8x8 gain matrix source code example). 

 

Regards

Vincent Burel

www.voicemeeter.com

 

De : wdmaudiodev-bounce@xxxxxxxxxxxxx [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] ;
De la part de Giacomo Costantini
Envoyé : lundi 27 avril 2020 11:38
À : wdmaudiodev@xxxxxxxxxxxxx
Objet : [wdmaudiodev] VAD processing and re-routing streams

 

Hi everyone,
I would like to implement a Virtual Audio Device which processes stereo, 5.1 or 
7.1 streams, performs some spatialisation audio processing, and outputs stereo.
A requirement is that applications such as audio players (VLC, DAWs, etc) 
should see and use my device to get the processing done and the user can then 
hear the processed stereo output from one of the available stereo loudspeakers.
I’ve had a go with SYSVAD for the kernel part, so that audio applications and 
players can select my VAD.
To my knowledge, one way to perform my processing could be to create a 
dedicated AUDIO_MODULE on the kernel side.

What  is not totally clear to me is how to get the output stream from SYSVAD 
and re-route it to available stereo speakers. 
I understand I will have to write a user application for that, but I would 
really appreciate if someone could point me to what specific 
API/architecture/technology/code should I use for that.
I have found 
https://docs.microsoft.com/de-de/windows/win32/coreaudio/stream-management, but ;
am I right in thinking that using those APIs I should get the stream from the 
loopback pin and reroute it to some speaker device?

One thing I cannot but notice is how Wave NX (https://www.waves.com/nx) has 
implemented a very similar product to what I am about to develop (the only 
difference is that it is supposed to be used with headphones and not with 
loudspeakers).
On KS Studio I notice their filter (Waves Virtual Speaker) architecture is as 
follows:

Data input pin -> DAC node -> VOLUME node -> output pin

And they have an app called "WavesLoop Application" which is constantly running 
and apparently provides a list of stereo output devices and performs the 
operations on the streams in user mode.
What I do not understand is how they manage to get the kernel buffer stream 
from the LINEOUT endpoint without apparently having any loopback.

I have been looking around on the MS documentation and here on this mail list 
for weeks now and I got very confused, so if literally ANYONE can point me to 
the right direction, that would be really appreciated.

Thanks in advance,

Giacomo

(P.S: I have seen a similar unanswered request from long time ago:
https://www.freelists.org/post/wdmaudiodev/MSVAD-Another-Routing-Audio-Driver)

Other related posts: