I once encountered a situation when, if there was a main sound card with its ASIO driver, it was necessary to connect a USB microphone with its ASIO driver to the DAW. And DAW does not support connecting two ASIO drivers at the same time. Searching I came across a VST-plugin "VST interfaced ASIO-Host", written in Delphi. Unfortunately, although the plugin was seen through jBridge, it never worked normally. Thus, I had to write a similar plugin myself. As a result, an open source ASIOInput plugin was written in 10 days. In this article, I will talk about some of the features of its design and architecture.
The VST plugin itself is technically a .dll that exports a single function
SVSTPlugin* VSTPluginMain(void*)
DAW , . , .
InputCount OutputCount - . - , . 0 2 . 1 , .
PluginProperties - . 3 : , UpdateBufferData() , - DAW , .
RequestFromHost() - DAW, . : - , , , , : , , - .
UpdateBufferData() - DAW , . , , , DAW .
ASIO Windows COM-. GUID-. ASIO- ( GUID-) HKEYLOCALMACHINE\SOFTWARE\ASIO. ASIO-, COM- GUID- CoCreateInstance(), ASIO-, , ASIO-. , ASIO- .
, : DAW , DAW - VSTPluginCallUpdateBufferData(), ASIO- , - ASIOHostCallUpdateBufferDataEx(). . , DAW ASIO- , . ASIO- DAW, .
. , DAW- , ASIO-, DAW , DAW- . Windows ( CreateEvent(), SetEvent() WaitForSingleObject()).
DAW ASIO- , . ASIO- , DAW- . , OC Windows. DAW ASIO-, 2, 3 4.
.
COM- ASIO- 0 . , . , , 1. .
DAW . , , , , DAW Cubase 9.5, DAW - .. ", " ..
ASIO- , ASIO- , , . 0. .
- COM- ASIO- ASIO-.
.
Download the latest version of the plugin (VST2, x86 and x64): tyts .
Sources on github: tyts .