[wdmaudiodev] Re: Question on adding Audio Processing Object into existing device

  • From: "Vincent Burel \(VB-Audio\)" <vincent.burel@xxxxxxxxxxxx>
  • To: <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Wed, 28 Sep 2016 09:04:54 +0200

Hello,

 

For your information, you can use Voicemeeter Virtual Mixer as Audio Engine
to insert an « APO” on master BUS Section, but as a regular application.

Implementation for prototyping/validation can be done in one afternoon,
thanks to this 8x8 Matrix example:

http://vbaudio.jcedeveloppement.com/forum/viewtopic.php?f=8
<http://vbaudio.jcedeveloppement.com/forum/viewtopic.php?f=8&t=394> &t=394

 

Source code are in the Voicemeeter Remote API SDK Package:

http://vbaudio.jcedeveloppement.com/forum/viewtopic.php?f=8
<http://vbaudio.jcedeveloppement.com/forum/viewtopic.php?f=8&t=346> &t=346

 

There is many advantages:

-          You get all Virtual Mixing Engine Functions of Voicemeeter with
all possible interconnections and device management

-          You are not dependent on driver or specific hardware

-          You develop and install a regular user application. 

 

Regards

Vincent Burel

www.voicemeeter.com

 

 

De : wdmaudiodev-bounce@xxxxxxxxxxxxx
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] De la part de Koll, Rob
Envoyé : lundi 26 septembre 2016 20:52
À : wdmaudiodev@xxxxxxxxxxxxx
Objet : [wdmaudiodev] Question on adding Audio Processing Object into
existing device

 

Hello all,

 

I am attempting to add an APO into an existing driver.

 

Starting point is the SWAPAPO from the SYSVAD example from MSDN. I added
lots of debug into it, which I can see in the debugview tool. At least, when
I use the audio endpoints from the virtual device driver. As far as I can
judge, the MSDN example is working correct on my Windows 10 test machine.
Including showing the expected debug output, especially from the APO
APOProcess function.

 

I want to use the APO in the audio path of other devices, like a RME device
(just as that was available and allows feeding defined audio from another
machine and optical cables between 2 of those devices). For that device, I
do have the original installer, which is an executable. That leaves no real
option to tweak the .inf file.

 

I was able to kind of reverse engineer that installer. The .inf file is
found in the driver store, other files in other locations. From that I
created an .inf file based installer, which has proven to be able to install
the driver for the RME device.

 

Then I tweaked the .inf file, to add the registrations needed to patch the
SWAPAPO into the audio path of the audio endpoints of the RME device. This
last step is however not working. I can see in the debug view output that
the dll that belongs to the SWAPAPO is loaded and unloaded upon attempting
to play or record audio from the RME audio endpoints (using Audacity). But
there seems to be no more activity from the SWAPAPO dll.

 

I am quite confident that the .inf is processed. Upon opening the properties
of the end points from the RME device I can see the added GUI pages from the
SYSVAD example. That part seems to work correct. I also added writing some
totally not relevant registry items. These are written and suggest to me
that the relevant parts of my patched file are processed.

 

First of all, is it possible in your opinion to tweak an existing driver
package to include an additional APO as described above ?

 

If yes, how could I investigate this, find the reason for not using the
SWAPAPO ?

 

Is there any tooling to visualize the audio graph, including the use of any
APOs ?

 

One aspect that may play a role here is the fact that the SYSVAD example
produces a driver that is digitally (test) signed. That seems to work. For
my patched RME installer, there is no more a valid signature. So I use the
test machine in "not driver signature enforcing" mode. I assume that should
work. Is that correct ?

 

If this procedure of adding an APO into an existing driver is not able to
work, how would achieve this otherwise?

 

Are there procedures to add APOs into a system without having full control
on the driver sources? Can it be done without even using .inf files?

 

Kind regards

Rob Koll

 

 

  _____  

The information contained in this message may be confidential and legally
protected under applicable law. The message is intended solely for the
addressee(s). If you are not the intended recipient, you are hereby notified
that any use, forwarding, dissemination, or reproduction of this message is
strictly prohibited and may be unlawful. If you are not the intended
recipient, please contact the sender by return e-mail and destroy all copies
of the original message.

Other related posts: