Example #1
0
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;
}
Example #2
0
// 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;
}