BiquadFilterNode: Q property

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.

The Q property of the BiquadFilterNode interface is an a-rate AudioParam, a double representing a Q factor, or quality factor.

Value

An AudioParam. Its defaultValue is 1, and its minValue and maxValue are ±(2128 - 2104), or approximately ±3.403e38. This is the range of single-precision floating-point numbers.

Its actual value range depends on the filter's type:

  • For lowpass and highpass, the Q value is interpreted to be in dB. For these filters the value range is [-Q, Q] where Q is the largest value for which 10Q/20 does not overflow the bound above. This is approximately 770.63678.
  • For bandpass, notch, allpass, and peaking, the Q value is related to the bandwidth of the filter and should be positive, but there's no stricter maximum than the above.
  • It is not used for lowshelf and highshelf filters.

Note: Though the AudioParam returned is read-only, the value it represents is not.

Examples

The following example shows basic usage of an AudioContext to create a Biquad filter node. For more complete applied examples/information, check out our Voice-change-O-matic demo (see app.js lines 108–193 for relevant code).

js
const audioCtx = new AudioContext();

//set up the different audio nodes we will use for the app
const analyser = audioCtx.createAnalyser();
const distortion = audioCtx.createWaveShaper();
const gainNode = audioCtx.createGain();
const biquadFilter = audioCtx.createBiquadFilter();
const convolver = audioCtx.createConvolver();

// connect the nodes together

source = audioCtx.createMediaStreamSource(stream);
source.connect(analyser);
analyser.connect(distortion);
distortion.connect(biquadFilter);
biquadFilter.connect(convolver);
convolver.connect(gainNode);
gainNode.connect(audioCtx.destination);

// Manipulate the Biquad filter

biquadFilter.type = "lowshelf";
biquadFilter.frequency.value = 1000;
biquadFilter.gain.value = 25;

biquadFilter.type = "peaking";
biquadFilter.frequency.value = 1000;
biquadFilter.Q.value = 100;
biquadFilter.gain.value = 25;

Specifications

Specification
Web Audio API
# dom-biquadfilternode-q

Browser compatibility

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Q

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

See also