Может ли HTML5 Web Audio быть такого же высокого качества, как DAW?
Этот вопрос в основном предназначен для аудио инженеров.
Я смотрел несколько видео здесь и здесь о API Web Audio в javascript и о том, как люди используют его для создания музыки. Мне было интересно, можно ли использовать этот API для создания качества звука на уровне существующих рабочих станций цифрового аудио (DAW), таких как Ableton, FL Studio, Reason, Logic и т. Д.
Или есть какое-то внутреннее ограничение для браузера? Я думаю, что VST не могут быть использованы API-интерфейсом Web Audio, но независимо от того, есть ли VST, что может сделать аудио-движок, используемый DAW, чего не может сделать Web Audio с точки зрения качества? Или звук может быть таким же хорошим. Я считаю, что сэмплы можно воспроизводить так же эффективно (?), Но, возможно, синтез будет ограничен?
2 ответа
Может ли HTML5 Web Audio быть такого же высокого качества, как DAW?
Да! Браузеры используют высококачественный звуковой движок с семплами с плавающей запятой.
Кроме того, сам API является одним из самых простых в использовании и достаточно расширяемым. Он также поддерживает очень конкретные сроки контроля.
Я думаю, что VST не могут быть использованы Web Audio API
Это правильно.
но может быть, синтез будет ограничен?
Здесь нет реальных фундаментальных ограничений. Если вы можете закодировать это, вы можете сделать это.
Теперь есть пара вещей, о которых вы не спрашивали, но о которых все же должны знать. Первая проблема заключается в задержке. Браузеры не используют ASIO или что-то подобное, поэтому, если вы используете API-интерфейс Web Audio для обработки и возврата аудио с низкой задержкой, у вас будет плохое время. В Chrome вы можете улучшить это, разрешив Chrome открывать аудиоустройство в эксклюзивном режиме.
Другой проблемой является количество каналов ввода / вывода. Это обычно максимально на 8 каналов. Хотя внутри вы можете делать практически все, что захотите. Ограничением является браузер, а не сам API Web Audio.
Есть несколько высококачественных аудиоприложений, которые могут работать в браузере, но вы можете воспроизводить звук в реальном времени только в браузерах на основе Chromium, и даже тогда вы не можете получить ввод в реальном времени.
Только Chromium поддерживает высокоприоритетные аудиопотоки в Audio Worklets, что необходимо для стабильного звука в реальном времени.
WebMIDI API работает только в основном потоке, что делает его бесполезным для ввода в реальном времени.
WebUSB API является многопоточным, но не позволяет обмениваться данными с аудиоустройствами (включая MIDI-контроллеры (и звуковые карты)).
События клавиатуры, касания и мыши должны (в настоящее время) обрабатываться основным потоком.
Короче говоря, у вас нет (практического) способа управлять звуком в реальном времени в Chromium, и вы даже не можете делать звук в реальном времени (надежно) на любой другой платформе.
Примечание . Добавление поддержки рабочих процессов WebMIDI было запрошено девять лет назад, и проблема все еще остается открытой (только для добавления ее в спецификацию).
Примечание . Electron позволит вам получить доступ к защищенным классам USB-устройств (аудио/MIDI), но поддержка Electron WebUSB еще не завершена. NWJS имеет поддержку WebUSB, но не имеет доступа к защищенным классам устройств (хотя я недавно открывал проблему). В конечном итоге WebUSB будет работать на этих платформах, но вам все равно потребуется реализовать веб-драйверы для ваших контроллеров (даже совместимых с классом), так что это не будет идеальным решением, даже если оно заработает.