waveform-renderer
Version:
High-performance audio waveform visualization library for the web. Create customizable, interactive waveform renderers with TypeScript support and zero dependencies.
81 lines (78 loc) • 2.4 kB
TypeScript
// Generated by dts-bundle-generator v9.5.1
export interface ProgressLineOptions {
color?: string;
heightPercent?: number;
position?: RenderMode;
style?: "dashed" | "dotted" | "solid";
width?: number;
}
export type RenderMode = "bottom" | "center" | "top";
export interface WaveformEvents {
destroy: void;
error: Error;
progressChange: number;
ready: void;
renderComplete: void;
renderStart: void;
resize: {
height: number;
width: number;
};
seek: number;
}
export interface WaveformOptions {
amplitude?: number;
backgroundColor?: string;
barWidth?: number;
borderColor?: string;
borderRadius?: number;
borderWidth?: number;
color?: string;
gap?: number;
minPixelRatio?: number;
position?: RenderMode;
progress?: number;
progressLine?: null | ProgressLineOptions;
smoothing?: boolean;
}
declare class EventEmitter<Events extends Record<string, any>> {
private events;
off<E extends keyof Events>(event: E, callback: (args: Events[E]) => void): void;
on<E extends keyof Events>(event: E, callback: (args: Events[E]) => void): void;
once<E extends keyof Events>(event: E, callback: (args: Events[E]) => void): void;
removeAllListeners<E extends keyof Events>(event?: E): void;
protected emit<E extends keyof Events>(event: E, args: Events[E]): void;
protected hasListeners<E extends keyof Events>(event: E): boolean;
}
export declare class WaveformRenderer extends EventEmitter<WaveformEvents> {
private readonly canvas;
private readonly ctx;
private devicePixelRatio;
private frameRequest?;
private isDestroyed;
private options;
private peaks;
private readonly resizeObserver;
constructor(canvas: HTMLCanvasElement, peaks: number[], options?: Partial<WaveformOptions>);
destroy(): void;
setOptions(options: Partial<WaveformOptions>): void;
setPeaks(peaks: number[]): void;
setProgress(progress: number): void;
setProgressLineOptions(options: null | Partial<ProgressLineOptions>): void;
private calculateProgressFromEvent;
private calculateProgressFromTouch;
private drawWaveform;
private drawWaveformWithColor;
private handleClick;
private handleError;
private handleResize;
private handleTouch;
private resizeCanvas;
private scheduleRender;
private setupContext;
}
/**
* Calculates peaks from an AudioBuffer
*/
export declare function getPeaksFromAudioBuffer(audioBuffer: AudioBuffer, numberOfPeaks: number): number[];
export {};