如何扫描/枚举vst插件dll?

Roa*_*ald 8 audio dll vst

我正在尝试构建一个托管vst效果的小程序,我想扫描一个文件夹中的插件dll.
我知道如何找到所有的dll,但现在我有以下问题:

  • 确定给定dll是否为vst插件的最佳方法是什么?
    我试着看看ddl是否导出了正确的函数,这适用于使用更新版本的vst sdk制作的插件,因为它导出了一个名为"VstPluginMain"的方法,但旧版本导出了一个相当通用的"main"函数.
  • 如何确定插件是效果还是乐器?
  • 我如何扫描vst shell插件?
    Shell插件基本上是以某种方式包含多种效果的dll.一个例子是Waves Audio制作的插件http://www.waves.com/

ps:如果有一个库可以为我做所有这些,请告诉我.

Dav*_*ble 8

如何确定VST插件?

一旦找到main/VSTPluginMain ......就叫它!如果返回的是NULL,则它不是VST.如果返回的是指向字节"VstP"的指针(参见VstInt32 magic; ///< must be #kEffectMagic ('VstP')aeffect.h),那么你有一个VST.

VSTPluginMain返回指向AEffect结构的指针.您需要查看此结构.

效果还是仪器? AEffect::flags | (effFlagsIsSynth = 1 << 8)

Shell VST更复杂:

类别将是kPlugCategShell

支持"shellCategory"canDo.

使用effShellGetNextPlugin枚举.

例如,使用您想要的ID响应回调中的audioMasterCurrentId.