opensheetmusicdisplay
Version:
An open source JavaScript engine for displaying MusicXML based on VexFlow.
37 lines (36 loc) • 1.59 kB
TypeScript
import { IAfterSheetReadingModule } from "../../Interfaces";
import { MusicSheet } from "../../MusicSheet";
import { MultiTempoExpression } from "../../VoiceData/Expressions/MultiTempoExpression";
/** Process the TempoExpressions of a MusicSheet
*
* \details This class exposes one method: #calculate
* to implement #IAfterSheetReadingModule
*/
export declare class TemposCalculator implements IAfterSheetReadingModule {
/** This is the method exposed for #IAfterSheetReadingModule */
calculate(musicSheet: MusicSheet): void;
/** This is where the work is done.
*
* - [1] all MultiTempoExpressions are read from the MusicSheet
* - they are sorted in priority order (#myTempoSorter.Compare)
* - [2] all Inst Tempos are given a BPM if needed
* - all Inst and Cont tempos for a single TimeStamp are consolidated
* - [3] ContinuousTempo values are calculated
*/
private static processTempoExpressions;
/** Clean the start of the expressions list and return the TempoPrimo BPM.
*
* Make sure that there is an Inst tempo at [0 0/1] with a non-zero BPM.
* Return that BPM for TempoPrimo.
*/
private static cleanExpListStartingEntry;
}
export declare class TempoSorter {
/** Sort for processing
*
* \details Sort by AbsoluteTimeStamp, followed by metronomeMark, Inst, atempo, tempoprimo, Cont
*/
static Compare(x: MultiTempoExpression, y: MultiTempoExpression): number;
static calcSortPriority(z: MultiTempoExpression): number;
static CompareNumber(a: number, b: number): number;
}