Multiple VSTs?

Topics: Build, VST.NET Core, VST.NET Interop
Oct 10, 2015 at 8:02 AM
I was trying to load two different created VSTs (using Core) in my DAW, but am finding that it only loads the first one (first in alphabetical order of name).
Perhaps my setup is not correct? I have both pairs of dlls (xxx.net.dll and the appropriately renamed Interop) in the same directory, and just one copy of Jacobi.Vst.Core.dll. (in the same directory).
I also tried putting both dll pairs in separate unique directories each with a copy of Core.dll but even then, only the first in alphabetical order loads...
Any ideas?
Coordinator
Oct 10, 2015 at 8:08 AM
Edited Oct 10, 2015 at 8:08 AM
Didi you assign a unique plugin ID to each one?
        public VstPluginInfo GetPluginInfo(IVstHostCommandStub hostCmdStub)
        {
            _hostStub = hostCmdStub;
            _pluginInfo = new VstPluginInfo();

            _pluginInfo.AudioInputCount = 1;
            _pluginInfo.AudioOutputCount = 2;
            _pluginInfo.ProgramCount = 1;
            _pluginInfo.Flags = VstPluginFlags.HasEditor | VstPluginFlags.CanReplacing;
            _pluginInfo.PluginID = 1234;  <<==================
            _pluginInfo.PluginVersion = 1000;

            return _pluginInfo;
        }
Oct 10, 2015 at 1:19 PM
Oh! duh..... :-)
Also, it has to be 4 digits, I see

Incidentally, I first just changed the PluginID and compiled as usual but that seemed to crash my host DAW!
But changing the names of the VST (dlls) to something different allowed it to load without crashing.
Would it be a good guess that my DAW has somehow associated the original VST name with the original PluginID (1234) and has a fit if you change the ID?

If so, I can't use the original names with that DAW anymore, or maybe there's a way to reset that.
I'll search around....

Thx,
Coordinator
Oct 10, 2015 at 1:32 PM
Yes, most hosts cache the plugin's meta data. See if you can clear that cache. Then you should be fine.

The id is what is known as a four-character-code. You can use this:
https://vstnet.codeplex.com/SourceControl/latest#Source/Code/Jacobi.Vst.Core/FourCharacterCode.cs

Four Character Codes are used in chunked-files (wav, avi etc) - I guess Steinberg thought that was a good idea... ;-)
Oct 10, 2015 at 5:28 PM
Trying to find that cache... :)

It strikes me as strange to only have 4 digits, that's only 10,000 unique plugins the host can handle, right?
So if I happen to choose an ID already taken by a common plugin, won't that create a conflict?
Or is it that the same ID can be used if the names are different?
Oct 10, 2015 at 5:30 PM
"Or is it that the same ID can be used if the names are different?"

That can't be right either, because that was why i changed the ID in the first place - having the same ID taken by two different VSTs, only one loads... (confused)
Coordinator
Oct 10, 2015 at 5:51 PM
Suppose you have ascii with only 7 bits per character. You have 4 characters. Wouldn't that turn out to be something like 4 to the power of 127 (4^127)? That is a lot!
The only down-side I see is that in order to really get that many options - you carefully have to manage the 4 characters.
Oct 11, 2015 at 4:33 AM
Ah, of course. Because it's 4-character not 4-digit.
Somehow i was thinking it had to be digits (0-9), but if instead it can be any 7-bit ascii character, that's indeed a much larger number.
Although, isn't it the opposite? 127^4 (about 260 million)
Or 255^4 (4 billion) if 8-bit (why 7...?)
Still a large enough number that I won't worry about bumping up against someone else's ID. :-)
Still, it seems that statistically it could happen with the many, many VSTs out there. Wonder what happens when two commercial VSTs have the same ID...?
Coordinator
Oct 11, 2015 at 7:10 AM
If you play by the book you have to ask Steinberg for an ID. They manage the list. But if you pick something with weird characters, I think the chances are very slim that it will conflict with other plugins.
Oct 11, 2015 at 7:21 AM
Ah I see now, got it.^^