MIDAS Digital Audio System - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

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++

MIDAS Digital Audio System

7. února 2002, 00.00 | MIDAS je zvuková knihovna s bohatou historií, prošla již dlouhým vývojem. Je možné s ní i dnes programovat hry pro MS-DOS. Jak se s ní pracuje pod Windows98, se dočtete v tomto článku.

Dnes se mi podařilo oprášit golema, a oživit jej, aby mi zahrál své nejlepší skladby. A pokud i vy chcete zaslechnout pramínky melodií utkaných z těch nejčistších nástrojů, pojďte se mnou, však uslyšíte sami.

Ale dost snění, teď nás čeká jen tvrdá dřina, krev a pot. Jen takové úsilí si žádá zkrocení legendy mezi zvukovými systémy, která se jmenuje MIDAS.

Knihovna MIDAS již prošla již velkou vývojovou cestou a jistě si ji pamatujete z dob již dávno minulých z MS-DOSu. Byla využita v mnoha počítačových hrách. A mě zajímalo, jak si MIDAS stojí dnes.

Nejprve ale navštivte oficiální stránku Housemarque Audio Systemu, jak se MIDAS nyní jmenuje.

Archív s knihovnou má velikost 2300KB, obsahuje zdrojáky, dynamickou knihovnu, příklady a nápovědu.

Knihovna MIDAS je rozdělena do 6 částí, každá část se věnuje určitému okruhu činností.

-inizializace a konfigurace
-ovládaní systému MIDAS
-přehrávání modulů
-přehrávání samplů
-přehrávání streamů
-zvukové efekty

Toto rozdělení jsem si nevymyslel, takhle jsou rozděleny datové typy a jednotlivé funkce v nápovědě. když jsem si procházel možnosti MIDASu, viděl jsem spoustu funkcí, které jsou právě určeny pro stařičký operační systém MS-DOS. Mám na mysli například funkci na autodetkci zvukové karty. Takže pokud někdo z vás ještě koketuje s myšlenkou tvořit MS-DOSácké hry, je to výzva pro něj.

MIDAS jakožto postarší knihovna slouží především k přehrávání modulů (s3m, mod ...). Můžete také přehrát wav a výstup obohatit o echo.

Program pro C++ Builder

MIDAS jsem testoval na jednoduchém přehrávači, stejně jako v předchozích článcích o sound systémech. Program přehrává moduly. Testoval jsem funkce přehrávání play, stop a nastavení hlasitosti výstupu.


Než začnete programovat, přehrajte si hlavičkový soubor midasdll.h a dynamickou knihovnu midas11.dll. Statickou knihovnu vytvoříte utilitou implib a teď již máme vše potřebné k programování.

Nahlédnutí do kódu

Programování s knihovnou je nachlup podobné jako při programování s bassmodem a fmodem, takže nemá smysl rozebírat kód řádek pořádku. MIDAS má pár odlišností, které stojí za to zmínit. Například stavy jako jméno skladby, pozice ve skladbě, délka skladby získáme přes strukturu MIDASmoduleInfo. A tyto informace jsou položky této struktury, narozdíl od fmodu, kde všechno obstará příslušná funkce. Abych se přiznal, mám raději ten druhý způsob získávání informací.
Obrázek o programování s MIDASem si můžete udělat z následujícího kódu:

Obsluha tlačítka PLAY

if (module == NULL)
return;
if (play == true)
return;

playHandle = MIDASplayModule(module, true);
if (playHandle == 0) {
Application->MessageBox("Chyba", "Chyba", MB_OK);
return;
}
MIDASsetMusicVolume(playHandle, TrackBar1->Position);
play = true;

Tak tolik řádků je potřeba k započetí přehrávání. Vše by bylo naprosto krásné, kdyby nebyly potřeba první dvě podmínky. První podmínka testuje, jestli není ukazatel module, který ukazuje na načtený modul prázdný (NULL). To by se mohlo přihodit, kdyby jste nenačetli žádný modul nebo načtený soubor nebyl modul. To by mělo za následek zhroucení programu, protože knihovna MIDAS prostě nepozná, když pod ukazatelem module nic není. A aby to nebylo málo, nelze ani nastavit hlasitost, pokud se nepřehrává. Druhou malou nedokonalostí je, že MIDAS není schopen vícekrát po sobě volat funkci MIDASplayModule. Normální by asi bylo, při opakovaném volání této funkce buď znovu začít přehrávat modul a nebo prostě tuto volbu ignorovat. MIDAS to řeší po svém velmi svérázně, prostě zkolabuje. Potom ale nechápu, proč se testuje jestli není playHandle == 0, když program zkolabuje dřív, než program zjistí, že není něco v pořádku. Aby se opakovaně znova nevolalo MIDASplayModule zavedl jsem si proměnou play, která sleduje, jestli program právě přehrává, či nikoliv.

Můj pokus s MIDASem si stáhněte zde (470KB).

Hodnocení

MIDAS je knihovna na přehrávání modulů se vším všudy, co tento druh muziky vyžaduje. Může přehrát i wav sobor. Obsahuje vše, co budete potřebovat do své počítačové hry - přehrává hudbu a samply. Na druhou stanu nabízí programátorovy malý komfort při programování. Například nemožnost měnit hlasitost výstupu, pokud není přehráván nějaký modul. Jsou to maličkosti, ale myslím, že to otravuje při programování (hlídat, jestli se přehrává nebo ne). Na druhou stranu je MIDAS ve své 11 verzi už poměrně stařík, rok vydání je 1998, a takže si může dovolit pokulhávat za svými konkurenty. A navíc má možnost, kterou již jeho mladší konkurenti nemají a sice je stavěný i pro programování v MS-DOSu (autodetekce zvukové karty...). V archívu knihovny jsem postrádal navíc licenci.

Teď již záleží pouze na vás, kterou knihovnu si vyberete.

 

 

Tématické zařazení:

 » Rubriky  » C/C++  

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: