Suport Eax în biblioteca fmod

Introducere în specificația EAX

Sistemul dezvoltat și promovat de Creative Labs de procesare a sunetului spațial de mediu Audio Extensiile de ™ (EAX) este utilizat de mulți dezvoltatori de jocuri pentru a crea un sunet surround natural bazat pe specificul camerei sau spațiul în care sunt dezvoltate evenimentele din joc și în cazul în care sunt amplasate sursele de sunet. EAX poate fi reprezentat ca un set de specificații care definesc modelele și algoritmi pentru a crea efectele sonore ale spațiului înconjurător sau în camera pe baza Reverb (audio de mediu este de sunet surround).







Termenul „reverb“ (de la Mie-lea reverberatio Latină -. .. rezultatele) înțeleg susțin că persistă după oprirea sursei de sunet și sosirea non-simultană a unui punct dat al undelor sonore reflectate sau împrăștiate rezultat. Reverberația are o influență semnificativă asupra audibilității vorbire și a muzicii în cameră.

EAX include, de asemenea, un set de funcții API care permit programatorului să utilizeze suportul hardware EAX. La momentul redactării acestui articol, a apărut deja cea de-a patra versiune a EAX, disponibilă pe site-ul Creative Labs din secțiunea dezvoltator.

EAX API este o extensie a sistemului de bază pentru crearea sunetului surround DirectSound3D. În timpul funcționării EAX proces de aplicație de procesare audio este împărțit: DirectSound3D controlează poziția, viteza de deplasare în spațiu 3D a surselor de sunet și ascultător, și EAX face la schimbările de sunet ce caracterizează spațiul sursă de sunet din jur.

Suportul pentru sistemul EAX este furnizat la nivel hardware prin intermediul procesoarelor audio integrate ale cardurilor de sunet (acceleratoare de sunet). Desigur, în primul rând, acest suport este implementat pe plăcile Creative. EAX se bazează pe tehnologia E-mu Environmental Modeling, susținută de procesorul audio EMU10K1, instalat pe seria de plăci de sunet SBLive! Modelele EAX iau în considerare tipurile de emițătoare de sunet: căști, sisteme stereo și quad. Acceleratorul audio EMU10K1 descompune orice flux audio în mai multe canale și apoi suprapune reverberațiile pe fiecare canal în timp real. Datorită acestui fapt, se creează noi sunete care sunt mai aproape de sunetele lor naturale în spațiul real.

deoarece urechea umană aude nu numai sunetul care vine direct de la sursa, dar percepe și secundar (și mai mare) vibrații sonore, care sunt determinate de distanța față de sursa, iar parametrii reverberație, și anume distanța și reverberație pot fi considerate principalele caracteristici ale spațiului sau cameră.

Inițial sa presupus că EAX nu utilizează un model geometric al scenei, care este, sursa de sunet nu poate fi conectat cu obiectele grafice. Lucrul principal a fost de a crea o atmosfera de sunet a scenelor de joc, care este de a influența starea emoțională a player-ul, la fel ca și în coloana sonoră film evidențiază întotdeauna severitatea experiențelor, concentrându-se pe cele mai importante și neglija micile detalii de sunet. Ghidat de această abordare, factorii de decizie EAX ca bază a ales un model static al mediului de sunet, nu parametrii geometrici. Modelele statice sunt calculate automat efecte reverb și reflecții cu privire la ascultător, luând în considerare dimensiunea camerei, sunet, direcția și alți parametri care programator pot fi setate pentru fiecare sursă. Calculul unui model static necesită mai puține resurse computaționale decât modele bazate pe o abordare geometrică. EAX utilizează modele de sunet pre-construite, care reprezintă o colecție de valori numerice pentru parametrii de cameră sau spațiu. acestea nu caracterizează parametrii localizarea obiectelor în cameră, așa cum este în modelul geometric și comportamentul undelor sonore într-o cameră sau spațiu, adică, întârzierea de propagare, gradul de amortizare, de absorbție a sunetului și reflexie a sunetului pe diferite frecvențe de sunet. În cazul în care este necesar să se schimbe coridorul lung la hangarul mare parcela de joc, trecerea de la un model static este suficient (modelul coridor) la altul (modelul hangarului). Modelele camerelor diferite (valorile lor numerice) sunt reprezentate în EAX sub formă de presetări (presetări). Această abordare oferă o programare mai simplă a sunetului 3D în joc, vă permite să reduceți cantitatea de calcul atunci când simulați o panoramă audio. Sunetul rezultat are un sunet foarte realist. Pe de altă parte, metoda statica este motivul pentru care presetarea selectată în joc poate opri să corespundă reprezentarea grafică (geometrică) a scenei. De exemplu, în modelul geometric, în cazul în care, de exemplu, pereții camerei sa prăbușit, sunetul se va schimba datorită modelului în sine, și nu prin forță, pe baza unor alte steaguri sau semne. În cazul unui model static, sunetul va rămâne la fel ca înainte ca pereții să se prăbușească până când este selectată o altă presetare.







