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++
BASSMOD - Zvuková knihovna
2. ledna 2002, 00.00 | Před nedávnem jste měli možnost si přečíst o zvukové knihovně FMOD. A aby jste měli z čeho vybírat, přinášíme vám pohled na další knihovnu, která se zabývá přehráváním zvuku - tentokráte jde o knihovnu BASSMOD.
Aneb zvuku není nikdy dost
Před nedávnem jsem napsal článek o zvukové knihovně fmod. Tato knihovna je velmi kvalitní a já se dočkal mnoha ohlasů na tento článek. Proto jsem se rozhodl napsat další článek o zvukových knihovnách. Tentokráte jsem pod svým drobnohledem prozkoumal knihovnu BASSMOD.
Její oficiální stránky naleznete:
Stáhnete si verzi 1.3, archiv se jmenuje bass13m.zip. Obsahuje základ knihovny, který tvoří dynamická knihovna bassmod.dll. Je zde také několik příkladů a hlavně velmi důležitá nápověda.
Srovnám-li knihovnu s fmodem, je mnohem jednodušší, ale na oficiálních stránkách naleznete navíc různé přídavky a vylepšení. Zaměřme se ale na bassmod.dll.
Poznámka:
Do projektu musíte přidat statickou knihovnu bassmod.lib
IMPLIB bassmod.lib bassmod.dll
Jak jsem říkal knihovna je mnohem jednodušší než fmod a nenabízí tolik možností, proto nebude pro mne problém, vyjmenovat vám všechny jeho možnosti. Knihovna obsahuje tyto funkce:
BASSMOD_ErrorGetCode - vrátí chybový kód
BASSMOD_Free - uvolní všechny využité prostředky bassmodu
BASSMOD_GetCPU - vrátí využití procesoru
BASSMOD_GetDeviceDescription - popis a nastavení zvukového ovladače
BASSMOD_GetVersion - verze bassmodu
BASSMOD_GetVolume - vrátí hlasitost
BASSMOD_Init - inicializuje bassmod
BASSMOD_MusicFree - uvolní z paměti aktuální skladbu
BASSMOD_MusicGetLength - vrátí délku skladby
BASSMOD_MusicGetName - vrátí jméno skladby
BASSMOD_MusicGetPosition - vrátí pozici ukazovátka ve skladbě
BASSMOD_MusicIsActive - jestli se přehrává skladba
BASSMOD_MusicLoad - nahraje do paměti skladbu
BASSMOD_MusicPause - přeruší přehrávání skladby
BASSMOD_MusicPlay - započne přehrávat skladbu
BASSMOD_MusicPlayEx - započne přehrávat skladbu (více možností)
BASSMOD_MusicSetPosition - nastaví pozici ukazovátka v přehrávané nahrávce
BASSMOD_MusicStop - stopne přehrávání skladby
BASSMOD_SetVolume - nastaví hlasitost výstupu
Vynechal jsem funkce na synchronizaci. Podívejme se jak to šlape v akci.
Příklad:
Dnes opět vyzkoušíme udělat jednoduchý přehrávač zvukových souborů. Bassmod
se specializuje na soubory IT, XM, S3M, MTM, MOD, UMX, jde o syntetické skladby.
Pro přehrávání využívá tzv. XMPlay engine.
První, co v příkladu najdete, je funkce, která má za úkol vypisovat chybové hlášky. Využívá API funkci MessageBox.
|
Teď přichází na řadu inicializace knihovny bassmod.
|
Nejprve je dobré otestovat, jestli využíváme správnou verzi knihovny bassmod.
Funkce BASSMOD_GetVersion() vrací číslo verze.
Dále inicializujeme bassmod funkcí
BASSMOD_Init(int device,DWORD freq,DWORD flags);
Hodnota device představuje číslo ovladače. Implicitní (defaultní) nastavení
je -1. Parametr freq představuje výstupní frekvenci (kvalitní nastavení je 44,1
KHz).
Hodnota flags je doplňující přepínač, mi nastavíme BASS_DEVICE_NOSYNC,
to znamená, že vypneme synchronizaci. Jinak můžeme použít přepínač na 8 bitové
rozlišení BASS_DEVICE_8BITS. Nebo můžeme využít
monofoní zvuk BASS_DEVICE_MONO atd.
Další obsáhlejší akce v našem programu je načtení zvukového souboru.
|
Do systému BASSMOD načteme zvukový soubor funkcí
BASSMOD_MusicLoad(BOOL mem,void *file,DWORD offset,DWORD
length,DWORD flags);
Parametry jsou velmi vykutálené, mem určí, jestli bude načítat skladbu (true
- z paměti, false - ze souboru).
Ukazatel void *file je ukazatel na zvukové data, pokud načítáme přímo ze souboru,
zadáme zde jméno souboru (cestu).
offset - zadáme 0
length - nastavení typu načítání (jen pro mem = true), chceme-li načítat do
konce souboru, nastavíme 0
flags - přepínače, pro opakované přehrávání skladby zadáme BASS_MUSIC_LOOP,
BASS_MUSIC_SURROUND - využije surround
Při přehrávání zvukových souborů potřebujete také nastavit hlasitost výstupu.
To provedete funkcí
BASSMOD_SetVolume(DWORD volume);
Hodnotu hlasitosti nastavujeme v rozmezí od 0 do 100.
Pokud chcete znát název skladby, zjistíte to přes funkci BASSMOD_MusicGetName,
která vrací řetězec názvu skladby.
BASSMOD_MusicGetLength(BOOL play) - vrací délku
skladby (true - délka skladby v bajtech, false - délka v časových jednotkách)
Takže nyní už skladbu přehráváme. Ale když nás omrzí, tak jí chceme vypnout
nebo přerušit přehrávání.
Funkce BASSMOD_MusicPause přeruší přehrávání.
Trochu nelogická mi přijde funkce BASSMOD_MusicStop,
myslel jsem, že tato funkce vypne přehrávání zvukového souboru, ale při opětovném
spuštění nahrávky pokračuje přehrávání na místě, kde skončilo přehrávání (jako
u magnetofonu). Takže pokud budete chtít přehrávat od začátku skladby, jak je
zvykem u většiny přehrávačů, zadáte
BASSMOD_MusicSetPosition(0);
Poslední zajímavá věc na příkladu je
DWORD WINAPI BASSMOD_MusicGetPosition();
Tato funkce vrátí hodnotu, kde se nachází pomyslné ukazovátko - pozice v přehrávané
skladbě. Není to tak jednoduché, z této funkce můžeme získat 2 hodnoty. Mi ale
potřebujeme LOWORD hodnotu a tu získáme přes
LOWORD(BASSMOD_MusicGetPosition());
Celý příklad stáhnete zde (670KB).
Hodnocení
Pokud mám hodnotit celkově knihovnu BASSMOD, je velmi zdařilá. Má však pouze
základní možnosti jako přehrávání, změna hlasitosti, posunování ve zvukovém
záznamu. Pokud vám tyto možnosti pro váš projekt plně postačují, je to volba
pro vás. Nevýhodou bezesporu je málo podporovaných zvukových formátů. Tento
nedostatek můžete doplnit různými přídavky, které se nachází na oficiálních
stránkách. Ale o tom se zmíním v poznámce.
Nesmím zapomenout, co tahle legrace stojí. Pro vaše freeware programy je tato
knihovna zadarmo. Za 100 dolarů máte BASSMOD k dispozici pro shareware. Co myslíte,
to je za hubičku. No a pro komerční software si BASSMOD pořídíte za 995 dolarů.
Poznámka pod čarou
Ke knihovně BASSMOD je možné stáhnout několik přídavků. Velmi zajímavě zní LAME
3.7, je to MP3 encoder. Bohužel odkaz na oficiálních stránkách nebyl funkční.
Ovšem stáhl jsem ActiveX prvek nazvaný DMC2. A ten je hodně povedený. Jedná
se o ActiveX komponentu, která je postavená na BASSMODu. Tato ActiceX komponenta
toho umí mnohem více než samotný BASSMOD. Namátkou - přehrává i wav a mp3 soubory.
Ovšem zkoušel jsem ji až při dopisování tohoto článku, tak vám nepodám více
informací, ale najdete ji zde.
-
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