Updates to Web Audio API editor's draft

Hey folks, I've recently updated the editor's draft of the Web Audio API:
https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html

With some changes addressing list feedback.

For low-level details, the actual edits are here (please see all edits
since re-basing from Thierry Michel):
https://dvcs.w3.org/hg/audio/

And here's my summary:

* add AudioContext .activeSourceCount attribute
* add AudioBufferSourceNode .playbackState attribute and state constants

Taken together the .activeSourceCount and .playbackState attributes allow
developers to dynamically monitor the number of active voices.  In a busy
game there may be many dozens of sounds playing at any given moment, and
the exact number is constantly changing.  Based on this information about
the number of voices,  developers can choose to drop older voices.

* createBuffer() methods can throw exceptions

If it's passed illegal arguments...

* add AudioContext method createMediaElementSource()

Implemented in Chrome for a couple months.  This method creates a
MediaElementAudioSourceNode from an <audio> or <video> element.

* update AudioContext methods createJavaScriptNode() (clean up description
of parameters)

Previous description was confusing.

* update AudioContext method createChannelSplitter() (add numberOfOutputs
parameter)
* update AudioContext method createChannelMerger() (add numberOfInputs
parameter)
* update AudioChannelMerger section describing numberOfOutputs (defaults to
6 but settable in constructor)
* update AudioChannelSplitter section describing numberOfInputs (defaults
to 6 but settable in constructor)

Address list feedback about allowing the developer to choose the numbers of
outputs and inputs for splitters and mergers.

* update description of out-of-bounds AudioParam values (exception will not
be thrown)

Since parameters such as gain can be effectively un-bounded.

* remove AudioBuffer .gain attribute
* remove AudioBufferSourceNode .gain attribute
* remove AudioListener .gain attribute

We may need to re-visit the removal of these gain attributes from the API,
since I've found several pages out in the wild using them.  They're not
harmful attributes, just ones I felt could be cleaned up (removed) since
AudioGainNode can be used instead.  We may need to choose a deprectation
path, or simply keep them.

* RealtimeAnalyserNode no longer requires its output be connected to
anything

This was in response to list feedback where it was felt to be unnecessary
to have to connect the output of an analyser to anything, since its purpose
is normally just to "inspect" the audio signal.

* add note in Spatialization sections about potential to get arbitrary
convolution matrixing

Effectively arbitrary convolution matrixing can be used for rich spatial
effects.

* Add Oscillator and WaveTable

This was in response to list feedback.  People found the lack of oscillator
support surprising, since it's an elementary building-block of synthesis.

* Define default values for optional arguments in createJavaScriptNode(),
createChannelSplitter(), createChannelMerger()
* Define default filter type for BiquadFilterNode as LOWPASS

This was just a clarification of default filter type.

* Cleanup AudioNode connect() and disconnect() method descriptions.

API same - update to more modern IDL

* Add AudioNode connect() to AudioParam method.

Allows audio-rate signals to control AudioParams

Received on Tuesday, 24 April 2012 20:07:19 UTC