Chapter 2. Perfect Timing and Latency
One of the strengths of the Web Audio API as compared to the <audio> tag is that it comes with a
low-latency precise-timing model.
Low latency is very important for games and other interactive applications since you often need fast auditory response to user actions. If the feedback is not immediate, the user will sense the delay, which will lead to frustration. In practice, due to imperfections of human hearing, there is leeway for a delay of up to 20 ms or so, but the number varies depending on many factors.
Precise timing enables you to schedule events at specific times in the future. This is very important for scripted scenes and musical applications.
Timing Model
One of the key things that the audio context provides is a
consistent timing model and frame of reference for time. Importantly, this
model is different from the one used for JavaScript timers such as
setTimeout, setInterval, and new
Date(). It is also different from the performance clock provided by
window.performance.now().
All of the absolute times that you will be dealing with in the Web
Audio API are in seconds (not milliseconds!), in the coordinate system of
the specified audio context. The current time can be retrieved from the
audio context via the currentTime property. Although the
units are seconds, time is stored as a floating-point value with high
precision.
Precise Playback and Resume
The start() function makes it easy to schedule precise sound playback for games and other ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access