Spec-Zone.ru › Web APIs

BaseAudioContext: метод createPeriodicWave()

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

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

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Метод createPeriodicWave() интерфейса BaseAudioContext используется для создания PeriodicWave. Эта волна используется для определения периодической формы волны, которая может быть использована для формирования выходного сигнала OscillatorNode.

Синтаксис

createPeriodicWave(real, imag)
createPeriodicWave(real, imag, constraints)

Параметры

real

Массив косинусных членов (традиционно A-члены).

imag

Массив синусных членов (традиционно B-члены).

Массивы real и imag должны иметь одинаковую длину, иначе будет выброшено исключение.

constraints Необязательно

Объект-словарь, который определяет, следует ли отключать нормализацию. Если не указано, нормализация включена по умолчанию. Он принимает один параметр:

disableNormalization

Если установлено значение true, нормализация для периодической волны отключена. По умолчанию false.

Примечание: Если нормализация включена, результат будет иметь максимальное абсолютное значение пика 1.

Возвращаемое значение

Объект PeriodicWave.

Примеры

Следующий пример иллюстрирует простое использование createPeriodicWave(), чтобы создать объект PeriodicWave, содержащий простую синусоиду.

const real = new Float32Array(2);
const imag = new Float32Array(2);
const ac = new AudioContext();
const osc = ac.createOscillator();

real[0] = 0;
imag[0] = 0;
real[1] = 1;
imag[1] = 0;

const wave = ac.createPeriodicWave(real, imag, { disableNormalization: true });

osc.setPeriodicWave(wave);

osc.connect(ac.destination);

osc.start();
osc.stop(2);

Это работает, потому что звук, содержащий только основной тон, по определению является синусоидой.

Здесь мы создаем PeriodicWave с двумя значениями. Первое значение — смещение по оси DC, то есть значение, с которого начинается осциллятор. Значение 0 здесь хорошо, так как оно задает кривую посередине диапазона [-1.0; 1.0]. Второе и последующие значения — синусоидальные и косинусоидальные компоненты, аналогичные результату преобразования Фурье, которое преобразует значения в области времени в значения в области частот. Здесь, с помощью createPeriodicWave(), вы указываете частоты, а браузер выполняет обратное преобразование Фурье, чтобы получить буфер в области времени для частоты осциллятора. В этом примере мы установили только один компонент с полным объёмом (1.0) на основном тоне, поэтому получаем синусоиду. Имейте в виду, что основной тон соответствует частоте осциллятора (которая по умолчанию 440 Hz). Таким образом, изменение частоты осциллятора фактически смещает частоту этой периодической волны вместе с ней.

Коэффициенты преобразования Фурье должны быть заданы в возрастающем порядке (т. е. (a+bi)ei,(c+di)e2i,(f+gi)e3i\left(a+bi\right)e^{i} , \left(c+di\right)e^{2i} ,\left(f+gi\right)e^{3i} и т. д.) и могут быть положительными или отрицательными. Простой способ вручную получить такие коэффициенты (хотя не самый лучший) — использовать графический калькулятор.

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

Спецификация
Web Audio API
# dom-baseaudiocontext-createperiodicwave

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

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
createPeriodicWave 30 12 25 17 8 30 25 18 8 2.0 4.4
constraints_disableNormalization_parameter 46 12 49 33 14.1 46 49 33 14.5 5.0 46

См. также

  • Использование Web Audio API

© 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/BaseAudioContext/createPeriodicWave

Spec-Zone.ru

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