UNPKG

wave-roll

Version:

JavaScript Library for Comparative MIDI Piano-Roll Visualization

158 lines 4.87 kB
/** * 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