PannerNode: свойство rolloffFactor
Базовая Широко доступная
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с апреля 2021 года.
Свойство rolloffFactor интерфейса PannerNode — это значение типа double, описывающее, насколько быстро уменьшается громкость по мере удаления источника от слушателя. Это значение используется всеми моделями расстояния. Значение свойства rolloffFactor по умолчанию — 1.
Значение
Число, диапазон которого зависит от distanceModel панера, как показано ниже (отрицательные значения недопустимы):
"linear"-
Диапазон от 0 до 1.
"inverse"-
Диапазон от 0 до
Infinity. "exponential"-
Диапазон от 0 до
Infinity.
Исключения
RangeError-
Выбрасывается, если свойству задано значение, выходящее за допустимый диапазон.
Примеры
В этом примере показано, как разные значения rolloffFactor влияют на то, как громкость тестового тона уменьшается с увеличением расстояния от слушателя:
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);
После выполнения этого кода результирующие волновые формы должны выглядеть примерно так:
Спецификации
| Спецификация |
|---|
| Web Audio API # dom-pannernode-rollofffactor |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
rolloffFactor |
14 | 12 | 25 | 15 | 6 | 18 | 25 | 14 | 6 | 1.0 | 4.4.3 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/rolloffFactor