+ make cyclist trigger backwards compatible for now

+ add absolute time as new 5th onTrigger param
This commit is contained in:
Felix Roos 2024-03-22 01:22:35 +01:00
parent 14a5e7dcb6
commit e8f6124a07
3 changed files with 13 additions and 7 deletions

View file

@ -23,7 +23,7 @@ export class Cyclist {
this.clock = createClock(
getTime,
// called slightly before each cycle
(phase, duration) => {
(phase, duration, _, t) => {
if (this.num_ticks_since_cps_change === 0) {
this.num_cycles_at_cps_change = this.lastEnd;
this.seconds_at_cps_change = phase;
@ -45,10 +45,13 @@ export class Cyclist {
haps.forEach((hap) => {
if (hap.hasOnset()) {
const deadline =
const targetTime =
(hap.whole.begin - this.num_cycles_at_cps_change) / this.cps + this.seconds_at_cps_change + latency;
const duration = hap.duration / this.cps;
onTrigger?.(hap, '=' + deadline, duration, this.cps);
// the following line is dumb and only here for backwards compatibility
// see https://github.com/tidalcycles/strudel/pull/1004
const deadline = targetTime - phase;
onTrigger?.(hap, deadline, duration, this.cps, targetTime);
}
});
} catch (e) {

View file

@ -166,14 +166,15 @@ export function repl({
export const getTrigger =
({ getTime, defaultOutput }) =>
async (hap, deadline, duration, cps) => {
async (hap, deadline, duration, cps, t) => {
// TODO: get rid of deadline after https://github.com/tidalcycles/strudel/pull/1004
try {
if (!hap.context.onTrigger || !hap.context.dominantTrigger) {
await defaultOutput(hap, deadline, duration, cps);
await defaultOutput(hap, deadline, duration, cps, t);
}
if (hap.context.onTrigger) {
// call signature of output / onTrigger is different...
await hap.context.onTrigger(getTime() + deadline, hap, getTime(), cps);
await hap.context.onTrigger(getTime() + deadline, hap, getTime(), cps, t);
}
} catch (err) {
logger(`[cyclist] error: ${err.message}`, 'error');