static AudioPluginInstance *get_audio_instance(const TypeData *type_data, float sample_rate, int block_size){ static bool inited=false; static AudioPluginFormatManager formatManager; if (inited==false){ formatManager.addDefaultFormats(); inited=true; } //int uid = VST_get_uid(type_data->library_file_full_path); //printf("uid: %d\n",uid); //getchar(); //((PluginDescription*)description)->uid = uid; //if (uid==-1) // return NULL; String errorMessage; PluginDescription description; description.fileOrIdentifier = String(type_data->file_or_identifier); description.uid = type_data->uid; AudioPluginInstance *instance = formatManager.createPluginInstance(description,sample_rate,block_size,errorMessage); if (instance==NULL){ GFX_Message(NULL, "Unable to open VST plugin %s: %s\n",description.fileOrIdentifier.toRawUTF8(), errorMessage.toRawUTF8()); return NULL; } instance->setPlayHead(&myAudioPlayHead); instance->prepareToPlay(sample_rate, block_size); return instance; }
// The caller is responsible for deleting the object that is returned AudioPluginInstance *createSynthInstance() { AudioPluginFormatManager pluginManager; pluginManager.addDefaultFormats(); PluginDescription desc; desc.fileOrIdentifier = resolveRelativePath(PLUGIN_REL_PATH); // DBG << desc.fileOrIdentifier << endl; desc.uid = 0; String errorMessage; AudioPluginInstance *instance = pluginManager.createPluginInstance(desc, errorMessage); if (!instance) { DBG << "Error creating plugin instance: " << errorMessage << endl; exit(1); } // Force initialization on the main thread. This preparation will redone with proper values later. instance->prepareToPlay(44100, 512); return instance; }