EAX 1.0 Sprijină schimbarea locației de reverb și reflecții; are un număr mare de presetări; permite (cu unele restricții) modificarea parametrilor de reverberație ai camerei; modificați automat intensitatea reverberației, în funcție de poziția sursei de sunet. EAX 1.0 construiește o scenă sonoră bazată pe presetări pre-create, având în vedere distanța dintre sursele de sunet și ascultător.

EAX 2.0 Actualizat modelul reverb; Efectele adăugate ale obstacolelor (Occlusions) și ale obstacolelor (Obstrucții); gestionarea separată a reflecțiilor timpurii și târzii; Este posibil un control continuu al dimensiunii spațiilor; se iau în considerare proprietățile acustice ale aerului (absorbția sunetului). Acum, pentru a utiliza efectele audio de mediu, nu este nevoie să descrieți geometria camerei. EAX 2.0 este construit pe capabilitățile primei versiuni și creează efecte și mai realiste.

EAX 3.0 vă permite să controlați începutul reverberării și reflecțiile timpurii pentru fiecare sursă de sunet; realizează o tranziție dinamică între modelele de spațiu; conține un model de la distanță îmbunătățit pentru controlul automat al reverberării și a reflexiilor inițiale, în funcție de poziția surselor de sunet față de ascultător. În această specificație, există deja o abatere de la modelul static și include metode specifice modelelor geometrice: Calcule Ray-Tracing (reflectare de raze) pentru a obține parametrii de reflexie pentru fiecare sursă de sunet. În plus, sunt realizate reflecții separate pentru ecouri îndepărtate. Vedere îmbunătățită la distanță, concepută pentru a înlocui modelele de reverberație statică. EAX 3.0 combină cea de-a doua versiune cu caracteristici noi. Un nivel mai ridicat al realismului se realizează prin sprijinirea reflecțiilor locale, a reflexiilor izolate, a tranzițiilor lungi între scenele sonore etc.

Instrumente FMOD pentru lucrul cu EAX

Popular printre mulți dezvoltatori (în special în rândul pasionaților care creează software-ul de bază non-comerciale) funcții de bibliotecă funcționează cu sunet FMOD (Firelight Technologies Pty dezvoltator) oferă o serie de oportunități de a lucra cu sistemul EAX. Acestea vor fi discutate mai departe.

Pentru a obține o idee despre biblioteca FMOD, se recomandă citirea articolului Utilizând FMOD în jocurile de sunet. care descrie principiile de bază ale acestei biblioteci, precum și succesiunea acțiunilor (apeluri către funcțiile API-ului FMOD) pentru a crea surse de sunet surround și a calcula panorama sunetului.

În acest moment, (este vorba despre versiunea de FMOD 3,74) biblioteca suportă EAX 2.0 și 3.0 (cu toate acestea, se presupune că specificația EAX compatibile „de jos în sus“, adică setările pentru EAX 2.0 vor fi susținute în mod corect plăcile de sunet, de punere în aplicare EAX 3.0, etc. ) ..

Verificarea suportului hardware EAX

FSOUND_CAPS_HARDWARE, FSOUND_CAPS_EAX2, FSOUND_CAPS_EAX3, care specifică câmpul de biți care indică suport pentru audio hardware 3D, EAX 2.0 și EAX 3.0, respectiv, trei constante sunt definite în fișierul fmod.h.

