Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
C/C++
FMOD - sound system
29. listopadu 2001, 00.00 | Kvalitního zvuku není nikdy dost, a proto je potřeba spolehlivý sound system. Jeden se jmenuje fmod a přečíst si o něm můžete v tomto článku.
Dnes jsem si pro vás připravil povídání o velice kvalitním zvukovém systému, který se jmenuje fmod. Musím říci, že jsem na něj narazil úplně náhodou při svých pravidelných toulkách po všemožných programátorských stránkách na internetu. A když čtete v titulku stránky "Playing MP3/WAV" , jak říkám, to se musí vyzkoušet.
Oficiální stránka:
www.fmod.org
Aby vaše hra byla opravdu dobrá, musí mít dobrou atmosféru. Té docílíte kvalitním
a strhujícím zvukem.
Aby vaše multimediální dílo bylo dokonalé, musí být kvalitně ozvučené.
A aby jste překonali kultovní přehrávač WinAmp, musíte použít knihovnu fmod.
Pokud se řídíte při programování svého multimediálního dílka podobnými hesly jako já, potřebujete velmi kvalitní sound systém. A kde jej hledat? Jako první bych prstem ukázal na MediaPlayer, komponenta v C++ Builderu (Delphi) slouží k přehrávání nejrůznějších multimediálních formátů (taková "děvka" pro všechno). Práce s ní je velmi jednoduchá, zvládá hodně formátů (avi, wav, mp3 ...). Přesto je pomalejší a nehodí se do projektů, kde je důležitá rychlá odezva. Další velmi dobrou možností je sáhnout přímo po DirectX nebo velmi oblíbené sadě komponent DelphiX, kde máme možnost využít přímo komponenty DXSound a DXWave. S těmito nástroji se pracuje rovněž pohodlně. Já nabízím alternativu fmod.
Knihovna fmod slouží výhradně pro práci se zvukem a rozchodíte ji ve velkém množství systémů jako je Windows, Linux a dokonce i WinCE. Podporuje velkou škálu zvukových formátů, od wav, midi, mod po formáty s3m a hlavně velmi populární mp3. Kromě toho fmod podporuje i 3D zvuk a velké množství efektů (jako vkládání prostředí, pokud to karta podporuje).
Rozchodíme ji ve velkém množství programovacích nástrojů: v C++ Builderu, Visual
C++, Watcom, ale i Delphi, Visual Basic a MASM.
Jednoduchý přehrávač zvukových souborů (BC++ Builder)
Lépe vám fmod nepředstavím než při práci v konkrétním programu. Uděláme si velmi jednoduchý přehrávač zvukových souborů MOD, S3M, XM, IT, MID, RMI, SGT, WAV, MP2, MP3,OGG, WMA, ASF.
Takže pěkně po pořádku, knihovnu si stáhněte na oficiálních stránkách (viz
úvod). V současné době je k dispozici verze 3.4.
Ze staženého archivu si překopírujte do adresáře s nový projektem soubor fmod.dll.
Dále navštívíme adresář inc a přehrajeme hlavičkový soubor fmod.h. A do třetice
ještě potřebujeme statickou knihovnu fmodbc.lib (pro borlandovské prostředí).
Můžeme začít programovat.
#include "fmod.h"
Zpřístupníme funkce knihovny fmod.
#pragma comment(lib, "fmodbc.lib")
Přilinkujeme knihovnu fmod k programu. Definujeme potřebné proměnné a ukazatele.
|
Teď již můžeme inicializovat zvukový systém.
|
Funkce FSOUND_Init inicializuje zvukový systém a v nápovědě je popsána takto:
signed char F_API FSOUND_Init(int mixrate,int maxsoftwarechannels,unsigned
int flags);
mixrate - nastavuje výstupní vzorkování, čím vyšší hodnota, tím kvalitnější
výstup. Hodnota se zadává v Hz mezi 4000 a 65535 (obvykle 48khz, 44 khz, 22
khz, 11 khz ...).
maxsoftwarechannels - udává počet kanálů, které se budou softwarově používat
(maximální použitelná hodnota se zjistí FSOUND_GetMaxChannels ).
flags - u této hodnoty se help rozchází s komentářem hlavičkového souboru,
takže doporučuji FSOUND_INIT_GLOBALFOCUS.
|
V cyklu vyplníme listbox seznamem ovladačů. GetNumDrivers vrátí počet ovladačů a pomocí funkce GetDriverName vyplníme celý seznam. Do této funkce dosazujeme pořadové číslo ovladače.
|
Předtím, než si poslechneme nějakou hudbu, musíme začíst zvukový soubor funkcí FSOUND_Sample_Load, která vrací ukazatel na zvukový záznam. Pokud funkce vrátí hodnotu NULL, soubor se nenačetl.
|
Funkce FSOUND_PlaySound spustí přehrávání zvuku, který zadáme přes ukazatel pSound. Funkce také vrací číslo kanálu, na kterém zvuk přehraje. To je velice užitečné, když chceme nastavit hlasitost výstupu pomocí FSOUND_SetVolume. Nastavujeme hlasitost kanálu v rozmezí od 0 do 255. FSOUND_SetLoopMode nastavuje opakovací mód. Dvě základní možnosti jsou FSOUND_LOOP_NORMAL, to znamená, že se zvuk bude cyklicky opakovat nebo FSOUND_LOOP_OFF znamená, že se zvuk přehraje jednou a dost.
Samozřejmě nemusíte čekat, až se zvuk přehraje a můžete přehrávání kdykoliv přerušit pomocí FSOUND_StopSound(soundChannel);
V ukázkovém příkladu jsem využil navíc ještě pár funkcí, které mají pouze informační
charakter:
FSOUND_GetCPUUsage - vrací hodnotu zatížení
procesoru v procentech
FSOUND_GetChannelsPlaying - vrací TRUE nebo
FALSE, podle toho, jestli daný kanál hraje
FSOUND_GetCurrentPosition(soundChannel) - vrací
pozici v přehrávaném souboru (jestli jste v půlce, na konci). Tato hodnota má
smysl pouze tehdy, jestli známe celkovou délku nahrávky. To zjistíme pomocí
FSOUND_Sample_GetLength(pSound). Pomocí těchto
dvou hodnot si lehce spočítáme, na jaké pozici v nahrávce (zvuku) se nacházíme.
Celý příklad si můžete stáhnout zde (360 KB).
Příklad jste jistě vyzkoušeli a zjistili jste, že práce s knihovnou fmod je
velice příjemná a dosažené výsledky jsou uspokojující.
Na závěr vám ještě povím, jaké funkce v knihovně najdete a jak je rozdělená. Knihovna je rozdělená na dvě základní části označené FMUSIC a FSOUN. FMUSIC slouží pro práci s moduly a FSOUND naopak pro práci s hudbou, zvuky ze streamem a CD.
V obou částech najdeme podobné funkce základní funkce pro načítání, přehrávání,
nastavování hlasitosti atd. Nesmím opomenout, že lze přehrávat na více kanálech
naráz, potlačovat šumy měnit frekvenci přehrávání a jiné vymoženosti. Kromě
toho systém nabízí možnost využít prostorový zvuk, pokud to vaše zvuková karta
podporuje, či filtrovat výstupy různými prostředími (jako jsou místnost, koupelna
atd..), ale opět to musí podporovat vaše zvuková karta (např. SB Live, EAX,
A3D).
Závěr
Fmod je velice kvalitní zvukový systém, který lze používat na profesionální úrovni. Tomu také odpovídají licenční podmínky. Každá sranda něco stojí. Takže pokud se rozhodnete použít tuto knihovnu do svého freewarového dílka, máte zelenou. Knihovna je pro freeware zcela zdarma. Pokud ale vytváříte shareware zaplatíte za licenci 200 dolarů a za licence pro plnohodnotný software stojí "bratru" 1250 dolarů a jak říkám: "To už se vyplatí". Tím je asi jasné, pro koho je tato knihovna dobrá.Pokusím se ještě poohlédnout po jiné knihovně, stejně kvalitní, ať máte z čeho vybírat.
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007