notJustCode.it
 
\\ Home : Articoli
DirectSound - Effetti Audio
Di RobyDx (del 28/10/2007 @ 14:17:17, in DirectX9, linkato 3095 volte)

Durante lo sviluppo di giochi potrebbe capitare di voler inserire effetti audio particolari come ad esempio un eco, una distorsione etc. Ad esempio se un personaggio si dovesse trovare in una grotta non sarebbe male che producesse suoni con eco. Le possibilità di ottenere questo sono due: utilizzare suoni differenti a secondo degli ambienti (quindi moltissimi wav) o modificarli direttamente con DirectX.
Ovviamente faremo quest'ultima. DirectSound offre numerosi effetti

ChorusEffect
CompressorEffect
DistortionEffect
EchoEffect
FlangerEffect
GargleEffect
Interactive3DLevel2ReverbEffect
ParamEqEffect
WavesReverbEffect

Ben 9 effetti totalmente personalizzabili. Quello che dovete fare è semplicemente caricare un wave e prima di eseguirlo inserire uno o più effetti: ebbene sì è possibile inserire più effetti contemporaneamente e gestirli come meglio si vuole.
Esistono 2 modi per caricare gli effetti: effetti standard e personalizzabili.
In entrambi dovete dichirare un array di effetti

Dim fx As EffectDescription()
ReDim fx(0)

dovete ridimensionarlo a secondo del numero di effetti che volete usare.
ora nell'indice che volete usare inserite l'effetto (ad esempio il chorus)

fx(0).GuidEffectClass = DSoundHelper.StandardChorusGuid

infine

suono.SetEffects(fx)

con quest'ultima inserite l'effetto nel suono. Con questo metodo imposterete l'effetto nel suono che avete caricato. All'esecuzione il suono avrà un effetto diverso (il chorus appunto).
Il tipo di effetto dipende dalla guida

DSoundHelper.StandardChorusGuid

Gli altri 8 sono quelli presenti nella lista, tutti inclusi nella classe DSoundHelper.
Dopo che avete inserito un effetto standard potete personalizzarlo tramite alcune classi specifiche. Se ad esempio avete inserito l'effetto Echo nell'indice zero dell'array

Dim echoFx As EchoEffect
Dim echoParams As EffectsEcho
echoFx = suono.GetEffects(0)
echoParams = echoFx.AllParameters
echoParams.Feedback = numero
echoFx.AllParameters = echoParams

In questo esempio ho definito due strutture: la classe EchoEffect in cui viene caricato il puntatore all'effetto sonoro. Nella struttura echoParams inserite i valori da modificare (nel mio esempio ho modificato il valore di feedback). Infine inseriamo i parametri nell'echoEffect. Nel momento in cui questo accade il suono viene modificato ed inizierà ad essere riprodotto con le caratteristiche specificate. Ricordo però che dovete aver inserito l'effetto standard nel soundbuffer o verrà generato un errore!!! La procedura per l'effetto con parametri può invece essere modificata in ogni momento.

I parametri variano a secondo dell'effetto. Per usare gli altri effetti dovete usare altre classi

(nome effetto)Effect

Effect(nomeEffetto).

Dove nome effetto è l'effetto che desiderate.

Ognuno degli effetti ha delle proprietà diverse dagli altri che sia per il loro elevato numero, sia per la scarsa documentazione al momento disponibile che per la mia ignoranza di alcuni concetti non vi spiegherò.

Notate che alcuni effetti richiedono wave particolari (ad esempio in 8 bit o mono). Vi consiglio di fare prove e prove per capire ogni effetto. In attesa che esca una SDK completa potete approfondire sulla SDK per C++.

Vi lascio all'esempio che inserisce alcuni effetti standard (non quelli completamente personalizzabili).

Esempio VB.Net

Articolo Articolo  Storico Storico Stampa Stampa
I commenti sono disabilitati.
"Un matematico è un dispositivo che trasforma il caffè in teoremi."

Paul Erdos


Cerca per parola chiave
 

Titolo
Articoli (4)
C++ (4)
Direct3D10 (30)
Direct3D11 (20)
DirectX9 (82)
DotNet (10)
English (9)
FanGames (22)
ManagedDX11 (2)
Materiale Utile (4)
News (39)
Shader Library (12)
SharpDX (1)
Software (25)
Tecnologia (19)
Varie (9)

Gli interventi più cliccati

Ultimi commenti:
If you wish to retai...
23/05/2013 @ 13:07:45
Di chanel outlet
You deficit of self-...
23/05/2013 @ 13:07:13
Di cartier watches uk
Reinforce your own l...
23/05/2013 @ 13:06:37
Di replica watches
Whenever you"re shiv...
23/05/2013 @ 13:06:11
Di swiss replica watches
It's likely you have...
23/05/2013 @ 13:05:02
Di chanel handbags
Cheap automobile ins...
23/05/2013 @ 13:04:28
Di replica watches

Titolo
Con quale tecnologia state realizzando o avete intenzione di realizzare i vostri progetti?

 DirectX11
 DirectX10
 DirectX9
 XNA
 DirectX8 o Precedenti
 OpenGL
 Motori grafici già pronti
 Altro

Titolo
Umorismo (17)

Le fotografie più cliccate



Ci sono 386 persone collegate
Sono state visualizzate  pagine

22/11/2024 @ 10:12:50
script eseguito in 31 ms