diff --git a/mingw-w64-headers/direct-x/include/dinput.h b/mingw-w64-headers/direct-x/include/dinput.h
index 14438f7..42b95fd 100644
--- a/mingw-w64-headers/direct-x/include/dinput.h
+++ b/mingw-w64-headers/direct-x/include/dinput.h
@@ -2461,6 +2461,220 @@
 HRESULT WINAPI DirectInputCreateEx(HINSTANCE,DWORD,REFIID,LPVOID *,LPUNKNOWN);
 #endif /* DI8 */
 
+
+/* New DirectInput8 style keyboard constants */
+
+#define DIKEYBOARD_ESCAPE               (DIK_ESCAPE | 0x81000400)
+#define DIKEYBOARD_1                    (DIK_1 | 0x81000400)
+#define DIKEYBOARD_2                    (DIK_2 | 0x81000400)
+#define DIKEYBOARD_3                    (DIK_3 | 0x81000400)
+#define DIKEYBOARD_4                    (DIK_4 | 0x81000400)
+#define DIKEYBOARD_5                    (DIK_5 | 0x81000400)
+#define DIKEYBOARD_6                    (DIK_6 | 0x81000400)
+#define DIKEYBOARD_7                    (DIK_7 | 0x81000400)
+#define DIKEYBOARD_8                    (DIK_8 | 0x81000400)
+#define DIKEYBOARD_9                    (DIK_9 | 0x81000400)
+#define DIKEYBOARD_0                    (DIK_0 | 0x81000400)
+#define DIKEYBOARD_MINUS                (DIK_MINUS | 0x81000400)
+#define DIKEYBOARD_EQUALS               (DIK_EQUALS | 0x81000400)
+#define DIKEYBOARD_BACK                 (DIK_BACK | 0x81000400)
+#define DIKEYBOARD_TAB                  (DIK_TAB | 0x81000400)
+#define DIKEYBOARD_Q                    (DIK_Q | 0x81000400)
+#define DIKEYBOARD_W                    (DIK_W | 0x81000400)
+#define DIKEYBOARD_E                    (DIK_E | 0x81000400)
+#define DIKEYBOARD_R                    (DIK_R | 0x81000400)
+#define DIKEYBOARD_T                    (DIK_T | 0x81000400)
+#define DIKEYBOARD_Y                    (DIK_Y | 0x81000400)
+#define DIKEYBOARD_U                    (DIK_U | 0x81000400)
+#define DIKEYBOARD_I                    (DIK_I | 0x81000400)
+#define DIKEYBOARD_O                    (DIK_O | 0x81000400)
+#define DIKEYBOARD_P                    (DIK_P | 0x81000400)
+#define DIKEYBOARD_LBRACKET             (DIK_LBRACKET | 0x81000400)
+#define DIKEYBOARD_RBRACKET             (DIK_RBRACKET | 0x81000400)
+#define DIKEYBOARD_RETURN               (DIK_RETURN | 0x81000400)
+#define DIKEYBOARD_LCONTROL             (DIK_LCONTROL | 0x81000400)
+#define DIKEYBOARD_A                    (DIK_A | 0x81000400)
+#define DIKEYBOARD_S                    (DIK_S | 0x81000400)
+#define DIKEYBOARD_D                    (DIK_D | 0x81000400)
+#define DIKEYBOARD_F                    (DIK_F | 0x81000400)
+#define DIKEYBOARD_G                    (DIK_G | 0x81000400)
+#define DIKEYBOARD_H                    (DIK_H | 0x81000400)
+#define DIKEYBOARD_J                    (DIK_J | 0x81000400)
+#define DIKEYBOARD_K                    (DIK_K | 0x81000400)
+#define DIKEYBOARD_L                    (DIK_L | 0x81000400)
+#define DIKEYBOARD_SEMICOLON            (DIK_SEMICOLON | 0x81000400)
+#define DIKEYBOARD_APOSTROPHE           (DIK_APOSTROPHE | 0x81000400)
+#define DIKEYBOARD_GRAVE                (DIK_GRAVE | 0x81000400)
+#define DIKEYBOARD_LSHIFT               (DIK_LSHIFT | 0x81000400)
+#define DIKEYBOARD_BACKSLASH            (DIK_BACKSLASH | 0x81000400)
+#define DIKEYBOARD_Z                    (DIK_Z | 0x81000400)
+#define DIKEYBOARD_X                    (DIK_X | 0x81000400)
+#define DIKEYBOARD_C                    (DIK_C | 0x81000400)
+#define DIKEYBOARD_V                    (DIK_V | 0x81000400)
+#define DIKEYBOARD_B                    (DIK_B | 0x81000400)
+#define DIKEYBOARD_N                    (DIK_N | 0x81000400)
+#define DIKEYBOARD_M                    (DIK_M | 0x81000400)
+#define DIKEYBOARD_COMMA                (DIK_COMMA | 0x81000400)
+#define DIKEYBOARD_PERIOD               (DIK_PERIOD | 0x81000400)
+#define DIKEYBOARD_SLASH                (DIK_SLASH | 0x81000400)
+#define DIKEYBOARD_RSHIFT               (DIK_RSHIFT | 0x81000400)
+#define DIKEYBOARD_MULTIPLY             (DIK_MULTIPLY | 0x81000400)
+#define DIKEYBOARD_LMENU                (DIK_LMENU | 0x81000400)
+#define DIKEYBOARD_SPACE                (DIK_SPACE | 0x81000400)
+#define DIKEYBOARD_CAPITAL              (DIK_CAPITAL | 0x81000400)
+#define DIKEYBOARD_F1                   (DIK_F1 | 0x81000400)
+#define DIKEYBOARD_F2                   (DIK_F2 | 0x81000400)
+#define DIKEYBOARD_F3                   (DIK_F3 | 0x81000400)
+#define DIKEYBOARD_F4                   (DIK_F4 | 0x81000400)
+#define DIKEYBOARD_F5                   (DIK_F5 | 0x81000400)
+#define DIKEYBOARD_F6                   (DIK_F6 | 0x81000400)
+#define DIKEYBOARD_F7                   (DIK_F7 | 0x81000400)
+#define DIKEYBOARD_F8                   (DIK_F8 | 0x81000400)
+#define DIKEYBOARD_F9                   (DIK_F9 | 0x81000400)
+#define DIKEYBOARD_F10                  (DIK_F10 | 0x81000400)
+#define DIKEYBOARD_NUMLOCK              (DIK_NUMLOCK | 0x81000400)
+#define DIKEYBOARD_SCROLL               (DIK_SCROLL | 0x81000400)
+#define DIKEYBOARD_NUMPAD7              (DIK_NUMPAD7 | 0x81000400)
+#define DIKEYBOARD_NUMPAD8              (DIK_NUMPAD8 | 0x81000400)
+#define DIKEYBOARD_NUMPAD9              (DIK_NUMPAD9 | 0x81000400)
+#define DIKEYBOARD_SUBTRACT             (DIK_SUBTRACT | 0x81000400)
+#define DIKEYBOARD_NUMPAD4              (DIK_NUMPAD4 | 0x81000400)
+#define DIKEYBOARD_NUMPAD5              (DIK_NUMPAD5 | 0x81000400)
+#define DIKEYBOARD_NUMPAD6              (DIK_NUMPAD6 | 0x81000400)
+#define DIKEYBOARD_ADD                  (DIK_ADD | 0x81000400)
+#define DIKEYBOARD_NUMPAD1              (DIK_NUMPAD1 | 0x81000400)
+#define DIKEYBOARD_NUMPAD2              (DIK_NUMPAD2 | 0x81000400)
+#define DIKEYBOARD_NUMPAD3              (DIK_NUMPAD3 | 0x81000400)
+#define DIKEYBOARD_NUMPAD0              (DIK_NUMPAD0 | 0x81000400)
+#define DIKEYBOARD_DECIMAL              (DIK_DECIMAL | 0x81000400)
+#define DIKEYBOARD_F11                  (DIK_F11 | 0x81000400)
+#define DIKEYBOARD_F12                  (DIK_F12 | 0x81000400)
+#define DIKEYBOARD_F13                  (DIK_F13 | 0x81000400)
+#define DIKEYBOARD_F14                  (DIK_F14 | 0x81000400)
+#define DIKEYBOARD_F15                  (DIK_F15 | 0x81000400)
+#define DIKEYBOARD_KANA                 (DIK_KANA | 0x81000400)
+#define DIKEYBOARD_CONVERT              (DIK_CONVERT | 0x81000400)
+#define DIKEYBOARD_NOCONVERT            (DIK_NOCONVERT | 0x81000400)
+#define DIKEYBOARD_YEN                  (DIK_YEN | 0x81000400)
+#define DIKEYBOARD_NUMPADEQUALS         (DIK_NUMPADEQUALS | 0x81000400)
+#define DIKEYBOARD_CIRCUMFLEX           (DIK_CIRCUMFLEX | 0x81000400)
+#define DIKEYBOARD_AT                   (DIK_AT | 0x81000400)
+#define DIKEYBOARD_COLON                (DIK_COLON | 0x81000400)
+#define DIKEYBOARD_UNDERLINE            (DIK_UNDERLINE | 0x81000400)
+#define DIKEYBOARD_KANJI                (DIK_KANJI | 0x81000400)
+#define DIKEYBOARD_STOP                 (DIK_STOP | 0x81000400)
+#define DIKEYBOARD_AX                   (DIK_AX | 0x81000400)
+#define DIKEYBOARD_UNLABELED            (DIK_UNLABELED | 0x81000400)
+#define DIKEYBOARD_NUMPADENTER          (DIK_NUMPADENTER | 0x81000400)
+#define DIKEYBOARD_RCONTROL             (DIK_RCONTROL | 0x81000400)
+#define DIKEYBOARD_NUMPADCOMMA          (DIK_NUMPADCOMMA | 0x81000400)
+#define DIKEYBOARD_DIVIDE               (DIK_DIVIDE | 0x81000400)
+#define DIKEYBOARD_SYSRQ                (DIK_SYSRQ | 0x81000400)
+#define DIKEYBOARD_RMENU                (DIK_RMENU | 0x81000400)
+#define DIKEYBOARD_PAUSE                (DIK_PAUSE | 0x81000400)
+#define DIKEYBOARD_HOME                 (DIK_HOME | 0x81000400)
+#define DIKEYBOARD_UP                   (DIK_UP | 0x81000400)
+#define DIKEYBOARD_PRIOR                (DIK_PRIOR | 0x81000400)
+#define DIKEYBOARD_LEFT                 (DIK_LEFT | 0x81000400)
+#define DIKEYBOARD_RIGHT                (DIK_RIGHT | 0x81000400)
+#define DIKEYBOARD_END                  (DIK_END | 0x81000400)
+#define DIKEYBOARD_DOWN                 (DIK_DOWN | 0x81000400)
+#define DIKEYBOARD_NEXT                 (DIK_NEXT | 0x81000400)
+#define DIKEYBOARD_INSERT               (DIK_INSERT | 0x81000400)
+#define DIKEYBOARD_DELETE               (DIK_DELETE | 0x81000400)
+#define DIKEYBOARD_LWIN                 (DIK_LWIN | 0x81000400)
+#define DIKEYBOARD_RWIN                 (DIK_RWIN | 0x81000400)
+#define DIKEYBOARD_APPS                 (DIK_APPS | 0x81000400)
+#define DIKEYBOARD_POWER                (DIK_POWER | 0x81000400)
+#define DIKEYBOARD_SLEEP                (DIK_SLEEP | 0x81000400)
+#define DIKEYBOARD_BACKSPACE            (DIK_BACKSPACE | 0x81000400)
+#define DIKEYBOARD_NUMPADSTAR           (DIK_NUMPADSTAR | 0x81000400)
+#define DIKEYBOARD_LALT                 (DIK_LALT | 0x81000400)
+#define DIKEYBOARD_CAPSLOCK             (DIK_CAPSLOCK | 0x81000400)
+#define DIKEYBOARD_NUMPADMINUS          (DIK_NUMPADMINUS | 0x81000400)
+#define DIKEYBOARD_NUMPADPLUS           (DIK_NUMPADPLUS | 0x81000400)
+#define DIKEYBOARD_NUMPADPERIOD         (DIK_NUMPADPERIOD | 0x81000400)
+#define DIKEYBOARD_NUMPADSLASH          (DIK_NUMPADSLASH | 0x81000400)
+#define DIKEYBOARD_RALT                 (DIK_RALT | 0x81000400)
+#define DIKEYBOARD_UPARROW              (DIK_UPARROW | 0x81000400)
+#define DIKEYBOARD_PGUP                 (DIK_PGUP | 0x81000400)
+#define DIKEYBOARD_LEFTARROW            (DIK_LEFTARROW | 0x81000400)
+#define DIKEYBOARD_RIGHTARROW           (DIK_RIGHTARROW | 0x81000400)
+#define DIKEYBOARD_DOWNARROW            (DIK_DOWNARROW | 0x81000400)
+#define DIKEYBOARD_PGDN                 (DIK_PGDN | 0x81000400)
+
+/* New DirectInput8 mouse definitions */
+
+#define DIMOUSE_XAXISAB            (0x82000200 | DIMOFS_X)
+#define DIMOUSE_YAXISAB            (0x82000200 | DIMOFS_Y)
+#define DIMOUSE_XAXIS              (0x82000300 | DIMOFS_X)
+#define DIMOUSE_YAXIS              (0x82000300 | DIMOFS_Y)
+#define DIMOUSE_WHEEL              (0x82000300 | DIMOFS_Z)
+#define DIMOUSE_BUTTON0            (0x82000400 | DIMOFS_BUTTON0)
+#define DIMOUSE_BUTTON1            (0x82000400 | DIMOFS_BUTTON1)
+#define DIMOUSE_BUTTON2            (0x82000400 | DIMOFS_BUTTON2)
+#define DIMOUSE_BUTTON3            (0x82000400 | DIMOFS_BUTTON3)
+#define DIMOUSE_BUTTON4            (0x82000400 | DIMOFS_BUTTON4)
+#define DIMOUSE_BUTTON5            (0x82000400 | DIMOFS_BUTTON5)
+#define DIMOUSE_BUTTON6            (0x82000400 | DIMOFS_BUTTON6)
+#define DIMOUSE_BUTTON7            (0x82000400 | DIMOFS_BUTTON7)
+
+
+#define DIAXIS_ANY_X_1             0xFF00C201
+#define DIAXIS_ANY_X_2             0xFF00C202
+#define DIAXIS_ANY_Y_1             0xFF014201
+#define DIAXIS_ANY_Y_2             0xFF014202
+#define DIAXIS_ANY_Z_1             0xFF01C201
+#define DIAXIS_ANY_Z_2             0xFF01C202
+#define DIAXIS_ANY_R_1             0xFF024201
+#define DIAXIS_ANY_R_2             0xFF024202
+#define DIAXIS_ANY_U_1             0xFF02C201
+#define DIAXIS_ANY_U_2             0xFF02C202
+#define DIAXIS_ANY_V_1             0xFF034201
+#define DIAXIS_ANY_V_2             0xFF034202
+#define DIAXIS_ANY_A_1             0xFF03C201
+#define DIAXIS_ANY_A_2             0xFF03C202
+#define DIAXIS_ANY_B_1             0xFF044201
+#define DIAXIS_ANY_B_2             0xFF044202
+#define DIAXIS_ANY_C_1             0xFF04C201
+#define DIAXIS_ANY_C_2             0xFF04C202
+#define DIAXIS_ANY_S_1             0xFF054201
+#define DIAXIS_ANY_S_2             0xFF054202
+#define DIAXIS_ANY_1               0xFF004201
+#define DIAXIS_ANY_2               0xFF004202
+#define DIAXIS_ANY_3               0xFF004203
+#define DIAXIS_ANY_4               0xFF004204
+#define DIPOV_ANY_1                0xFF004601
+#define DIPOV_ANY_2                0xFF004602
+#define DIPOV_ANY_3                0xFF004603
+#define DIPOV_ANY_4                0xFF004604
+#define DIBUTTON_ANY(instance)     (0xFF004400 | (instance))
+
+
+#define DIVIRTUAL_FLYING_HELICOPTER        0x06000000
+#define DIBUTTON_FLYINGH_MENU              0x060004fd
+#define DIBUTTON_FLYINGH_FIRE              0x06001401
+#define DIBUTTON_FLYINGH_WEAPONS           0x06001402
+#define DIBUTTON_FLYINGH_TARGET            0x06001403
+#define DIBUTTON_FLYINGH_DEVICE            0x060044fe
+#define DIBUTTON_FLYINGH_PAUSE             0x060044fc
+#define DIHATSWITCH_FLYINGH_GLANCE         0x06004601
+#define DIBUTTON_FLYINGH_FIRESECONDARY     0x06004c07
+#define DIBUTTON_FLYINGH_COUNTER           0x06005404
+#define DIBUTTON_FLYINGH_VIEW              0x06006405
+#define DIBUTTON_FLYINGH_GEAR              0x06006406
+#define DIAXIS_FLYINGH_BANK                0x06008a01
+#define DIAXIS_FLYINGH_PITCH               0x06010a02
+#define DIAXIS_FLYINGH_COLLECTIVE          0x06018a03
+#define DIAXIS_FLYINGH_TORQUE              0x06025a04
+#define DIAXIS_FLYINGH_THROTTLE            0x0603da05
+#define DIBUTTON_FLYINGH_FASTER_LINK       0x0603dce0
+#define DIBUTTON_FLYINGH_SLOWER_LINK       0x0603dce8
+#define DIBUTTON_FLYINGH_GLANCE_LEFT_LINK  0x0607c4e4
+#define DIBUTTON_FLYINGH_GLANCE_RIGHT_LINK 0x0607c4ec
+#define DIBUTTON_FLYINGH_GLANCE_UP_LINK    0x0607c4e0
+#define DIBUTTON_FLYINGH_GLANCE_DOWN_LINK  0x0607c4e8
+
 #ifdef __cplusplus
 };
 #endif
