RE: Updates to Web Audio API editor's draft

Quick feedback for the update:


1.       For activeSourceCount, if it only includes AudioBufferSourceNode, activeBufferSourceCount may be better? Or should also include Oscillator and ElementSourceNode.

2.       For Oscillator's type, currently CUSTOM is the last one, will it be better to let CUSTOM to be 0 so we can extend the types in future more easily?

There are two typos in the spec mentioned before:
1.      // For implementation (in?) WebKit this will be:
2.      analsis(should be analysis?) in RealtimeAnalyserNode attributes description of fftSize.


Best Regards

James


From: Chris Rogers [mailto:crogers@google.com]
Sent: Wednesday, April 25, 2012 4:07 AM
To: public-audio@w3.org
Subject: 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 Thursday, 26 April 2012 02:33:24 UTC