Spec-Zone.ru › Web APIs

PannerNode: свойство refDistance

Базовая реализация Широко доступно

Это функция хорошо отработана и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с апреля 2021 года.

  • Подробнее
  • Полная совместимость
  • Отправить обратную связь

Свойство refDistance интерфейса PannerNode — это число с плавающей запятой, представляющее эталонную дистанцию для уменьшения громкости по мере удаления источника звука от слушателя — то есть дистанцию, на которой начинается снижение громкости. Это значение используется всеми моделями дистанции.

Значение свойства refDistance по умолчанию равно 1.

Значение

Неотрицательное число. Если значение установлено меньше 0, выбрасывается исключение RangeError.

Исключения

RangeError

Выбрасывается, если свойству задано значение, выходящее за допустимый диапазон.

Примеры

Этот пример демонстрирует, как разные значения refDistance влияют на то, как громкость звука уменьшается по мере удаления от слушателя. В отличие от rolloffFactor, изменение этого значения также задерживает уменьшение громкости до тех пор, пока звук не преодолеет эталонную точку.

const context = new AudioContext();
// all our test tones will last this many seconds
const NOTE_LENGTH = 6;
// 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 refDistance
// 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 = (refDistance, startTime) => {
  const osc = new OscillatorNode(context);

  const panner = new PannerNode(context);
  panner.refDistance = refDistance;

  // 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 immediately and fairly quickly
scheduleTestTone(1, context.currentTime);
// this tone should decay slower and later than the previous one
scheduleTestTone(4, context.currentTime + NOTE_LENGTH);
// this tone should decay only slightly, and only start decaying fairly late
scheduleTestTone(7, 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 refDistances affecting the resulting volume decay.

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

Спецификация
Web Audio API
# dom-pannernode-refdistance

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на iOS Samsung Internet WebView Android
refDistance 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/refDistance

Spec-Zone.ru

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