FMOD: заметки очевидца. Часть первая.
От: _chipset Россия http://merlinko.com
Дата: 27.03.05 01:12
Оценка: 14 (2)
#Имя: FAQ.audio.fmod
Привет всем
Начал тут знакомиться с библиотекой FMOD, решил попутно делиться опытом с коллегами, можь кому и интересно будет..
Эта часть, как сказал Рома Мик, здесь
Автор: Рома Мик
Дата: 22.03.05
:

Действительно полезная статья для тех, кому некогда самому набивать все шишки.


Читаем..
Введение

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

Однако, стандартными средствами 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'ом . Для установки 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) Сейчас нам нужен 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; //и возвращаем системе что всё пучком
}



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

Завершение

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

Ваши комментарии, пожелания или оскорбления

Автор не несёт уголовной ответственности за грамматические ошибки.
"Всё что не убивает нас, делает нас сильнее..."
Re: FMOD: заметки очевидца. Часть первая.
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 27.03.05 05:14
Оценка: 3 (1) +2
Здравствуйте, _chipset, Вы писали:

_>В папке api\inc, лежат *.h файлы которые нам необходимо скопировать в соответствующую директорию визуала. У меня это "F:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\". Для порядка, создадим поддиректорию


"для порядка" не надо ничего никуда копировать, чтоб потом при обновлении версии библиотеки не разыскивать по всему диску старые файлы. Определяешь для любой библиотеки место на диске и добавляешь путь к ней через Tools-Options-VC++ Directories-Include Files

_>Теперь скопируем нужный lib файл в директорию для lib файлов.


аналогично, Tools-Options-VC++ Directories-Library Files

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


ну, вы поняли
Re[2]: FMOD: заметки очевидца. Часть первая.
От: _chipset Россия http://merlinko.com
Дата: 27.03.05 05:23
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

OE>Здравствуйте, _chipset, Вы писали:


_>>В папке api\inc, лежат *.h файлы которые нам необходимо скопировать в соответствующую директорию визуала. У меня это "F:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\". Для порядка, создадим поддиректорию


OE>"для порядка" не надо ничего никуда копировать, чтоб потом при обновлении версии библиотеки не разыскивать по всему диску старые файлы. Определяешь для любой библиотеки место на диске и добавляешь путь к ней через Tools-Options-VC++ Directories-Include Files

И куда её класть? Как-раз всегда знаешь что у тебя инклуды хранятся вон там, а не разбросаны по диску.
_>>Теперь скопируем нужный lib файл в директорию для lib файлов.

OE>аналогично, Tools-Options-VC++ Directories-Library Files

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

OE>ну, вы поняли


Угу, забыл добавить чтобы совали DLL в каталог прилаги при распространении..
"Всё что не убивает нас, делает нас сильнее..."
Re[3]: FMOD: заметки очевидца. Часть первая.
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 27.03.05 05:59
Оценка:
Здравствуйте, _chipset, Вы писали:

_>>>В папке api\inc, лежат *.h файлы которые нам необходимо скопировать в соответствующую директорию визуала. У меня это "F:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\". Для порядка, создадим поддиректорию

OE>>"для порядка" не надо ничего никуда копировать, чтоб потом при обновлении версии библиотеки не разыскивать по всему диску старые файлы. Определяешь для любой библиотеки место на диске и добавляешь путь к ней через Tools-Options-VC++ Directories-Include Files
_>И куда её класть?

это не важно, важно, что ты получаешь нечто целое — библиотеку — и оно как целое лежит в одном месте

_>Как-раз всегда знаешь что у тебя инклуды хранятся вон там, а не разбросаны по диску.


обрати внимание, как например сделаны инсталяторы Microsoft SDK, Microsoft Platform SDK for Windows XP SP2, SpeechSDK и любой другой библиотеки, имеющей инсталятор, а не только zip-архив, никто не валит свои файлы в $(VCInstallDir)include — все создают свой каталог и хранят там в одном месте, h, lib, doc, idl, tlb и все остальное. Те у кого zip архив обычно пишут в readme:

To install WTL, just copy the whole directory structure, or unpack the archive file, to the location of your choice. Please be sure to add the WTL\include directory to the list of include directories in VC++, so that the compiler can find them when you include them in your projects..

(c)WTL

посмотри внимательно readme к FMOD, наверняка там написано что-то подобное.
Re[4]: FMOD: заметки очевидца. Часть первая.
От: _chipset Россия http://merlinko.com
Дата: 27.03.05 06:14
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

OE>Здравствуйте, _chipset, Вы писали:


_>>>>В папке api\inc, лежат *.h файлы которые нам необходимо скопировать в соответствующую директорию визуала. У меня это "F:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\". Для порядка, создадим поддиректорию

OE>>>"для порядка" не надо ничего никуда копировать, чтоб потом при обновлении версии библиотеки не разыскивать по всему диску старые файлы. Определяешь для любой библиотеки место на диске и добавляешь путь к ней через Tools-Options-VC++ Directories-Include Files
_>>И куда её класть?

OE>это не важно, важно, что ты получаешь нечто целое — библиотеку — и оно как целое лежит в одном месте

Понял
Просто обращал внимание что GL субдиректория к примеру, существует... ну да ладно.
"Всё что не убивает нас, делает нас сильнее..."
Re: FMOD: заметки очевидца. Часть первая.
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 28.03.05 10:17
Оценка:
Здравствуйте, _chipset, Вы писали:

