Certa vez, encontrei uma situação em que, se houvesse uma placa de som principal com seu driver ASIO, era necessário conectar um microfone USB com seu driver ASIO à DAW. E o DAW não suporta a conexão de dois drivers ASIO ao mesmo tempo. Pesquisando me deparei com um plugin VST "VST interfaceado ASIO-Host", escrito em Delphi. Infelizmente, embora o plugin tenha sido visto por meio do jBridge, ele nunca funcionou normalmente. Portanto, eu mesmo tive que escrever um plugin semelhante. Como resultado, um plugin ASIOInput de código aberto foi escrito em 10 dias. Neste artigo, falarei sobre alguns dos recursos de seu design e arquitetura.

O próprio plugin VST é tecnicamente um .dll que exporta uma única função
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-.
.

Baixe a última versão do plugin (VST2, x86 e x64): tyts .
Fontes no github: tyts .