The rolloffFactor
property of the PannerNode
interface is a double value describing how quickly the volume is reduced as the source moves away from the listener. This value is used by all distance models.The rolloffFactor
property's default value is 1
.
Syntax
var audioCtx = new AudioContext();
var panner = audioCtx.createPanner();
panner.rolloffFactor = 1;
Value
A number whose range depends on the distanceModel
of the panner as follows (negative values are not allowed):
- "
linear
" - The range is 0 to 1.
- "
inverse
" - The range is 0 to
Infinity
. - "
exponential
" - The range is 0 to
Infinity
.
Exceptions
RangeError
- The property has been given a value that is outside the accepted range.
Example
This example demonstrates how different rolloffFactor
values affect how the volume of the test tone decreases with increasing distance from the listener:
const context = new AudioContext();
// all our test tones will last this many seconds
const NOTE_LENGTH = 4;
// this is how far we'll move the sound
const Z_DISTANCE = 20;
// this function creates a graph for the test tone with a given rolloffFactor
// and schedules it to move away from the listener along the Z (depth-wise) axis
// at the given start time, resulting in a decrease in volume (decay)
const scheduleTestTone = (rolloffFactor, startTime) => {
const osc = new OscillatorNode(context);
const panner = new PannerNode(context);
panner.rolloffFactor = rolloffFactor;
// set the initial Z position, then schedule the ramp
panner.positionZ.setValueAtTime(0, startTime);
panner.positionZ.linearRampToValueAtTime(Z_DISTANCE, startTime + NOTE_LENGTH);
osc.connect(panner)
.connect(context.destination);
osc.start(startTime);
osc.stop(startTime + NOTE_LENGTH);
};
// this tone should decay fairly quickly
scheduleTestTone(1, context.currentTime);
// this tone should decay slower than the previous one
scheduleTestTone(0.5, context.currentTime + NOTE_LENGTH);
// this tone should decay only slightly
scheduleTestTone(0.1, context.currentTime + NOTE_LENGTH * 2);
After running this code, the resulting waveforms should look something like this:
[[File:../../../../../../media.prod.mdn.mozit.cloud/attachments/2018/10/11/16244/183fad0872645fab00ed2ebbf3d4661f/Screen_Shot_2018-10-11_at_23.22.37.png|A waveform visualisation of three oscillator tones produced in Web Audio. Each oscillator moves away from the listener at the same speed, but with different rolloffFactors affecting the resulting volume decay.]]
Specifications
Specification | Status | Comment |
Web Audio APIThe definition of 'rolloffFactor' in that specification. | Working Draft |
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
rolloffFactor
|
Chrome
Full support 14 |
Edge
Full support 12 |
Firefox
Full support 25 |
IE
No support No |
Opera
Full support 15 |
Safari
Full support 6 |
WebView Android
Full support Yes |
Chrome Android
Full support 18 |
Firefox Android
Full support 26 |
Opera Android
Full support 14 |
Safari iOS
? |
Samsung Internet Android
Full support 1.0 |
Legend
- Full support
- Full support
- No support
- No support
- Compatibility unknown
- Compatibility unknown
See also
PannerNode.rolloffFactor by Mozilla Contributors is licensed under CC-BY-SA 2.5.