Spaces:
Sleeping
Sleeping
File size: 816 Bytes
f23825d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
import { calculateMBT, Measure } from "./Measure"
import { getMeasureAt } from "./MeasureList"
export const getMBTString = (
measures: Measure[],
tick: number,
ticksPerBeat: number,
formatter = defaultMBTFormatter,
): string => formatter(getMBT(measures, tick, ticksPerBeat))
interface Beat {
measure: number
beat: number
tick: number
}
const getMBT = (
measures: Measure[],
tick: number,
ticksPerBeat: number,
): Beat => {
return calculateMBT(getMeasureAt(tick, measures), tick, ticksPerBeat)
}
const pad = (v: number, digit: number) => {
const str = v.toString(10)
return ("0".repeat(digit) + str).slice(-Math.max(digit, str.length))
}
function defaultMBTFormatter(mbt: Beat): string {
return `${pad(mbt.measure + 1, 4)}:${pad(mbt.beat + 1, 2)}:${pad(
mbt.tick,
3,
)}`
}
|