BLOGas.lt
Sukurk savo BLOGą Kitas atsitiktinis BLOGas

WAV + OggVorbis

Beklausant muzikos kilo tokia mintis, kad būtų visai įdomu, jei koks objektas žaidime judėtų pagal muzikos garsumą (pvz. kokia garso kolonėlė). Paskaitęs OpenAL dokumentaciją supratau, kad jis negali gauti grojamos muzikos garsumo, taigi nusprendžiau tą informaciją kažkaip ištraukti iš wav failo.  Kad jau teko panagrinėti wav formatą, tai tuo pačiu pasirašiau ir lib'ą wav failams užkrauti. Taigi dabar žaidimui nereikės alut.dll (jis buvo naudojamas vien tik dėl wav užkrovimo).

Čia paveiksliukas, kaip atrodo garsumo lygiai (viršutinė dalis - vaizdas Audacity programoje):


Maža testinė programėlė (925 KB)

Taip pat su jrs0ul pagalba padariau ir Ogg Vorbis garso failų užkrovimą. Ogg Vorbis formatas pasižymi dideliu garso suspaudimu, todėl sutaupoma vietos tiek HDD, tiek RAM'e. Maži garsai iškoduojami paprastai, o didesni nuskaitomi į RAM ir iš jo stream'inami mažomis dalimis.

Rodyk draugams

Komentarai (3)

jrs0ul2008-03-02 19:51

O ir mane paminėjai. Smagu :)
Drisčiau suabejoti jog naudojant Ogg sutaupoma ramo. ;)

AE2008-03-02 22:43

WAV atveju RAM'e sėdi visi PCM duomenys, o Ogg Vorbis - tik iš HDD nukopijuotas suspaustas failas ir keli maži darbiniai buferiai.
Šiaip pabandžiau iškoduoti iškart visą Ogg Vorbis failą, tai 8 min. trukmės daina iškoduota užėmė ~400 MB :D

AE2008-03-04 22:45

Vakar sužinojau, kad WAV_dat.exe programėlė kai kam prastai veikia - garsas yra, bet nieko nepiešia. Įdomu tai, kad piešimas neveikia tik su ATI vaizdo plokštėmis, pats testavau su GeForce 5/7/8 ir nieko įtartino nepastebėjau.
Šiandien dar patestavau su visa krūva Radeon'ų: R7000, R7500, R9200, R9250, R9600, X550. Su visais nieko gero - arba nieko nepiešia, arba toks vaizdas: http://ae.gamedev.lt/ivairus/R9250.png Nusprendžiau, kad klaida tikriausiai mano kode, galbūt kažką netyčia pakeičiau. Ir atradau kaltininką - išjungtas Z-Buferio valymas! Pasirodo ir tokių bugų būna :D

Rašyti komentarą

Tavo komentaras