Ha! I am one step ahead of you this time! I noticed the problem yesterday.
It's a booboo in my VST code, the wrong event recording timestamp was used:
Code: Select all
// REMOVE Tim. buf. Changed. Oops, using wrong base time!
// event.setTime(MusEGlobal::audio->pos().frame() + ev->deltaFrames);
const unsigned int abs_ft = MusEGlobal::audio->curSyncFrame() + ev->deltaFrames;
Also regarding recording of midi out from synths: I noticed yet another problem yesterday.
Allow me to try and explain with a bit of technical talk:
Let us assume that your audio driver (Jack say) is using a large buffer size, say 2048 samples. Much latency there.
When using an arpeggiator or sequencer synthesizer, the notes and the sound that comes out of it are late by 2048 samples.
When compared with the metronome for example, in play mode, the sounds and notes do not align with the metronome.
So when I wrote all of the latency correction/compensation code (enabled in Settings), I used a trick to get the
output of the synth to align correctly so that it is perfectly in time with the metronome so that you can play along.
The trick I used was to artificially shift the transport time that is sent to the arpeggiator/sequencer synth, so that
the resulting notes and sound output from the synth is perfectly aligned with the metronome.
It is unknown from the synth whether this trick should be applied in all cases, there is no way to tell if it should be applied.
Therefore there is a user setting in the 'Quirks' section of our plugin generic UI, called 'transport affects latency'
that can be enabled if you know that the synth is indeed an arpeggiator or sequencer.
So far so good. It sounds perfect to play along with.
Unfortunately if you then record these notes or sounds, they are misaligned in the recording because the recording processor
is expecting them to be late and tries to compensate - but they have already been compensated,
resulting in too much shift in the recording times.
So an oversight there. Ugh... I'm trying to correct it right now...
Cheers.