@hlysine/piano
Version:
Web Audio instrument using Salamander Grand Piano samples
49 lines (48 loc) • 1.34 kB
TypeScript
import { Param, ToneAudioNode, Unit, Volume } from 'tone';
declare type ToneAudioNodeOptions = import('tone/build/esm/core/context/ToneAudioNode').ToneAudioNodeOptions;
export interface PianoComponentOptions extends ToneAudioNodeOptions {
volume: Unit.Decibels;
enabled: boolean;
samples: string;
}
export interface UrlsMap {
[note: string]: string;
}
/**
* Base class for the other components
*/
export declare abstract class PianoComponent extends ToneAudioNode {
readonly name = "PianoComponent";
readonly input: any;
readonly output: Volume;
/**
* If the component is enabled or not
*/
protected _enabled: boolean;
/**
* The volume output of the component
*/
readonly volume: Param<"decibels">;
/**
* Boolean indication of if the component is loaded or not
*/
private _loaded;
/**
* The directory to load the Salamander samples out of
*/
readonly samples: string;
constructor(options: PianoComponentOptions);
/**
* Load the component internally
*/
protected abstract _internalLoad(): Promise<void>;
/**
* If the samples are loaded or not
*/
get loaded(): boolean;
/**
* Load the samples
*/
load(): Promise<void>;
}
export {};