Plugin name and other info not-static


#1

Would it be possible to make the stuff that you define in the Introjucer and later gets #define to some nice constants and is used in the wrapper, there is no way of intercepting that without re-compiling the plugin. My plugin is a bit more dynamic and as i wrote in some previous posts it will morph into other plugins based on external data (resources) thus i’d need it to be viewed differently by the host in every copy if itself (yes there will be copies). Would it be possible to somehow intercept them maybe by some get/set methods in the AudioProcessor. I mean this part, to be a bit more dynamic and in AU too don’t know about RTAS.

//==============================================================================
    bool getEffectName (char* name)
    {
        String (JucePlugin_Name).copyToUTF8 (name, 64);
        return true;
    }

    bool getVendorString (char* text)
    {
        String (JucePlugin_Manufacturer).copyToUTF8 (text, 64);
        return true;
    }

    bool getProductString (char* text)  { return getEffectName (text); }
    VstInt32 getVendorVersion()         { return JucePlugin_VersionCode; }
    VstPlugCategory getPlugCategory()   { return JucePlugin_VSTCategory; }

#2

I don’t really understand what you mean…? The reason that a lot of those things are done with macros rather than c++ constants is because they also get included in things like the win32 resource compiler, and can’t be changed dynamically.


#3

The idea is to change the name, of the plugin based on resources in the binary.

I export a copy of my plugin with a resource that changes what hardware the plugin controls, so you can have multiple copies of my plugin each with a different filename and resource inside it, the host sees those files as different plugins.

SynthEdit does the same thing, you create a plugin in a WYSIWYG editor and export it as a DLL, it’s the same codebase but a different document ebedded in the DLL.

I’d like to do the same on the MAC and Linux i talk about this here http://www.rawmaterialsoftware.com/viewtopic.php?f=2&t=9293 I made it on windows and the MAC i just need to add some Linux code.


#4

I think our projects share a lot of similar ideas. When users create plugins with my front-end the front-end will

  1. copy the plugin dll,
  2. open the copy into memory
  3. search for a generic plugin name that is set in JucePluginCharacteristics.h
  4. modify the binary data by replacing all instances of plugin name with new user-defined name.

It’s kinda hackish but it work Ok. If you, or anyone has a better idea I’m all ears.


#5

Yeah the idea is the same i just modify the DLL in a different way.


#6

I managed to get this working in VST, since the VST wrapper holds a pointer to the AudioProcessor i was able to get the name reported by that object

 bool getEffectName (char* name)
    {
		/** ATOM START **/
		/** REMOVED: ; **/
		filter->getName().isEmpty() ? String (JucePlugin_Name).copyToUTF8 (name, 64) : filter->getName().copyToUTF8 (name, 64);
		/** ATOM END **/
        return true;
    }

I was looking through the AU code but i couldn’t make out where is a relevant section and how to access my objects in obj-c could someone hint the relevant parts to look at to achieve a similar result ?