import { TheoryBeats } from "../beats/TheoryBeats"; import { TheoryParse } from "../parse/TheoryParse"; import { TheoryCheck } from "../../util/TheoryCheck"; export class TheoryMeasure { private _measureOnsetArray: number[]; private _measureLength: number; private _parse: TheoryParse; public constructor(parse_: TheoryParse) { this._parse = parse_; } public getMeasureOnset(Beats_: TheoryBeats) { if (TheoryCheck.isNullOrUndefined(this._measureOnsetArray)) { this._measureOnsetArray = []; let measureDuration = this._parse.getMeasureBackupDuration(); let eachMeasureOnset = 0; for (let i = 0; i < measureDuration.length; i++) { this._measureOnsetArray.push(eachMeasureOnset); eachMeasureOnset += (measureDuration[i] / this._parse.getDivisions()) * Beats_.unit4Beats; } } return this._measureOnsetArray; } /** * 获取所有小节个数 */ public getMeasureListLength(): number { if (TheoryCheck.isNullOrUndefined(this._measureLength)) { this._measureLength = this._parse.getMeasures.length; } return this._measureLength; } }