museaikit
Version:
A powerful music-focused AI toolkit
62 lines (61 loc) • 2.08 kB
TypeScript
export interface SampleInfo {
pitch: number;
velocity: number;
}
export interface InstrumentSpec {
name: string;
minPitch: number;
maxPitch: number;
durationSeconds: number;
releaseSeconds: number;
percussive: boolean;
velocities?: number[];
}
export declare class Instrument {
private FADE_SECONDS;
private readonly baseURL;
private readonly buffers;
private initialized;
name: string;
minPitch: number;
maxPitch: number;
durationSeconds: number;
releaseSeconds: number;
percussive: boolean;
velocities?: number[];
sourceMap: Map<number, any>;
constructor(baseURL: string);
initialize(): Promise<void>;
private sampleInfoToName;
private sampleNameToURL;
private nearestVelocity;
loadSamples(samples: SampleInfo[]): Promise<void>;
playNote(pitch: number, velocity: number, startTime: number, duration: number, output: any): void;
playNoteDown(pitch: number, velocity: number, output: any): void;
playNoteUp(pitch: number, velocity: number, output: any): void;
getBuffer(pitch: number, velocity: number): any;
}
export interface InstrumentInfo {
program: number;
isDrum: boolean;
}
export interface InstrumentsSpec {
[program: number]: string;
drums?: string;
}
export interface SoundFontSpec {
name: string;
instruments: InstrumentsSpec;
}
export declare class SoundFont {
private readonly baseURL;
private readonly instruments;
private initialized;
name: string;
constructor(baseURL: string);
initialize(): Promise<void>;
loadSamples(samples: Array<InstrumentInfo & SampleInfo>): Promise<void>;
playNote(pitch: number, velocity: number, startTime: number, duration: number, program: number, isDrum: boolean, output: any): void;
playNoteDown(pitch: number, velocity: number, program: number, isDrum: boolean, output: any): void;
playNoteUp(pitch: number, velocity: number, program: number, isDrum: boolean, output: any): void;
}