Spaces:
Sleeping
Sleeping
import {MidiData, MidiEvent} from "./MIDI/midi"; | |
import Node from "./Matcher/node"; | |
interface Note { | |
channel: number; | |
start: number; | |
duration: number; | |
startTick: number; | |
endTick: number; | |
pitch: number; | |
velocity?: number; | |
beats?: number; | |
track?: number; | |
finger?: number; | |
index?: number; | |
deltaSi?: number; | |
softIndex?: number; | |
matches?: Node[]; | |
id?: string; | |
ids?: string[]; | |
} | |
interface Tempo { | |
tempo: number; | |
tick: number; | |
time: number; // in milliseconds | |
} | |
interface NotationEvent { | |
data: MidiEvent; | |
track?: number; | |
deltaTime?: number; | |
deltaTicks?: number; | |
time?: number; | |
ticks?: number; | |
} | |
interface BeatInfo { | |
beatIndex?: number; | |
beatsUnit: number, | |
beats: number, | |
tick: number, | |
} | |
interface NotationMetaInfo { | |
beatInfos?: BeatInfo[]; | |
[key: string]: any; | |
} | |
interface MeasureRange { | |
startTick: number; | |
endTick: number; | |
index: number; | |
} | |
interface NotationData { | |
ticksPerBeat?: number; | |
notes: Note[]; | |
channels?: Note[][]; | |
events?: NotationEvent[]; | |
tempos?: Tempo[]; | |
endTime?: number; | |
endTick?: number; | |
pitchMap?: {[key: number]: Note[]}; | |
measures?: MeasureRange[]; | |
meta?: NotationMetaInfo; | |
} | |
interface FromToRange { | |
from: number; | |
to: number; | |
} | |
interface Pedal { | |
type: string; | |
start: number; | |
duration: number; | |
value: number; | |
} | |
interface Bar { | |
time: number; | |
index: number; | |
} | |
interface NotationProtoData { | |
channels: Note[][]; | |
meta: NotationMetaInfo; | |
ticksPerBeat: number; | |
tempos: Tempo[]; | |
keyRange?: {low: number, high: number}; | |
pedals?: Pedal[]; | |
bars?: Bar[]; | |
endTime?: number; | |
endTick?: number; | |
correspondences?: number[]; | |
events?: NotationEvent[]; | |
measures?: any; | |
} | |
declare class Notation implements NotationProtoData { | |
static parseMidi(data: MidiData, options?: {fixOverlap?: boolean}): Notation; | |
ticksPerBeat: number; | |
channels: Note[][]; | |
notes: Note[]; | |
events?: NotationEvent[]; | |
tempos: Tempo[]; | |
endTime: number; | |
endTick: number; | |
duration: number; | |
pitchMap: {[key: number]: Note[]}; | |
measures?: MeasureRange[]; | |
keyRange?: {low: number, high: number}; | |
pedals?: Pedal[]; | |
bars?: Bar[]; | |
meta: NotationMetaInfo; | |
constructor (fields: NotationProtoData); | |
findChordBySoftindex (softIndex: number, radius?: number): Note[]; | |
averageTempo (tickRange: FromToRange): number; | |
ticksToTime (ticks: number): number; | |
timeToTicks (time: number): number; | |
tickRangeToTimeRange (tickRange: FromToRange): FromToRange; | |
/*getMeasureRange (measureRange: {start: number, end: number}): { | |
tickRange: object, | |
timeRange: object, | |
};*/ | |
scaleTempo (options: {factor: number} | {headTempo: number}): void; | |
} | |
declare const midiToEvents: (midi: MidiData, timeWarp?: number) => any; | |
export { | |
NotationData, | |
Note, | |
NotationEvent, | |
Notation, | |
midiToEvents, | |
}; | |