react-orchestra
Version:
A toolbox to build interactive and smart instruments on the web and mobile.
145 lines (144 loc) • 5.89 kB
TypeScript
export default class MidiIO {
millisecondsPerTick?: number;
timeSignatureNumerator?: number;
timeSignatureDenominator?: number;
ticksPerBeat?: number;
BPM?: number;
settings: {
midiURL: string | null;
parsedMidi: any;
BPM: number;
};
isInitialised: boolean;
constructor(userSettings: MidiIO["settings"]);
setBPM(BPM?: number): void;
static parseMidi: (url: string) => Promise<{
meta: {
tempo: any;
keySignature: any;
timeSignature: any;
timeSignatureNumerator: any;
timeSignatureDenominator: any;
timeSignatureMetronome: any;
timeSignatureThirtyseconds: any;
endOfTrack: any;
trackCount: number;
microsecondsPerBeat: any;
instrumentNumbers: any[];
instrumentNames: (string | undefined)[];
millisecondsPerTick: number;
ticksPerBeat: number;
BPM: number;
};
musicTracks: {
controller: import("../types").MidiEvent[];
programChange: import("../types").MidiEvent[];
trackname: import("../types").MidiEvent[];
noteOn: import("../types").MidiEvent[];
noteOnValid: import("../types").MidiEvent[];
noteOnInvalid: import("../types").MidiEvent[];
noteOff: import("../types").MidiEvent[];
endOfTrack: import("../types").MidiEvent[];
noteCount: number;
instrumentNumber: number;
instrumentName: string | undefined;
}[];
}>;
static getTracksAndMetaFromParsedMidi: (parsedMidi: Partial<import("../types").Midi> & {
musicTracks: any[];
}) => import("../types").ROMidiFormat;
static getWriter: () => any;
static getUniqueFromMidiNotes: (notes: import("../types").NoteType[]) => any[];
static midiNoteNumberToName: (midi: number) => string;
static urlToJSON: (midiURL: string) => Promise<any>;
static getAllMetadata: (parsedMidi: import("../types").Midi, tracks: any[]) => {
tempo: any;
keySignature: any;
timeSignature: any;
timeSignatureNumerator: any;
timeSignatureDenominator: any;
timeSignatureMetronome: any;
timeSignatureThirtyseconds: any;
endOfTrack: any;
trackCount: number;
microsecondsPerBeat: any;
instrumentNumbers: any[];
instrumentNames: (string | undefined)[];
millisecondsPerTick: number;
ticksPerBeat: number;
BPM: number;
};
static getAllTracks: (parsedMidi: import("../types").Midi) => {
meta: {
tempo: any;
keySignature: any;
timeSignature: any;
timeSignatureNumerator: any;
timeSignatureDenominator: any;
timeSignatureMetronome: any;
timeSignatureThirtyseconds: any;
endOfTrack: any;
trackCount: number;
microsecondsPerBeat: any;
instrumentNumbers: any[];
instrumentNames: (string | undefined)[];
millisecondsPerTick: number;
ticksPerBeat: number;
BPM: number;
};
musicTracks: {
controller: import("../types").MidiEvent[];
programChange: import("../types").MidiEvent[];
trackname: import("../types").MidiEvent[];
noteOn: import("../types").MidiEvent[];
noteOnValid: import("../types").MidiEvent[];
noteOnInvalid: import("../types").MidiEvent[];
noteOff: import("../types").MidiEvent[];
endOfTrack: import("../types").MidiEvent[];
noteCount: number;
instrumentNumber: number;
instrumentName: string | undefined;
}[];
};
static getInstrumentNumberFromMidiTrack: (track: import("../types").MidiEvent[]) => string | undefined;
static binaryStringToJSON: (binaryStringMidi: string) => any;
static getNoteOnEvents: (track: import("../types").MidiEvent[]) => {
noteOnEvents: import("../types").MidiEvent[];
validNoteOnEvents: import("../types").MidiEvent[];
invalidNoteOnEvents: import("../types").MidiEvent[];
};
static getNoteOffEvents: (track: import("../types").MidiEvent[]) => {
noteOffEvents: import("../types").MidiEvent[];
validNoteOffEvents: import("../types").MidiEvent[];
invalidNoteOffEvents: import("../types").MidiEvent[];
};
static getTempoFromTrack: (track: import("../types").MidiEvent[]) => {
deltaTime: number;
microsecondsPerBeat: number;
};
static getMetadataFromTrack: (track: import("../types").MidiEvent[]) => {
microsecondsPerBeat: undefined;
keySignature: undefined;
timeSignature: undefined;
endOfTrack: undefined;
};
static urlToBinaryString: (midiURL: string) => Promise<string>;
static noteOffEventToNote: (noteOffEvent: any, noteInstrumentName: string, previousEndTime: number, msPerTick: number) => {
noteNumber: any;
noteName: string;
startTimeInMS: number;
durationInMS: number;
endTimeInMS: number;
noteInstrumentName: string;
deltaTime: any;
msPerTick: number;
};
static getMillisecondsPerTick: (microsecondsPerBeat: number, ticksPerBeat: number) => number;
static getBPMData: (microSecondsPerBeat: number, ticksPerBeat: number, timeSignature: {
numerator: number;
denominator: number;
}) => {
BPM: number;
};
static bpmToMSPerBeat: (BPM: number, timeSignatureNumerator?: number, timeSignatureDenominator?: number) => number;
}