Привет всем!
Написал вот ещё статейку, по Audiere. Следующий на линии: OpenAL.
Audiere: заметки очевидца 2
Введение
Доброго времени суток!
В прошлой статье fMOD: заметки очевидца, я писал о библиотеке для работы со звуком под названием FMOD. Сегодня я продолжу описывать звуковые библиотеки, и следующим предметом обсуждения будет Audiere. Постараюсь одновременно сравнивать её с FMOD'ом, чтобы вы могли определиться в выборе.
Итак! Библиотека Audiere довольно старовата, последняя ревизия (1.9.3) была выпущена аж в июле 2003-ого, в то время как последняя новость на сайте FMOD значится 11-ого января, 2005-ого года. Впрочем, если для вас это не критический
недостаток — читаем дальше.
Описание
Audiere проигрывает следующие форматы звуковых файлов: Ogg Vorbis, MP3, FLAC, несжатый Wav, AIFF, MOD, S3M, XM, и IT. Из платформ поддерживается: всеми любимые Винды, Линукс и IRIX. Как мы видим, приставки Audiere обделил. Опять-же, если для вас это критический фактор — можете сразу переходить к изучению документации по FMOD. Хотя главным языком для
библиотеки и является C++ (не Си, см. ниже), с ней также можно работать и под Java, Python и XPCOМ.
Домашняя страница Audiere расположена по адресу
http://audiere.sourceforge.net. Пройдя на список проектов, которые
используют Audiere(
http://audiere.sourceforge.net/users.php), мы узнаем, что там, среди всей тучи прочего, числится такой известный движок, как Irrlicht, и несколько игр которые были написаным RSDN'овцами
Практически основополагающим фактором, который может кардинально повлиять на ваше решение, является то, что Audiere является полностью бесплатной, распространяется по лицензии LGPL, и поставляется с исходниками. Это выгодно отличает его от ФМода, за использование которого в коммерческих проектах необходимо платить. Опять-же, для некоторых это не является большой проблемой.
Практика
После того как вдоволь насерфились по офсайту, давайте попробуем всё это дело установить и попробовать написать какой-нибудь тестовой пример. Я буду использовать Visual Studio 2003 и C++, по причинам, описанным в предыдущих заметках очевидца.
Скачайте последний Win32 Binary Release(отсюда:
http://audiere.sourceforge.net/download.php,558 KB) и распакуйте его в ту папку где вы обычно храните внешние библиотеки (у меня, к примеру, это: f:\libs\). Лирическое отступление: Меня таки удалось переубедить, складывать библиотеки и включаемые файлы не в папку компилятора, а в отдельный каталог. Хотя, я до сих пор считаю это делом вкуса..
Таким образом, у вас образовалось пять папок: bin, bindings, doc, include, и lib. Теперь, пропишите полный путь к lib
(MSVS2003->Tools->Options->Projects->VC++ Directories->Show directories for: Library files->кнопка с изображением папки->укажите папку где лежат lib) и inc(то же самое, только: Show directories for: Include files и укажите папку include).
Теперь, создайте новый Win32 Console Project с параметром Empty project и добавьте .cpp файл. Ещё одна маленькая деталь: перед тем как мы напишем небольшой пример, добавьте в корень свежесозданного проекта файл audiere.dll из
<каталога_с_audiere\bin>. Теперь мы полностью готовы.
Первое что я заметил приступив к изучению библиотеки, была полностью обьектно-ориентированная структура оной, в сравнении FMOD который является чисто — процедурной библиотекой. Это вполне логично, поскольку он связан по рукам и ногам Visual Basic'ом. Ещё одно очко в пользу Audiere... или FMOD, всё зависит от целей которые вы преследуете.
Итак, вот код, попытался выкинуть всё лишнее и ненужное:
#include <audiere.h> //включаем заголовочный файл
#pragma comment (lib, "audiere.lib")//библиотека audiere
using namespace audiere; //включаем namespace аудиеры
int main()
{
AudioDevicePtr soundDevice(OpenDevice());
/*Указатель на звуковое устройство вывода, тут же
инициализируется в конструкторе, свежеоткрытым
девайсом*/
OutputStreamPtr ourSong(OpenSound(soundDevice,"15-roulette.mp3",false));
/*Первый параметр обозначает наше устройство вывода звука (думайте о аналогиях с
HDC в GDI). Второй параметр - имя звукогового файла(кстати его тоже надо положить к
проекту. Третий параметр: если false - поток читается из файла (а если файлик, эдак
мегабайт под 90? :)), если true - грузится в память (выстрел, удар кувалдой,
коротенькие файлы).*/
ourSong->setVolume(0.3f);//30% громкости
ourSong->play();//проигрываем
while(ourSong->isPlaying());//пока играет - закрывать не будем
//документация говорит не удалять указатель, так-как RefPtr удалит его сам
return 1;
}
Выводы
Подведем итоги! Что мне удалось выявить в Audiere, по сравнению с FMOD:
Преимущества:
Бесплатность для коммерческого использования.
Кроссплатформенность(IRIX).
Полностью обьектно-ориентированный интерфейс.
Поддержка FLACa,S3M, XM.
Поддержка Java, Python, XPCOM (JS в Мозилле).
Недостатки:
Сайт разработчика давно не обновляется (не критично, но всё же)
Скудное количество возможностей (мда, в FMOD'e и запись звука, и 3D, и море всего)
Отсутствие порта на PSP, Macintosh,GameCube, XBox.
Нету поддержки Дельфи, VB (я не видел).
Документации там собственно стандартной и нету, так, tutorial, ридми, параметры к девайсам и т.д..
Ужасающий размер DLL (~500) KB, хотя мне удалось сжать до 170 (FMOD: 160, сжатый).
Нету поддержки MIDI.
Окончательные выводы
Кому может быть полезен Аудиер? Так и вырисовывается целевая аудитория: разработчики игр, которые не хотят таскать с собой тяжеленные WAV'ы, и которым просто нужно проигрывать игровой звук(кстати FLAC неплохо его сжимает). Кроме того, они зверски не хотят платить за FMOD, предпочитая обходиться бесплатными продуктами.
С другой стороны, я думаю что FMOD заинтересовал бы разработчиков плееров, обработчиков звука, команд работающими над какими-нибудь сложными 3D-шутерами с неменее сложным, 3D-шным звуком, для которых сумма за лицензию — смешна.
Ну а вообще.. решение зависит только от вас!
Удачи!
... << А писал её весь этот бред на RSDN@Home 1.1.4 beta 4 rev. 378, да под звуки Алиса — Плач .>>