- From: jernoble <notifications@github.com>
- Date: Fri, 13 Sep 2013 14:06:38 -0700
- To: WebAudio/web-audio-api <web-audio-api@noreply.github.com>
- Message-ID: <WebAudio/web-audio-api/issues/72/24424663@github.com>
Updating my proposal:
## Interface Changes
### AudioContext
Add the concept of pausing and resuming to AudioContext.
enum AudioContextPlayState {
"playing",
"paused",
"interrupted"
}
partial interface AudioContext {
readonly attribute AudioContextPlayState playState;
attribute bool resumable;
void pause();
void resume();
}
##### Algorithms
An AudioContext would start in the *"playing"* state. An audio hardware interruption would move the state from *"playing"* to *"interrupted"*. When interruption ends, if `resumable` is set to tue, the state would move from *"interrupted"* to *"playing"*. Otherwise, it would move from *"interrupted"* to *"paused"*.
When the state is *"playing"*, `pause()` will move the state from *"playing"* to *"paused"*. When the state is *"paused"*, calling `play()` will move the state from *"paused"* to *"playing"*. If the audio hardware is unavailable, the state would move from *"playing"* to *"interrupted"*.
When the state is *"interrupted"*, both `play()` and `pause()` are no-ops.
When the state is *"interrupted"* or *"paused"*, the context's `currentTime` does not advance, and no audio is generated from any node.
##### Attributes
`playState`
+ A read-only attribute listing the current play state of the AudioContext. Valid values are *"playing"*, *"paused"*, and *"interrupted"*.
`resumable`
+ Defaults to `true`. Controls whether audio resumes automatically after a hardware interruption ends.
##### Methods
`pause`
+ Changes the `playState` from *"playing"* to *"paused"*.
`resume`
+ Changes the `playState` from *"paused"* to *"playing"*.
---
Reply to this email directly or view it on GitHub:
https://github.com/WebAudio/web-audio-api/issues/72#issuecomment-24424663
Received on Friday, 13 September 2013 21:07:04 UTC