如何在 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);
}
我已经阅读了 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);
}