dinput.h and dsound.h updates,

based on wine git commits 0c8bf1, 2e0c60, 872647, a30da0, 3994f3, ed475a,
06c43e, 74c675 and 332dc2.
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) */