When hosted in VST3PluginTestHost: Missing ProcessContext state values?

Hello! I’m in the process of porting a music app over to VST, mostly using the VST3PluginTestHost to test and validate it, as I presume this represents best practices for a host.

I’m seeing some odd behaviour, and wondering if it’s me. In my process callback, when VST3PluginTestHost has its timeline running, and a tempo set, the ProcessContext is the following:

(Steinberg::Vst::ProcessContext) $1 = {
  state = 0
  sampleRate = 48000
  projectTimeSamples = 353536
  systemTime = 0
  continousTimeSamples = 0
  projectTimeMusic = 0
  barPositionMusic = 0
  cycleStartMusic = 0
  cycleEndMusic = 0
  tempo = 120
  timeSigNumerator = 0
  timeSigDenominator = 0
  chord = (keyNote = '\0', rootNote = '\0', chordMask = 0)
  smpteOffsetSubframes = 0
  frameRate = (framesPerSecond = 0, flags = 0)
  samplesToNextClock = 0

In particular, “state” seems to be always zero. As I understood the header documentation for that structure, that member should contain a bit mask of flags indicating the contents of the rest of the structure – in this case, I’d expect it would at least be a combination of kPlaying | kTempoValid.

Further, when updating the tempo using VST3PluginTestHost’s UI to a value other 120, the change isn’t reflected within this structure.

I’m also seeing no value for projectTimeMusic, which I would have expected to be filled.

Am I missing something here?


Hi, please read the documentation about Process Context Requirements. If you directly use the VST SDK Helper class AudioEffect it has already a member which you must fill with the requirements.
I hope that helps.

Aahh! That’s what I was missing – thanks so much, @Arne_Scheffler