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.
Hinweis
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: [ 483 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Dienstag, 17. Mai 2011