diff --git a/mingw-w64-headers/direct-x/include/dsound.h b/mingw-w64-headers/direct-x/include/dsound.h
index f4835fd..45ff107 100644
--- a/mingw-w64-headers/direct-x/include/dsound.h
+++ b/mingw-w64-headers/direct-x/include/dsound.h
@@ -132,6 +132,46 @@
 DEFINE_GUID(GUID_DSCFX_MS_NS,               0x11C5C73B,0x66E9,0x4BA1,0xA0,0xBA,0xE8,0x14,0xC6,0xEE,0xD9,0x2D);
 DEFINE_GUID(GUID_DSCFX_SYSTEM_NS,           0x5AB0882E,0x7274,0x4516,0x87,0x7D,0x4E,0xEE,0x99,0xBA,0x4F,0xD0);
 
+DEFINE_GUID(IID_IDirectSoundFXGargle,       0xd616f352,0xd622,0x11ce,0xaa,0xc5,0x00,0x20,0xaf,0x0b,0x99,0xa3);
+#define IDirectSoundFXGargle8               IDirectSoundFXGargle
+typedef struct IDirectSoundFXGargle8        *LPDIRECTSOUNDFXGARGLE8;
+#define IID_IDirectSoundFXGargle8           IID_IDirectSoundFXGargle
+
+DEFINE_GUID(IID_IDirectSoundFXChorus,       0x880842e3,0x145f,0x43e6,0xa9,0x34,0xa7,0x18,0x06,0xe5,0x05,0x47);
+#define IDirectSoundFXChorus8               IDirectSoundFXChorus
+typedef struct IDirectSoundFXChorus8        *LPDIRECTSOUNDFXCHORUS8;
+#define IID_IDirectSoundFXChorus8           IID_IDirectSoundFXChorus
+
+DEFINE_GUID(IID_IDirectSoundFXFlanger,      0x903e9878,0x2c92,0x4072,0x9b,0x2c,0xea,0x68,0xf5,0x39,0x67,0x83);
+#define IDirectSoundFXFlanger8              IDirectSoundFXFlanger
+typedef struct IDirectSoundFXFlanger8       *LPDIRECTSOUNDFXFLANGER8;
+#define IID_IDirectSoundFXFlanger8          IID_IDirectSoundFXFlanger
+
+DEFINE_GUID(IID_IDirectSoundFXEcho,         0x8bd28edf,0x50db,0x4e92,0xa2,0xbd,0x44,0x54,0x88, 0xd1,0xed,0x42);
+#define IDirectSoundFXEcho8                 IDirectSoundFXEcho
+typedef struct IDirectSoundFXEcho8          *LPDIRECTSOUNDFXECHO8;
+#define IID_IDirectSoundFXEcho8             IID_IDirectSoundFXEcho
+
+DEFINE_GUID(IID_IDirectSoundFXDistortion,   0x8ecf4326,0x455f,0x4d8b,0xbd,0xa9,0x8d,0x5d,0x3e,0x9e,0x3e,0x0b);
+#define IDirectSoundFXDistortion8           IDirectSoundFXDistortion
+typedef struct IDirectSoundFXDistortion8    *LPDIRECTSOUNDFXDISTORTION8;
+#define IID_IDirectSoundFXDistortion8       IID_IDirectSoundFXDistortion
+
+DEFINE_GUID(IID_IDirectSoundFXCompressor,   0x4bbd1154,0x62f6,0x4e2c,0xa1,0x5c,0xd3,0xb6,0xc4,0x17,0xf7,0xa0);
+#define IDirectSoundFXCompressor8           IDirectSoundFXCompressor
+typedef struct IDirectSoundFXCompressor8    *LPDIRECTSOUNDFXCOMPRESSOR8;
+#define IID_IDirectSoundFXCompressor8       IID_IDirectSoundFXCompressor
+
+DEFINE_GUID(IID_IDirectSoundFXParamEq,      0xc03ca9fe,0xfe90,0x4204,0x80,0x78,0x82,0x33,0x4c,0xd1,0x77,0xda);
+#define IDirectSoundFXParamEq8              IDirectSoundFXParamEq
+typedef struct IDirectSoundFXParamEq8       *LPDIRECTSOUNDFXPARAMEQ8;
+#define IID_IDirectSoundFXParamEq8          IID_IDirectSoundFXParamEq
+
+DEFINE_GUID(IID_IDirectSoundFXWavesReverb,  0x46858c3a,0x0dc6,0x45e3,0xb7,0x60,0xd4,0xee,0xf1,0x6c,0xb3,0x25);
+#define IDirectSoundFXWavesReverb8          IDirectSoundFXWavesReverb
+typedef struct IDirectSoundFXWavesReverb8   *LPDIRECTSOUNDFXWAVESREVERB8;
+#define IID_IDirectSoundFXWavesReverb8      IID_IDirectSoundFXWavesReverb
+
 #define	_FACDS		0x878
 #define	MAKE_DSHRESULT(code)		MAKE_HRESULT(1,_FACDS,code)
 
