UNPKG

wave-roll

Version:

JavaScript Library for Comparative MIDI Piano-Roll Visualization

106 lines 3.25 kB
import type { PlayerGroup, SynchronizationInfo } from '../master-clock'; /** * WAV Player Group - Synchronized with AudioMasterClock * * User requirements: Individual control of volume, pan, mute for each WAV player */ export declare class WavPlayerGroup implements PlayerGroup { private audioPlayers; private bufferLoadPromise; private notifyBufferReady; private activeAudioId; private lastStartGen; private masterVolume; private mixGain; private originalTempoBase; constructor(); /** * Set buffer ready state callback */ setBufferReadyCallback(callback: () => void): void; /** * Setup audio players */ setupAudioPlayersFromRegistry(options?: any): Promise<void>; /** * Create individual player */ private createPlayerEntry; /** * Start buffer monitoring */ private startBufferMonitoring; /** * Wait until all WAV buffers are ready (or resolve immediately if none). */ waitUntilReady(): Promise<void>; /** * Check if all buffers are ready */ private areAllBuffersReady; /** * PlayerGroup interface implementation: Synchronized start */ startSynchronized(syncInfo: SynchronizationInfo): Promise<void>; /** * PlayerGroup interface implementation: Synchronized stop */ stopSynchronized(): void; /** * PlayerGroup interface implementation: Seek to time */ seekTo(time: number): void; /** * PlayerGroup interface implementation: Set tempo */ setTempo(bpm: number): void; /** Set baseline tempo used to compute playbackRate. */ setOriginalTempoBase(bpm: number): void; /** * PlayerGroup interface implementation: Set master volume */ setMasterVolume(volume: number): void; /** * PlayerGroup interface implementation: Set loop */ setLoop(mode: 'off' | 'repeat' | 'ab', markerA: number | null, markerB: number | null): void; /** * Set individual WAV player volume */ setPlayerVolume(playerId: string, volume: number): void; /** * Set individual WAV player pan */ setPlayerPan(playerId: string, pan: number): void; /** * Set individual WAV player mute */ setPlayerMute(playerId: string, muted: boolean): void; /** * Adjust WAV group mix gain (0-1) to balance against MIDI group */ setGroupMixGain(gain: number): void; /** * Ensure a specific WAV player is started and aligned to the given master time. * Used when a track is unmuted or made visible during ongoing playback. */ syncStartIfNeeded(playerId: string, masterTime: number, lookahead?: number): void; /** * Iterate over all players and start any pending unmuted+visible players at the current master time. * Lightweight O(N) check, safe to call from a visual update loop. */ syncPendingPlayers(masterTime: number, lookahead?: number): void; /** * Get individual player states */ getPlayerStates(): Record<string, { volume: number; pan: number; muted: boolean; }>; /** * Resource cleanup */ destroy(): void; } //# sourceMappingURL=wav-player-group.d.ts.map