ACTION-10: Develop a node-based test with a complex audio graph
Develop a node-based test with a complex audio graph
- State:
- open
- Person:
- Chris Rogers
- Due on:
- September 1, 2010
- Created on:
- August 25, 2010
- Related emails:
- No related emails
Related notes:
Develop a node-based test that uses a suitably complex audio routing graph.
Example: 4 audio sources are split into 8 channels, each channel is connected to a new processing node such as an IIR filter, gain-control, etc; these nodes are then merged back down into a stereo signal and played out through the speakers.
This code must work with the Webkit binaries and will be re-created in Firefox with JavaScript by another member of the group. The purpose of this task is to demonstrate the power of native audio processing vs. JavaScript in a high-performance situation. This results of this test will be measured.
Alistair, I think that a good starting point for this type of comparison would be the box2d demo on my samples page:
http://chromium.googlecode.com/svn/trunk/samples/audio/index.html
This demo mixes multiple sources because several objects can be colliding at the same time. It also has gain change, a low-pass filter, and spatialized panning per-source. And it has a convolution reverb effect with the send gain to the reverb varying per-source.
Performance can be measured based on latency, audio glitching, and smoothness of the graphics.
I know that Corban had gotten this partially working with his audio.js porting layer which he announced on the mailing list here:
http://lists.w3.org/Archives/Public/public-xg-audio/2010Aug/0010.html
But I don't think he implemented the gain (volume) change and filter cutoff which varies based on how hard the objects impact. I also don't think that spatialized panning or the ambience (convolution) was yet implemented. But I think he had basic unity-gain mixing working.
Display change log.