_>    FSOUND_Init(44100,32,0); 
_>/*теперь пошёл FMOD, данной строчкой, мы даём понять что мы хотим звука частотой 44100 с максимум 32 каналами ... */


а что за каналы? у меня FSOUND_GetMaxChannels() выдает 96 например. Можно ссылочку где про это по-русски написано.

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


угу, симпатишная вроде штука.
Re[2]: FMOD: заметки очевидца. Часть первая.
От: _chipset Россия http://merlinko.com
Дата: 28.03.05 10:43
Оценка: 10 (1)
В то время как космические корабли бороздят просторы народного театра, а Уокер — Техасский Рейнджер борется с мировым терроризмом, многоуважаемый Odi$$ey wrote следующее:


OE>Здравствуйте, _chipset, Вы писали:


OE>
_>>    FSOUND_Init(44100,32,0); 
_>>/*теперь пошёл FMOD, данной строчкой, мы даём понять что мы хотим звука частотой 44100 с максимум 32 каналами ... */
OE>


OE>а что за каналы? у меня FSOUND_GetMaxChannels() выдает 96 например. Можно ссылочку где про это по-русски написано.


Это количество одновременно проигрываемых звуковых потоков. Таким образом, поставив 1, одновременно будет проигрываться только один стрим, при значении 2, ты сможешь открыть и проигрывать ещё один, и оба при этом будут звучать одновременно..
... << Писалось на RSDN@Home 1.1.4 beta 4 rev. 358 под музыку Алиса — Смутные дни.>>
"Всё что не убивает нас, делает нас сильнее..."
Re: FMOD: заметки очевидца. Часть первая.
От: yxiie Украина www.enkord.com
Дата: 29.03.05 08:02
Оценка:
Здравствуйте, _chipset, Вы писали:

Хорошая статья, но я думаю она бы была намного более полезная, если бы приводила сравнение FMOD с другими аналогичными библиотеками (BASS, Audiere, OpenAL etc.) описывая сильные и слабые стороны каждой. Ведь проблема зачастую стоит не как использовать, а что использовать — тоесть, какую библиотеку выбрать под конкретную задачу.

_>Список поддерживаемых платформ совсем нехилый: Windows, Linux, Macintosh, GameCube, PS2 и XBox!


и под GameBoy advance вроде тоже есть...

_>Из языков программирования, FMOD поддерживает: C++, C, Delphi и VB.


ИМХО, если не нужно портировать под приставки то лучше использовать бесплатный audiere.sourceforge.net
по простоте использования ничуть не сложнее ФМОДа
а на сэкономленные деньги попить пива. оччень много пива получится
... << RSDN@Home 1.1.3 stable >>
Re[2]: FMOD: заметки очевидца. Часть первая.
От: _chipset Россия http://merlinko.com
Дата: 29.03.05 15:47
Оценка:
В то время как космические корабли бороздят просторы народного театра, а Уокер — Техасский Рейнджер борется с мировым терроризмом, многоуважаемый yxiie wrote следующее:



Y>ИМХО, если не нужно портировать под приставки то лучше использовать бесплатный audiere.sourceforge.net

Y>по простоте использования ничуть не сложнее ФМОДа
Y>а на сэкономленные деньги попить пива. оччень много пива получится

Хм. Вроде бы FMOD бесплатный...
... << Писалось на RSDN@Home 1.1.4 beta 4 rev. 358 под музыку тишины.>>
"Всё что не убивает нас, делает нас сильнее..."
Re[3]: FMOD: заметки очевидца. Часть первая.
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 29.03.05 16:06
Оценка: 8 (1)
Здравствуйте, _chipset, Вы писали:

_>Хм. Вроде бы FMOD бесплатный...


If you want to use it in a commercial product, then please see below for pricing and conditions.

(Win32 — $2000)

audiere:

Audiere is open source and licensed under the LGPL. This means that you may freely use Audiere in commercial products, as long as you do not modify the source code.

Re[4]: FMOD: заметки очевидца. Часть первая.
От: _chipset Россия http://merlinko.com
Дата: 29.03.05 16:08
Оценка:
В то время как космические корабли бороздят просторы народного театра, а Уокер — Техасский Рейнджер борется с мировым терроризмом, многоуважаемый Odi$$ey wrote следующее:


OE>Здравствуйте, _chipset, Вы писали:


_>>Хм. Вроде бы FMOD бесплатный...


OE>

OE>If you want to use it in a commercial product, then please see below for pricing and conditions.

OE>(Win32 — $2000)

OE>audiere:


OE>

OE>Audiere is open source and licensed under the LGPL. This means that you may freely use Audiere in commercial products, as long as you do not modify the source code.


Оппа, надо же! Ждём сравнения с Audiere
... << Писалось на RSDN@Home 1.1.4 beta 4 rev. 358 под музыку Кино — Мама, мы все сошли с ума.>>
"Всё что не убивает нас, делает нас сильнее..."
Re[3]: FMOD: заметки очевидца. Часть первая.
От: yxiie Украина www.enkord.com
Дата: 29.03.05 16:08
Оценка: 8 (1)
Здравствуйте, _chipset, Вы писали:

_>Хм. Вроде бы FMOD бесплатный...


...для некоммерческого использования
... << RSDN@Home 1.1.3 stable >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.