Panel Name and Author Name (Ctrlr|Instigator) don't change while exported as VST2 & VST3 #394
Replies: 10 comments 175 replies
-
I exported version 5.6.23 (shown as 5.5.0) VST2 version successfully. It's a little bit better, the exported instance from VST2 has its name changed according to the global panel "name" but the "vendor name" is still "Instigator" not the custom one from the global PanelAuthorname field. I could not find where the connection between the global panel fields (name and PanelAuthorname) and the vst infos within the host is failing. |
Beta Was this translation helpful? Give feedback.
-
I narrowed down where the problem could occure. The first one "CtrlrMac.cpp", creates the VST bundle (folder) containing Info.plist which is actually an XML tree including the name of the panel and the AuthorName. The second one "CtrlrManagerInstance.cpp" is the most relevant.
the previous working version had a slightly different code for that :
So my bet is that the issue is coming from that particular file, or not far away. EDIT 2023.03.04: This is only for VST2 identification not for VST3 unfortunately. |
Beta Was this translation helpful? Give feedback.
-
I'm finding that the VST3's created from 5.6.23 won't receive any MIDI from the host. This is a major issue, especially on Windows where you can only assign each MIDI port either to the host or to Ctrlr. You need to be able to pass MIDI from the host through Ctrlr to the underlying MIDI port (for example to pass note data). Can anyone else confirm whether they see this, or if they know how to solve the problem. I'm not sure if this is the same on Macs or not. I can't get the MIDI monitor to show any MIDI input from the host even on a brand new panel. It does show MIDI In and Out to and from the physical port, but no connection to the host :( I notice that there is an option for No MIDI Input to Panel I wonder if there's some code around this that is disabling MIDI being received to the panel regardless of this option. |
Beta Was this translation helpful? Give feedback.
-
I got it working. The build from Windows with Visual Studio 19 allows MIDI input. |
Beta Was this translation helpful? Give feedback.
-
Hi everybody, I make reference to the VST3 naming issue we talked above. I investigate and found why it's not working as VST3. To recap: So, here is what I found: The VST2 exported naming works properly because the name is passed to the host with the following JUCE function AudioProcessor::getName() : ctrlr/Source/Plugin/CtrlrProcessor.cpp Line 66 in 8aa00d8
This function refers to :
The way VST2 get its name is different from VST3. It seems that CtrlrProcessor::getName() cannot pass the name to the JUCE VST3 wrapper module. I don't know why exactly, maybe because of JUCE not passing the name properly to the VST3 instance, or maybe because of the sequence of loading which is different from VST2 and VST3 in the host. The VST3 plugin strings passed to the host are exactly there: according to the VST3 sdk.
As we can see, JucePlugin_Name is the name we set in the Projucer configuration in the field "Plugin Name". Same for JucePlugin_Manufacturer etc It's all defined in the Projucer project settings. And this is what we have to dynamically override them another way. So we would need to either override JucePlugin_Name from the CtrlrProcessor.cpp with a declaration like :
Or replace JucePlugin_Name directly in juce_VST3_Wrapper.cpp L3419 with the appropriate code that gets the panel name from the Panel Properties xml tree. Or even get those info from Info.plist located in the VST3 package in /Contents/ Those are updated during the export of the panel instance.
I don't know how to write that in a C++ syntax but this would be the solution to have dynamic naming for VST3 exported instances of our panels instead of having to build VST3 CTRLR instance with the name of the panel hard coded as JucePlugin_Name. Is anyone fluent enough with C++ could help with that? That would be awesome and would allow to export 1 CTRLR build for as many as VST3 CTRLR pannels we want. Thanks Damien |
Beta Was this translation helpful? Give feedback.
-
Thx to all trying to find the workaround to this problem. |
Beta Was this translation helpful? Give feedback.
-
The way we did it was to compile a version for each plugin with the values changed in the source. We use those specific builds to export our instances. It's a pain, but so far the only way we've got it to work. |
Beta Was this translation helpful? Give feedback.
-
Here's a panel that produces a JucePluginDefines.h file that you can replace with the one in the JuceLibraryCode folder. generateJucePluginDefines 1.0.zip What does it do? How does it work? What you shouldn't do? I know it isn't the way Damien intended. But for now, it's a way to easily produce a different PluginID for VST3s. You can make several JucePluginDefines.h files and just replace them without the need to compile the Ctrlr_SharedCode because you changed something in the Projucer settings (Needed to generate the hex code that the PluginID is made of.). It's more time-saving. *edit, new file. Thnx Dnaldoog for checking the code. |
Beta Was this translation helpful? Give feedback.
-
@damiensellier Your version 5.6.28 does compile OK on my Intel and Silicon Mac. So thumbs up for your excellent work! Should we in one way another make the app's available? Jason (Godlike Productions) is willing to host app's on his site |
Beta Was this translation helpful? Give feedback.
-
This was not the solution. I have no clue what I am doing wrong. To prevent from the "final" error I did exactly what Bylevel said. The only difference is the file "remove_finals_from_JUCE.sh" which was only existing in the "Sricpt" folder of the used build (Damien`s 5.6.29) with Juce 6.08. Compiling under windows is apparently even more difficult than on my MAC :-) BTW: If you´re using "CYGWIN" it is essential to leave a space between the prompt and the link you have dragged into the window. Otherwise the error message "no such file or directory" will appear. |
Beta Was this translation helpful? Give feedback.
-
Hi everybody,
I tried to export vst3 instances with the latest versions of ctrlr (5.6 and above).
Ctrlr.vst3 is working fine, that's alright.
But if you export an instance from the vst3 within the host to get a vst3 version of your panel, the exported vst3 is not ok.
This is what I understood :
the exported vst3 actually works as intended.
BUT the plugin name, whatever you called it (Global "name" and "PanelAuthorname") stays "Ctrlr" and "Instigator".
This is the reason why we cannot see our exported vst3 instances since they have the same global name and publisher name than the original ctrlr plugin (already available in your plugin directory).
The host sees that as a duplicate and discards it. If the ctrlr.vst3 is removed from the plugin directory, you'll see your exported instance with the wrong name.
So it's not about the plugin itself but how it's identified during the export. It should be listed properly by the given name and your author name from the global settings.
I don't think it would be too hard to find the reason from the binaries but I'm a newbie in app building so it's definitely not something I feel good enough to fiddle with.
Any help would be appreciated ;)
Thanks in advance!
Damien
Beta Was this translation helpful? Give feedback.
All reactions