void KnownPluginList::scanAndAddDragAndDroppedFiles (AudioPluginFormatManager& formatManager, const StringArray& files, OwnedArray <PluginDescription>& typesFound) { for (int i = 0; i < files.size(); ++i) { const String filenameOrID (files[i]); bool found = false; for (int j = 0; j < formatManager.getNumFormats(); ++j) { AudioPluginFormat* const format = formatManager.getFormat (j); if (format->fileMightContainThisPluginType (filenameOrID) && scanAndAddFile (filenameOrID, true, typesFound, *format)) { found = true; break; } } if (! found) { const File f (filenameOrID); if (f.isDirectory()) { StringArray s; { Array<File> subFiles; f.findChildFiles (subFiles, File::findFilesAndDirectories, false); for (int j = 0; j < subFiles.size(); ++j) s.add (subFiles.getReference(j).getFullPathName()); } scanAndAddDragAndDroppedFiles (formatManager, s, typesFound); } } } scanFinished(); }
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; }