VST3TestHost behaves strangely (regarding program changes)

I’m developing a VST3 synthesizer plugin. The plugin provides 64 programs organized in a program list. It reacts on program change commands from the host or via MIDI. Works fine (but took me hours to make it work because of the useless SDK “documentation”).

However, I noticed that the VST3TestHost behaves different from all (!) other DAWs regarding Program Change commands. In the processor component, Program Change values appear as normalized values ranging from 0.0 to 1.0. As my plugin supports 64 programs, I multiply the normalized value by 63 to get the actual program number (ranging from 0 to 63). This works fine on all hosts I tested my plugin with. In VST3TestHost though, the normalized value appears to be based on 127 steps. For example, when I send a MIDI program change to the VST3TestHost with program number 63, the resulting normalized value is about 0.5 instead of 1, which causes my plugin to select the wrong presets. As mentioned, this doesn’t happen in other hosts. It also doesn’t happen with other parameters in VST3TestHost. It appears that only program change commands are affected.

Is VST3TestHost the only host that behaves this strange, or do I have to expect similar behaviour of other DAWs I didn’t have the opportunity to test yet? If there are hosts that ignore the number of steps passed to parameters.addParameter (in the controller component) and use 0x7F or other values instead, I’d have to implement a test to calculate the appropriate factor to multiply the normalized value with. If VST3TestHost is the only host that behaves this strange, however, I don’t need this test. I would not care about VST3TestHost and simply rely on all other hosts to use the value passed to addParameter. I’d be glad if anyone could tell me how DAWs like Studio One or Reaper handle this. The hosts tested by me are Cubase, Bitwig, FL Studio, Reason, Ableton, Samplitude and Cantabile, and they all handle MIDI program change commands as expected.

This is just one issue that adds to several other ones with VST3TestHost. What annoys me is the fact that VST3TestHost still offers no way to send an instrument plugin’s output to an effect plugin’s input and the effect’s output to the main output of the host. Currently, the outputs of all plugins are routed directly to the main output, so it is not possible to feed an effects plugin with the instrument’s output instead. Furthermore, there seems to be no way to change the sample rate. It’s always set to 44.1 kHz. Not to mention a problem that I already described in this forum and that is still there: on one of my computers, VST3TestHost saves plugin parameters on exiting and restores them after restarting. On another computer, however, parameters aren’t saved. After restarting the host on this machine, the plugin’s parameters are always set to their default values. I wonder why this happens only on one machine while it works as expected on the other. I still couldn’t find out how to fix this.

But my main problem right now is the inconsistent handling of program changes. I’d be glad if someone could confirm that other hosts aren’t affected. Thanks!

Regards, Michael