wave-roll
Version:
JavaScript Library for Comparative MIDI Piano-Roll Visualization
62 lines • 1.74 kB
TypeScript
/**
* Playback Controller
* Handles core transport operations: play, pause, seek, restart
*/
import { AudioPlayerState, OperationState } from "../player-types";
import { SamplerManager } from "../managers/sampler-manager";
import { WavPlayerManager } from "../managers/wav-player-manager";
import { TransportSyncManager } from "../managers/transport-sync-manager";
import { LoopManager } from "../managers/loop-manager";
export interface PlaybackControllerDeps {
state: AudioPlayerState;
operationState: OperationState;
samplerManager: SamplerManager;
wavPlayerManager: WavPlayerManager;
transportSyncManager: TransportSyncManager;
loopManager: LoopManager;
originalTempo: number;
options: {
repeat?: boolean;
};
pianoRoll: {
setTime(time: number): void;
};
onPlaybackEnd?: () => void;
uiSync?: (time: number, force?: boolean) => void;
}
export declare class PlaybackController {
private deps;
private pausedTime;
private _playLock;
constructor(deps: PlaybackControllerDeps);
/**
* Start or resume playback
*/
play(): Promise<void>;
/**
* Pause playback
*/
pause(): void;
/**
* Stop and restart from beginning
*/
restart(): void;
/**
* Seek to specific time position
*/
seek(seconds: number, updateVisual?: boolean): void;
/**
* Enable or disable repeat mode
*/
toggleRepeat(enabled: boolean): void;
/**
* Handle playback end (called by transport sync)
*/
handlePlaybackEnd(): void;
/**
* Get/set paused time
*/
getPausedTime(): number;
setPausedTime(time: number): void;
}
//# sourceMappingURL=playback-controller.d.ts.map