|
Tipp 0436
|
DirectSound - Effekte (erweitert)
|
|
|
Autor/Einsender: Datum: |
|
Alexander Csadek 01.02.2005 |
|
Entwicklungsumgebung:
DirectX-Version: |
|
VB 6
DirectX 8 |
|
|
Wie die Standard-Effekte bei DirectSound eingesetzt werden, ist im Tipp
DirectSound - Effekte ersichtlich.
Jeder der Effekte hat sein eigenes Interface- und Parameter-Objekt.
Dieser Tipp beschäftigt sich damit, wie die Parameter der Effekte ausgelesen und gesetzt
werden können.
|
Zunächst brauchen wir ein gültiges DirectSoundSecondaryBuffer8-Objekt, welches mit dem
Flag DSBCAPS_CTRLFX erzeugt wurde. Der Effekt sollte auch bereits im
SoundBuffer gesetzt sein.
|
Mittels der Methode GetObjectinPath des
DirectSoundSecondaryBuffer8-Objekts kann das Interface-Objekt des Effektes
geholt werden.
|
Was heißt Interface-Objekt? Jeder Effekt hat sein eigenes Objekt, mit dem
die Parameter ausgelesen und gesetzt werden können, zum Beispiel:
|
|
|
Dim oFX As DirectSoundFXChorus8
Set oFX = oSoundBuffer.GetObjectinPath(DSFX_STANDARD_CHORUS, _
mlIndex, IID_DirectSoundFXChorus)
|
|
|
Die Methode GetObjectinPath erwartet drei Parameter:
|
|
guidFX |
Die jeweilige ID vom Effekt. |
lIndex |
Da ein Effekt mehrmals auf einen SoundBuffer gesetzt werden kann, dessen Position im SoundBuffer.
|
iidInterface |
Die jeweilige ID vom Objekt des Effektes. |
|
Damit ihr euch die ID's nicht raussuchen müsst, gibt es die folgenden Konstanten:
|
guidFX
|
DSFX_STANDARD_CHORUS
DSFX_STANDARD_COMPRESSOR
DSFX_STANDARD_DISTORTION
DSFX_STANDARD_ECHO
DSFX_STANDARD_FLANGER
DSFX_STANDARD_GARGLE
DSFX_STANDARD_I3DL2REVERB
DSFX_STANDARD_PARAMEQ
DSFX_STANDARD_WAVES_REVERB
|
iidInterface
|
IID_DirectSoundFXChorus
IID_DirectSoundFXCompressor
IID_DirectSoundFXDistortion
IID_DirectSoundFXEcho
IID_DirectSoundFXFlanger
IID_DirectSoundFXGargle
IID_DirectSoundFXI3DL2REVERB
IID_DirectSoundFXParamEq
IID_DirectSoundFXWavesReverb
|
Retour-Objekt
|
DirectSoundFXChorus8
DirectSoundFXCompressor8
DirectSoundFXDistortion8
DirectSoundFXEcho8
DirectSoundFXFlanger8
DirectSoundFXGargle8
DirectSoundFXI3DL2Reverb8
DirectSoundFXParamEq8
DirectSoundFXWavesReverb8
|
Alle Objekte, die GetObjectinPath liefert, haben zwei Methoden:
|
|
GetAllParameters |
liest alle Effekt-Parameter vom SoundBuffer aus. |
SetAllParameters |
setzt alle Effekt-Parameter im SoundBuffer. |
Nur der Environmental Reverberation-Effekt hat mehr als die zwei Methoden:
|
GetQuality |
liest die Qualität des Effektes aus. |
SetQuality |
setzt die Qualität des Effektes. |
GetPreset |
liefert eine der vordefinierten Einstellungen des Effektes. |
SetPreset |
setzt eine der vordefinierten Einstellungen. |
Die vordefinierten Einstellungen sind z.B. Arena, Wohnzimmer, Halle usw.
|
Wie bereits erwähnt hat jeder Effekt seinen eigenen Parameter-Datentyp:
|
|
Effekt |
DirectX-Objekt |
Datentyp |
Chorus |
DirectSoundFXChorus8 |
DSFXCHORUS |
Compression |
DirectSoundFXCompressor8 |
DSFXCOMPRESSOR |
Distortion |
DirectSoundFXDistortion8 |
DSFXDISTORTION |
Echo |
DirectSoundFXEcho8 |
DSFXECHO |
Flange |
DirectSoundFXFlanger8 |
DSFXFLANGER |
Gargle |
DirectSoundFXGargle8 |
DSFXGARGLE |
Environmental Reverberation |
DirectSoundFXI3DL2Reverb8 |
DSFXI3DL2REVERB |
Parametric Equalizer |
DirectSoundFXParamEq8 |
DSFXPARAMEQ |
Waves Reverberation |
DirectSoundFXWavesReverb8 |
DSFXWAVESREVERB |
|
Eine Beschreibung aller Parameter aller Effekte würde den Rahmen dieses Tipps sprengen.
Deshalb möchte ich an dieser Stelle auf die MSDN von Microsoft verweisen, wo ihr eine
Beschreibung zu allen Parametern findet. Ebenso Min- und Maximal-Werte von einigen Parametern.
|
|
|
Um dieses Beispiel ausführen zu können, wird die DirectX 8 for Visual Basic Type Library
benötigt (siehe dazu die Erläuterungen in der DirectX-Rubrik).
|
|
Windows-Version |
95 |
|
|
98/SE |
|
|
ME |
|
|
NT |
|
|
2000 |
|
|
XP |
|
|
Vista |
|
|
Win
7 |
|
|
|
VB-Version |
VBA 5 |
|
|
VBA 6 |
|
|
VB 4/16 |
|
|
VB 4/32 |
|
|
VB 5 |
|
|
VB 6 |
|
|
|
|
Download (154 kB)
|
Downloads bisher: [ 569 ]
|
|
|