wave-roll
Version:
JavaScript Library for Comparative MIDI Piano-Roll Visualization
106 lines • 3.25 kB
TypeScript
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