The refDistance
property of the PannerNode
interface is a double value representing the reference distance for reducing volume as the audio source moves further from the listener – i.e. the distance at which the volume reduction starts taking effect. This value is used by all distance models.
The refDistance
property's default value is 1
.
A non-negative number. If the value is set to less than 0, a RangeError
is thrown.
This example demonstrates how different values of refDistance
affect how the volume of a sound decays as it moves away from the listener. Unlike rolloffFactor
, changing this value also delays the volume decay until the sound moves past the reference point.
const context = new AudioContext();
const NOTE_LENGTH = 6;
const Z_DISTANCE = 20;
const scheduleTestTone = (refDistance, startTime) => {
const osc = new OscillatorNode(context);
const panner = new PannerNode(context);
panner.refDistance = refDistance;
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);
};
scheduleTestTone(1, context.currentTime);
scheduleTestTone(4, context.currentTime + NOTE_LENGTH);
scheduleTestTone(7, context.currentTime + NOTE_LENGTH * 2);
After running this code, the resulting waveforms should look something like this: