Открыть сервисСервис

OpenAL — открытый API пространственного звука

OpenAL (Open Audio Library) — кроссплатформенный программный интерфейс (API) для обработки и воспроизведения трёхмерного (пространственного) звука в приложениях. Разработан для имитации акустического окружения: положения источников звука, слушателя, затухания, эффектов отражения и фильтрации. Широко применяется в компьютерных играх, симуляторах и мультимедийных приложениях.

История

Первоначально OpenAL разработан компанией Loki Software в конце 1990-х годов для нужд игровой индустрии, при поддержке Creative Labs. Идея заключалась в создании открытого аналога EAX (Environmental Audio Extensions) — проприетарного набора расширений для звуковых карт Sound Blaster. В 2000 году исходный код OpenAL был опубликован под свободной лицензией. После закрытия Loki Software в 2002 году поддержка проекта перешла к Creative Labs, которая продолжила развитие спецификации и эталонной реализации.

Спецификация OpenAL 1.1 утверждена в 2007 году и остаётся последним стабильным стандартом. Существует также расширенная ветка ALC_EXT_EFX, добавляющая эффекты реверберации и хоруса.

Принцип работы

OpenAL построена по принципу виртуального акустического пространства. В сцене определяются:

  • Слушатель (listener) — точка отсчёта, соответствующая позиции «уха» пользователя;
  • Источники (sources) — объекты, излучающие звук, каждый со своей позицией, скоростью и параметрами затухания;
  • Буферы (buffers) — объекты, содержащие PCM-данные звуковых волн.

Приложение задаёт координаты слушателя и источников в трёхмерном пространстве, а библиотека вычисляет итоговое звуковое поле с учётом расстояния, направления и эффектов окружения. Поддерживаются модели расстояния (inverse, linear, exponent), конусные источники (звук направленного действия), стерео- и многоканальные буферы.

Реализации

Эталонная реализация (OpenAL Soft) — свободная программная реализация спецификации, разрабатываемая как open-source-проект. Она поддерживает Windows, Linux, macOS, FreeBSD, Android, iOS и другие платформы, выводит звук через ALSA, PulseAudio, WASAPI, CoreAudio и иные системы.

Коммерческая реализация от Creative Labs долгое время была основной на Windows и поставлялась вместе со звуковыми картами Sound Blaster. С 2000-х годов наблюдается постепенный переход индустрии на альтернативные API — прежде всего FMOD и Wwise, а также встроенные средства операционных систем.

Применение

OpenAL активно использовалась в компьютерных играх на движках Quake, Unreal Engine, id Tech, Source и многих других. Среди известных проектов, применявших OpenAL, — серии Quake, Doom 3, World of Warcraft, Minecraft (Java-версия), Second Life.

В России и странах СНГ OpenAL встречается в локализациях и модификациях игр, а также в open-source-проектах. Библиотека входит в состав многих игровых движков и мультимедийных фреймворков.

Связанные технологии

ТехнологияОсобенности
EAXПроприетарные расширения Creative Labs для эффектов окружения
DirectSound / XAudio2Звуковые API Microsoft, встроенные в Windows
FMODКоммерческий кроссплатформенный звуковой движок
WwiseКоммерческий аудио-мидлвар для игр
PortAudioКроссплатформенный API для ввода-вывода звука
SoXУтилита обработки аудио

Пример кода

Минимальный пример инициализации и воспроизведения звука на OpenAL (псевдокод на C):

```c ALCdevice device = alcOpenDevice(NULL); ALCcontext context = alcCreateContext(device, NULL); alcMakeContextCurrent(context);

ALuint buffer, source; alGenBuffers(1, &buffer); alBufferData(buffer, AL_FORMAT_MONO16, data, size, 44100);

alGenSources(1, &source); alSourcei(source, AL_BUFFER, buffer); alSourcePlay(source); ```

Критика и ограничения

К числу недостатков OpenAL относят устаревание спецификации (последняя версия 1.1 датирована 2007 годом), отсутствие поддержки современных форматов кодирования (например, Opus), а также фрагментацию между коммерческой и open-source-реализациями. В результате многие студии перешли на FMOD, Wwise или собственные звуковые подсистемы.

Источники:

Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru