@stringsync/vexml
Version:
MusicXML to Vexflow
193 lines (192 loc) • 4.56 kB
TypeScript
import { Fraction } from '../../util';
import { Clef } from './clef';
import { Metronome } from './metronome';
import { Key } from './key';
import { Time } from './time';
import { StaveLineCount } from './stavelinecount';
import { StaveCount } from './stavecount';
import { Note } from './note';
import { Rest } from './rest';
import { Chord } from './chord';
import { Dynamics } from './dynamics';
import { Wedge } from './wedge';
import { Pedal } from './pedal';
import { OctaveShift } from './octaveshift';
import { Vibrato } from './vibrato';
export type SignatureChange = {
type: 'metronome';
} | {
type: 'stavecount';
partId: string;
} | {
type: 'stavelinecount';
partId: string;
staveNumber: number;
} | {
type: 'clef';
partId: string;
staveNumber: number;
} | {
type: 'key';
partId: string;
staveNumber: number;
} | {
type: 'time';
partId: string;
staveNumber: number;
};
export type VoiceEntry = Note;
export type NoteEvent = {
type: 'note';
partId: string;
measureIndex: number;
staveNumber: number;
voiceId: string;
duration: Fraction;
measureBeat: Fraction;
note: Note;
};
export type ChordEvent = {
type: 'chord';
partId: string;
measureIndex: number;
staveNumber: number;
voiceId: string;
duration: Fraction;
measureBeat: Fraction;
chord: Chord;
};
export type RestEvent = {
type: 'rest';
partId: string;
measureIndex: number;
staveNumber: number;
voiceId: string;
duration: Fraction;
measureBeat: Fraction;
rest: Rest;
};
export type StaveCountEvent = {
type: 'stavecount';
partId: string;
measureIndex: number;
measureBeat: Fraction;
staveCount: StaveCount;
};
export type StaveLineCountEvent = {
type: 'stavelinecount';
partId: string;
measureIndex: number;
measureBeat: Fraction;
staveNumber: number;
staveLineCount: StaveLineCount;
};
export type ClefEvent = {
type: 'clef';
partId: string;
measureIndex: number;
measureBeat: Fraction;
staveNumber: number;
clef: Clef;
};
export type KeyEvent = {
type: 'key';
partId: string;
measureIndex: number;
measureBeat: Fraction;
staveNumber: number;
key: Key;
};
export type TimeEvent = {
type: 'time';
partId: string;
measureIndex: number;
measureBeat: Fraction;
staveNumber: number;
time: Time;
};
export type MetronomeEvent = {
type: 'metronome';
partId: string;
measureIndex: number;
measureBeat: Fraction;
metronome: Metronome;
};
export type MultiRestEvent = {
type: 'multirest';
partId: string;
measureIndex: number;
staveNumber: number | null;
measureBeat: Fraction;
measureCount: number;
};
export type SegnoEvent = {
type: 'segno';
partId: string;
measureIndex: number;
measureBeat: Fraction;
};
export type CodaEvent = {
type: 'coda';
partId: string;
measureIndex: number;
measureBeat: Fraction;
};
export type DynamicsEvent = {
type: 'dynamics';
partId: string;
measureIndex: number;
measureBeat: Fraction;
staveNumber: number;
voiceId: string;
dynamics: Dynamics;
};
export type WedgeEvent = {
type: 'wedge';
partId: string;
measureIndex: number;
measureBeat: Fraction;
staveNumber: number;
voiceId: string;
wedge: Wedge;
};
export type PedalEvent = {
type: 'pedal';
partId: string;
measureIndex: number;
measureBeat: Fraction;
staveNumber: number;
voiceId: string;
pedal: Pedal;
};
export type OctaveShiftEvent = {
type: 'octaveshift';
partId: string;
measureIndex: number;
measureBeat: Fraction;
staveNumber: number;
voiceId: string;
octaveShift: OctaveShift;
};
export type VibratoEvent = {
type: 'vibrato';
partId: string;
measureIndex: number;
measureBeat: Fraction;
staveNumber: number;
voiceId: string;
vibrato: Vibrato;
};
export type MusicXMLEvent = NoteEvent | RestEvent | ChordEvent | StaveCountEvent | StaveLineCountEvent | ClefEvent | KeyEvent | TimeEvent | MetronomeEvent | MultiRestEvent | SegnoEvent | CodaEvent | DynamicsEvent | WedgeEvent | PedalEvent | OctaveShiftEvent;
export type MeasureEvent = Extract<MusicXMLEvent, {
measureIndex: number;
}>;
export type PartEvent = Extract<MusicXMLEvent, {
partId: string;
}>;
export type StaveEvent = Extract<MusicXMLEvent, {
staveNumber: number;
}>;
export type VoiceEvent = Extract<MusicXMLEvent, {
voiceId: string;
}>;