Spaces:
Sleeping
Sleeping
| export interface Measure { | |
| startTick: number | |
| measure: number | |
| numerator: number | |
| denominator: number | |
| } | |
| export const calculateMBT = ( | |
| measure: Measure, | |
| tick: number, | |
| ticksPerBeatBase: number, | |
| ) => { | |
| const ticksPerBeat = (ticksPerBeatBase * 4) / measure.denominator | |
| const ticksPerMeasure = ticksPerBeat * measure.numerator | |
| let aTick = tick - measure.startTick | |
| const deltaMeasure = Math.floor(aTick / ticksPerMeasure) | |
| aTick -= deltaMeasure * ticksPerMeasure | |
| const beat = Math.floor(aTick / ticksPerBeat) | |
| aTick -= beat * ticksPerBeat | |
| return { | |
| measure: measure.measure + deltaMeasure, | |
| beat: beat, | |
| tick: aTick, | |
| } | |
| } | |