@@ -431,6 +471,46 @@
   FLOAT flHFReference;
 } DSFXI3DL2Reverb, *LPDSFXI3DL2Reverb;
 
+#define DSFX_I3DL2REVERB_DECAYTIME_DEFAULT              1.49f
+#define DSFX_I3DL2REVERB_DECAYTIME_MIN                  0.1f
+#define DSFX_I3DL2REVERB_DECAYTIME_MAX                 20.0f
+#define DSFX_I3DL2REVERB_DECAYHFRATIO_DEFAULT           0.83f
+#define DSFX_I3DL2REVERB_DECAYHFRATIO_MIN               0.1f
+#define DSFX_I3DL2REVERB_DECAYHFRATIO_MAX               2.0f
+#define DSFX_I3DL2REVERB_DENSITY_DEFAULT             100.0f
+#define DSFX_I3DL2REVERB_DENSITY_MIN                   0.0f
+#define DSFX_I3DL2REVERB_DENSITY_MAX                 100.0f
+#define DSFX_I3DL2REVERB_DIFFUSION_DEFAULT           100.0f
+#define DSFX_I3DL2REVERB_DIFFUSION_MIN                 0.0f
+#define DSFX_I3DL2REVERB_DIFFUSION_MAX               100.0f
+#define DSFX_I3DL2REVERB_HFREFERENCE_DEFAULT        5000.0f
+#define DSFX_I3DL2REVERB_HFREFERENCE_MIN              20.0f
+#define DSFX_I3DL2REVERB_HFREFERENCE_MAX           20000.0f
+#define DSFX_I3DL2REVERB_QUALITY_DEFAULT               2
+#define DSFX_I3DL2REVERB_QUALITY_MIN                   0
+#define DSFX_I3DL2REVERB_QUALITY_MAX                   3
+#define DSFX_I3DL2REVERB_REFLECTIONS_DEFAULT     (-2602)
+#define DSFX_I3DL2REVERB_REFLECTIONS_MIN        (-10000)
+#define DSFX_I3DL2REVERB_REFLECTIONS_MAX            1000
+#define DSFX_I3DL2REVERB_REFLECTIONSDELAY_DEFAULT      0.007f
+#define DSFX_I3DL2REVERB_REFLECTIONSDELAY_MIN          0.0f
+#define DSFX_I3DL2REVERB_REFLECTIONSDELAY_MAX          0.3f
+#define DSFX_I3DL2REVERB_REVERB_MIN             (-10000)
+#define DSFX_I3DL2REVERB_REVERB_MAX                 2000
+#define DSFX_I3DL2REVERB_REVERB_DEFAULT              200
+#define DSFX_I3DL2REVERB_REVERBDELAY_MIN               0.0f
+#define DSFX_I3DL2REVERB_REVERBDELAY_MAX               0.1f
+#define DSFX_I3DL2REVERB_REVERBDELAY_DEFAULT           0.011f
+#define DSFX_I3DL2REVERB_ROOM_DEFAULT            (-1000)
+#define DSFX_I3DL2REVERB_ROOM_MIN               (-10000)
+#define DSFX_I3DL2REVERB_ROOM_MAX                      0
+#define DSFX_I3DL2REVERB_ROOMHF_MIN             (-10000)
+#define DSFX_I3DL2REVERB_ROOMHF_MAX                    0
+#define DSFX_I3DL2REVERB_ROOMHF_DEFAULT           (-100)
+#define DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_MIN         0.0f
+#define DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_MAX        10.0f
+#define DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_DEFAULT     0.0f
+
 typedef const DSFXI3DL2Reverb *LPCDSFXI3DL2Reverb;
 
 #define DSCCAPS_EMULDRIVER          DSCAPS_EMULDRIVER
