-
Notifications
You must be signed in to change notification settings - Fork 167
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
AnalyserNode design issues #86
Comments
It seems that the clarifications suggested by Philip represent a set of non-breaking-change edits to the spec that would be useful. |
Related: #377 |
Fix plan for this issue: "It is undefined how multi-channel input maps to time/frequency data, which are both single arrays.": Added explicit down-mixing operation to FFT computation. "The layout/order of the frequency bins is undefined. Are the negative frequencies included?": "If frequencyBinCount == fftSize / 2, why is it exposed at all?" "minDecibels/maxDecibels are undefined. Do minDecibels/maxDecibels control the output of getByteFrequencyData, or do they describe it? Are the parameters only used for getByteFrequencyData()? If so, why are they not arguments to that method? How does the Uint8 range (0-255) map to the decibel range (minDecibels-maxDecibels)?" "What happens if fftSize is set to something that is not a power of two? Are there any limits? Are 1 and 2^32 both valid values?" "If the fftSize is initially set to 1, then changed to 2^32, what should the getters do? To not restrict this requires unbounded buffering to handle an arbitrarily large fftSize." Previously addressed. "It's not at all clear why there are Uint8Array getters, instead of simply a frequency domain and time domain getter, both as Float32Array." |
If anyone feels strongly that |
On Wed, Oct 14, 2015 at 9:32 AM, Joe Berkovitz notifications@github.com
I'm guessing Chris Rogers added this to make visualizations using the time
Ray |
Fix #86 by clarifying channel down-mixing.
Just wanted to note that this has memory and/or cpu implications because you either have to keep all the channels in memory just in case someone calls getFoo (at which point you downmix), or you always have to downmix just in case. |
Audio-ISSUE-74 (RealtimeAnalyserNode): RealtimeAnalyserNode design [Web Audio API]
http://www.w3.org/2011/audio/track/issues/74
Raised by: Philip Jägenstedt
On product: Web Audio API
The RealtimeAnalyserNode has so many problems that we will put them into a single issue.
The use case appears to be probing/polling the signal for visualization, where it does not matter if all of the signal is available. It also doesn't modify the output, so it need not delay the processing at all, like JavaScriptAudioNode would.
The problems identified with the current spec are:
For the use case we're aware of, this can be simplified greatly. We'd prefer an interface that just allows probing the most recent time domain data as an AudioBuffer and leave it up to the Web developer to perform the FFT by other means. A fast, generic FFT function can be very useful not only for visualization, but also for synthesis, filters etc. In the absence of a native FFT implementation (which could be part of another specification - perhaps add it to the Math object), a custom JavaScript FFT implementation will most likely suffice for most applications.
For example:
Depending on how https://www.w3.org/2011/audio/track/issues/28 is resolved, we could simply have an attribute "AudioBuffer data" that is guaranteed to be stable while the script is executing, to avoid the use of a getter function altogether.
The text was updated successfully, but these errors were encountered: