Change clock starting point and add oncount method as alternative to onbeat

This commit is contained in:
2023-08-31 18:03:07 +03:00
parent 3c335a50a9
commit 86739faa77
6 changed files with 67 additions and 38 deletions

View File

@ -15,9 +15,11 @@ export class TransportNode extends AudioWorkletNode {
handleMessage = (message) => {
if (message.data && message.data.type === "bang") {
this.logicalTime = message.data.logicalTime;
this.app.clock.tick++
const futureTimeStamp = this.convertTicksToTimeposition(this.app.clock.tick);
// console.log("BANG", this.logicalTime, futureTimeStamp);
//console.log("BANG", this.logicalTime, futureTimeStamp);
this.app.clock.time_position = futureTimeStamp;
tryEvaluate(this.app, this.app.global_buffer);
@ -27,11 +29,10 @@ export class TransportNode extends AudioWorkletNode {
convertTicksToTimeposition(ticks) {
const beatsPerBar = this.app.clock.time_signature[0];
const ppqnPosition = (ticks % this.app.clock.ppqn)+1;
const ppqnPosition = (ticks % this.app.clock.ppqn);
const beatNumber = Math.floor(ticks / this.app.clock.ppqn);
const barNumber = Math.floor(beatNumber / beatsPerBar)+1;
const beatWithinBar = Math.floor(beatNumber % beatsPerBar)+1;
this.app.clock.tick++
const barNumber = Math.floor(beatNumber / beatsPerBar);
const beatWithinBar = Math.floor(beatNumber % beatsPerBar);
return {bar: barNumber, beat: beatWithinBar, pulse: ppqnPosition};
}