wave-roll
Version:
JavaScript Library for Comparative MIDI Piano-Roll Visualization
158 lines • 4.87 kB
TypeScript
/**
* VisualizationEngine - Legacy wrapper around CorePlaybackEngine
* Maintains backward compatibility while delegating to unified engine
*/
import { NoteData } from "@/lib/midi/types";
import { AudioPlayerState } from "@/core/audio";
import { VisualUpdateParams as CoreVisualUpdateParams } from "@/core/playback";
import { ColoredNote as CoreColoredNote, DEFAULT_PIANO_ROLL_CONFIG } from "@/core/playback";
import type { PianoRollInstance as VizPianoRollInstance } from "./piano-roll";
export type ColoredNote = CoreColoredNote;
/**
* Default piano roll configuration - re-export for compatibility
*/
export { DEFAULT_PIANO_ROLL_CONFIG };
/**
* Visualization engine configuration
*/
export interface VisualizationEngineConfig {
defaultPianoRollConfig: import("@/core/playback").PianoRollConfig;
updateInterval: number;
enableOverlapDetection: boolean;
overlapColor: number;
}
/**
* Default visualization configuration
*/
export declare const DEFAULT_VISUALIZATION_CONFIG: VisualizationEngineConfig;
/**
* Visual update parameters - re-export for compatibility
*/
export interface VisualUpdateParams extends CoreVisualUpdateParams {
zoomLevel: number;
}
export type PianoRollInstance = VizPianoRollInstance;
/**
* Main visualization engine class - Thin wrapper around CorePlaybackEngine
*/
export declare class VisualizationEngine {
private coreEngine;
private pianoRollManager;
private config;
private visualUpdateCallbacks;
/** Unsubscribe function for baseline tempo reset events */
private unsubscribeBaselineEvent;
constructor(config?: Partial<VisualizationEngineConfig>);
/**
* Initialize piano roll with a container element
*/
initializePianoRoll(container: HTMLElement, notes: NoteData[], pianoRollConfig?: Partial<import("@/core/playback").PianoRollConfig>): Promise<void>;
/**
* Update visualization with new note data
*/
updateVisualization(visibleNotes: ColoredNote[], audioNotesOverride?: NoteData[]): Promise<void>;
/**
* Get piano roll instance
*/
getPianoRollInstance(): PianoRollInstance | null;
/**
* Set minor time step
*/
setMinorTimeStep(step: number): void;
/**
* Get current zoom level
*/
getZoomLevel(): number;
/**
* Set zoom level
*/
setZoomLevel(scale: number): void;
/**
* Set playhead time
*/
setTime(time: number): void;
/**
* Get current audio player state
*/
getAudioPlayerState(): AudioPlayerState | null;
/**
* Control audio playback - Delegate to core engine
*/
play(): Promise<void>;
pause(): void;
seek(time: number, updateVisual?: boolean): void;
setVolume(volume: number): void;
/** Master volume proxy for v2 engine */
get masterVolume(): number;
set masterVolume(volume: number);
/**
* Set pan for a specific MIDI file track.
*/
setFilePan(fileId: string, pan: number): void;
/**
* Set mute state for a specific MIDI file track.
*/
setFileMute(fileId: string, mute: boolean): void;
/**
* Refresh WAV/audio players from registry (for mute state updates)
*/
refreshAudioPlayers(): void;
/** Set per-file MIDI volume */
setFileVolume(fileId: string, volume: number): void;
/** Set per-file WAV volume */
setWavVolume(fileId: string, volume: number): void;
setTempo(tempo: number): void;
/**
* Set playback rate as percentage (10-200, 100 = normal speed)
*/
setPlaybackRate(rate: number): void;
/**
* Register visual update callback
*/
onVisualUpdate(callback: (params: VisualUpdateParams) => void): void;
/**
* Start visual update loop
*/
startVisualUpdateLoop(): void;
/**
* Stop visual update loop
*/
stopVisualUpdateLoop(): void;
/**
* Clean up resources
*/
destroy(): void;
/**
* Check if visualization is initialized
*/
isInitialized(): boolean;
/**
* Get engine info
*/
getEngineInfo(): {
width: number;
height: number;
fps: number;
};
/**
* Proxy - enable UI to access underlying player state
*/
getState(): AudioPlayerState;
/**
* Proxy repeat toggle to underlying audio player
*/
toggleRepeat(enabled: boolean): void;
/**
* Proxy custom loop points (A-B) to underlying audio player
*/
setLoopPoints(start: number | null, end: number | null, preservePosition?: boolean): void;
/**
* Notify visual update callbacks
*/
private notifyVisualUpdateCallbacks;
}
/**
* Create a new visualization engine instance
*/
export declare function createVisualizationEngine(config?: Partial<VisualizationEngineConfig>): VisualizationEngine;
//# sourceMappingURL=visualization-engine.d.ts.map