fix: cyclist desync

This commit is contained in:
Felix Roos 2024-04-05 12:23:04 +02:00
parent bea25a28cb
commit df23ea6cdf
3 changed files with 9 additions and 5 deletions

View file

@ -37,12 +37,17 @@ export class Cyclist {
this.lastBegin = begin;
const end = this.num_cycles_at_cps_change + num_cycles_since_cps_change;
this.lastEnd = end;
this.lastTick = phase;
if (phase < t) {
// avoid querying haps that are in the past anyway
console.log(`skip query: too late`);
return;
}
// query the pattern for events
const haps = this.pattern.queryArc(begin, end, { _cps: this.cps });
this.lastTick = phase;
haps.forEach((hap) => {
if (hap.hasOnset()) {
const targetTime =

View file

@ -26,8 +26,7 @@ function createClock(
// callback as long as we're inside the lookahead
while (phase < lookahead) {
phase = round ? Math.round(phase * precision) / precision : phase;
phase >= t && callback(phase, duration, tick, t);
phase < t && console.log('TOO LATE', phase); // what if latency is added from outside?
callback(phase, duration, tick, t); // callback has to skip / handle phase < t!
phase += duration; // increment phase by duration
tick++;
}