Какова разрядность Web Audio API?

Какова разрядность аудиоконтекста Web Audio API?

Например, если вы хотите создать пользовательскую кривую для использования с WaveShaperNode, какой подходящий размер Float32Array?

Я видел разработчиков, использующих 65536 для 16-битного звука, но я не могу найти никакой информации в спецификации.


person zya    schedule 18.09.2013    source источник


Ответы (1)


На самом деле внутри система использует Float32, мантисант которого составляет 23 бита. Использование с плавающей запятой позволяет избежать большинства проблем с обрезкой, обеспечивая при этом хорошую точность. Это означает, что технически нет смысла пытаться создать кривую формы волны больше, чем 8388608 (2^23) отсчетов; но на самом деле 16-битная кривая имеет довольно высокое разрешение (отношение сигнал/шум ~96 дБ). Во многом причина использования 32-битной обработки звука заключалась в том, чтобы избежать проблем с отсечкой, а не в улучшении SNR ввода/вывода; использование плавающей запятой значительно помогает в этом. WaveShaperNode специально обрезает до [-1, +1] (кстати, большинство узлов этого не делают).

Итак, вкратце - просто используйте 16-бит (65535), но убедитесь, что ваш сигнал находится в диапазоне -1, +1.

person cwilso    schedule 19.09.2013