Ability to load/parse correctly shell Plug-ins
So you can wrap a several VST plug-ins in a 'single' one. This is called a "Shell Plug-in" and some of the bigger ones (Waves, for example) use this technique. To have a complete VST solution we must be able to load Shell Plug-ins.
http://stackoverflow.com/questions/1128958/how-do-i-scan-enumerate-vst-plugin-dlls?rq=1
https://github.com/teragonaudio/MrsWatson/blob/master/source/plugin/PluginVst2xHostCallback.cpp#L148
As I have been in the need of using VST shell addons in my OBS (I am using Waves DeEsser), I have started adding patches that allow using those on Windows and Linux at least (I don't own MacOS, so I would not be able to test the implementation, but it should be easy to extend).
It will need to be further optimized.
What it does:
- On the start, it opens all VST addons in the VST folder. This will also remove all VSTs from the list, that cannot be loaded due to being the wrong architecture. If the VST is a VST shell, it enumerates all addons inside of it.
- The identifier of a VST now contains the name/path od the DLL and the assigned addon inside the shell.
- It can properly migrate from an older version, so settings don't get lost.
Limitations:
- DAWs save the list of known VSTs for a good reason: Scanning the folder is slow. It currently makes the start of OBS pretty slow, so instead, the status of known addons should be saved (would be the next I add), to speed the start up.
- There should be a progress bar whenever the VST folder is scanned.
- There needs to be some kind of button to trigger a rescan of the directory.
- The MacOS implementation is still empty.
I have seen that there is also a branch here in this repo that started working on it, but I just noticed afterwads. I don't know which implementation is better, so maybe you might just want to take a look.
https://github.com/eluxo/obs-vst/tree/eluxo/vst-scanner-rework