如何在 Kontakt VSTi 中加载 get/set 乐器?

How to get/set instrument loaded in Kontakt VSTi?

我已经阅读了 VST 2.4 SDK 文档和包含的内容,但仍然没有找到任何方法来执行此操作:

当您在 VST 主机应用程序(例如 Cubase)中将 Native Instruments Kontakt 实例化为 VSTi 时,主机应用程序能够找出 Kontakt VST window 中加载的乐器,并且能够在加载 Cubase 项目时恢复该乐器(告诉 Kontakt 自行加载它)。 Cubase 甚至能够在单个 Kontakt 实例中恢复多个乐器。

他们用什么API commands/events?还是 Steinberg 和 NI 之间有任何约定的专有方式?

顺便说一句,Kontakt 是 VST 2.4 版(不是 3.x)。 谢谢

好的,我已经成功编写了完全符合我需要的代码:

获取内部插件状态:

if (pEffect->flags & effFlagsProgramChunks)
{
    void *stateBuf = NULL;

    stateBufSize = (int) pEffect->dispatcher (pEffect, effGetChunk, 0, NULL, &stateBuf, 0);

    // ...
}

至set/restore内部插件状态:

if (pEffect->flags & effFlagsProgramChunks)
{
    pEffect->dispatcher (pEffect, effSetChunk, 0, (VstIntPtr) stateBufSize, stateBuf, 0);
}