@@ -1289,6 +1369,417 @@
 #define IDirectSoundFXI3DL2Reverb_GetPreset(p,a)        (p)->GetPreset(a)
 #endif
 
+typedef struct _DSFXGargle
+{
+    DWORD       dwRateHz;
+    DWORD       dwWaveShape;
+} DSFXGargle, *LPDSFXGargle;
+
+typedef const DSFXGargle *LPCDSFXGargle;
+
+#define DSFXGARGLE_RATEHZ_MIN       1
+#define DSFXGARGLE_RATEHZ_MAX    1000
+#define DSFXGARGLE_WAVE_SQUARE      1
+#define DSFXGARGLE_WAVE_TRIANGLE    0
+
+#define INTERFACE IDirectSoundFXGargle
+DECLARE_INTERFACE_(IDirectSoundFXGargle,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD(QueryInterface)(THIS_ REFIID, void**) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+    /*** IDirectSoundFXGargle methods ***/
+    STDMETHOD(SetAllParameters)(THIS_ const DSFXGargle *gargle) PURE;
+    STDMETHOD(GetAllParameters)(THIS_ DSFXGargle *gargle) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectSoundFXGargle_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectSoundFXGargle_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectSoundFXGargle_Release(p)            (p)->lpVtbl->Release(p)
+#define IDirectSoundFXGargle_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a)
+#define IDirectSoundFXGargle_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a)
+#else
+#define IDirectSoundFXGargle_QueryInterface(p,a,b) (p)->QueryInterface(p,a,b)
+#define IDirectSoundFXGargle_AddRef(p)             (p)->AddRef(p)
+#define IDirectSoundFXGargle_Release(p)            (p)->Release(p)
+#define IDirectSoundFXGargle_SetAllParameters(p,a) (p)->SetAllParameters(a)
+#define IDirectSoundFXGargle_GetAllParameters(p,a) (p)->GetAllParameters(a)
+#endif
+
+typedef struct _DSFXChorus
+{
+    FLOAT fWetDryMix;
+    FLOAT fDepth;
+    FLOAT fFeedback;
+    FLOAT fFrequency;
+    LONG  lWaveform;
+    FLOAT fDelay;
+    LONG  lPhase;
+} DSFXChorus, *LPDSFXChorus;
+
+typedef const DSFXChorus *LPCDSFXChorus;
+
+#define DSFXCHORUS_DEPTH_MIN       0.0f
+#define DSFXCHORUS_DEPTH_MAX     100.0f
+#define DSFXCHORUS_DELAY_MIN       0.0f
+#define DSFXCHORUS_DELAY_MAX      20.0f
+#define DSFXCHORUS_FEEDBACK_MIN  -99.0f
+#define DSFXCHORUS_FEEDBACK_MAX   99.0f
+#define DSFXCHORUS_FREQUENCY_MIN   0.0f
+#define DSFXCHORUS_FREQUENCY_MAX  10.0f
+#define DSFXCHORUS_PHASE_MIN       0
+#define DSFXCHORUS_PHASE_MAX       4
+#define DSFXCHORUS_PHASE_NEG_180   0
+#define DSFXCHORUS_PHASE_NEG_90    1
+#define DSFXCHORUS_PHASE_ZERO      2
+#define DSFXCHORUS_PHASE_90        3
+#define DSFXCHORUS_PHASE_180       4
+#define DSFXCHORUS_WAVE_TRIANGLE   0
+#define DSFXCHORUS_WAVE_SIN        1
+#define DSFXCHORUS_WETDRYMIX_MIN   0.0f
+#define DSFXCHORUS_WETDRYMIX_MAX 100.0f
+
+#define INTERFACE IDirectSoundFXChorus
+DECLARE_INTERFACE_(IDirectSoundFXChorus,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD(QueryInterface)(THIS_ REFIID, void**) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+    /*** IDirectSoundFXChorus methods ***/
+    STDMETHOD(SetAllParameters)(THIS_ const DSFXChorus *chorus) PURE;
+    STDMETHOD(GetAllParameters)(THIS_ DSFXChorus *chorus) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectSoundFXChorus_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectSoundFXChorus_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectSoundFXChorus_Release(p)            (p)->lpVtbl->Release(p)
+#define IDirectSoundFXChorus_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a)
+#define IDirectSoundFXChorus_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a)
+#else
+#define IDirectSoundFXChorus_QueryInterface(p,a,b) (p)->QueryInterface(p,a,b)
+#define IDirectSoundFXChorus_AddRef(p)             (p)->AddRef(p)
+#define IDirectSoundFXChorus_Release(p)            (p)->Release(p)
+#define IDirectSoundFXChorus_SetAllParameters(p,a) (p)->SetAllParameters(a)
+#define IDirectSoundFXChorus_GetAllParameters(p,a) (p)->GetAllParameters(a)
+#endif
+
+typedef struct _DSFXFlanger
+{
+    FLOAT fWetDryMix;
+    FLOAT fDepth;
+    FLOAT fFeedback;
+    FLOAT fFrequency;
+    LONG  lWaveform;
+    FLOAT fDelay;
+    LONG  lPhase;
+} DSFXFlanger, *LPDSFXFlanger;
+
+typedef const DSFXFlanger *LPCDSFXFlanger;
+
+#define DSFXFLANGER_DELAY_MIN       0.0f
+#define DSFXFLANGER_DELAY_MAX       4.0f
+#define DSFXFLANGER_DEPTH_MIN       0.0f
+#define DSFXFLANGER_DEPTH_MAX     100.0f
+#define DSFXFLANGER_FREQUENCY_MIN   0.0f
+#define DSFXFLANGER_FREQUENCY_MAX  10.0f
+#define DSFXFLANGER_FEEDBACK_MIN  -99.0f
+#define DSFXFLANGER_FEEDBACK_MAX   99.0f
+#define DSFXFLANGER_PHASE_MIN       0
+#define DSFXFLANGER_PHASE_MAX       4
+#define DSFXFLANGER_PHASE_NEG_180   0
+#define DSFXFLANGER_PHASE_NEG_90    1
+#define DSFXFLANGER_PHASE_ZERO      2
+#define DSFXFLANGER_PHASE_90        3
+#define DSFXFLANGER_PHASE_180       4
+#define DSFXFLANGER_WAVE_SIN        1
+#define DSFXFLANGER_WAVE_TRIANGLE   0
+#define DSFXFLANGER_WETDRYMIX_MIN   0.0f
+#define DSFXFLANGER_WETDRYMIX_MAX 100.0f
+
+#define INTERFACE IDirectSoundFXFlanger
+DECLARE_INTERFACE_(IDirectSoundFXFlanger,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD(QueryInterface)(THIS_ REFIID, void**) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+    /*** IDirectSoundFXFlanger methods ***/
+    STDMETHOD(SetAllParameters)(THIS_ const DSFXFlanger *flanger) PURE;
+    STDMETHOD(GetAllParameters)(THIS_ DSFXFlanger *flanger) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectSoundFXFlanger_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectSoundFXFlanger_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectSoundFXFlanger_Release(p)            (p)->lpVtbl->Release(p)
+#define IDirectSoundFXFlanger_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a)
+#define IDirectSoundFXFlanger_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a)
+#else
+#define IDirectSoundFXFlanger_QueryInterface(p,a,b) (p)->QueryInterface(p,a,b)
+#define IDirectSoundFXFlanger_AddRef(p)             (p)->AddRef(p)
+#define IDirectSoundFXFlanger_Release(p)            (p)->Release(p)
+#define IDirectSoundFXFlanger_SetAllParameters(p,a) (p)->SetAllParameters(a)
+#define IDirectSoundFXFlanger_GetAllParameters(p,a) (p)->GetAllParameters(a)
+#endif
+
+typedef struct _DSFXEcho
+{
+    FLOAT fWetDryMix;
+    FLOAT fFeedback;
+    FLOAT fLeftDelay;
+    FLOAT fRightDelay;
+    LONG  lPanDelay;
+} DSFXEcho, *LPDSFXEcho;
+
+typedef const DSFXEcho *LPCDSFXEcho;
+
+#define DSFXECHO_FEEDBACK_MIN      0.0f
+#define DSFXECHO_FEEDBACK_MAX    100.0f
+#define DSFXECHO_LEFTDELAY_MIN     1.0f
+#define DSFXECHO_LEFTDELAY_MAX  2000.0f
+#define DSFXECHO_PANDELAY_MIN      0
+#define DSFXECHO_PANDELAY_MAX      1
+#define DSFXECHO_RIGHTDELAY_MIN    1.0f
+#define DSFXECHO_RIGHTDELAY_MAX 2000.0f
+#define DSFXECHO_WETDRYMIX_MIN     0.0f
+#define DSFXECHO_WETDRYMIX_MAX   100.0f
+
+#define INTERFACE IDirectSoundFXEcho
+DECLARE_INTERFACE_(IDirectSoundFXEcho,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD(QueryInterface)(THIS_ REFIID, void**) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+    /*** IDirectSoundFXEcho methods ***/
+    STDMETHOD(SetAllParameters)(THIS_ const DSFXEcho *echo) PURE;
+    STDMETHOD(GetAllParameters)(THIS_ DSFXEcho *echo) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectSoundFXEcho_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectSoundFXEcho_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectSoundFXEcho_Release(p)            (p)->lpVtbl->Release(p)
+#define IDirectSoundFXEcho_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a)
+#define IDirectSoundFXEcho_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a)
+#else
+#define IDirectSoundFXEcho_QueryInterface(p,a,b) (p)->QueryInterface(p,a,b)
+#define IDirectSoundFXEcho_AddRef(p)             (p)->AddRef(p)
+#define IDirectSoundFXEcho_Release(p)            (p)->Release(p)
+#define IDirectSoundFXEcho_SetAllParameters(p,a) (p)->SetAllParameters(a)
+#define IDirectSoundFXEcho_GetAllParameters(p,a) (p)->GetAllParameters(a)
+#endif
+
+typedef struct _DSFXDistortion
+{
+    FLOAT fGain;
+    FLOAT fEdge;
+    FLOAT fPostEQCenterFrequency;
+    FLOAT fPostEQBandwidth;
+    FLOAT fPreLowpassCutoff;
+} DSFXDistortion, *LPDSFXDistortion;
+
+typedef const DSFXDistortion *LPCDSFXDistortion;
+
+#define DSFXDISTORTION_EDGE_MIN                     0.0f
+#define DSFXDISTORTION_EDGE_MAX                   100.0f
+#define DSFXDISTORTION_GAIN_MIN                   -60.0f
+#define DSFXDISTORTION_GAIN_MAX                     0.0f
+#define DSFXDISTORTION_POSTEQCENTERFREQUENCY_MIN  100.0f
+#define DSFXDISTORTION_POSTEQCENTERFREQUENCY_MAX 8000.0f
+#define DSFXDISTORTION_POSTEQBANDWIDTH_MIN        100.0f
+#define DSFXDISTORTION_POSTEQBANDWIDTH_MAX       8000.0f
+#define DSFXDISTORTION_PRELOWPASSCUTOFF_MIN       100.0f
+#define DSFXDISTORTION_PRELOWPASSCUTOFF_MAX      8000.0f
+
+#define INTERFACE IDirectSoundFXDistortion
+DECLARE_INTERFACE_(IDirectSoundFXDistortion,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD(QueryInterface)(THIS_ REFIID, void**) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+    /*** IDirectSoundFXDistortion methods ***/
+    STDMETHOD(SetAllParameters)(THIS_ const DSFXDistortion *distortion) PURE;
+    STDMETHOD(GetAllParameters)(THIS_ DSFXDistortion *distortion) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectSoundFXDistortion_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectSoundFXDistortion_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectSoundFXDistortion_Release(p)            (p)->lpVtbl->Release(p)
+#define IDirectSoundFXDistortion_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a)
+#define IDirectSoundFXDistortion_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a)
+#else
+#define IDirectSoundFXDistortion_QueryInterface(p,a,b) (p)->QueryInterface(p,a,b)
+#define IDirectSoundFXDistortion_AddRef(p)             (p)->AddRef(p)
+#define IDirectSoundFXDistortion_Release(p)            (p)->Release(p)
+#define IDirectSoundFXDistortion_SetAllParameters(p,a) (p)->SetAllParameters(a)
+#define IDirectSoundFXDistortion_GetAllParameters(p,a) (p)->GetAllParameters(a)
+#endif
+
+typedef struct _DSFXCompressor
+{
+    FLOAT fGain;
+    FLOAT fAttack;
+    FLOAT fRelease;
+    FLOAT fThreshold;
+    FLOAT fRatio;
+    FLOAT fPredelay;
+} DSFXCompressor, *LPDSFXCompressor;
+
+typedef const DSFXCompressor *LPCDSFXCompressor;
+
+#define DSFXCOMPRESSOR_ATTACK_MIN       0.01f
+#define DSFXCOMPRESSOR_ATTACK_MAX     500.0f
+#define DSFXCOMPRESSOR_GAIN_MIN       -60.0f
+#define DSFXCOMPRESSOR_GAIN_MAX        60.0f
+#define DSFXCOMPRESSOR_PREDELAY_MIN     0.0f
+#define DSFXCOMPRESSOR_PREDELAY_MAX     4.0f
+#define DSFXCOMPRESSOR_RATIO_MIN        1.0f
+#define DSFXCOMPRESSOR_RATIO_MAX      100.0f
+#define DSFXCOMPRESSOR_RELEASE_MIN     50.0f
+#define DSFXCOMPRESSOR_RELEASE_MAX   3000.0f
+#define DSFXCOMPRESSOR_THRESHOLD_MIN  -60.0f
+#define DSFXCOMPRESSOR_THRESHOLD_MAX    0.0f
+
+#define INTERFACE IDirectSoundFXCompressor
+DECLARE_INTERFACE_(IDirectSoundFXCompressor, IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD(QueryInterface)(THIS_ REFIID, void**) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+    /*** IDirectSoundFXCompressor methods ***/
+    STDMETHOD(SetAllParameters)(THIS_ const DSFXCompressor *compressor) PURE;
+    STDMETHOD(GetAllParameters)(THIS_ DSFXCompressor *compressor) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectSoundFXCompressor_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectSoundFXCompressor_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectSoundFXCompressor_Release(p)            (p)->lpVtbl->Release(p)
+#define IDirectSoundFXCompressor_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a)
+#define IDirectSoundFXCompressor_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a)
+#else
+#define IDirectSoundFXCompressor_QueryInterface(p,a,b) (p)->QueryInterface(p,a,b)
+#define IDirectSoundFXCompressor_AddRef(p)             (p)->AddRef(p)
+#define IDirectSoundFXCompressor_Release(p)            (p)->Release(p)
+#define IDirectSoundFXCompressor_SetAllParameters(p,a) (p)->SetAllParameters(a)
+#define IDirectSoundFXCompressor_GetAllParameters(p,a) (p)->GetAllParameters(a)
+#endif
+
+typedef struct _DSFXParamEq
+{
+    FLOAT fCenter;
+    FLOAT fBandwidth;
+    FLOAT fGain;
+} DSFXParamEq, *LPDSFXParamEq;
+
+typedef const DSFXParamEq *LPCDSFXParamEq;
+
+#define DSFXPARAMEQ_BANDWIDTH_MIN     1.0f
+#define DSFXPARAMEQ_BANDWIDTH_MAX    36.0f
+#define DSFXPARAMEQ_CENTER_MIN       80.0f
+#define DSFXPARAMEQ_CENTER_MAX    16000.0f
+#define DSFXPARAMEQ_GAIN_MIN        -15.0f
+#define DSFXPARAMEQ_GAIN_MAX         15.0f
+
+#define INTERFACE IDirectSoundFXParamEq
+DECLARE_INTERFACE_(IDirectSoundFXParamEq, IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD(QueryInterface)(THIS_ REFIID, void**) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+    /*** IDirectSoundFXParamEq methods ***/
+    STDMETHOD(SetAllParameters)(THIS_ const DSFXParamEq *param) PURE;
+    STDMETHOD(GetAllParameters)(THIS_ DSFXParamEq *param) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectSoundFXParamEq_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectSoundFXParamEq_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectSoundFXParamEq_Release(p)            (p)->lpVtbl->Release(p)
+#define IDirectSoundFXParamEq_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a)
+#define IDirectSoundFXParamEq_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a)
+#else
+#define IDirectSoundFXParamEq_QueryInterface(p,a,b) (p)->QueryInterface(p,a,b)
+#define IDirectSoundFXParamEq_AddRef(p)             (p)->AddRef(p)
+#define IDirectSoundFXParamEq_Release(p)            (p)->Release(p)
+#define IDirectSoundFXParamEq_SetAllParameters(p,a) (p)->SetAllParameters(a)
+#define IDirectSoundFXParamEq_GetAllParameters(p,a) (p)->GetAllParameters(a)
+#endif
+
+typedef struct _DSFXWavesReverb
+{
+    FLOAT fInGain;
+    FLOAT fReverbMix;
+    FLOAT fReverbTime;
+    FLOAT fHighFreqRTRatio;
+} DSFXWavesReverb, *LPDSFXWavesReverb;
+
+typedef const DSFXWavesReverb *LPCDSFXWavesReverb;
+
+#define DSFX_WAVESREVERB_HIGHFREQRTRATIO_MIN       0.001f
+#define DSFX_WAVESREVERB_HIGHFREQRTRATIO_MAX       0.999f
+#define DSFX_WAVESREVERB_HIGHFREQRTRATIO_DEFAULT   0.001f
+#define DSFX_WAVESREVERB_INGAIN_MIN              -96.0f
+#define DSFX_WAVESREVERB_INGAIN_MAX                0.0f
+#define DSFX_WAVESREVERB_INGAIN_DEFAULT            0.0f
+#define DSFX_WAVESREVERB_REVERBMIX_MIN           -96.0f
+#define DSFX_WAVESREVERB_REVERBMIX_MAX             0.0f
+#define DSFX_WAVESREVERB_REVERBMIX_DEFAULT         0.0f
+#define DSFX_WAVESREVERB_REVERBTIME_MIN            0.001f
+#define DSFX_WAVESREVERB_REVERBTIME_MAX         3000.0f
+#define DSFX_WAVESREVERB_REVERBTIME_DEFAULT     1000.0f
+
+#define INTERFACE IDirectSoundFXWavesReverb
+DECLARE_INTERFACE_(IDirectSoundFXWavesReverb,IUnknown)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD(QueryInterface)(THIS_ REFIID, void**) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+    /*** IDirectSoundFXWavesReverb methods ***/
+    STDMETHOD(SetAllParameters)(THIS_ const DSFXWavesReverb *reverb) PURE;
+    STDMETHOD(GetAllParameters)(THIS_ DSFXWavesReverb *reverb) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectSoundFXWavesReverb_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectSoundFXWavesReverb_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IDirectSoundFXWavesReverb_Release(p)            (p)->lpVtbl->Release(p)
+#define IDirectSoundFXWavesReverb_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a)
+#define IDirectSoundFXWavesReverb_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a)
+#else
+#define IDirectSoundFXWavesReverb_QueryInterface(p,a,b) (p)->QueryInterface(p,a,b)
+#define IDirectSoundFXWavesReverb_AddRef(p)             (p)->AddRef(p)
+#define IDirectSoundFXWavesReverb_Release(p)            (p)->Release(p)
+#define IDirectSoundFXWavesReverb_SetAllParameters(p,a) (p)->SetAllParameters(a)
+#define IDirectSoundFXWavesReverb_GetAllParameters(p,a) (p)->GetAllParameters(a)
+#endif
+
 #ifdef __cplusplus
 } /* extern "C" */
 #endif /* defined(__cplusplus) */
