Spec-Zone.ru › Web APIs

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);

После выполнения этого кода результирующие волновые формы должны выглядеть примерно так:

A waveform visualization 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.

Спецификации

Спецификация
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

См. также

  • Использование Web Audio API
  • Основы пространственного звучания в Web Audio

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API