OpenAL


OpenAL (англ. Open Audio Library) — кроссплатформенный интерфейс программирования приложений (API) для работы с аудиоданными. Ключевой особенностью является работа со звуком в 3D-пространстве и использование эффектов EAX. Поддерживается компанией Creative.

OpenAL создан фирмой Loki Software как инструмент для их бизнеса — портирование игр с Microsoft Windows на GNU/Linux. После закрытия компании проект некоторое время разрабатывался сообществом свободного ПО — оно добавило функциональность звукового чипсета, встроенного в NVIDIA nForce. Сегодня проект размещён на сервере компании Creative Technology, и по большей части разрабатывается ей.

После выхода спецификации версии 1.1 оригинальная реализация OpenAL была закрыта, вместо неё предлагается использовать проприетарную реализацию, развиваемую компанией Creative. В ответ на это сообщество свободного ПО создало собственную реализацию, основанную на сохранившихся исходных кодах исходной реализации.[2]

Хотя хартия OpenAL гласит, что у проекта должен быть «Наблюдательный совет за архитектурой» (ARB), аналогичный проекту OpenGL ARB, до сих пор ни одна организация не взяла на себя обязанность сформировать стандарт технических спецификаций OpenAL. Спецификации OpenAL существуют в черновом варианте, обсуждаются разработчиками по электронной почте и в общедоступных списках рассылки.

Основные функции библиотеки OpenAL — исходные объекты, аудиобуферы, и единственный слушатель. Исходные объекты включают в себя указатель на буфер, скорость, позицию, направление и интенсивность звука. Слушатель содержит скорость, позицию, направление и общее усиление звука в целом. Буферы содержат аудиоданные в формате PCM в 8-ми либо 16-битном варианте, а также в моно или стерео. Функция рендеринга звука производит необходимые вычисления, такие как определение расстояния, эффекта Доплера, и так далее.

Для конечного пользователя результат обработки этих компонентов OpenAL даёт совершенно естественное звучание при перемещении персонажей в трёхмерном виртуальном мире. А программист может легко задействовать OpenAL в своей готовой трёхмерной OpenGL-программе.