@stringsync/vexml
Version:
MusicXML to Vexflow
236 lines (235 loc) • 12.3 kB
TypeScript
/**
* @file This file contains **mutable** context objects that are used during parsing.
*
* When parsing, parent contexts may need to drill state to a distant descendant. Conversely, a child context may need
* to communicate state to a distant ancestor. Separate context objects are used to avoid passing state through many
* layers and to avoid tight coupling between the main parsing classes.
*
* NOTE: This code must **not** depend on any other parsing code because it will create an undesireble dependency graph.
*/
import * as data from '../../data';
import { Signature } from './signature';
import { Key } from './key';
import { Time } from './time';
import { IdProvider } from './idprovider';
export declare class ScoreContext {
private idProvider;
private multiRestCounts;
private curves;
private curveIds;
private wedges;
private wedgeStatuses;
private pedals;
private pedalStatuses;
private octaveShifts;
private octaveShiftStatuses;
private vibratos;
private vibratoStatuses;
constructor(idProvider: IdProvider);
nextId(): string;
getMultiRestCount(partId: string, staveNumber: number | null): number;
incrementMultiRestCount(partId: string, staveNumber: number | null, count: number): void;
decrementMultiRestCounts(): void;
getCurves(): data.Curve[];
beginCurve(curveNumber: number | null, placement: data.CurvePlacement, opening: data.CurveOpening, articulation: data.CurveArticulation): string;
continueCurve(curveNumber: number | null): string | null;
getWedges(): data.Wedge[];
beginWedge(partId: string, staveNumber: number, wedgeType: data.WedgeType, placement: data.WedgePlacement): string;
continueOpenWedge(partId: string, staveNumber: number): string | null;
closeWedge(partId: string, staveNumber: number): void;
getPedals(): data.Pedal[];
beginPedal(partId: string, pedalType: data.PedalType): string;
continueOpenPedal(partId: string): data.PedalMark | null;
primeNextPedalMark(partId: string, pedalMarkType: data.PedalMarkType): void;
closePedal(partId: string): void;
getOctaveShifts(): data.OctaveShift[];
beginOctaveShift(partId: string, staveNumber: number, size: number): string;
continueOpenOctaveShift(partId: string, staveNumber: number): string | null;
closeOctaveShift(partId: string, staveNumber: number): void;
getVibratos(): data.Vibrato[];
beginVibrato(vibratoNumber: number): string;
continueVibrato(vibratoNumber: number): string | null;
}
export declare class SystemContext {
private score;
constructor(score: ScoreContext);
nextId(): string;
getMultiRestCount(partId: string, staveNumber: number | null): number;
incrementMultiRestCount(partId: string, staveNumber: number | null, count: number): void;
decrementMultiRestCounts(): void;
beginCurve(curveNumber: number | null, placement: data.CurvePlacement, opening: data.CurveOpening, articulation: data.CurveArticulation): string;
continueCurve(curveNumber: number | null): string | null;
beginWedge(partId: string, staveNumber: number, wedgeType: data.WedgeType, placement: data.WedgePlacement): string;
continueOpenWedge(partId: string, staveNumber: number): string | null;
closeWedge(partId: string, staveNumber: number): void;
beginPedal(partId: string, pedalType: data.PedalType): string;
continueOpenPedal(partId: string): data.PedalMark | null;
primeNextPedalMark(partId: string, pedalMarkType: data.PedalMarkType): void;
closePedal(partId: string): void;
beginOctaveShift(partId: string, staveNumber: number, size: number): string;
continueOpenOctaveShift(partId: string, staveNumber: number): string | null;
closeOctaveShift(partId: string, staveNumber: number): void;
beginVibrato(vibratoNumber: number): string;
continueVibrato(vibratoNumber: number): string | null;
}
export declare class MeasureContext {
private system;
private index;
private accidentals;
constructor(system: SystemContext, index: number);
nextId(): string;
getIndex(): number;
getActiveAccidental(partId: string, pitch: string, octave: number): data.AccidentalCode | null;
setActiveAccidental(partId: string, pitch: string, octave: number, accidental: data.AccidentalCode): void;
getMultiRestCount(partId: string, staveNumber: number): number;
beginCurve(curveNumber: number | null, placement: data.CurvePlacement, opening: data.CurveOpening, articulation: data.CurveArticulation): string;
continueCurve(curveNumber: number | null): string | null;
beginWedge(partId: string, staveNumber: number, wedgeType: data.WedgeType, placement: data.WedgePlacement): string;
continueOpenWedge(partId: string, staveNumber: number): string | null;
closeWedge(partId: string, staveNumber: number): void;
beginPedal(partId: string, pedalType: data.PedalType): string;
continueOpenPedal(partId: string): data.PedalMark | null;
primeNextPedalMark(partId: string, pedalMarkType: data.PedalMarkType): void;
closePedal(partId: string): void;
beginOctaveShift(partId: string, staveNumber: number, size: number): string;
continueOpenOctaveShift(partId: string, staveNumber: number): string | null;
closeOctaveShift(partId: string, staveNumber: number): void;
beginVibrato(vibratoNumber: number): string;
continueVibrato(vibratoNumber: number): string | null;
}
export declare class FragmentContext {
private measure;
private signature;
constructor(measure: MeasureContext, signature: Signature);
nextId(): string;
getSignature(): Signature;
getActiveAccidental(partId: string, pitch: string, octave: number): data.AccidentalCode | null;
setActiveAccidental(partId: string, pitch: string, octave: number, accidental: data.AccidentalCode): void;
getMultiRestCount(partId: string, staveNumber: number): number;
beginCurve(curveNumber: number | null, placement: data.CurvePlacement, opening: data.CurveOpening, articulation: data.CurveArticulation): string;
continueCurve(curveNumber: number | null): string | null;
beginWedge(partId: string, staveNumber: number, wedgeType: data.WedgeType, placement: data.WedgePlacement): string;
continueOpenWedge(partId: string, staveNumber: number): string | null;
closeWedge(partId: string, staveNumber: number): void;
beginPedal(partId: string, pedalType: data.PedalType): string;
continueOpenPedal(partId: string): data.PedalMark | null;
primeNextPedalMark(partId: string, pedalMarkType: data.PedalMarkType): void;
closePedal(partId: string): void;
beginOctaveShift(partId: string, staveNumber: number, size: number): string;
continueOpenOctaveShift(partId: string, staveNumber: number): string | null;
closeOctaveShift(partId: string, staveNumber: number): void;
beginVibrato(vibratoNumber: number): string;
continueVibrato(vibratoNumber: number): string | null;
}
export declare class PartContext {
private fragment;
private id;
constructor(fragment: FragmentContext, id: string);
nextId(): string;
getId(): string;
getKey(staveNumber: number): Key;
getTime(staveNumber: number): Time;
getActiveAccidental(pitch: string, octave: number): data.AccidentalCode | null;
setActiveAccidental(pitch: string, octave: number, accidental: data.AccidentalCode): void;
getMultiRestCount(staveNumber: number): number;
beginCurve(curveNumber: number | null, placement: data.CurvePlacement, opening: data.CurveOpening, articulation: data.CurveArticulation): string;
continueCurve(curveNumber: number | null): string | null;
beginWedge(placement: data.WedgePlacement, wedgeType: data.WedgeType, staveNumber: number): string;
continueOpenWedge(staveNumber: number): string | null;
closeWedge(staveNumber: number): void;
beginPedal(pedalType: data.PedalType): string;
continueOpenPedal(): data.PedalMark | null;
primeNextPedalMark(pedalMarkType: data.PedalMarkType): void;
closePedal(): void;
beginOctaveShift(staveNumber: number, size: number): string;
continueOpenOctaveShift(staveNumber: number): string | null;
closeOctaveShift(staveNumber: number): void;
beginVibrato(vibratoNumber: number): string;
continueVibrato(vibratoNumber: number): string | null;
}
export declare class StaveContext {
private part;
private number;
constructor(part: PartContext, number: number);
nextId(): string;
getNumber(): number;
getKey(): Key;
getTime(): Time;
getActiveAccidental(pitch: string, octave: number): data.AccidentalCode | null;
setActiveAccidental(pitch: string, octave: number, accidental: data.AccidentalCode): void;
getMultiRestCount(): number;
beginCurve(curveNumber: number | null, placement: data.CurvePlacement, opening: data.CurveOpening, articulation: data.CurveArticulation): string;
continueCurve(curveNumber: number | null): string | null;
beginWedge(placement: data.WedgePlacement, wedgeType: data.WedgeType): string;
continueOpenWedge(): string | null;
closeWedge(): void;
beginPedal(pedalType: data.PedalType): string;
continueOpenPedal(): data.PedalMark | null;
primeNextPedalMark(pedalMarkType: data.PedalMarkType): void;
closePedal(): void;
beginOctaveShift(size: number): string;
continueOpenOctaveShift(): string | null;
closeOctaveShift(): void;
beginVibrato(vibratoNumber: number): string;
continueVibrato(vibratoNumber: number): string | null;
}
export declare class VoiceContext {
private stave;
private id;
private beams;
private openTuplets;
private closedTuplets;
constructor(stave: StaveContext, id: string);
nextId(): string;
getId(): string;
getKey(): Key;
getTime(): Time;
getActiveAccidental(pitch: string, octave: number): data.AccidentalCode | null;
setActiveAccidental(pitch: string, octave: number, accidental: data.AccidentalCode): void;
getMultiRestCount(): number;
beginCurve(curveNumber: number | null, placement: data.CurvePlacement, opening: data.CurveOpening, articulation: data.CurveArticulation): string;
continueCurve(curveNumber: number | null): string | null;
getBeams(): data.Beam[];
beginBeam(): string;
continueBeam(): string | null;
getTuplets(): data.Tuplet[];
beginTuplet(number: number, showNumber: boolean, placement: data.TupletPlacement): string;
continueOpenTuplets(): string[];
closeTuplet(number: number): string | null;
beginWedge(placement: data.WedgePlacement, wedgeType: data.WedgeType): string;
continueOpenWedge(): string | null;
closeWedge(): void;
beginPedal(pedalType: data.PedalType): string;
continueOpenPedal(): data.PedalMark | null;
primeNextPedalMark(pedalMarkType: data.PedalMarkType): void;
closePedal(): void;
beginOctaveShift(size: number): string;
continueOpenOctaveShift(): string | null;
closeOctaveShift(): void;
beginVibrato(vibratoNumber: number): string;
continueVibrato(vibratoNumber: number): string | null;
}
export declare class VoiceEntryContext {
private voice;
private pitch;
private octave;
private constructor();
static note(voice: VoiceContext, pitch: string, octave: number): VoiceEntryContext;
static rest(voice: VoiceContext): VoiceEntryContext;
nextId(): string;
getKeyAccidental(): data.AccidentalCode | null;
getActiveAccidental(): data.AccidentalCode | null;
setActiveAccidental(accidental: data.AccidentalCode): void;
beginCurve(curveNumber: number | null, placement: data.CurvePlacement, opening: data.CurveOpening, articulation: data.CurveArticulation): string;
continueCurve(curveNumber: number | null): string | null;
beginBeam(): string;
continueBeam(): string | null;
beginTuplet(number: number, showNumber: boolean, placement: data.TupletPlacement): string;
continueOpenTuplets(): string[];
closeTuplet(number: number): string | null;
continueOpenWedge(): string | null;
continueOpenPedal(): data.PedalMark | null;
continueOpenOctaveShift(): string | null;
beginVibrato(vibratoNumber: number): string;
continueVibrato(vibratoNumber: number): string | null;
}