Содержание
Что за программа «OpenAL»?
Краткое содержание статьи:
В арсенале каждого пользователя есть с десяток программ, жизнь без которых была бы гораздо сложнее.
Какие-то предназначены для прослушивания музыки и просмотра фильмов, при помощи других можно запустить любимые игры, а часть программ пригодится в работе любому специалисту.
Но существуют и более редкие разработки, с которыми рядовой пользователь за всю жизнь может ни разу не столкнуться. К примеру, OpenAL, что это за программа знает лишь небольшой круг «посвященных».
Игровая индустрия прошлого века
Когда-то для создания действительно хорошей или даже культовой игры необходимо было не так уж много:
- Атмосфера.
- Локации огромных размеров.
- Детально прорисованные противники.
- Хорошо продуманные союзные персонажи.
- Немножко души.
Заключать сделку с дьяволом на самом деле не требовалось, вроде бы. Просто ресурс игровых машин был не таким, как сейчас. Действительно хорошая игра создавалась скорей за счет воображения самого игрока, за счет возможности включить эту самую фантазию и вовлечь человека в игровой процесс.
Сегодня все немного иначе. Да, обширные локации и свобода действий все еще в цене, некоторые создатели игр этим успешно пользуются.
Вот только на смену атмосфере и детально продуманному сюжету пришла графика и красивые ролики. Смысловая нагрузка отошла на второй план, уступив место зрелищности.
Впрочем, такое явление сейчас можно наблюдать и в кинематографе, так что игровая индустрия в этом плане – не единственная жертва времени.
Особенности двухмерных игр
Когда-то разработчикам компьютерных игр было доступно лишь два измерения, вот и выходили все новинки в 2D формате. В связи с этим было несколько интересных особенностей:
- Большинство игр представляли собой аркадный платформер.
- Бежать можно было только вправо, для прохождения уровня и достижения сюжетного прогресса.
- Линейность несложно было заметить практически в каждой игре.
- Музыка и звуки всегда были на одном уровне.
Можно безумно долго рассуждать о том, что переход в трехмерное пространство помог создавать в играх настоящие «лабиринты», что-то прятать от глаз игрока, что-то наоборот – демонстративно показывать. Все же, это целая эра возможностей, которые уже давным-давно успешно освоили. А вот о звуке пару слов сказать следует, ведь с переходом в 3D формат студии столкнулись с новыми проблемами.
Для чего нужна OpenAL?
В двумерном пространстве:
- Источник звука фиксирован одной точкой.
- Приближаясь к источнику шума, игрок должен слышать нарастание звука, по логике вещей.
- Практически во всех играх громкость основной мелодии и фоновых звуков были установлены для локации в целом, без учета местоположения игрока.
Для слабеньких машин это вполне приемлемый «ляп», его всегда можно списать на низкую производительность оборудования. А вот в третьем тысячелетии такая отговорка уже не сработает. Тогда была создана программа OpenAL:
- Изначально разрабатывалась как средство переноса игр с Windows на Linux.
- Предназначена для работы с библиотеками аудио.
- Позволяет задать источник звука в трехмерном пространстве.
- Используется для создания игр для наиболее популярных платформ.
Если посудить здраво – это ведь такая мелочь, будет удаляться или приближаться звук по мере перемещения игрока по карте. Ослабнет ли звук шин отстающей машины, станет ли громче звук капающей воды во время продвижения по пещере. Все это никак не влияет на сам игровой процесс, чисто косметическое дополнение.
Но именно такие «чисто косметические дополнения» помогают лучше погрузиться в игровой процесс и действительно реально прочувствовать атмосферу созданного кем-то мира.
Где используется OpenAL?
Компания, которая некогда разработала и воплотила в реальность технологию «OpenAL», уже давно прекратила свое существование. А вот тысячи строк программного кода продолжают жить и даже используются при создании новых игр, таких как:
- GRID
- Hotline Miami
- F1 2010
- Hitman
А все дело в том, что изначально программа выпускалась с открытым кодом. Любой желающий мог вносить свои правки, разрабатывать дополнения и создавать обновления на базе изначального программного обеспечения. До сегодняшнего дня «дожили» три ответвления некогда созданного инструмента «OpenAL»:
- «SI». Эта исходная версия не обновлялась уже более десяти лет, так что шансы на реанимацию проекта минимальны.
- «Creative» – версия от одноименной корпорации, коммерческий вариант.
- «Soft» – независимая группа разработчиков выпустила свою версию, основанную на SI.
Использовать сейчас исходную версию – не самое лучшее решение, за прошедшие годы вышло слишком много полезных обновлений. Так что придется выбирать между коммерческой компанией и «независимой» организацией. Но при таком выборе всегда следует ориентироваться исключительно на функционал программного обеспечения.
OpenAL: для чего эта программа?
Программа OpenAL:
- Не была рассчитана на рядового пользователя.
- Создавалась для переноса игр с одной операционной системы на другую.
- Активно используется разработчиками компьютерных игр, даже спустя десятилетия после выхода первой версии.
- Позволяет работать с библиотеками аудио-файлов.
- Дает возможность задать любому звуку три координаты в трехмерном пространстве.
- Добавляет реалистичности любому уровню, даже самому невероятному.
Чаще всего это программа используется при создании гонок, хоть звук и не самый важный компонент такого рода игр. В последнее время это программное обеспечение используют и при разработке игр на Android и iOS, завоевывая рынок мобильных устройств. Так что в ближайшем будущем мы еще много раз услышим об этом удобном инструменте.
Если вы не связали свою жизнь с созданием 3D игр, совсем не стыдно оставаться в неведении насчет OpenAL, что это за программа известно лишь небольшом кругу разработчиков, для которых она и создавалась.
о технологии OpenAL
В этом видео Леонид Потапов расскажет о софте, необходимом для любой компьютерной игры, среди которого находится и «OpenAL»:
Источник: https://1-kak.ru/210-openal-chto-ehto-za-programma.html
Скачать программу open all для windows 7. Что это за программа OpenAL
В арсенале каждого пользователя есть с десяток программ, жизнь без которых была бы гораздо сложнее.
Какие-то предназначены для прослушивания музыки и просмотра фильмов, при помощи других можно запустить любимые игры, а часть программ пригодится в работе любому специалисту.
Но существуют и более редкие разработки, с которыми рядовой пользователь за всю жизнь может ни разу не столкнуться. К примеру, OpenAL, что это за программа знает лишь небольшой круг «посвященных».
Скачиваем и устанавливаем OpenAL
При попытке исправить проблему, которая появляется при попытке запустить игру, пользователь стразу открывает поисковую строку и вводит запрос скачать openal32.dll. Однако в результате он или не находит решения проблемы, или заражает свой компьютер вирусами. Ниже мы расскажем, как избавиться от ошибки правильно. Приступаем.
- Скачайте установочный дистрибутив OpenAL по (для вашего удобства мы взяли последнюю версию библиотеки с ее официального сайта и поместили у нас).
Программа подходит как для x32 bit систем, так и для x64 bit.
- Распакуйте архив и запустите файл, находящийся в нем. Первый шаг – это принятие лицензии. Тут просто жмем «ОК».
- По прошествии некоторого времени появится маленькое окошко, которое уведомит нас о том, что установка успешно завершена.
Готово, теперь можно перезагружать компьютер или ноутбук и пробовать запускать игру.
Для работы с OpenAL нужно обладать полномочиями администратора.
Копирование системной библиотеки в нужный каталог
Также можно попробовать не скачивать всю библиотеку OpenAL, а просто добавить в систему недостающий файл. Давайте разберёмся, как это делается.
- Сначала скачиваем нужный нам файл по . Когда он окажется на ПК, распакуйте архив (мы упаковали данные в zip-архив, а его можно открыть и без архиватора). Поместите openaldll в один из системных каталогов, в зависимости от разрядности системы.
Разрядность нашей Windows XP, 7, 8 или 10 можно выяснить. воспользовавшись сочетанием горячих клавиш Win+PauseBreak. На картинке нужная строка отмечена красной рамкой.
C:\Windows\system32 C:\Windows\sysWOW64
- Вместе с копированием в каталоги Windows поместите файл и в папку с игрой, точнее, ту ее часть, которая содержит.exe-файл. В World of Tanks это корневой каталог.
- Осталось только зарегистрировать добавленный в систему dll. Для этого мы применим штатную утилиту Windows «Выполнить». Запустите ее сочетанием кнопок Win+R и введите в окошко команду: regsvr32 openaldll. Затем нажмите «ОК».
Не забудьте после применения изменений перезагрузить компьютер или ноутбук.
Теперь можно пробовать запускать нашу игру.
Дополнительная информация
Случается так, что после добавления openal32.dll в систему игра все равно не работает. В таком случае можно попробовать произвести обновление драйвера звуковой платы. В любом случае, теперь вы знаете как скачать бесплатно openal32.dll и правильно добавить его в систему.
Источник: https://erfa.ru/skachat-programmu-open-all-dlya-windows-7-chto-eto-za-programma-openal.html
Openal что это за программа
Есть несколько различных способов, которыми ошибка openal32.dll может проявлять себя. Ниже — несколько наиболее распространенных вариантов:
- Openal32.dll отсутствует
- Запуск программы невозможен, файл openal32.dll не найден
- Точка входа в процедуру не найдена в библиотеке OpenAL32.dll
- Невозможно запустить программу. Необходимый компонент openal32.dll отсутствует. Пожалуйста, установите программу повторно.
Ошибки openal32.dll могут появляться в различных ситуациях — при установке определенных программ или игр, например DIRT 2, при их запуске, во время запуска или выхода из Windows. Также данная ошибка может проявить себя и во время установки Windows.
В разных ситуациях ошибка openal32.dll может свидетельствовать о различных проблемах, начиная с действительно отсутствующего или поврежденного файла библиотеки и заканчивая ошибками в реестре Windows, вирусами или аппаратными проблемами компьютера.
Как исправить ошибку openal32.dll
Важное замечание: не ищите, где скачать openal32.dll с различных сайтов, предлагающих скачать различные DLL. Есть масса причин, по которым скачивание библиотек dll в случае тех или иных ошибок — крайне плохая идея. Если Вам требуется настоящий файл openal32.dll, самый простой способ добыть его — с дистрибутива Windows 7 или Windows 8.
Если Вы не можете войти в Windows из-за ошибки openal32.dll, для выполнения нижеследующих шагов запустите безопасный режим Windows 8 или безопасный режим Windows 7 .
- Проверьте Вашу систему на вирусы и другое вредоносное программное обеспечение. В отличие от других ошибок dll, рассматриваемая очень часто бывает вызвана именно этой причиной. Если Вы не уверены в своем антивирусе, можете загрузить бесплатную пробную версию какого-либо надежного продукта, того же Касперского — на то, чтобы исправить ошибку хватит и пробной версии.
- Воспользуйтесь восстановлением системы, для того, чтобы вернуть Windows к состоянию, когда все еще работало нормально. Вполне возможно, что ошибка вызвана недавними изменениями в системе, установкой программ или драйверов.
- Переустановите программу, запрашивающую файл openal32.dll — в случае, когда ошибка проявляется лишь при запуске определенной игры или программы, ее переустановка часто может помочь.
- Обновите драйвера для оборудования — например, ошибка «openal32.dll отсутствует» часто возникает при попытке запуска требовательной трехмерной игры, в то время как «родные» драйвера на видеокарту не установлены (те драйвера видеокарты, которые Windows устанавливает по умолчанию при установке, могут работать во многих случаях нормально, но далеко не во всех — т.е. если у Вас видеокарта Nvidia или AMD, то Вам требуется загрузить официальный драйвер, а не продолжать использовать драйвер от Microsoft).
- Если же наоборот, ошибка openal32.dll стала появляться после обновления какого-либо драйвера, сделайте откат.
- Установите все вышедшие обновления операционной системы Windows.
- Воспользуйтесь бесплатной программой для очистки реестра Windows, например — Ccleaner. Возможно, в реестре имеются неверные ключи, имеющие отношение к данной библиотеке, особенно вероятно в случае появления ошибки «Точка входа в процедуру в библиотеке DLL openal32.dll не найдена».
- Переустановите Windows. Причем, проведите именно чистую установку операционной системы или, если у Вас имеется диск или образ восстановления компьютера до заводского состояния — проделайте это. Если и после этого ошибка сохраняется, дело, скорее всего, в оборудовании компьютера.
- Проверьте оперативную память и жесткий диск на ошибки с помощью соответствующих программ. Если программа диагностики покажет какие-либо проблемы, то вполне вероятно, что ошибка openal32.dll отстутствует вызвана именно этими проблемами.
На этом все. Надеюсь, один из способов исправления указанной проблемы Вам помог. И еще раз: скачать openal32.dll — это не решение проблемы, а вполне вероятно, и появление новых — т.к. Вы никогда не знаете, что именно и откуда Вы скачиваете, в этом файле может быть все что угодно.
А вдруг и это будет интересно:
Openal32.dll
Openal32.dll – компонент динамической библиотеки OpenGL, отвечающий за параметры и качество звука в системе. Данной библиотекой пользуются не только игры или мультимедиа, но и программы.
Именно поэтому повредить, перезаписать или удалить файл может каждый элемент. В таком случае появится системное окно с ошибкой: отсутствует openal32.dll.
Не стоит волноваться: ничего непоправимого не случилось.
Все компоненты аудиобиблиотеки создаются при установке операционной системы, а далее уже новые игры, программы или приложения вносят изменения в них. Возникнуть может ошибка openal32.dll, при запуске игры, программы или после настройки параметров звука (к примеру, если не все драйвера установлены). Решение проблемы возможно двумя вариантами, и оба исключают переустановку Виндовс.
Первый ─ скачать openal32.dll для Windows 7, 8, 10 в соответствии с ее разрядностью. В свойствах системы можно найти данный параметр, стоит обратить внимание, что x86 и x32 одно и то же. Почему стоит выбирать точную разрядность? В первую очередь, просто скачать openal32.dll недостаточно, его необходимо поместить в соответствующую папку, путь к которой различен в зависимости от разрядности.
Второй способ заключается в установке полностью пакета OpenGL, который обеспечивает замену недостающих элементов и обновление устаревших. Если версия dll компонентов на компьютере более поздняя, тогда новая игра перезапишет файлы.
Приложения старых версий могут внести свои изменения, и тогда новые игры уже не запустятся ─ потребуется скачать бесплатно openal32.dll (актуальную версию). Именно поэтому рекомендуется сохранить оба файла для быстрого доступа и замены.
Проблема может появляться, поэтому, устанавливая игры, программы или приложения, смотрите на версию компонентов, не заменяйте новые старыми.
Куда кидать файл openal32.dll в систему с разрядностью x32 x64:
- Скачиваем файл;
- для x32, переместить или заменить в папке C:WindowsSystem32;
- для x64, переместить или заменить в папке C:Windows SysWOW64;
- нажать «пуск» и «выполнить»;
- ввести regsvr openal32.dll;
- нажать «ОК»;
- перегрузить компьютер.
Бесплатная загрузка файла openal32.dll для Windows 7, 8, 10. Подробная инструкция по устранению ошибки — запуск невозможен отсутствует openal32.dll.
Существует фантастическое множество ошибок, связанных с файлами dll. Одной из наиболее популярных среди них является ошибка, возникающая при запуске приложения и информирующая о повреждении или отсутствии файла openal32.dll. Так же ней содержится просьба переустановить проблемное приложение.
Данный файлик играет первоочередную роль в корректной работе со звуком в любых приложениях, где предполагается его наличие. Забегая вперед, отметим, что вы можете скачать openal32.dll бесплатно на нашем сайте. Ниже вы узнаете, для чего он вам понадобится.
Openal32.dll является частью пакета Open Audio Library, то есть интерфейса для обработки звука. При отсутствии файла openal32.dll, вы сильно рискуете столкнуться с множеством неудобств.
Например, некоторые приложения не смогут запуститься, другие останутся без звука, будут выключаться после некоторого времени работы.
Фактически подавляющее большинство игр не сможет нормально работать на вашем компьютере без этой dll-ки.
Но не стоит расстраиваться. Эта проблема устраняется очень просто. Сразу отметим, что переустанавливать приложение не нужно. Толку от этого никакого нет, а вот времени может отнять много. Гораздо эффективнее будет скачать файл openal32.dll и установить его в нужную системную папку.
Данный файл (собственно говоря, как и другие dll-ки) является универсальным. Он подходит для любой версии windows 7, 8 или windows 10 и не несет никакой опасности для вашего компьютера или ноутбука. Ни в коем случае не скачивайте dll-библиотеки с платных сайтов. В этом нет никакого смысла и пользы для вашего ПК.
Поэтому от вас потребуется совсем немного – несколько минут времени, немного терпения и готовность выполнить ряд простых действий, с которыми справится любой человек:
2. Разархивировать файл и скопировать библиотеку в буфер обмена.
3. Определить разрядность ОС. Чтобы это сделать, просто откройте «мой компьютер» и посмотрите раздел «свойства системы». В графе «тип системы» вы найдёте нужную информацию.
4. Установить библиотеку в нужную системную папку. Если у вас установлена 32-разрядная система, то устанавливайте библиотеку в C:WindowsSystem32. Если же ваша ОС 64-разрядная, то устанавливайте библиотеку в C:WindowsSysWOW64.
6. Перезагрузить ПК.
После чего вы сможете коротать вечера за любимым хобби.
Если же после установки dll-ки ситуация не улучшилась, то попробуйте переустановить драйвера звуковой карты. Обычно они находятся на диске, прилагавшемся в комплекте к вашему ПК.
В данном случае алгоритм тоже не сложнее чем в описанном выше способе. Вам всего лишь нужно выбрать в меню «звуковые карты», а потом всё время соглашаться с установщиком посредством нажатия кнопки «ок» или «далее». Инсталлятор все сделает автоматически. После этого вам так же будет нужно перезагрузить ваш компьютер.
Ну а если у вас что-то не получилось, посмотрите небольшое видео, прилагающееся ниже. В ней подробно показано как скачать и установить файл openal32.dll.
Если вы выполнили правильно весь перечень действий, то всё должно снова начать работать как положено. Или же возможно ваша проблема в чём-то другом.
В любом случае не поддавайтесь панике. Ошибки с файлами dll- очень распространённое явление. И в большинстве случаев проблемы с ними решаются легко и быстро даже малоопытными пользователями. Просто соблюдайте правильный порядок действий и у вас всё получится. Удачи!
Источники: http://remontka.pro/openal32-dll-error/, http://all-freeload.net/dll-biblioteki/2242-openal32-dll, http://dllerrorfix.ru/dll-download/1068-openal32dll-file-skachat.html
Источник: http://it-radar.ru/openal32-dll-chto-eto.html
Openal — что это за программа? Есть ответ!
Многие люди, при работе с операционной системой, заинтересованы в том, чтобы знать все об имеющихся утилитах в собственном компьютере. Поэтому, становится закономерным вопрос: «openal что это за программа и для чего она предназначена, нужна ли она или ее лучше удалить?».
Даже опытные «знатоки» и компьютерные «гении», хорошо разбирающиеся в компьютерах, не всегда могут ответить на этот вопрос. Однако, столкнувшись с подобной утилитой, каждый из них желает получить как можно больше информации о ней и возможностях, которые она предоставляет.
Источник: https://dcvesta.org/openal-chto-eto-za-programma/
OpenAL: что это за программа и для чего нужна
Komp.Guru > Программы > OpenAL: что это за программа и для чего нужна
Сегодня мы поговорим о библиотеке и одновременно программировании приложений Open Audio Library.
Компоненты программы используются для создания настоящего трёхмерного звука в различных сферах: играх, программах, приложениях для телефонов.
Универсальность софта заключается в его поддерживании всеми версиями операционной системы Windows, а также совместимость с большинством программного софта для ПК.
- Openal – описание
- Функции ОpenAL
- Официальный сайт OpenAl: скачивание, удаление, обновление
Список игр, звуковое сопровождение которых было полностью создано с помощью OpenAL:
- Unreal Tournament 3;
- Dirt 2;
- Battlefield 2;
- S.T.A.L.K.E.R.;
- Quak;
- Doom 3.
Благодаря особому кодированию звука, аудио данные хранятся в формате WAV или WAVE (Waveform Audio File Format). Без использования множества библиотек этой платформы невозможно достигнуть качественного трёхмерного звука в разработке современных приложений.
Openal – описание
Openal Audio Library – кроссплатформенный интерфейс для программирования приложения в сфере звука. Позволяет обрабатывать и работать с 3D звуком, создавать атмосферу реальной окружающей среды используя технологию EAX в различных программах.
Из-за того, что все файлы этой платформы в итоге имеют расширение dll, можно сказать, OpenAL – звуковая библиотека, совместимая с Windows. Изначально создатель Loki Sorfware создавал эту технологию для переноса множества игр с операционной системы Windows на Linux. Однако после закрытия компании идея и технологии были куплены компанией Creative Technology.
В итоге они создали уникальный и единственный, на то время, инструмент для работы со звуком.
Функции ОpenAL
Практически все игры, в настоящее время, используют 3D графику и трёхмерное пространство плоскости координат. С помощью использования библиотек, разработчики получают возможность провести анализ полученных данных, по которым будут воспроизводиться реальные звуки для пользователя.
Например: при перемещении любого объекта в любой игре звук должен изменяться по тем же правилам, как мы слышим его в жизни. Чем больше расстояние от источника, тем тише звук, который игрок слышит. При прохождении через различные преграды звук может стать тише либо совсем прерваться.
Программа учитывает наличие множества объектов, из-за которых звуковые волны искажаются, позволяя доносить голоса других персонажей корректно.
Внешний шум будет меняться в зависимости от месторасположения персонажа или субъекта, при смене обстановки и локации.
Библиотеки добавляют, помимо основного шума, дополнительные звуки для создания атмосферы (эхо, звуки природы, помехи).
Ещё одна функция OpenAl – обработка звукового сопровождения при перемещении через лес, снежную погоду, ураган. Все эти условия в реальной жизни меняют качество и тональность звука. Практически все современные продукты используют эти звуковые библиотеки.
В случае удаления нужной библиотеки воспроизведение звука станет нестабильным либо вовсе пропадёт. Чтобы избежать этого, библиотеки вшиваются в продукт, не позволяя совершить отдельное удаление.
Большим плюсом является открытый код программы что позволяет разработчикам со всего мира дополнять либо изменять любые компоненты платформы.
Благодаря умелой реализации всех возможностей OpenAl можно повысить качество и реалистичность звука в любом продукте.
Официальный сайт OpenAl: скачивание, удаление, обновление
Официальный сайт приложения, а также зеркал для скачивания:
- openal.org
- kcat.strangesoft.net/openal
- openal.updatestar.com
При их открытии можно увидеть краткое описание технологий и множество закладок. Перейдя во вкладку Downloads нужно скачать Windows-инстраллер и запустить установочный файл.
При установке нужно согласиться с условиями и правилами использования программы. Запустить её с помощью ярлыка на рабочем столе. Интерфейс программы разбит на разделы и мы можем выбрать слушателя.
Это наш объект вокруг которого будет воспроизводиться звук, его позиция и будущий маршрут. При помощи специальных отметок положения источника звука и особенностей рельефа производится звук.
Дополнительно существует возможность изменения громкости на разных участках и различных параметров звука.
Обновление программы производится автоматически при подключении компьютера к интернету. Если же у вас отсутствует возможность подключения к всемирной сети, можно воспользоваться встроенными библиотеками при установке различных программ. Они также устанавливаются и обновляют версию программы автоматически.
Как говорилось ранее, удаление этих библиотек крайне не рекомендуется для любой системы. Однако возможность этого существует. Поскольку система обнаруживает OpenAL как доброжелательную программу, она имеет доступ к распространению по всем каталогам и приложениям системы. Поэтому полностью удалить её без помощи посторонних программ вряд ли получится.
Можно использовать для этой цели программу под названием Revo Uninstaller, которая имеет в себе продвинутый алгоритм сканирования системы до и после установки и позволяет удалить оставшиеся после ручного удаления программы файлы, ключи реестра и папки.
Источник: https://komp.guru/programmy/openal-chto-eto-za-programma-i-dlya-chego-nuzhna.html
Базовый менеджер звука на OpenAL для вашего проекта. Разработка звукового движка
Практически в любом приложении используется звук для создания атмосферы, указания на нажатие определенной кнопки и т.п. В связи с этим перед разработчиком встает задача создания особого механизма, позволяющего проигрывать звук в различных форматах.
Дабы помочь вам разобраться с основными аспектами, был подготовлен цикл статей, посвященных созданию базового звукового менеджера.
В первой статье вашему вниманию предложен алгоритм разработки звукового менеджера.
При работе со звуком вам необходимо удостовериться, что он проигрывается вместе с главным циклом и верно синхронизирован. Вашей первой мыслью, скорее всего, будет использование потоков. Однако вы можете обойтись и без них, но этот подход будет иметь некоторые недостатки (которые будут упомянуты позже).
Первое важное решение: какую использовать библиотеку? Подобных разработок немало, но лишь некоторые из них бесплатны. Если вы ищете универсальную библиотеку, которая будет работать на компьютерах и мобильных устройствах, то, возможно, ваше внимание привлечет OpenAL. Она поддерживается как iOS, так и операционными системами Windows, Linux, Mac.
OpenAL — это библиотека, написанная на языке C и использующая API, подобное тому, что применяется в OpenGL. В OpenGL все функции начинаются с префикса g1, в OpenAL используется префикс a1.
Для Windows вам необходимо будет использовать ответвленную версию библиотеки. OpenAL была создана фирмой Creative, на сегодняшний день эта библиотека устарела и больше не обновляется (последняя версия API 1.
1 от 2005 года). К счастью, существует OpenAL Soft implementation, которая использует то же самое API, что и оригинальная OpenAL. Вы можете найти исходник и предварительно скомпилированные библиотеки здесь.
Для устройств Apple, работающих под управлением iOS, ситуация намного лучше. OpenAL напрямую поддерживается Apple, потому вам не надо ничего устанавливать, просто добавить в ваш проект ссылки на соответствующие библиотеки. Подробная информация представлена здесь.
Одним из самых больших недостатков OpenAL является отсутствие поддержки ОС Android, которая использует OpenSL. После недолгих поисков вы можете обнаружить «порты» OpenAL для Android. Они сопоставляют вызовы функций OpenAL вызовам соответствующих функций OpenSL, так что это фактически упаковщик. Один из них можно найти здесь (GitHub).
Он использует упомянутый ранее OpenAL Soft, но скомпонован с другими флагами.
После выбора библиотеки, вы должны выбрать поддерживаемые звуковые форматы, которые хотите проигрывать. Любимый MP3 — не лучший выбор, декодер сложный, а также есть зарегистрированные на данный формат патенты. Лучшим выбором является OGG. Декодер прост в использовании, открыт и OGG файлы часто имеют меньший размер, чем MP3 с теми же настройками. К тому же, он поддерживает несжатое WAV.
Разработка звукового движка
Начнем с разработки звукового движка и определимся, что вам нужно, чтобы он работал правильно.
В первую очередь, вам понадобится библиотека OpenAL. OpenAL является библиотекой C. Для упрощения манипуляций желательно добавить какую-либо объектно-ориентированную оболочку. Мы воспользуемся C++, но подобная конструкция может быть использована также и в других языках (конечно, вам понадобится «порт» библиотеки OpenAL с С на ваш язык).
Помимо OpenAL, вам также потребуется поддержка потоков. В нашем примере будет использована библиотека PTHREAD (версия для Windows). Если вы ориентируетесь на C++ 11, вы также можете воспользоваться встроенной поддержкой потоков.
Для OGG декомпрессии вам понадобится библиотека OGG Vorbis (скачать части libogg и libvorbis).
WAV-файлы используют не очень часто, в большинстве случаев для отладки, но желательно обеспечить поддержку и этого формата. Простую WAV-декомпрессию легко написать с нуля, потому лучше использовать свое решение, а не готовую библиотеку.
Проект состоит из двух основных классов, одного интерфейса (чисто виртуального класса), а также одного класса для каждого из поддерживаемых аудио-форматов (OGG, WAV…).
- SoundManager — главный класс, использующий одноэлементную модель. В данном случае это самый хороший вариант, так как вы, вероятно, проинициализируете только один экземпляр OpenAL. Этот класс используется для управления и обновления всех звуков, а также он содержит ссылки на все SoundObjects.
- SoundObject — наш главный класс для работы со звуком, в котором описаны такие методы, как: воспроизведение, пауза, перемотка, обновление…
- ISoundFileWrapper — интерфейс (чисто виртуальный класс) для различных форматов файлов, описания методов декомпрессии, заполнения буферов и т.д.
- Wrapper_OGG — класс , который реализует ISoundFIleWrapper. Для декомпрессии OGG-файлов.
- Wrapper_WAV — класс, который реализует ISoundFIleWrapper. Для декомпрессии WAV-файлов.
Инициализация OpenAL
Код, описанный в данном разделе, можно найти в классе Soundmanager. Начнем с кода для инициализации OpenAL.
alGetError(); ALCdevice * deviceAL = alcOpenDevice(NULL); if (deviceAL == NULL) { LogError(«Failed to init OpenAL device.»); return; } ALCcontext * contextAL = alcCreateContext(deviceAL, NULL); AL_CHECK(alcMakeContextCurrent(contextAL));
В дальнейшем устройства и контекстные переменные нам больше не понадобятся, но только до этапа освобождения ресурсов. OpenAL сохраняет все эти данные во внутренних структурах.
В функции alcMakeContextCurrent описан макрос AL_CHECK, который используется для проверки ошибок OpenAL в режиме отладки. Его код представлен ниже:
const char * GetOpenALErrorString(int errID){ if (errID == AL_NO_ERROR) return «»; if (errID == AL_INVALID_NAME) return «Invalid name»; if (errID == AL_INVALID_ENUM) return » Invalid enum «; if (errID == AL_INVALID_VALUE) return » Invalid value «; if (errID == AL_INVALID_OPERATION) return » Invalid operation «; if (errID == AL_OUT_OF_MEMORY) return » memory ! «; return » Don't know «;}inline void CheckOpenALError(const char* stmt, const char* fname, int line){ ALenum err = alGetError(); if (err != AL_NO_ERROR) { LogError(«OpenAL error %08x, (%s) at %s:%i — for %s», err, GetOpenALErrorString(err), fname, line,stmt); }};#ifndef AL_CHECK#ifdef _DEBUG #define AL_CHECK(stmt) do { \ stmt; \ CheckOpenALError(#stmt, __FILE__, __LINE__); \ } while (0); #else #define AL_CHECK(stmt) stmt#endif#endif
Этот макрос можно использовать при каждом вызове OpenAL.
Далее вам следует проинициализировать источники данных и буферы, но можете сделать это и позже, когда они действительно понадобятся.
Буферы, как вы, вероятно, думаете, содержат несжатые данные, которые проигрывает OpenAL. Источник (фактически — звук, который будет воспроизводиться) загружает данные из ассоциированных с ним буферов.
Есть определенные ограничения на количество буферов и источников. Точное значение зависит от вашей системы.
Давайте создадим для начала 512 буферов и 16 источников, чтобы иметь возможность воспроизводить 16 звуков одновременно.
Вы можете заметить, что функция alGen* в качестве второго параметра получает указатель на unsigned int, который является идентификатором созданного буфера или звука. Для удобства можно создать простую структуру, элементами которой будут идентификатор и булевая переменная, показывающая состояние: свободен буфер или используется каким-либо звуком.
Помимо этого, создадим два списка:
- список всех источников и буферов;
- список, содержащий только те ресурсы, которые свободны (не связаны с каким-либо звуком).
for (uint32 i = 0; i < this->buffers.size(); i++) { this->freeBuffers.push_back(&this->buffers[i]); } for (uint32 i = 0; i < this->sources.size(); i++) { this->freeSources.push_back(&this->sources[i]); }
Если вы используете потоки, то также должны проинициализировать их.
Теперь, когда вы подготовили все необходимое, пришло время добавить звук в ваш движок.
Логика воспроизведения звука
Прежде, чем мы начнем рассматривать код и вдаваться в подробности, важно понять, как управлять и воспроизводить звуки. Существует два решения этой проблемы.
Первое: вы можете загрузить все звуковые данные в один буфер и просто воспроизвести их. Это легкий и быстрый способ. Но, как обычно, у простых решений есть недостатки. Размер несжатых файлов намного больше, чем сжатых. Представьте себе, вы будете использовать больше одного звука. И в итоге, размер всех буферов может оказаться больше, чем доступной свободной памяти. Что теперь?
К счастью, есть второй подход: в один буфер загружается лишь небольшая часть файла, воспроизводится, а затем загружается новая порция. Звучит хорошо, не так ли? Но, на самом деле, это не так. Если воспользоваться этим методом, вы можете услышать паузы в конце воспроизведения данных перед новым заполнением буфера и последующим воспроизведением.
Решается эта проблема просто: необходимо заполнять не один буфер, а несколько. Заполните несколько буферов (например, три), воспроизведите данные из первого и, как только его содержимое будет воспроизведено, немедленно запустите воспроизведение из второго и в это же время заполните уже использованный буфер новыми данными.
Выполняйте эту операцию в цикле, пока не будет воспроизведен весь звук.
Количество используемых буферов может изменяться в зависимости от ваших потребностей. Если же ваш звуковой движок обновляется из отдельного потока, количество не будет проблемой. Вы можете выбрать практически любое количество буферов, и это будет просто отлично.
Однако, если вы не используете update вместе с основным циклом вашего двигателя (не применяете потоки), то могут возникнуть проблемы при малом количестве буферов. Почему? Представьте, что у вас есть Windows – приложение, и вы перетащили окно программы по рабочему столу.
В Windows это может привести к тому, что основной поток будет приостановлен и находиться в состоянии ожидания. Звук будет играть, так как сама OpenAL имеет свой собственный поток для воспроизведения звуков, но только до тех пор, пока в очереди есть буферы, которые можно воспроизводить.
Если все они будут исчерпаны, звук прекратится. Причина тому — заблокированный основной поток, в результате чего буферы не обновляются.
Каждый буфер имеет свой размер в байтах, который устанавливается во время создания звука. Чтобы вычислить продолжительность звука в буфере, вы можете воспользоваться этим уравнением:
duration = BUFFER_SIZE/(sound.freqency * sound.channels * sound.bitsPerChannel/8
Примечание: Если вы хотите вычислить продолжительность воспроизведения текущей записи, вы должны учитывать все буферы, но это не так просто. Мы рассмотрим это в одной из последующих статей.
Перевод статьи: «Basic OpenAL sound manager for your project»
Как Яндекс использует ваши данные и машинное обучение для персонализации сервисов — читать и смотреть YaC 2019.
Источник: https://tproger.ru/translations/basic-openal-sound-manager-sound-engine-design/