Invoked once when the voice ends (naturally or via stop).
True once the voice has ended and can be pruned.
True if this voice is spatialized.
Set the per-voice volume, optionally ramping over ramp seconds.
Bind the spatial position to a moving object; the owning engine syncs it
each frame. Pass null to unbind. No-op for non-spatial voices.
Called by the engine each frame to track a follow target.
Stop the voice, optionally fading out over fade seconds first.
Alias for stop(duration).
Disconnect all nodes. Safe to call after the voice ends.
A single playing voice:
BufferSource → Gain → [Panner] → destination. Returned by AudioEngine.play / AudioEngine.playAt so callers can control or stop the sound. Disposes itself when playback ends; the owning engine prunes finished handles and advances any follow target.