Funcția FSOUND_GetDriverCaps () trebuie apelată înainte de a apela funcția FSOUND_Init () sau după apelarea funcției FSOUND_Close ();

Structurile FSOUND_REVERB_PROPERTIES și FSOUND_REVERB_CHANNELPROPERTIES

Din punct de vedere al programatorului, specificația EAX poate fi reprezentată ca o structură care descrie parametrii reverb al unei încăperi (spațiu). Acești parametri pot fi mai mult de două duzini.

Structura FSOUND_REVERB_PROPERTIES conține parametri comuni pentru toate sursele de sunet existente. Structura FSOUND_REVERB_CHANNELPROPERTIES caracterizează o sursă individuală (canal). Mai jos sunt liste de membri ai acestor structuri: mai întâi pentru FSOUND_REVERB_PROPERTIES și apoi FSOUND_REVERB_CHANNELPROPERTIES. O examinare detaliată a semnificației fizice a acestor parametri depășește domeniul de aplicare al articolului. Pentru toate întrebările, consultați documentația EAX.

Aici este lista de presetări utilizate atunci când lucrați cu DirectSound3D pe Windows:

  • FSOUND_PRESET_OFF - procesarea reverb este dezactivată
  • FSOUND_PRESET_GENERIC - Setări implicite
  • FSOUND_PRESET_PADDEDCELL - "celula (camera), tapițată cu material"
  • FSOUND_PRESET_ROOM - "Cameră"
  • FSOUND_PRESET_BATHROOM - "baie"
  • FSOUND_PRESET_LIVINGROOM - "living"
  • FSOUND_PRESET_STONEROOM - "cameră cu pereți de piatră"
  • FSOUND_PRESET_AUDITORIUM - "audiență"
  • FSOUND_PRESET_CONCERTHALL - "Sala de Concerte"
  • FSOUND_PRESET_CAVE - "peșteră"
  • FSOUND_PRESET_ARENA - "arena"
  • FSOUND_PRESET_HANGAR "Hangar"
  • FSOUND_PRESET_CARPETTEDHALLWAY - "coridor (vestibul) căptușit cu covoare"
  • FSOUND_PRESET_HALLWAY - "coridor" ("hol")
  • FSOUND_PRESET_STONECORRIDOR - "coridor cu ziduri de piatră și podea"
  • FSOUND_PRESET_ALLEY - "alee"
  • FSOUND_PRESET_FOREST - "pădure"
  • FSOUND_PRESET_CITY - "oraș"
  • FSOUND_PRESET_MOUNTAINS - "roci"
  • FSOUND_PRESET_QUARRY - "carieră"
  • FSOUND_PRESET_PLAIN - "stepă"
  • FSOUND_PRESET_PARKINGLOT - "parcare"
  • FSOUND_PRESET_SEWERPIPE - "canal de canalizare"
  • FSOUND_PRESET_UNDERWATER - "sub apă"
  • FSOUND_PRESET_DRUGGED - "inhibat"
  • FSOUND_PRESET_DIZZY - "amețitor"
  • FSOUND_PRESET_PSYCHOTIC - "psihotic"

Setarea și citirea parametrilor spațiali

Pentru a atribui anumiți parametri spațiali sursei sunetului surround în biblioteca FMOD, sunt utilizate funcțiile FSOUND_Reverb_SetProperties () și FSOUND_Reverb_SetChannelProperties (). Pentru a obține parametrii setați, utilizați funcțiile inverse FSOUND_Reverb_GetProperties () și FSOUND_Reverb_GetChannelProperties (). De asemenea, puteți seta parametrii de reverb în timpul redării sunetului. Pentru ca setările noi să aibă efect, trebuie să apelați funcția FSOUND_Update ().

Program exemplu

  • fmodbc.lib - pentru Borland C Builder
  • fmodlcc.lib - pentru lccwin32
  • fmodvc.lib - pentru Microsoft Visual C / C ++
  • fmodwc.lib - pentru Watcom C ++

Exemplul propus utilizează funcțiile API Win32 și bibliotecile FMOD. Pentru a rula programul, trebuie să instalați biblioteca fmod pe computer sau să plasați fișierul bmld.dll din bibliotecă în dosarul fișierului executabil (eaxdemo.exe).







Articole similare

Trimiteți-le prietenilor: