F2F Mar 2013
The Audio Working Group had a two-days face-to-face meeting in San Francisco on 26 and 27 March, 2013. This page keeps a record of our discussion and an archive of the logistical details.
Minutes
Web Audio API V1 / Feature freeze
First meaty agenda of the day was to discuss whether/how we could split the web audio API spec, in order to make it easier to implement. We looked at a strawman split worked on by people at Mozilla from features known to be useful to game developers (one of our primary constituencies, see Use Cases & Requirements document)
The strawman list was (Version 1)
- AudioContext
- OfflineAudioContext (at risk)
- GainNode
- AudioBuffer
- AudioBufferSourceNode
- MediaElementAudioSourceNode
- MediaStreamAudioSourceNode
- ScriptProcessorNode
- PannerNode
- DynamicCompressorNode
- BiquadFilterNode
- DelayNode
(Not sure)
- ConvolverNode
- WaveShaperNode
- OscillatorNode
(Post v1)
- AnalyserNode
- ChannelSplitterNode
- ChannelMergerNode
The group could not reach consensus on whether this would be a valuable split. There was however consensus on three things:
- all the features currently in the spec are valuable and would be useful to have sooner or later
- removing one or two types of node will not increase the ease of implementation dramatically
- we should put our effort into better specifying all the types of nodes and implementation will be much easier
Web Audio API walk through and live edit
Resolutions:
- Resolution: WebIDL should be construed as normative
- Resolution: Implementations are to omit functions from DOM bindings that are not implemented (e.g. createXXXNode where XXX isn't supported)
Issues generated/modified :
- Remove empty AudioSourceNode interface https://www.w3.org/Bugs/Public/show_bug.cgi?id=21511
- Introduction: link "use cases" to the stable Use Cases document https://www.w3.org/Bugs/Public/show_bug.cgi?id=21512
- Features list need updating to reflect current contents of spec https://www.w3.org/Bugs/Public/show_bug.cgi?id=21513
- API Overview is missing some interfaces https://www.w3.org/Bugs/Public/show_bug.cgi?id=21514
- Conformance section: need to note use of MUST that is "RFC-legal" [...] https://www.w3.org/Bugs/Public/show_bug.cgi?id=21515
- Remove "Terminology and Algorithms" section https://www.w3.org/Bugs/Public/show_bug.cgi?id=21516
- Remove AudioContext constructor code example https://www.w3.org/Bugs/Public/show_bug.cgi?id=21517
- Need way to determine "performance.now()" time of current audio output https://www.w3.org/Bugs/Public/show_bug.cgi?id=20698
- Deprecate AudioContext.createBuffer https://www.w3.org/Bugs/Public/show_bug.cgi?id=21518
- decodeAudioData: optional 4th argument https://www.w3.org/Bugs/Public/show_bug.cgi?id=21519
- decodeAudioData Prose: avoid video containers that have an audio track https://www.w3.org/Bugs/Public/show_bug.cgi?id=21520
- Specify all exception types https://www.w3.org/Bugs/Public/show_bug.cgi?id=21521
- Make AudioContext and AudioNode Lifetime sections informative https://www.w3.org/Bugs/Public/show_bug.cgi?id=21523
- AudioDestinationNode does not always talk to audio hardware https://www.w3.org/Bugs/Public/show_bug.cgi?id=21525
- Mandate a useful accepted sampling rate ranges for buffers created through AudioContext.createBuffer(mentioned, TBD) https://www.w3.org/Bugs/Public/show_bug.cgi?id=21223
- Remove sentence: "The decodeAudioData() method is preferred over the createBuffer()" https://www.w3.org/Bugs/Public/show_bug.cgi?id=21526
- Add normative reference to XHR spec https://www.w3.org/Bugs/Public/show_bug.cgi?id=21527
- Modifying the ArrayBuffer passed to decodeAudioData https://www.w3.org/Bugs/Public/show_bug.cgi?id=21528
- OfflineAudioContext should be event target https://www.w3.org/Bugs/Public/show_bug.cgi?id=21529
- how do multiple offline/online contexts interact https://www.w3.org/Bugs/Public/show_bug.cgi?id=21530
- Allow Shared audio buffers between contexts https://www.w3.org/Bugs/Public/show_bug.cgi?id=21531
- OfflineAudioContext renders as quickly as possible (not real time) https://www.w3.org/Bugs/Public/show_bug.cgi?id=21532
- Proposed: recorderNode https://www.w3.org/Bugs/Public/show_bug.cgi?id=21533
- AudioNode Interface - text for Fan-In is out of date https://www.w3.org/Bugs/Public/show_bug.cgi?id=21534
- AudioNode - block size limits https://www.w3.org/Bugs/Public/show_bug.cgi?id=21535
- AudioNode Attributes - remove mention of AudioSourceNode https://www.w3.org/Bugs/Public/show_bug.cgi?id=21537
- Add detail of connecting audio node to non audio node https://www.w3.org/Bugs/Public/show_bug.cgi?id=21538
- Define the behaviour when disconnect called on an audio node connected to an audio param https://www.w3.org/Bugs/Public/show_bug.cgi?id=21539
- Channel count missing in IDL for AudioNode https://www.w3.org/Bugs/Public/show_bug.cgi?id=21540
- Move information on multi channel to audio node definition https://www.w3.org/Bugs/Public/show_bug.cgi?id=21541
- Review 32 channel limitation on scriptProcessor, buffer and destination node https://www.w3.org/Bugs/Public/show_bug.cgi?id=21542
- Specify how DelayNode deals with changes of inputs and buffers while live https://www.w3.org/Bugs/Public/show_bug.cgi?id=21543
- AudioParam - min/maxValue, intrinsic value, computedValue https://www.w3.org/Bugs/Public/show_bug.cgi?id=21545
- Clarify "dezippering" for AudioParam https://www.w3.org/Bugs/Public/show_bug.cgi?id=21546
- AudioParam - add explanation of a/k rate to cross reference in node definition https://www.w3.org/Bugs/Public/show_bug.cgi?id=21547
- Record all documentation that is considered developer documentation https://www.w3.org/Bugs/Public/show_bug.cgi?id=21548
- AudioProcessingEvent - remove node attribute https://www.w3.org/Bugs/Public/show_bug.cgi?id=21549
- PannerNode - include informative note on HRTF, point to reference/open examples https://www.w3.org/Bugs/Public/show_bug.cgi?id=21550
- PannerNode - add information on why the panner is hard coded to 2 channel only https://www.w3.org/Bugs/Public/show_bug.cgi?id=21551
- BiquadFilterNode is underdefined https://www.w3.org/Bugs/Public/show_bug.cgi?id=17363
- BiquadFilterNode - Missing default values https://www.w3.org/Bugs/Public/show_bug.cgi?id=21562
Web Midi
Chris Wilson walked us through the history of this spec, how he realised that our work on web audio would be a great opportunity to connect controllers (cheap and plenty) and build synthethisers, music apps on the web. There are concerns that the API will not be high on implementation lists but in the meantime, there is a shim (working with the Jazz midi plugin https://github.com/cwilso/WebMIDIAPIShim ).
Testing
We established that our goal for the time being was to focus on testing the quality (and testability) of the spec and interoperability of implementations. Testing "quality of implementation" (which is a very hard question for audio) or testing how our APIs integrate with the rest of the web platform is somewhat out of scope at the moment.
A short discussion was followed by demos:
- Chris Rogers gave a tour of the webkit tests and how they are organised
- Chris Lowis showed his current effort to create interface tests from IDL
- Ehsan showed the Mozilla test framework
It was noted that the Mozilla and Webkit test harnesses are somewhat similar, and that it should be reasonably easy to translate these tests into the w3c harness. The fact that some of the webkit tests require OfflineAudioContext (a feature which Moz considers potentially at risk) was raised but not solved.
Guest session
We split our guest session in two:
- Jory from the html5audio blog/twitter came to talk about interactions with the games dev community, and talked about games dev engines - libraries which support web audio. Something similar to http://threejs.org/ would be valuable.
- Erik and Neil from Khronos also came to talk about the relationship between OpenSL and Web Audio API. The group working on OpenSL has been listening to interest for a web port. They also worked on use cases, which largely overlapped with the ones our group built. There was rapid agreement that it would be a bad thing to have a "webSL" and "web audio API" compete in this space, but it could be a good thing if a web version of OpenSL ES built upon the web audio API, abstracting away the node/graph model.
vendor prefixes & "deprecated" interface
Back to discussion of "big issues" with the web audio API, we tackled the question of vendor prefixed and "deprecated" interfaces (such as noteOn and noteOff). The group first leaned towards changing the deprecation text to remove the recommendation to implement the deprecated methods but after further discussion and looking into more details about the current state of implementation and usage, we reached the following resolution:
RESOLUTION: We'll support the two interfaces in the spec, have the noteOn etc in a separate section. Change the deprecation methods to "alternate names" and explain that they exist in the spec for historical reasons.
There was also general consensus that vendor prefixing should be taken away from documentation and articles as soon as implementations catch up. Ditto for "new names" and interfaces, which will be prioritised in all documentation.
Web workers
We looked at the part of MSP dealing with processing in workers ( http://www.w3.org/TR/streamproc/#stream-mixing-and-processing ) and agreed to add a way to use ScriptProcessorNode with workers, in a similar fashion.
The discussion continues on bugzilla: https://www.w3.org/Bugs/Public/show_bug.cgi?id=17415#c94
Next call date
Given the time it will take to address and follow up all the issues raised during the meeting, as well as a few other calendar considerations, we agreed our next teleconference will be on April 25th, same time as usual.
TPAC
Before adjourning, we had a short discussion about the upcoming TPAC in Shenzen, China. The group did not yet decide whether it will meet there, but there was general agreement that whether or not we meet, some presence at the event for developer advocacy would be a good thing.
Agenda
For reference, the initial agenda was:
Tuesday AM : spec issues and bug fixes
- 9:00 - 9:30 Welcome, Process
- 9:30 - 11:00 Web Audio V1 / feature freeze
- 11:00 - 12:45 Web Audio API read-through, live edit
Tuesday PM : spec issues and bug fixes
- 13:30 - 15:00 Web Audio walk through / live edit
- find and fix small issues
- build initial test coverage list
- [BREAK]
- 15:30 - 17:00 Web Audio Issues Triage pre-LC
- Go through all the issues (in Bugzilla), and:
- Decide severity / priority
- Decide whether issue is a LC blocker
- If obvious, fix on the spot
- If clear path forward, assign (not necessarily to editor)
- Go through all the issues (in Bugzilla), and:
- [BREAK]
- 17:30 - 19:00 Web Midi LC discussion
- Look at state of spec, decide whether/when to go to LC.
- 19:00 Dinner
Wednesday AM : Testing Workshop
- 9:00 - 12:00 Testing workshop
- Test intro
- looking at webkit tests
- Everyone writes tests from initial feature coverage list
Wednesday PM
- 1pm - 3pm: guest session
- 3pm - 5pm: overflow / more testing
Logistics
Who
Registered participants for the meeting are:
- Chris Lowis (BBC, co-chair)
- Olivier Thereaux (BBC, co-chair)
- Thierry Michel (W3C)
- Doug Schepers (W3C)
- Chris Lilley (W3C)
- Joe Berkovitz (Noteflight)
- James Wei (Intel)
- Chris Wilson (Google)
- Matthew Paradis (BBC)
- Jer Noble (Apple)
- Chris Rogers (Google)
- Giridhar Mandyam (Qualcom)
- Ehsan Akhgari (Mozilla)
- Takashi Toyoshima (Google/Chromium)
Special guests / Observers :
- Koji Oishi (Korg)
- Ryoya KAWAI (Yamaha)
- Erik Noreke (OpenSL Chair)
Where
We will be hosted by Google in their San Francisco, California offices. map
345 Spear Street Floors 2-4 San Francisco, CA 94105 Phone: +1 415-736-0000
Getting There
It is strongly advised to people flying it to land at San Francisco Airport rather than San Jose, which is a fairly long car ride away.
The best way to get to the city from the airport is to take the (cheap and reliable) public transport - BART or CalTrain. Travelling by car is not recommended. Parking may be a serious issue in SF.
From Chris Rogers:
« James, there is no Google parking lot or free parking, so you have to park yourself. My manager advises me that there is a very close all-day parking lot] on Spear street just past Harrison street and almost right under the Bay Bridge.»
When
26 and 27 March 2013
We will start the first day at 09:00AM. Please get to the venue for 9AM sharp so we can all clear registration/security together. Bring a photo ID.
We may end day 2 early if several participants need to go catch a flight. Contact the chairs if you are in that case.
Registration
Registration is closed. Please contact Olivier if you would like to add a last-minute registration.
Accommodation
There are a number of hotels in central SF, but the proximity of GDC at the Moscone Center means that a number of hotels will be packed. Airbnb has been recommended as a viable alternative.