- From: Chris Rogers <crogers@google.com>
- Date: Thu, 9 Jun 2011 12:06:19 -0700
- To: public-audio@w3.org
- Message-ID: <BANLkTi=XhsTnQmd__Lpv2ci961J34T0p5g@mail.gmail.com>
I describe "efficient biquad filters for lowpass, highpass, and other common
filter" in my specification proposal here:
http://chromium.googlecode.com/svn/trunk/samples/audio/specification/specification.html#Features-section
Up to this point there have been undocumented LowPass2FilterNode
and HighPass2FilterNode AudioNodes which
are created with these two AudioContext methods:
interface AudioContext {
   .
   .
   LowPass2FilterNode createLowPass2Filter();
   HighPass2FilterNode createHighPass2Filter();
    .
    .
    .
}
Since I believe this approach doesn't scale well to the larger family of
filter types, a BiquadFilterNode seems better:
I discuss the possibility of BiquadFilterNode in my specification proposal
in the API Overview section:
http://chromium.googlecode.com/svn/trunk/samples/audio/specification/specification.html#APIOverview-section
I've had a go at implementing this with a new createBiquadFilter() method
and three parametric BiquadFilterNode AudioParams: frequency, Q, gain
interface AudioContext {
   .
   .
   BiquadFilterNode createBiquadFilter();
    .
    .
    .
}
BiquadFilterNode : AudioNode {
    // Filter type.
    const unsigned short LOWPASS = 0;
    const unsigned short HIGHPASS = 1;
    const unsigned short BANDPASS = 2;
    const unsigned short LOWSHELF = 3;
    const unsigned short HIGHSHELF = 4;
    const unsigned short PEAKING = 5;
    const unsigned short NOTCH = 6;
    const unsigned short ALLPASS = 7;
    attribute unsigned short type;
    readonly attribute AudioParam frequency; // in Hertz
    readonly attribute AudioParam Q; // Quality factor
    readonly attribute AudioParam gain; // in Decibels
};
An implementation of this is available in the latest Chrome canary builds.
I hope to update the specification proposal soon with this IDL as well as
some more detailed background.
Chris
Received on Thursday, 9 June 2011 19:06:44 UTC