And bump once more...
I've done a bit more digging. It looks as though it might be a fairly simple problem: the Steinberg SDK docs give this:
tresult PLUGIN_API getSignature (long index, long* numerator
, long* denominator
and in Kontakt3, I've managed to inspect what's being sent. It looks as though numerator
is being sent correctly (rows/beat, rpb
), but denominator
isn't - it's being sent as rows/measure (rpm
). I think that the correct way to do this would be to do the following:
1. Require that rpm
is an integral multiple of rpb
. This is, after all, only logical. This would have to be a flag, though, 'cos I'm sure there are people out there who haven't being following this convention.
2. Set denominator
), and keep numerator
Also, comments like //Screw it! Let's just return the tempo at this point in time (might be a bit wrong).
in the VST source code don't inspire confidence...
To save the devs some effort, I think that the problem is in
long CVstPluginManager::VstCallback(AEffect *effect, long opcode, long index, long value, void *ptr, float /*opt*/)
timeInfo.timeSigNumerator = pSndFile->m_nRowsPerBeat;
timeInfo.timeSigDenominator = pSndFile->m_nRowsPerMeasure;