Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Голопом по аудиолибам, введение в популярные аудиобиблиотеки 
:(
    Опции темы
chipset
Дата 22.3.2005, 03:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4067
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: нет
Всего: 164



Часть первая:FMOD
Введение

Не секрет, что одной из основных составляющих хорошей игры является музыка и звук. Кажется бредовой мысль о игре без звукового сопровождения, не правда ли?

Однако, стандартными средствами Win32Api очень сложно воспроизвести звук формата MP3, или, набирающего популярность OGG. Кроме того, в 3D шутерах возникает необходимость в 3D-звуке, который также, очень трудно реализовать.

Некоторые пытаются использовать DirectMusic, но он не предоставляет большого ассортимента средств и полностью ограничен платформой Windows, что может быть и не так уж важно для программистов DirectX'а, но может стать стеной для тех кто хочет портировать свои программы на другие платформы...

И тут на помощь, приходят сторонние библиотеки, наподобие FMOD. Про неё я собственно и поведу рассказ сегодня.

FMOD поддерживает популярные сегодня форматы записи звука: midi, mp3, ogg vorbis, wma, aiff; позволяет записывать звук, работать с интернет-потоками, риппинг дисков, MMX, хардварная акселлерация EAX 2&3 и многое другое...

Список поддерживаемых платформ совсем нехилый: Windows, Linux, Macintosh, GameCube, PS2 и XBox! Из языков программирования, FMOD поддерживает: C++, C, Delphi и VB.

Из недостатков я хотел бы подчеркнуть: процедурное программирование и неподдерживающаяся Java.

Установка

Я надеюсь, вы уже подобрали отвисшую челюсть, так что я могу как-бы продолжать.. Официальный сайт проекта - http://fmod.org. Смело шагаем по адресу - http://fmod.org/ifmoddownload.html, выбираем нужный дистрибутив в зависимости от вашей операционки и качаем..

Скачали? Хорошо, продолжим.. Я выбрал Windows дистрибутив, надеюсь Linux-девелоперы смогут проложить аналогии и установить FMOD. Кроме того, я буду использовать, не Delphi, как могли подумать некоторые, а C++ и компилятор VC7.1.

Я просто распаковал архив в временную директорию и начал раскидывать файлы по нужным папкам FAR'ом smile. Для установки FMOD'а нам нужна его субдиректория по имени "api", там находятся библиотеки и хидэры.

В папке api\inc, лежат *.h файлы которые нам необходимо скопировать в соответствующую директорию визуала. У меня это "F:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\". Для порядка, создадим поддиректорию \fmod и скопируем туда всё содержимое api\inc.
Теперь скопируем нужный lib файл в директорию для lib файлов. У меня она находится в "F:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib". В директории фмода api\lib находится несколько файлов, из названий которых мы видим, что сабж поддерживает Watcom C(fmodwc.lib), LCC(fmodlcc.lib), Borland C(fmodbc.lib), 64-битный VC(fmod64vc.lib), просто VC(fmodvc.lib) и наконец g++(libfmod.a) smile Сейчас нам нужен fmodvc.lib, который мы и копируем..

Последним шагом нам необходимо положить динамическую библиотеку api\fmod.dll (160 KB), которую нам предстоит таскать за собой.. Пока, давайте просто скопируем её в вашу системную директорию (у меня: F:\Windows\System32).

Начинаем кодировать

Теперь, можно попробовать FMOD на деле. Создайте Win32 Console Project (не забываем, у меня VC7.1) с параметром Empty, добавьте файл типа .cpp и скопируйте следующий код:

Код
    
#include <iostream> // см. ниже
#include <fmod\fmod.h>//мы помним, мы положили в папку fmod 
using namespace std;//заюзываем STL
#pragma comment(lib, "fmodvc.lib") /*подключаем fmodvc.lib, который, я надеюсь вы положили в правильную папку */
int main() //главная функция
{
    FSOUND_Init(44100,32,0); 
/*теперь пошёл FMOD, данной строчкой, мы даём понять что мы хотим звука частотой 44100 с максимум 32 каналами и нефига нам не нужно пока флагов */
    FSOUND_STREAM *stream = //эдакий хендл на звуковой поток    
    FSOUND_Stream_Open("15-Roulette.mp3",FSOUND_2D,0,0); /*открывает файл
15-Roulette.mp3, который лежит в папке проекта, без 3D ламерства (шучу :) ) , третий параметр указывает что мы хотим проигрывать с самого начала, а 
четвёртый обозначает длину желаемого проигрывания */
    FSOUND_Stream_Play(0,stream); //проигрываем stream
    int i;//см. ниже
    cin>>i;//тут, я таким ламерским способом жду ввода пользователя
    FSOUND_Stream_Close(stream); //когда юзер ввёл что-нибудь - закрываем
    return 1; //и возвращаем системе что всё пучком
}


Всё должно работать smile

Завершение

Теперь про самое главное. В папке "место_куда_вы_распаковали_fmod\documentation" находится файл fmod.chm, который активно изображает из себя MSDN и предоставляет справку по всем функциям FMOD'a. С ним вам придется активно работать...
Удачи вам в программировании звука! smile
Ваши комментарии, пожелания или оскорбления smile

Автор не несёт уголовной ответственности за грамматические ошибки.


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
chipset
Дата 7.4.2005, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4067
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: нет
Всего: 164



Часть вторая: Audiere
Доброго времени суток!

В прошлой статье 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-шным звуком, для которых сумма за лицензию — смешна.

Ну а вообще.. решение зависит только от вас! smile


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.1498 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.