I have program presets hard-coded into my plugin (legacy VST2 style) and I’m curious why they show up in Cubase but not Wavelab? The only thing that shows up in the presets menu in Wavelab is the “Default” preset.
If there’s a problem in my code why does it work right in Cubase and other VST3 hosts but NOT in Wavelab?
It seems that some host do not support the ProgramChange Parameter API specified in the VST3 protocol (e.g. Studio One, Sonar and probably Wavelab). You can also expose your plugin’s presets to the host by placing your preset chunks in the vstpreset format in one of the locations specified in the SDK documentation: Format / Locations → Preset Locations). You can also find a brief documentation of the vstpreset format on that page.
You may want to take a look at the Steinberg::Vst::PresetFile class which is capable of generating a vstpreset chunk from a given IBStream as returned by IComponent::getState() / IEditController::getState(). Using that class you can easily create a post-build tool or embed a preset extractor in your plugin in order to create the required preset files.
definitely a WaveLab “bug”. IUnitInfo in combination with IProgramList is not implemented. Unfortunately I cannot tell you when I can do it. But I believe it should be in the next major update of WaveLab.