Для чего нужна программа openal
OpenAL: что это за программа и для чего нужна
Сегодня мы поговорим о библиотеке и одновременно программировании приложений Open Audio Library. Компоненты программы используются для создания настоящего трёхмерного звука в различных сферах: играх, программах, приложениях для телефонов. Универсальность софта заключается в его поддерживании всеми версиями операционной системы Windows, а также совместимость с большинством программного софта для ПК.
Список игр, звуковое сопровождение которых было полностью создано с помощью OpenAL:
Благодаря особому кодированию звука, аудио данные хранятся в формате 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: скачивание, удаление, обновление
Официальный сайт приложения, а также зеркал для скачивания:
При их открытии можно увидеть краткое описание технологий и множество закладок. Перейдя во вкладку Downloads нужно скачать Windows-инстраллер и запустить установочный файл.
При установке нужно согласиться с условиями и правилами использования программы. Запустить её с помощью ярлыка на рабочем столе. Интерфейс программы разбит на разделы и мы можем выбрать слушателя. Это наш объект вокруг которого будет воспроизводиться звук, его позиция и будущий маршрут. При помощи специальных отметок положения источника звука и особенностей рельефа производится звук. Дополнительно существует возможность изменения громкости на разных участках и различных параметров звука.
Обновление программы производится автоматически при подключении компьютера к интернету. Если же у вас отсутствует возможность подключения к всемирной сети, можно воспользоваться встроенными библиотеками при установке различных программ. Они также устанавливаются и обновляют версию программы автоматически.
Как говорилось ранее, удаление этих библиотек крайне не рекомендуется для любой системы. Однако возможность этого существует. Поскольку система обнаруживает OpenAL как доброжелательную программу, она имеет доступ к распространению по всем каталогам и приложениям системы. Поэтому полностью удалить её без помощи посторонних программ вряд ли получится.
Можно использовать для этой цели программу под названием Revo Uninstaller, которая имеет в себе продвинутый алгоритм сканирования системы до и после установки и позволяет удалить оставшиеся после ручного удаления программы файлы, ключи реестра и папки.
Для чего нужна программа OpenAL и нужно ли её удалять
Вы наверняка знаете, что на компьютере, кроме установленных пользователем программ, имеется также множество других, назначение которых может быть непонятным. Чтобы убедиться в этом, достаточно перейти в Панель управления и посмотреть, какие программы есть в списке. Наверняка вы найдёте там и такое название, как OpenAL.
Но это только верхушка айсберга – множество необходимых для работы утилит и библиотек система Windows не показывает в этом списке, но без них не будут работать многие программы и игры. Например, если в системе нет кодеков, вы не сможете слушать музыку в формате mp3 или просматривать фильмы. Без библиотеки VulkanRT ваша видеокарта GeForce не сможет работать с максимальной производительностью. Список можно продолжать бесконечно.
OpenAL относится к таким необходимым программам, без которых система может работать, но вы при этом будете терять многие преимущества. А некоторые игры и вовсе без неё не запустятся. Давайте разберёмся, для чего нужна эта утилита и что будет, если её удалить.
Для чего нужна OpenAL
Название означает простое сокращение от Open Audio Library, то есть это библиотека функций для работы со звуком. Конечно, для обычного воспроизводящего приложения, например, аудиоплееру или видеоплееру, ничего подобного не нужно – они воспроизводят звук в точности таким, как он записан. Но для чего тогда нужно использовать OpenAL?
Наверняка вы играли в компьютерные игры и удивлялись той реалистичной атмосфере, которая создаётся в них благодаря звуку. Приглушённый разговор за углом, звук шагов по разной поверхности, шум дождя или завывание метели… А ведь ещё вы можете отлично распознать, с какой стороны доносятся звуки выстрелов или проезжающих мимо автомобилей. Реалистичный 3D-звук имеет не меньшее значение, чем хорошая графика.
Вот для этого и служит библиотека OpenAL – с помощью её компьютер обрабатывает и добавляет различные звуковые эффекты, которые значительно улучшают реалистичность. Конечно, это используется не только в играх, но и в современных программах аудиоредакторах, хотя и в меньшей мере.
Эта библиотека, как и прочие, состоит из множества файлов с расширением dll, в которых содержатся все необходимые функции. С их помощью компьютер рассчитывает координаты всех предметов в пространстве, которые испускают звук, с учётом препятствий, и соответственно делает его тише или громче, а также добавляет необходимые эффекты. Также учитывается направление и соответственно вы можете слышать эти звуки слева или справа, или перемещающимися.
OpenAL существует в версиях для Windows и для Linux, то есть это кроссплатформенное приложение. Это обеспечивает нормальную работу программ, использующих эту библиотеку, на разных операционных системах.
Теперь вы знаете, что за программа OpenAL и для чего она нужна. Обнаружив её на своём компьютере, вы сможете спокойно на это реагировать, ведь это не вирус, а вполне даже нужная вещь, особенно для тех, кто любит поиграть и, конечно, для разработчиков игровых программ.
Где используется OpenAL
С помощью этой библиотеки можно улучшить звук в любой программе, даже самой простой. На её основе можно, например, добавить различные спецэффекты даже к обычному аудиоплееру. Но особенно это востребовано там, где аудио играет особую роль, то есть в играх.
Вы можете подумать, что это новейшая разработка, которая может встречаться разве что в относительно новых игровых программах. На самом деле это не так, и вы наверняка встречались с этой технологией, если играли в Doom3, Stalker, Unreal Tournament 3. Это довольно старые игры, и лишь некоторые из большого количества, в которых используется технология OpenAL. Во многом благодаря отличному реалистичному звуковому окружению эти игры и получили такую популярность.
Современные игры практически всегда используют эту библиотеку, а многие без неё просто не запустятся – появится сообщение об ошибке. Это значит, что требуется установить OpenAL самостоятельно. Скачать эту библиотеку можно, например, на официальном сайте (http://openal.org/). Установка не вызовет трудностей.
Как установить OpenAL
Установка библиотеки OpenAL ничем не отличается от инсталляции любой другой программы. Скачанный файл-установщик (с сайта http://openal.org/) достаточно запустить двойным кликом и выбрать Install. Никаких дополнительных параметров настраивать не нужно – их там вовсе нет (даже папку, в которую будет произведена инсталляция, выбрать нельзя). В случае, если Windows выдаст запрос об изменении параметров аудиоустройств, следует выбрать «Разрешить».
В операционных системах семейства Linux установка производится через штатный пакетный менеджер. Но, к примеру, в Debian для этого нужно подключить репозитории из ветки Testing. В Gentoo пакет OpenAL вовсе требуется скомпилировать самостоятельно из исходного кода (библиотеку можно взять на Github). В Arch-подобных дистрибутивах программа изначально доступна в AUR.
И перед тем как установить библиотеку OpenAL, необходимо учесть, что она может некорректно работать, если в системе ранее были инсталлированы такие утилиты, как Rapture 3D или Dolby Atmos (которые тоже влияют на вывод аудио через Direct Audio). Например, игра Bioshok 2 в этом случае начинает работать вовсе без звука (в ремастере Bioshok 2 данная проблема была устранена). И исправить это можно только удалением тех самых дополнительных библиотек.
Удаление программы
Прежде чем удалять это приложение, подумайте хорошо. Сделав это, вы можете нарушить звук во многих приложениях, и в первую очередь в играх – большинство из них просто не будут запускаться.
Если же вы твёрдо намерены удалить OpenAL со своего компьютера, сделать это очень просто. Для этого можно воспользоваться «Панелью управления» и пунктом в ней «Программы и приложения». Данное приложение там имеется, поэтому достаточно выбрать его и кликнуть «Удалить».
Напишите в комментариях, приходилось ли вам удалять это приложение и какие после этого случались проблемы. Каждый совет поможет кому-нибудь из наших читателей.
Что это за программа OpenAL?
Всем привет
Будем разбираться с такой штукой как OpenAL, для чего она нужна и можно ли ее удалить.
ОпенАл относится к программированию, это такой компонент, который отвечает за звук в 3Д-программах, в том числе и играх, чтобы звук в них был реально крутой. В задачу данного компонента входит обеспечивание обьемного 3Д-звука с эффектом присутствия, ну чтобы вы слышали так, будто вы находитесь прямо в игре. При этом звучание тех или иных предметов будет относительно расстояния между ними или между вами и обьектом. В общем думаю примерно понимаете о чем я
Что за файл openal32.dll? Это библиотека OpenAL, удалять ни в коем случае нельзя, а то будут в итоге глюки!
Главная задача OpenAL — сделать максимально звуки естественными, чтобы было интересно играть или пользоваться какой-то необычной программой. Просто мне не приходит на ум что это может быть за программа, ну может быть какое-то моделирование
OpenAL по сей день развивается, но уже просто так, нет руководителя, все как было раньше, этого уже нет. Но тем не менее, проект не загнулся уважаемые, в него была добавлена поддержка видеокарт nForce от NVIDIA и со временем он стал стабильно развиваться. Конечно никакого беспредела нет — все изменения специально тестируются, потом отправляются в некую компанию под именем Creative Technology, а те смотрят и если все нормалек, то включают эти изменения в новую версию ПО OpenAL.
Вообще это был открытый проект. Но уже с версии 1.1 он стал закрытым и это хорошо, так как было сделано это для того, чтобы в него не залезли вирусы, а то была бы просто катастрофа и проект точно бы загнулся
OpenAL был задействован даже в старом Квейке 3:
Ну вот например OpenAL используется в играх на движке Unity — наверно вы не знаете что это такое, ну знать то и не нужно, про движок мало интересного. Но вот интересно то, что он дает играм. А знаете что? Короче движок Unity игры делает суперскими просто в плане графики, а вся фишка в том, что эти игры браузерные. То есть ничего не нужно устанавливать, реально интересные игры у вас могут быть в браузере. Это не флеш-технология, не путайте. И OpenAL тесно интегрирована в Unity, это позволяет получить звуковой эффект присутствия в игре.
OpenAL также принимает участие в построении звуковых эффектах и в серьезных играх, типа Дирт, Бателфилд, Хитман, серия гонок НФС и другие
В заключении хочу сказать, чтобы вы и не думали даже удалять OpenAl, данный компонент должен быть установлен в каждом компе, он систему и так не грузит, но некоторые программы без него не смогут работать.
Все, со всем разобрались, что это за файл openal32.dll вы знаете как и что такое OpenAL, желаю вам удачи вам
Введение в OpenAL, и проигрывание музыкального формата OGG/Vorbis
Графика, графика, графика. А попробуйте отключить звук у своей любимой игры. Ну, как впечатления? То-то же. 🙂
Итак, звук и музыка. Неотъемлемые части любой игры. Существует несколько библиотек для работы с ними. Это всем известные DirectSound / DirectMusic, несколько менее распространенных: FMOD, Audiere, BASS (правда они решают несколько иные задачи). Есть еще одна. Она тоже еще не очень распространена, но поддержка со стороны такого гиганта мультимедиа индустрии как Creative Labs, играет большую роль. Как вы уже, наверное, догадались, речь идет об Open Audio Library (OpenAL). Это бесплатная, мультиплатформенная, расширяемая, с доступными исходными текстами библиотека для работы со звуком в трехмерном пространстве. Название очень созвучно с OpenGL, неправда ли? И не с проста. Человеку, имеющему опыт работы в OpenGL, будет очень легко понять принципы работы с аудио библиотекой. Дальше, при более близком рассмотрении вы увидите практически абсолютное сходство. Плюс, OpenAL небольшая, полная документация занимает 50 страниц текста.
Основные концепции и принципы.
Все функции процессинга и изменения состояния в ОpenAL, применяются к так называемым аудио-контекстам (audio context), которых может быть несколько. Все контексты создаются для аудио устройства (audio device), которое, естественно, одно.
Основой библиотеки служат 3 кита: единственный слушатель (Listener) – место, откуда мы слышим окружающие звуки, множество буферов (Buffers) звука, которые содержат несжатые аудио данные и множество источников звука (Sources), располагающиеся в 3д пространстве и воспроизводящие звуки из буферов.
В OpenAL, так же как и в OpenGL, все функции подчиняются определённому соглашению об именовании. Все они начинаются с префикса “al” затем идет имя функции, а в конце, суффикс, определяющий тип ключевого параметра: i – int, f – float, v – вектор, и т.д.
Подобным образом объявлены и типы: ALuint, ALboolean, ALclampf и т.д.
OpenAL, является моделью конечного автомата, и всегда она (и все её объекты) находятся в каком-либо состоянии. Множества этих состояний контролируется с помощью функций Get, Enable, Disable и т.д.
Имеется даже поддержка расширений (а вы как думали! :)), коих уже существует несколько.
Ну вот мы и добрались до программирования.
Для работы с библиотекой вам понадобится OpenAL SDK, который можно скачать по адресу: http://connect.creativelabs.com/developer/. Надеюсь прописать пути в настройках VC++ вы сможете самостоятельно.:)
Итак, подключите нужные заголовочные файлы и библиотеки:
Разрабатывать мы с вами будем самодостаточный класс для проигрывания звуков различных форматов.
Но перед использованием возможностей OpenAL сначала необходимо проинициализировать библиотеку, для дальнейшего корректного её функционирования.
Итак, 2 функции: Инициализация и Деинициализация.
Как вы видите, все довольно тривиально. В инициализации мы открываем звуковое устройство, заданное по умолчанию. В win32 системах используется DirectSound. Если вы хотите явно задать желаемое устройство, вместо NULL передайте строку с названием вашего устройства. Далее создаем контекст и делаем его текущим, т.е. активным. Как я уже упоминал, все операции в дальнейшем будут применимы только с текущему контексту. Аудио контекстов (не удивляйтесь, в терминах OpenAL они, также как и в OpenGL, называются контекстами рендеринга) может быть множество.
Затем происходит настройка параметров слушателя, которых, я напомню, у нас 1 на контекст. За разъяснением значения параметров, читайте комментарии, и раздел про генерацию источников звука.
В деинициализации всё наоборот. Сначала удаляем все используемые буфера (о них мы позже поговорим) потом уничтожаем контекст, и устройство.
Хочется отметить, что в состав OpenAL входит подбиблиотека, облегчающая работу со звуком. Называется она alut (Вот вам еще одно сходство с OGL. Там glut). В неё, пока что, входит всего 5 функций: 2 для инициализации/деинитиализации, и 3 для загрузки wav файлов. С помощью alut инициализацию OpenAL можно провести вызовом:
Так как мы легких путей не ищем, а хотим разобраться во всём, то основным методом я сделал инициализацию именно через alc* функции. Каким пользоваться в вашем приложении, решать вам.
Так же было реализовано 2 функции проверки результатов выполнения al* и alc* функций. Это CheckALError() и CheckALCError() соответственно. Вот их реализация:
Все до ужаса тривиально. Получаем код ошибки. Если он не равен AL_NO_ERROR (ошибки нет), то вызываем функцию alGetString/alcGetString, которая возвращает предопределенную строку, содержащую информацию о заданной ошибке.
Теперь взглянем на класс звука:
Структура не сложная. На что стоит обратить внимание:
2) Член класса mSourceID, содержит уникальный идентификатор источника звука, который используется, где необходимо взаимодействие с этим источником.
3) Функции Play(), Stop(), Close(), я полагаю, говорят сами за себя. Функция Update() – предназначена для смены буферов для потокового звука. Если звук цельный, т.е. полностью содержится в единственном буфере, то эта функция ничего не делает.
4) mVel[3], mPos[3] – положение и скорость источника в 3Д пространстве. Эти 2 переменные содержат x,y,z координаты. Надо отметить, также, что координатная система в OpenAL абсолютно такая же, как и в OpenGL
Теперь, давайте, взглянем на реализацию наших функций.
Источник звука создается функцией alGenSources(), которой в качестве параметров передается количество создаваемых источников (у нас 1) и адрес переменной (или первого элемента массива), которая будет содержать идентификатор сгенерированного источника. Далее идет установка базовых параметров источника.
AL_PITCH – тон звука
AL_GAIN – усиление звука. Этот параметр влияет на то, как будет изменяться сила звука, по мере изменения расстояния от источника до слушателя.
AL_POSITION – позиция источника в трёхмерных координатах.
AL_VELOCITY – скорость движения звука. Работает это параметр не так как можно предположить изначально. Если вы установите этот параметр в какое-то значение, то при выполнении программы, ваш звук не будет двигаться согласно скорости заданной этим параметром. Этот параметр используется, всего лишь, как контейнер значения скорости, использовать который вы можете, как захотите.
AL_LOOPING – значение этого параметра определяет, будет ли ваш звук зациклен.
Существует еще несколько параметров управляющих поведением источника звука. Это, например, DIRECTION, CONE_INNER_ANGLE, CONNER_OUTER_ANGLE, и др. В данной статье я на них останавливаться не буду, за подробностями обращайтесь к документации в SDK.
Так же есть очень важный параметр, без которого никакого звука не будет – AL_BUFFER. Этот параметр являет идентификатор созданного буфера, содержащего аудиоданные. Так как, пока что, буфер мы еще не создали, то на данном этапе данное свойство для источника мы не задаем.
Далее мы определяем тип звукового файла по его расширению. Пока что, работаем только с файлами типа WAV, раздел для OGG формата раскомментируем во второй части статьи.
Управляющие функции. Все в пару строк.
Play() – начинаем проигрывание, вызовом одной единственной функции – alSourcePlay(), передавая ей в качестве параметра идентификатор источника. Думаю, здесь уместно сказать о состояниях, в которых может прибывать источник звука, и которые мы можем получить с помощью функции alGetSourcei(). Их всего 4: AL_INITIAL, AL_PLAYING, AL_PAUSED, AL_STOPPED. Названия, как мне кажется, ясно говорят сами за себя. Исключением, разве что является AL_INITIAL. Это состояние соответствует проинициализированному источнику, но который еще ни разу не играл мелодию из буфера.
Процедура Stop() останавливает проигрывание звука, если таковое имело место
Close() – останавливает проигрывание, и удаляет источник по заданному идентификатору. Здесь я нарочно применил функцию alIsSource(), чтобы показать, что есть средства проверки соответствия идентификаторов реальным объектам. Такая же функция существует и для буферов.
Move() двигает источник в соответствии с новыми координатами.
Теперь подошла очередь загрузки звука в буфера. Поэтому, рассмотрим функцию, которая это реализует для WAV файлов: LoadWavFile().
Как мне кажется, большинство моментов понятно из комментариев. Необходимо сказать пару слов способе хранения буферов в программе. Для этого мы создали структуру SndInfo, которая содержит в себе все важные параметры буфера со звуковыми данными. Это идентификатор буфера, имя файла, частота звука и его формат (моно 8 бит, моно 16 бит, стерео 8 бит, стерео 16 бит). Тут же, хочу сказать, что 3д позиционирование работает только для моно звуков, для стерео – нет.
Затем мы создали map для централизованного хранения всех структур. Для чего? OpenAL обладает очень полезной особенностью – множество источников звука могут использовать один и тот же звуковой буфер. Вот для этого мы и создали ассоциативный массив описаний уже существующих буферов. При попытке загрузки звука, который был уже загружен ранее, сначала произойдет поиск звука уже в существующих буферах, и только при отрицательных результатах, произойдет создание буфера и загрузка в него звука из файла. Если же, такой звук уже существует в массиве Buffers, то к текущему источнику будет проассоциирован идентификатор соответствующего буфера. Оптимизация налицо: уменьшение количества занимаемой памяти (за счет избежания дублирований) и ускорение загрузки звуков.
Обратите внимание, что здесь мы опять встретились со старым знакомым – alut библиотекой в лице 2-х функций: alutLoadWAVFile() и alutUnloadWAV(), которые здорово упрощают загрузку wav файлов, но не позволяют реализовать потоковое проигрывание, так как заполняют единственный буфер всем содержимым файла. Так что мой вам совет: не используйте больших WAV файлов. 🙂 Очень важной строкой является:
которая и осуществляет ассоциирование источника и буфера, используя и идентификаторы.
Применение легко и понятно:
1) Создаем объект звукового класса: remSnd Snd3D;
2) Инициализируем OpenAL библиотеку, в функции инициализации приложения:
InitializeOpenAL();
3) Загружаем звук: Snd3D.Open(«motor_a8.wav», true, false); Напомню, первый параметр – зацикленность, второй – потоковое проигрывание (для wav не поддерживается).
4) Мучаем звук, как хотим: Snd3D.Play(), Snd3D.Move(…), Snd3D.Stop().
5) Удаляем звук в процедуре деинициализации приложения: Snd3D.Close().
6) Деинициализируем OpenAL: DestroyOpenAL();
1) Официальный ресурс: http://www.openal.org/.
2) Creative OpenAL SDK: http://connect.creativelabs.com/developer/
3) Devmaster.net Tutorials (in English): http://www.devmaster.net/articles/openal-tutorials/lesson1.php
4) Тут на сайте в форумах девелоперы, предпочитающие Delphi, кричат, что их обделили. 🙂 Для них тоже есть туториалы: http://www.noeska.com/doal/tutorials.aspx
Пример, который должен развеять все вопросы — в конце следующей части.