1 /*******************************************************************\ 2 * * 3 * EAX.H - Environmental Audio Extensions version 4.0 * 4 * for OpenAL and DirectSound3D * 5 * * 6 * File revision 1.6.3 (21 February 2003) * 7 * EAX 4.0 API Spec version 1.6 * 8 * * 9 \*******************************************************************/ 10 11 #ifndef EAX_H_INCLUDED 12 #define EAX_H_INCLUDED 13 14 #ifdef __cplusplus 15 extern "C" { 16 #endif // __cplusplus 17 18 #ifndef OPENAL 19 #include <dsound.h> 20 21 /* 22 * EAX Unified Interface (using Direct X 7) {4FF53B81-1CE0-11d3-AAB8-00A0C95949D5} 23 */ 24 DEFINE_GUID(CLSID_EAXDirectSound, 25 0x4ff53b81, 26 0x1ce0, 27 0x11d3, 28 0xaa, 0xb8, 0x0, 0xa0, 0xc9, 0x59, 0x49, 0xd5); 29 30 /* 31 * EAX Unified Interface (using Direct X 8) {CA503B60-B176-11d4-A094-D0C0BF3A560C} 32 */ 33 DEFINE_GUID(CLSID_EAXDirectSound8, 34 0xca503b60, 35 0xb176, 36 0x11d4, 37 0xa0, 0x94, 0xd0, 0xc0, 0xbf, 0x3a, 0x56, 0xc); 38 39 40 41 #ifdef DIRECTSOUND_VERSION 42 #if DIRECTSOUND_VERSION >= 0x0800 43 __declspec(dllimport) HRESULT WINAPI EAXDirectSoundCreate8(GUID*, LPDIRECTSOUND8*, IUnknown FAR *); 44 typedef HRESULT (FAR PASCAL *LPEAXDIRECTSOUNDCREATE8)(GUID*, LPDIRECTSOUND8*, IUnknown FAR*); 45 #endif 46 #endif 47 48 __declspec(dllimport) HRESULT WINAPI EAXDirectSoundCreate(GUID*, LPDIRECTSOUND*, IUnknown FAR *); 49 typedef HRESULT (FAR PASCAL *LPEAXDIRECTSOUNDCREATE)(GUID*, LPDIRECTSOUND*, IUnknown FAR*); 50 51 #else // OPENAL 52 #ifdef _WIN32 53 #include "../OpenAL/al.h" 54 #else 55 #include <al.h> 56 #endif 57 58 #ifndef GUID_DEFINED 59 #define GUID_DEFINED 60 typedef struct _GUID 61 { 62 unsigned long Data1; 63 unsigned short Data2; 64 unsigned short Data3; 65 unsigned char Data4[8]; 66 } GUID; 67 #endif // GUID_DEFINED 68 69 #ifndef DEFINE_GUID 70 #ifndef INITGUID 71 #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ 72 extern const GUID /*FAR*/ name 73 #else 74 #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ 75 extern const GUID name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } } 76 #endif // INITGUID 77 #endif // DEFINE_GUID 78 79 /* 80 * EAX OpenAL Extensions 81 */ 82 typedef ALenum (*EAXSet)(const GUID*, ALuint, ALuint, ALvoid*, ALuint); 83 typedef ALenum (*EAXGet)(const GUID*, ALuint, ALuint, ALvoid*, ALuint); 84 #endif 85 86 #pragma pack(push, 4) 87 88 89 90 91 //////////////////////////////////////////////////////////////////////////// 92 // Constants 93 94 #define EAX_MAX_FXSLOTS 4 95 #define EAX_MAX_ACTIVE_FXSLOTS 2 96 97 // The EAX_NULL_GUID is used by EAXFXSLOT_LOADEFFECT, EAXCONTEXT_PRIMARYFXSLOTID 98 // and EAXSOURCE_ACTIVEFXSLOTID 99 100 // {00000000-0000-0000-0000-000000000000} 101 DEFINE_GUID(EAX_NULL_GUID, 102 0x00000000, 103 0x0000, 104 0x0000, 105 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00); 106 107 // The EAX_PrimaryFXSlotID GUID is used by EAXSOURCE_ACTIVEFXSLOTID 108 109 // {F317866D-924C-450C-861B-E6DAA25E7C20} 110 DEFINE_GUID(EAX_PrimaryFXSlotID, 111 0xf317866d, 112 0x924c, 113 0x450c, 114 0x86, 0x1b, 0xe6, 0xda, 0xa2, 0x5e, 0x7c, 0x20); 115 116 117 //////////////////////////////////////////////////////////////////////////// 118 119 120 121 122 //////////////////////////////////////////////////////////////////////////// 123 // Structures 124 125 // Use this structure for EAXCONTEXT_ALL property. 126 typedef struct _EAXCONTEXTPROPERTIES 127 { 128 GUID guidPrimaryFXSlotID; 129 float flDistanceFactor; 130 float flAirAbsorptionHF; 131 float flHFReference; 132 } EAXCONTEXTPROPERTIES, *LPEAXCONTEXTPROPERTIES; 133 134 // Use this structure for EAXSOURCE_ALLPARAMETERS 135 // - all levels are hundredths of decibels 136 // - all delays are in seconds 137 // 138 // NOTE: This structure may change in future EAX versions. 139 // It is recommended to initialize fields by name: 140 // myBuffer.lDirect = 0; 141 // myBuffer.lDirectHF = -200; 142 // ... 143 // myBuffer.dwFlags = myFlags /* see EAXSOURCEFLAGS below */ ; 144 // instead of: 145 // myBuffer = { 0, -200, ... , 0x00000003 }; 146 // 147 typedef struct _EAXSOURCEPROPERTIES 148 { 149 long lDirect; // direct path level (at low and mid frequencies) 150 long lDirectHF; // relative direct path level at high frequencies 151 long lRoom; // room effect level (at low and mid frequencies) 152 long lRoomHF; // relative room effect level at high frequencies 153 long lObstruction; // main obstruction control (attenuation at high frequencies) 154 float flObstructionLFRatio; // obstruction low-frequency level re. main control 155 long lOcclusion; // main occlusion control (attenuation at high frequencies) 156 float flOcclusionLFRatio; // occlusion low-frequency level re. main control 157 float flOcclusionRoomRatio; // relative occlusion control for room effect 158 float flOcclusionDirectRatio; // relative occlusion control for direct path 159 long lExclusion; // main exlusion control (attenuation at high frequencies) 160 float flExclusionLFRatio; // exclusion low-frequency level re. main control 161 long lOutsideVolumeHF; // outside sound cone level at high frequencies 162 float flDopplerFactor; // like DS3D flDopplerFactor but per source 163 float flRolloffFactor; // like DS3D flRolloffFactor but per source 164 float flRoomRolloffFactor; // like DS3D flRolloffFactor but for room effect 165 float flAirAbsorptionFactor; // multiplies EAXREVERB_AIRABSORPTIONHF 166 unsigned long ulFlags; // modifies the behavior of properties 167 } EAXSOURCEPROPERTIES, *LPEAXSOURCEPROPERTIES; 168 169 // Use this structure for EAXSOURCE_ALLSENDPARAMETERS 170 // - all levels are hundredths of decibels 171 // 172 typedef struct _EAXSOURCEALLSENDPROPERTIES 173 { 174 GUID guidReceivingFXSlotID; 175 long lSend; // send level (at low and mid frequencies) 176 long lSendHF; // relative send level at high frequencies 177 long lOcclusion; 178 float flOcclusionLFRatio; 179 float flOcclusionRoomRatio; 180 float flOcclusionDirectRatio; 181 long lExclusion; 182 float flExclusionLFRatio; 183 } EAXSOURCEALLSENDPROPERTIES, *LPEAXSOURCEALLSENDPROPERTIES; 184 185 // Use this structure for EAXSOURCE_ACTIVEFXSLOTID 186 typedef struct _EAXACTIVEFXSLOTS 187 { 188 GUID guidActiveFXSlots[EAX_MAX_ACTIVE_FXSLOTS]; 189 } EAXACTIVEFXSLOTS, *LPEAXACTIVEFXSLOTS; 190 191 // Use this structure for EAXSOURCE_OBSTRUCTIONPARAMETERS property. 192 typedef struct _EAXOBSTRUCTIONPROPERTIES 193 { 194 long lObstruction; 195 float flObstructionLFRatio; 196 } EAXOBSTRUCTIONPROPERTIES, *LPEAXOBSTRUCTIONPROPERTIES; 197 198 // Use this structure for EAXSOURCE_OCCLUSIONPARAMETERS property. 199 typedef struct _EAXOCCLUSIONPROPERTIES 200 { 201 long lOcclusion; 202 float flOcclusionLFRatio; 203 float flOcclusionRoomRatio; 204 float flOcclusionDirectRatio; 205 } EAXOCCLUSIONPROPERTIES, *LPEAXOCCLUSIONPROPERTIES; 206 207 // Use this structure for EAXSOURCE_EXCLUSIONPARAMETERS property. 208 typedef struct _EAXEXCLUSIONPROPERTIES 209 { 210 long lExclusion; 211 float flExclusionLFRatio; 212 } EAXEXCLUSIONPROPERTIES, *LPEAXEXCLUSIONPROPERTIES; 213 214 // Use this structure for EAXSOURCE_SENDPARAMETERS properties. 215 typedef struct _EAXSOURCESENDPROPERTIES 216 { 217 GUID guidReceivingFXSlotID; 218 long lSend; 219 long lSendHF; 220 } EAXSOURCESENDPROPERTIES, *LPEAXSOURCESENDPROPERTIES; 221 222 // Use this structure for EAXSOURCE_OCCLUSIONSENDPARAMETERS 223 typedef struct _EAXSOURCEOCCLUSIONSENDPROPERTIES 224 { 225 GUID guidReceivingFXSlotID; 226 long lOcclusion; 227 float flOcclusionLFRatio; 228 float flOcclusionRoomRatio; 229 float flOcclusionDirectRatio; 230 } EAXSOURCEOCCLUSIONSENDPROPERTIES, *LPEAXSOURCEOCCLUSIONSENDPROPERTIES; 231 232 // Use this structure for EAXSOURCE_EXCLUSIONSENDPARAMETERS 233 typedef struct _EAXSOURCEEXCLUSIONSENDPROPERTIES 234 { 235 GUID guidReceivingFXSlotID; 236 long lExclusion; 237 float flExclusionLFRatio; 238 } EAXSOURCEEXCLUSIONSENDPROPERTIES, *LPEAXSOURCEEXCLUSIONSENDPROPERTIES; 239 240 // Use this structure for EAXFXSLOT_ALLPARAMETERS 241 // - all levels are hundredths of decibels 242 // 243 // NOTE: This structure may change in future EAX versions. 244 // It is recommended to initialize fields by name: 245 // myFXSlot.guidLoadEffect = EAX_REVERB_EFFECT; 246 // myFXSlot.lVolume = 0; 247 // myFXSlot.lLock = 1; 248 // myFXSlot.ulFlags = myFlags /* see EAXFXSLOTFLAGS below */ ; 249 // instead of: 250 // myFXSlot = { EAX_REVERB_EFFECT, 0, 1, 0x00000001 }; 251 // 252 typedef struct _EAXFXSLOTPROPERTIES 253 { 254 GUID guidLoadEffect; 255 long lVolume; 256 long lLock; 257 unsigned long ulFlags; 258 } EAXFXSLOTPROPERTIES, *LPEAXFXSLOTPROPERTIES; 259 260 // Use this structure for EAXREVERB_REFLECTIONSPAN and EAXREVERB_REVERBPAN properties. 261 #ifndef EAXVECTOR_DEFINED 262 #define EAXVECTOR_DEFINED 263 typedef struct _EAXVECTOR { 264 float x; 265 float y; 266 float z; 267 } EAXVECTOR; 268 #endif 269 270 271 //////////////////////////////////////////////////////////////////////////// 272 273 274 275 276 //////////////////////////////////////////////////////////////////////////// 277 // Error Codes 278 279 #define EAX_OK 0 280 #define EAXERR_INVALID_OPERATION (-1) 281 #define EAXERR_INVALID_VALUE (-2) 282 #define EAXERR_NO_EFFECT_LOADED (-3) 283 #define EAXERR_UNKNOWN_EFFECT (-4) 284 //////////////////////////////////////////////////////////////////////////// 285 286 287 288 289 //////////////////////////////////////////////////////////////////////////// 290 // Context Object 291 292 // {1D4870AD-0DEF-43c0-A40C-523632296342} 293 DEFINE_GUID(EAXPROPERTYID_EAX40_Context, 294 0x1d4870ad, 295 0xdef, 296 0x43c0, 297 0xa4, 0xc, 0x52, 0x36, 0x32, 0x29, 0x63, 0x42); 298 299 // For compatibility with future EAX versions: 300 #define EAXPROPERTYID_EAX_Context EAXPROPERTYID_EAX40_Context 301 302 typedef enum 303 { 304 EAXCONTEXT_NONE = 0, 305 EAXCONTEXT_ALLPARAMETERS, 306 EAXCONTEXT_PRIMARYFXSLOTID, 307 EAXCONTEXT_DISTANCEFACTOR, 308 EAXCONTEXT_AIRABSORPTIONHF, 309 EAXCONTEXT_HFREFERENCE, 310 EAXCONTEXT_LASTERROR 311 } EAXCONTEXT_PROPERTY; 312 313 // OR these flags with property id 314 #define EAXCONTEXT_PARAMETER_IMMEDIATE 0x00000000 // changes take effect immediately 315 #define EAXCONTEXT_PARAMETER_DEFER 0x80000000 // changes take effect later 316 #define EAXCONTEXT_PARAMETER_COMMITDEFERREDSETTINGS (EAXCONTEXT_NONE | \ 317 EAXCONTEXT_PARAMETER_IMMEDIATE) 318 319 // EAX Context property ranges and defaults: 320 #define EAXCONTEXT_DEFAULTPRIMARYFXSLOTID EAXPROPERTYID_EAX40_FXSlot0 321 322 #define EAXCONTEXT_MINDISTANCEFACTOR FLT_MIN //minimum positive value 323 #define EAXCONTEXT_MAXDISTANCEFACTOR FLT_MAX 324 #define EAXCONTEXT_DEFAULTDISTANCEFACTOR 1.0f 325 326 #define EAXCONTEXT_MINAIRABSORPTIONHF (-100.0f) 327 #define EAXCONTEXT_MAXAIRABSORPTIONHF 0.0f 328 #define EAXCONTEXT_DEFAULTAIRABSORPTIONHF (-5.0f) 329 330 #define EAXCONTEXT_MINHFREFERENCE 1000.0f 331 #define EAXCONTEXT_MAXHFREFERENCE 20000.0f 332 #define EAXCONTEXT_DEFAULTHFREFERENCE 5000.0f 333 334 #define EAXCONTEXT_DEFAULTLASTERROR EAX_OK 335 336 //////////////////////////////////////////////////////////////////////////// 337 338 339 340 341 //////////////////////////////////////////////////////////////////////////// 342 // Effect Slot Objects 343 344 // {C4D79F1E-F1AC-436b-A81D-A738E7045469} 345 DEFINE_GUID(EAXPROPERTYID_EAX40_FXSlot0, 346 0xc4d79f1e, 347 0xf1ac, 348 0x436b, 349 0xa8, 0x1d, 0xa7, 0x38, 0xe7, 0x4, 0x54, 0x69); 350 351 // {08C00E96-74BE-4491-93AA-E8AD35A49117} 352 DEFINE_GUID(EAXPROPERTYID_EAX40_FXSlot1, 353 0x8c00e96, 354 0x74be, 355 0x4491, 356 0x93, 0xaa, 0xe8, 0xad, 0x35, 0xa4, 0x91, 0x17); 357 358 // {1D433B88-F0F6-4637-919F-60E7E06B5EDD} 359 DEFINE_GUID(EAXPROPERTYID_EAX40_FXSlot2, 360 0x1d433b88, 361 0xf0f6, 362 0x4637, 363 0x91, 0x9f, 0x60, 0xe7, 0xe0, 0x6b, 0x5e, 0xdd); 364 365 // {EFFF08EA-C7D8-44ab-93AD-6DBD5F910064} 366 DEFINE_GUID(EAXPROPERTYID_EAX40_FXSlot3, 367 0xefff08ea, 368 0xc7d8, 369 0x44ab, 370 0x93, 0xad, 0x6d, 0xbd, 0x5f, 0x91, 0x0, 0x64); 371 372 // For compatibility with future EAX versions: 373 #define EAXPROPERTYID_EAX_FXSlot0 EAXPROPERTYID_EAX40_FXSlot0 374 #define EAXPROPERTYID_EAX_FXSlot1 EAXPROPERTYID_EAX40_FXSlot1 375 #define EAXPROPERTYID_EAX_FXSlot2 EAXPROPERTYID_EAX40_FXSlot2 376 #define EAXPROPERTYID_EAX_FXSlot3 EAXPROPERTYID_EAX40_FXSlot3 377 378 // FXSlot object properties 379 typedef enum 380 { 381 EAXFXSLOT_PARAMETER = 0, // range 0-0x40 reserved for loaded effect parameters 382 EAXFXSLOT_NONE = 0x10000, 383 EAXFXSLOT_ALLPARAMETERS, 384 EAXFXSLOT_LOADEFFECT, 385 EAXFXSLOT_VOLUME, 386 EAXFXSLOT_LOCK, 387 EAXFXSLOT_FLAGS 388 } EAXFXSLOT_PROPERTY; 389 390 // Note: The number and order of flags may change in future EAX versions. 391 // To insure future compatibility, use flag defines as follows: 392 // myFlags = EAXFXSLOTFLAGS_ENVIRONMENT; 393 // instead of: 394 // myFlags = 0x00000001; 395 // 396 #define EAXFXSLOTFLAGS_ENVIRONMENT 0x00000001 397 #define EAXFXSLOTFLAGS_RESERVED 0xFFFFFFFE // reserved future use 398 399 // EAX Effect Slot property ranges and defaults: 400 #define EAXFXSLOT_MINVOLUME (-10000) 401 #define EAXFXSLOT_MAXVOLUME 0 402 #define EAXFXSLOT_DEFAULTVOLUME 0 403 404 #define EAXFXSLOT_MINLOCK 0 405 #define EAXFXSLOT_MAXLOCK 1 406 407 enum 408 { 409 EAXFXSLOT_UNLOCKED = 0, 410 EAXFXSLOT_LOCKED = 1 411 }; 412 413 #define EAXFXSLOT_DEFAULTFLAGS (EAXFXSLOTFLAGS_ENVIRONMENT) 414 //////////////////////////////////////////////////////////////////////////// 415 416 417 418 419 //////////////////////////////////////////////////////////////////////////// 420 // Source Object 421 422 // {1B86B823-22DF-4eae-8B3C-1278CE544227} 423 DEFINE_GUID(EAXPROPERTYID_EAX40_Source, 424 0x1b86b823, 425 0x22df, 426 0x4eae, 427 0x8b, 0x3c, 0x12, 0x78, 0xce, 0x54, 0x42, 0x27); 428 429 // For compatibility with future EAX versions: 430 #define EAXPROPERTYID_EAX_Source EAXPROPERTYID_EAX40_Source 431 432 // Source object properties 433 typedef enum 434 { 435 EAXSOURCE_NONE, 436 EAXSOURCE_ALLPARAMETERS, 437 EAXSOURCE_OBSTRUCTIONPARAMETERS, 438 EAXSOURCE_OCCLUSIONPARAMETERS, 439 EAXSOURCE_EXCLUSIONPARAMETERS, 440 EAXSOURCE_DIRECT, 441 EAXSOURCE_DIRECTHF, 442 EAXSOURCE_ROOM, 443 EAXSOURCE_ROOMHF, 444 EAXSOURCE_OBSTRUCTION, 445 EAXSOURCE_OBSTRUCTIONLFRATIO, 446 EAXSOURCE_OCCLUSION, 447 EAXSOURCE_OCCLUSIONLFRATIO, 448 EAXSOURCE_OCCLUSIONROOMRATIO, 449 EAXSOURCE_OCCLUSIONDIRECTRATIO, 450 EAXSOURCE_EXCLUSION, 451 EAXSOURCE_EXCLUSIONLFRATIO, 452 EAXSOURCE_OUTSIDEVOLUMEHF, 453 EAXSOURCE_DOPPLERFACTOR, 454 EAXSOURCE_ROLLOFFFACTOR, 455 EAXSOURCE_ROOMROLLOFFFACTOR, 456 EAXSOURCE_AIRABSORPTIONFACTOR, 457 EAXSOURCE_FLAGS, 458 EAXSOURCE_SENDPARAMETERS, 459 EAXSOURCE_ALLSENDPARAMETERS, 460 EAXSOURCE_OCCLUSIONSENDPARAMETERS, 461 EAXSOURCE_EXCLUSIONSENDPARAMETERS, 462 EAXSOURCE_ACTIVEFXSLOTID, 463 } EAXSOURCE_PROPERTY; 464 465 // OR these flags with property id 466 #define EAXSOURCE_PARAMETER_IMMEDIATE 0x00000000 // changes take effect immediately 467 #define EAXSOURCE_PARAMETER_DEFERRED 0x80000000 // changes take effect later 468 #define EAXSOURCE_PARAMETER_COMMITDEFERREDSETTINGS (EAXSOURCE_NONE | \ 469 EAXSOURCE_PARAMETER_IMMEDIATE) 470 // Used by EAXSOURCE_FLAGS for EAXSOURCEFLAGS_xxxAUTO 471 // TRUE: value is computed automatically - property is an offset 472 // FALSE: value is used directly 473 // 474 // Note: The number and order of flags may change in future EAX versions. 475 // To insure future compatibility, use flag defines as follows: 476 // myFlags = EAXSOURCE_DIRECTHFAUTO | EAXSOURCE_ROOMAUTO; 477 // instead of: 478 // myFlags = 0x00000003; 479 // 480 #define EAXSOURCEFLAGS_DIRECTHFAUTO 0x00000001 // relates to EAXSOURCE_DIRECTHF 481 #define EAXSOURCEFLAGS_ROOMAUTO 0x00000002 // relates to EAXSOURCE_ROOM 482 #define EAXSOURCEFLAGS_ROOMHFAUTO 0x00000004 // relates to EAXSOURCE_ROOMHF 483 #define EAXSOURCEFLAGS_RESERVED 0xFFFFFFF8 // reserved future use 484 485 // EAX Source property ranges and defaults: 486 #define EAXSOURCE_MINSEND (-10000) 487 #define EAXSOURCE_MAXSEND 0 488 #define EAXSOURCE_DEFAULTSEND 0 489 490 #define EAXSOURCE_MINSENDHF (-10000) 491 #define EAXSOURCE_MAXSENDHF 0 492 #define EAXSOURCE_DEFAULTSENDHF 0 493 494 #define EAXSOURCE_MINDIRECT (-10000) 495 #define EAXSOURCE_MAXDIRECT 1000 496 #define EAXSOURCE_DEFAULTDIRECT 0 497 498 #define EAXSOURCE_MINDIRECTHF (-10000) 499 #define EAXSOURCE_MAXDIRECTHF 0 500 #define EAXSOURCE_DEFAULTDIRECTHF 0 501 502 #define EAXSOURCE_MINROOM (-10000) 503 #define EAXSOURCE_MAXROOM 1000 504 #define EAXSOURCE_DEFAULTROOM 0 505 506 #define EAXSOURCE_MINROOMHF (-10000) 507 #define EAXSOURCE_MAXROOMHF 0 508 #define EAXSOURCE_DEFAULTROOMHF 0 509 510 #define EAXSOURCE_MINOBSTRUCTION (-10000) 511 #define EAXSOURCE_MAXOBSTRUCTION 0 512 #define EAXSOURCE_DEFAULTOBSTRUCTION 0 513 514 #define EAXSOURCE_MINOBSTRUCTIONLFRATIO 0.0f 515 #define EAXSOURCE_MAXOBSTRUCTIONLFRATIO 1.0f 516 #define EAXSOURCE_DEFAULTOBSTRUCTIONLFRATIO 0.0f 517 518 #define EAXSOURCE_MINOCCLUSION (-10000) 519 #define EAXSOURCE_MAXOCCLUSION 0 520 #define EAXSOURCE_DEFAULTOCCLUSION 0 521 522 #define EAXSOURCE_MINOCCLUSIONLFRATIO 0.0f 523 #define EAXSOURCE_MAXOCCLUSIONLFRATIO 1.0f 524 #define EAXSOURCE_DEFAULTOCCLUSIONLFRATIO 0.25f 525 526 #define EAXSOURCE_MINOCCLUSIONROOMRATIO 0.0f 527 #define EAXSOURCE_MAXOCCLUSIONROOMRATIO 10.0f 528 #define EAXSOURCE_DEFAULTOCCLUSIONROOMRATIO 1.5f 529 530 #define EAXSOURCE_MINOCCLUSIONDIRECTRATIO 0.0f 531 #define EAXSOURCE_MAXOCCLUSIONDIRECTRATIO 10.0f 532 #define EAXSOURCE_DEFAULTOCCLUSIONDIRECTRATIO 1.0f 533 534 #define EAXSOURCE_MINEXCLUSION (-10000) 535 #define EAXSOURCE_MAXEXCLUSION 0 536 #define EAXSOURCE_DEFAULTEXCLUSION 0 537 538 #define EAXSOURCE_MINEXCLUSIONLFRATIO 0.0f 539 #define EAXSOURCE_MAXEXCLUSIONLFRATIO 1.0f 540 #define EAXSOURCE_DEFAULTEXCLUSIONLFRATIO 1.0f 541 542 #define EAXSOURCE_MINOUTSIDEVOLUMEHF (-10000) 543 #define EAXSOURCE_MAXOUTSIDEVOLUMEHF 0 544 #define EAXSOURCE_DEFAULTOUTSIDEVOLUMEHF 0 545 546 #define EAXSOURCE_MINDOPPLERFACTOR 0.0f 547 #define EAXSOURCE_MAXDOPPLERFACTOR 10.f 548 #define EAXSOURCE_DEFAULTDOPPLERFACTOR 1.0f 549 550 #define EAXSOURCE_MINROLLOFFFACTOR 0.0f 551 #define EAXSOURCE_MAXROLLOFFFACTOR 10.f 552 #define EAXSOURCE_DEFAULTROLLOFFFACTOR 0.0f 553 554 #define EAXSOURCE_MINROOMROLLOFFFACTOR 0.0f 555 #define EAXSOURCE_MAXROOMROLLOFFFACTOR 10.f 556 #define EAXSOURCE_DEFAULTROOMROLLOFFFACTOR 0.0f 557 558 #define EAXSOURCE_MINAIRABSORPTIONFACTOR 0.0f 559 #define EAXSOURCE_MAXAIRABSORPTIONFACTOR 10.0f 560 #define EAXSOURCE_DEFAULTAIRABSORPTIONFACTOR 0.0f 561 562 #define EAXSOURCE_DEFAULTFLAGS (EAXSOURCEFLAGS_DIRECTHFAUTO | \ 563 EAXSOURCEFLAGS_ROOMAUTO | \ 564 EAXSOURCEFLAGS_ROOMHFAUTO ) 565 566 #define EAXSOURCE_DEFAULTACTIVEFXSLOTID {{ EAX_NULL_GUID.Data1, EAX_NULL_GUID.Data2, EAX_NULL_GUID.Data3, \ 567 EAX_NULL_GUID.Data4[0],EAX_NULL_GUID.Data4[1],EAX_NULL_GUID.Data4[2],\ 568 EAX_NULL_GUID.Data4[3],EAX_NULL_GUID.Data4[4],EAX_NULL_GUID.Data4[5],\ 569 EAX_NULL_GUID.Data4[6],EAX_NULL_GUID.Data4[7] }, \ 570 { EAX_PrimaryFXSlotID.Data1, EAX_PrimaryFXSlotID.Data2, \ 571 EAX_PrimaryFXSlotID.Data3, EAX_PrimaryFXSlotID.Data4[0],\ 572 EAX_PrimaryFXSlotID.Data4[1],EAX_PrimaryFXSlotID.Data4[2],\ 573 EAX_PrimaryFXSlotID.Data4[3],EAX_PrimaryFXSlotID.Data4[4],\ 574 EAX_PrimaryFXSlotID.Data4[5],EAX_PrimaryFXSlotID.Data4[6],\ 575 EAX_PrimaryFXSlotID.Data4[7] }} 576 577 578 //////////////////////////////////////////////////////////////////////////// 579 580 581 582 583 //////////////////////////////////////////////////////////////////////////// 584 // Reverb Effect 585 586 // EAX REVERB {0CF95C8F-A3CC-4849-B0B6-832ECC1822DF} 587 DEFINE_GUID(EAX_REVERB_EFFECT, 588 0xcf95c8f, 589 0xa3cc, 590 0x4849, 591 0xb0, 0xb6, 0x83, 0x2e, 0xcc, 0x18, 0x22, 0xdf); 592 593 // Reverb effect properties 594 typedef enum 595 { 596 EAXREVERB_NONE, 597 EAXREVERB_ALLPARAMETERS, 598 EAXREVERB_ENVIRONMENT, 599 EAXREVERB_ENVIRONMENTSIZE, 600 EAXREVERB_ENVIRONMENTDIFFUSION, 601 EAXREVERB_ROOM, 602 EAXREVERB_ROOMHF, 603 EAXREVERB_ROOMLF, 604 EAXREVERB_DECAYTIME, 605 EAXREVERB_DECAYHFRATIO, 606 EAXREVERB_DECAYLFRATIO, 607 EAXREVERB_REFLECTIONS, 608 EAXREVERB_REFLECTIONSDELAY, 609 EAXREVERB_REFLECTIONSPAN, 610 EAXREVERB_REVERB, 611 EAXREVERB_REVERBDELAY, 612 EAXREVERB_REVERBPAN, 613 EAXREVERB_ECHOTIME, 614 EAXREVERB_ECHODEPTH, 615 EAXREVERB_MODULATIONTIME, 616 EAXREVERB_MODULATIONDEPTH, 617 EAXREVERB_AIRABSORPTIONHF, 618 EAXREVERB_HFREFERENCE, 619 EAXREVERB_LFREFERENCE, 620 EAXREVERB_ROOMROLLOFFFACTOR, 621 EAXREVERB_FLAGS, 622 } EAXREVERB_PROPERTY; 623 624 // OR these flags with property id 625 #define EAXREVERB_IMMEDIATE 0x00000000 // changes take effect immediately 626 #define EAXREVERB_DEFERRED 0x80000000 // changes take effect later 627 #define EAXREVERB_COMMITDEFERREDSETTINGS (EAXREVERB_NONE | \ 628 EAXREVERB_IMMEDIATE) 629 630 // used by EAXREVERB_ENVIRONMENT 631 enum 632 { 633 EAX_ENVIRONMENT_GENERIC, 634 EAX_ENVIRONMENT_PADDEDCELL, 635 EAX_ENVIRONMENT_ROOM, 636 EAX_ENVIRONMENT_BATHROOM, 637 EAX_ENVIRONMENT_LIVINGROOM, 638 EAX_ENVIRONMENT_STONEROOM, 639 EAX_ENVIRONMENT_AUDITORIUM, 640 EAX_ENVIRONMENT_CONCERTHALL, 641 EAX_ENVIRONMENT_CAVE, 642 EAX_ENVIRONMENT_ARENA, 643 EAX_ENVIRONMENT_HANGAR, 644 EAX_ENVIRONMENT_CARPETEDHALLWAY, 645 EAX_ENVIRONMENT_HALLWAY, 646 EAX_ENVIRONMENT_STONECORRIDOR, 647 EAX_ENVIRONMENT_ALLEY, 648 EAX_ENVIRONMENT_FOREST, 649 EAX_ENVIRONMENT_CITY, 650 EAX_ENVIRONMENT_MOUNTAINS, 651 EAX_ENVIRONMENT_QUARRY, 652 EAX_ENVIRONMENT_PLAIN, 653 EAX_ENVIRONMENT_PARKINGLOT, 654 EAX_ENVIRONMENT_SEWERPIPE, 655 EAX_ENVIRONMENT_UNDERWATER, 656 EAX_ENVIRONMENT_DRUGGED, 657 EAX_ENVIRONMENT_DIZZY, 658 EAX_ENVIRONMENT_PSYCHOTIC, 659 660 EAX_ENVIRONMENT_UNDEFINED, 661 662 EAX_ENVIRONMENT_COUNT 663 }; 664 665 // Used by EAXREVERB_FLAGS 666 // 667 // Note: The number and order of flags may change in future EAX versions. 668 // It is recommended to use the flag defines as follows: 669 // myFlags = EAXREVERBFLAGS_DECAYTIMESCALE | EAXREVERBFLAGS_REVERBSCALE; 670 // instead of: 671 // myFlags = 0x00000009; 672 // 673 // These flags determine what properties are affected by environment size. 674 #define EAXREVERBFLAGS_DECAYTIMESCALE 0x00000001 // reverberation decay time 675 #define EAXREVERBFLAGS_REFLECTIONSSCALE 0x00000002 // reflection level 676 #define EAXREVERBFLAGS_REFLECTIONSDELAYSCALE 0x00000004 // initial reflection delay time 677 #define EAXREVERBFLAGS_REVERBSCALE 0x00000008 // reflections level 678 #define EAXREVERBFLAGS_REVERBDELAYSCALE 0x00000010 // late reverberation delay time 679 #define EAXREVERBFLAGS_ECHOTIMESCALE 0x00000040 // echo time 680 #define EAXREVERBFLAGS_MODULATIONTIMESCALE 0x00000080 // modulation time 681 // This flag limits high-frequency decay time according to air absorption. 682 #define EAXREVERBFLAGS_DECAYHFLIMIT 0x00000020 683 #define EAXREVERBFLAGS_RESERVED 0xFFFFFF00 // reserved future use 684 685 // Use this structure for EAXREVERB_ALLPARAMETERS 686 // - all levels are hundredths of decibels 687 // - all times and delays are in seconds 688 // 689 // NOTE: This structure may change in future EAX versions. 690 // It is recommended to initialize fields by name: 691 // myReverb.lRoom = -1000; 692 // myReverb.lRoomHF = -100; 693 // ... 694 // myReverb.dwFlags = myFlags /* see EAXREVERBFLAGS below */ ; 695 // instead of: 696 // myReverb = { -1000, -100, ... , 0x00000009 }; 697 // If you want to save and load presets in binary form, you 698 // should define your own structure to insure future compatibility. 699 // 700 typedef struct _EAXREVERBPROPERTIES 701 { 702 unsigned long ulEnvironment; // sets all reverb properties 703 float flEnvironmentSize; // environment size in meters 704 float flEnvironmentDiffusion; // environment diffusion 705 long lRoom; // room effect level (at mid frequencies) 706 long lRoomHF; // relative room effect level at high frequencies 707 long lRoomLF; // relative room effect level at low frequencies 708 float flDecayTime; // reverberation decay time at mid frequencies 709 float flDecayHFRatio; // high-frequency to mid-frequency decay time ratio 710 float flDecayLFRatio; // low-frequency to mid-frequency decay time ratio 711 long lReflections; // early reflections level relative to room effect 712 float flReflectionsDelay; // initial reflection delay time 713 EAXVECTOR vReflectionsPan; // early reflections panning vector 714 long lReverb; // late reverberation level relative to room effect 715 float flReverbDelay; // late reverberation delay time relative to initial reflection 716 EAXVECTOR vReverbPan; // late reverberation panning vector 717 float flEchoTime; // echo time 718 float flEchoDepth; // echo depth 719 float flModulationTime; // modulation time 720 float flModulationDepth; // modulation depth 721 float flAirAbsorptionHF; // change in level per meter at high frequencies 722 float flHFReference; // reference high frequency 723 float flLFReference; // reference low frequency 724 float flRoomRolloffFactor; // like DS3D flRolloffFactor but for room effect 725 unsigned long ulFlags; // modifies the behavior of properties 726 } EAXREVERBPROPERTIES, *LPEAXREVERBPROPERTIES; 727 728 // Property ranges and defaults: 729 #define EAXREVERB_MINENVIRONMENT 0 730 #define EAXREVERB_MAXENVIRONMENT (EAX_ENVIRONMENT_COUNT-1) 731 #define EAXREVERB_DEFAULTENVIRONMENT EAX_ENVIRONMENT_GENERIC 732 733 #define EAXREVERB_MINENVIRONMENTSIZE 1.0f 734 #define EAXREVERB_MAXENVIRONMENTSIZE 100.0f 735 #define EAXREVERB_DEFAULTENVIRONMENTSIZE 7.5f 736 737 #define EAXREVERB_MINENVIRONMENTDIFFUSION 0.0f 738 #define EAXREVERB_MAXENVIRONMENTDIFFUSION 1.0f 739 #define EAXREVERB_DEFAULTENVIRONMENTDIFFUSION 1.0f 740 741 #define EAXREVERB_MINROOM (-10000) 742 #define EAXREVERB_MAXROOM 0 743 #define EAXREVERB_DEFAULTROOM (-1000) 744 745 #define EAXREVERB_MINROOMHF (-10000) 746 #define EAXREVERB_MAXROOMHF 0 747 #define EAXREVERB_DEFAULTROOMHF (-100) 748 749 #define EAXREVERB_MINROOMLF (-10000) 750 #define EAXREVERB_MAXROOMLF 0 751 #define EAXREVERB_DEFAULTROOMLF 0 752 753 #define EAXREVERB_MINDECAYTIME 0.1f 754 #define EAXREVERB_MAXDECAYTIME 20.0f 755 #define EAXREVERB_DEFAULTDECAYTIME 1.49f 756 757 #define EAXREVERB_MINDECAYHFRATIO 0.1f 758 #define EAXREVERB_MAXDECAYHFRATIO 2.0f 759 #define EAXREVERB_DEFAULTDECAYHFRATIO 0.83f 760 761 #define EAXREVERB_MINDECAYLFRATIO 0.1f 762 #define EAXREVERB_MAXDECAYLFRATIO 2.0f 763 #define EAXREVERB_DEFAULTDECAYLFRATIO 1.00f 764 765 #define EAXREVERB_MINREFLECTIONS (-10000) 766 #define EAXREVERB_MAXREFLECTIONS 1000 767 #define EAXREVERB_DEFAULTREFLECTIONS (-2602) 768 769 #define EAXREVERB_MINREFLECTIONSDELAY 0.0f 770 #define EAXREVERB_MAXREFLECTIONSDELAY 0.3f 771 #define EAXREVERB_DEFAULTREFLECTIONSDELAY 0.007f 772 773 #define EAXREVERB_DEFAULTREFLECTIONSPAN {0.0f, 0.0f, 0.0f} 774 775 #define EAXREVERB_MINREVERB (-10000) 776 #define EAXREVERB_MAXREVERB 2000 777 #define EAXREVERB_DEFAULTREVERB 200 778 779 #define EAXREVERB_MINREVERBDELAY 0.0f 780 #define EAXREVERB_MAXREVERBDELAY 0.1f 781 #define EAXREVERB_DEFAULTREVERBDELAY 0.011f 782 783 #define EAXREVERB_DEFAULTREVERBPAN {0.0f, 0.0f, 0.0f} 784 785 #define EAXREVERB_MINECHOTIME 0.075f 786 #define EAXREVERB_MAXECHOTIME 0.25f 787 #define EAXREVERB_DEFAULTECHOTIME 0.25f 788 789 #define EAXREVERB_MINECHODEPTH 0.0f 790 #define EAXREVERB_MAXECHODEPTH 1.0f 791 #define EAXREVERB_DEFAULTECHODEPTH 0.0f 792 793 #define EAXREVERB_MINMODULATIONTIME 0.04f 794 #define EAXREVERB_MAXMODULATIONTIME 4.0f 795 #define EAXREVERB_DEFAULTMODULATIONTIME 0.25f 796 797 #define EAXREVERB_MINMODULATIONDEPTH 0.0f 798 #define EAXREVERB_MAXMODULATIONDEPTH 1.0f 799 #define EAXREVERB_DEFAULTMODULATIONDEPTH 0.0f 800 801 #define EAXREVERB_MINAIRABSORPTIONHF (-100.0f) 802 #define EAXREVERB_MAXAIRABSORPTIONHF 0.0f 803 #define EAXREVERB_DEFAULTAIRABSORPTIONHF (-5.0f) 804 805 #define EAXREVERB_MINHFREFERENCE 1000.0f 806 #define EAXREVERB_MAXHFREFERENCE 20000.0f 807 #define EAXREVERB_DEFAULTHFREFERENCE 5000.0f 808 809 #define EAXREVERB_MINLFREFERENCE 20.0f 810 #define EAXREVERB_MAXLFREFERENCE 1000.0f 811 #define EAXREVERB_DEFAULTLFREFERENCE 250.0f 812 813 #define EAXREVERB_MINROOMROLLOFFFACTOR 0.0f 814 #define EAXREVERB_MAXROOMROLLOFFFACTOR 10.0f 815 #define EAXREVERB_DEFAULTROOMROLLOFFFACTOR 0.0f 816 817 #define EAXREVERB_DEFAULTFLAGS (EAXREVERBFLAGS_DECAYTIMESCALE | \ 818 EAXREVERBFLAGS_REFLECTIONSSCALE | \ 819 EAXREVERBFLAGS_REFLECTIONSDELAYSCALE | \ 820 EAXREVERBFLAGS_REVERBSCALE | \ 821 EAXREVERBFLAGS_REVERBDELAYSCALE | \ 822 EAXREVERBFLAGS_DECAYHFLIMIT) 823 //////////////////////////////////////////////////////////////////////////// 824 825 826 827 828 //////////////////////////////////////////////////////////////////////////// 829 830 // New Effect Types 831 832 //////////////////////////////////////////////////////////////////////////// 833 834 835 //////////////////////////////////////////////////////////////////////////// 836 // AGC Compressor Effect 837 838 // EAX AGC COMPRESSOR {BFB7A01E-7825-4039-927F-3AABDA0C560} 839 840 DEFINE_GUID(EAX_AGCCOMPRESSOR_EFFECT, 841 0xbfb7a01e, 842 0x7825, 843 0x4039, 844 0x92, 0x7f, 0x3, 0xaa, 0xbd, 0xa0, 0xc5, 0x60); 845 846 // AGC Compressor properties 847 typedef enum 848 { 849 EAXAGCCOMPRESSOR_NONE, 850 EAXAGCCOMPRESSOR_ALLPARAMETERS, 851 EAXAGCCOMPRESSOR_ONOFF 852 } EAXAGCCOMPRESSOR_PROPERTY; 853 854 // OR these flags with property id 855 #define EAXAGCCOMPRESSOR_IMMEDIATE 0x00000000 // changes take effect immediately 856 #define EAXAGCCOMPRESSOR_DEFERRED 0x80000000 // changes take effect later 857 #define EAXAGCCOMPRESSOR_COMMITDEFERREDSETTINGS (EAXAGCCOMPRESSOR_NONE | \ 858 EAXAGCCOMPRESSOR_IMMEDIATE) 859 860 // Use this structure for EAXAGCCOMPRESSOR_ALLPARAMETERS 861 typedef struct _EAXAGCCOMPRESSORPROPERTIES 862 { 863 unsigned long ulOnOff; // Switch Compressor on or off 864 } EAXAGCCOMPRESSORPROPERTIES, *LPEAXAGCCOMPRESSORPROPERTIES; 865 866 // Property ranges and defaults: 867 868 #define EAXAGCCOMPRESSOR_MINONOFF 0 869 #define EAXAGCCOMPRESSOR_MAXONOFF 1 870 #define EAXAGCCOMPRESSOR_DEFAULTONOFF 1 871 872 //////////////////////////////////////////////////////////////////////////// 873 874 875 //////////////////////////////////////////////////////////////////////////// 876 // Autowah Effect 877 878 // EAX AUTOWAH {EC3130C0-AC7A-11D2-88DD-A024D13CE1} 879 DEFINE_GUID(EAX_AUTOWAH_EFFECT, 880 0xec3130c0, 881 0xac7a, 882 0x11d2, 883 0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1); 884 885 // Autowah properties 886 typedef enum 887 { 888 EAXAUTOWAH_NONE, 889 EAXAUTOWAH_ALLPARAMETERS, 890 EAXAUTOWAH_ATTACKTIME, 891 EAXAUTOWAH_RELEASETIME, 892 EAXAUTOWAH_RESONANCE, 893 EAXAUTOWAH_PEAKLEVEL 894 } EAXAUTOWAH_PROPERTY; 895 896 // OR these flags with property id 897 #define EAXAUTOWAH_IMMEDIATE 0x00000000 // changes take effect immediately 898 #define EAXAUTOWAH_DEFERRED 0x80000000 // changes take effect later 899 #define EAXAUTOWAH_COMMITDEFERREDSETTINGS (EAXAUTOWAH_NONE | \ 900 EAXAUTOWAH_IMMEDIATE) 901 902 // Use this structure for EAXAUTOWAH_ALLPARAMETERS 903 typedef struct _EAXAUTOWAHPROPERTIES 904 { 905 float flAttackTime; // Attack time (seconds) 906 float flReleaseTime; // Release time (seconds) 907 long lResonance; // Resonance (mB) 908 long lPeakLevel; // Peak level (mB) 909 } EAXAUTOWAHPROPERTIES, *LPEAXAUTOWAHPROPERTIES; 910 911 // Property ranges and defaults: 912 913 #define EAXAUTOWAH_MINATTACKTIME 0.0001f 914 #define EAXAUTOWAH_MAXATTACKTIME 1.0f 915 #define EAXAUTOWAH_DEFAULTATTACKTIME 0.06f 916 917 #define EAXAUTOWAH_MINRELEASETIME 0.0001f 918 #define EAXAUTOWAH_MAXRELEASETIME 1.0f 919 #define EAXAUTOWAH_DEFAULTRELEASETIME 0.06f 920 921 #define EAXAUTOWAH_MINRESONANCE 600 922 #define EAXAUTOWAH_MAXRESONANCE 6000 923 #define EAXAUTOWAH_DEFAULTRESONANCE 6000 924 925 #define EAXAUTOWAH_MINPEAKLEVEL (-9000) 926 #define EAXAUTOWAH_MAXPEAKLEVEL 9000 927 #define EAXAUTOWAH_DEFAULTPEAKLEVEL 2100 928 929 //////////////////////////////////////////////////////////////////////////// 930 931 932 //////////////////////////////////////////////////////////////////////////// 933 // Chorus Effect 934 935 // EAX CHORUS {DE6D6FE0-AC79-11D2-88DD-A024D13CE1} 936 937 DEFINE_GUID(EAX_CHORUS_EFFECT, 938 0xde6d6fe0, 939 0xac79, 940 0x11d2, 941 0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1); 942 943 944 // Chorus properties 945 typedef enum 946 { 947 EAXCHORUS_NONE, 948 EAXCHORUS_ALLPARAMETERS, 949 EAXCHORUS_WAVEFORM, 950 EAXCHORUS_PHASE, 951 EAXCHORUS_RATE, 952 EAXCHORUS_DEPTH, 953 EAXCHORUS_FEEDBACK, 954 EAXCHORUS_DELAY 955 } EAXCHORUS_PROPERTY; 956 957 // OR these flags with property id 958 #define EAXCHORUS_IMMEDIATE 0x00000000 // changes take effect immediately 959 #define EAXCHORUS_DEFERRED 0x80000000 // changes take effect later 960 #define EAXCHORUS_COMMITDEFERREDSETTINGS (EAXCHORUS_NONE | \ 961 EAXCHORUS_IMMEDIATE) 962 963 // used by EAXCHORUS_WAVEFORM 964 enum 965 { 966 EAX_CHORUS_SINUSOID, 967 EAX_CHORUS_TRIANGLE 968 }; 969 970 // Use this structure for EAXCHORUS_ALLPARAMETERS 971 typedef struct _EAXCHORUSPROPERTIES 972 { 973 unsigned long ulWaveform; // Waveform selector - see enum above 974 long lPhase; // Phase (Degrees) 975 float flRate; // Rate (Hz) 976 float flDepth; // Depth (0 to 1) 977 float flFeedback; // Feedback (-1 to 1) 978 float flDelay; // Delay (seconds) 979 } EAXCHORUSPROPERTIES, *LPEAXCHORUSPROPERTIES; 980 981 // Property ranges and defaults: 982 983 #define EAXCHORUS_MINWAVEFORM 0 984 #define EAXCHORUS_MAXWAVEFORM 1 985 #define EAXCHORUS_DEFAULTWAVEFORM 1 986 987 #define EAXCHORUS_MINPHASE (-180) 988 #define EAXCHORUS_MAXPHASE 180 989 #define EAXCHORUS_DEFAULTPHASE 90 990 991 #define EAXCHORUS_MINRATE 0.0f 992 #define EAXCHORUS_MAXRATE 10.0f 993 #define EAXCHORUS_DEFAULTRATE 1.1f 994 995 #define EAXCHORUS_MINDEPTH 0.0f 996 #define EAXCHORUS_MAXDEPTH 1.0f 997 #define EAXCHORUS_DEFAULTDEPTH 0.1f 998 999 #define EAXCHORUS_MINFEEDBACK (-1.0f) 1000 #define EAXCHORUS_MAXFEEDBACK 1.0f 1001 #define EAXCHORUS_DEFAULTFEEDBACK 0.25f 1002 1003 #define EAXCHORUS_MINDELAY 0.0f 1004 #define EAXCHORUS_MAXDELAY 0.016f 1005 #define EAXCHORUS_DEFAULTDELAY 0.016f 1006 1007 //////////////////////////////////////////////////////////////////////////// 1008 1009 1010 //////////////////////////////////////////////////////////////////////////// 1011 // Distortion Effect 1012 1013 // EAX DISTORTION {975A4CE0-AC7E-11D2-88DD-A024D13CE1} 1014 1015 DEFINE_GUID(EAX_DISTORTION_EFFECT, 1016 0x975a4ce0, 1017 0xac7e, 1018 0x11d2, 1019 0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1); 1020 1021 // Distortion properties 1022 typedef enum 1023 { 1024 EAXDISTORTION_NONE, 1025 EAXDISTORTION_ALLPARAMETERS, 1026 EAXDISTORTION_EDGE, 1027 EAXDISTORTION_GAIN, 1028 EAXDISTORTION_LOWPASSCUTOFF, 1029 EAXDISTORTION_EQCENTER, 1030 EAXDISTORTION_EQBANDWIDTH 1031 } EAXDISTORTION_PROPERTY; 1032 1033 // OR these flags with property id 1034 #define EAXDISTORTION_IMMEDIATE 0x00000000 // changes take effect immediately 1035 #define EAXDISTORTION_DEFERRED 0x80000000 // changes take effect later 1036 #define EAXDISTORTION_COMMITDEFERREDSETTINGS (EAXDISTORTION_NONE | \ 1037 EAXDISTORTION_IMMEDIATE) 1038 1039 // Use this structure for EAXDISTORTION_ALLPARAMETERS 1040 typedef struct _EAXDISTORTIONPROPERTIES 1041 { 1042 float flEdge; // Controls the shape of the distortion (0 to 1) 1043 long lGain; // Controls the post distortion gain (mB) 1044 float flLowPassCutOff; // Controls the cut-off of the filter pre-distortion (Hz) 1045 float flEQCenter; // Controls the center frequency of the EQ post-distortion (Hz) 1046 float flEQBandwidth; // Controls the bandwidth of the EQ post-distortion (Hz) 1047 } EAXDISTORTIONPROPERTIES, *LPEAXDISTORTIONPROPERTIES; 1048 1049 // Property ranges and defaults: 1050 1051 #define EAXDISTORTION_MINEDGE 0.0f 1052 #define EAXDISTORTION_MAXEDGE 1.0f 1053 #define EAXDISTORTION_DEFAULTEDGE 0.2f 1054 1055 #define EAXDISTORTION_MINGAIN (-6000) 1056 #define EAXDISTORTION_MAXGAIN 0 1057 #define EAXDISTORTION_DEFAULTGAIN (-2600) 1058 1059 #define EAXDISTORTION_MINLOWPASSCUTOFF 80.0f 1060 #define EAXDISTORTION_MAXLOWPASSCUTOFF 24000.0f 1061 #define EAXDISTORTION_DEFAULTLOWPASSCUTOFF 8000.0f 1062 1063 #define EAXDISTORTION_MINEQCENTER 80.0f 1064 #define EAXDISTORTION_MAXEQCENTER 24000.0f 1065 #define EAXDISTORTION_DEFAULTEQCENTER 3600.0f 1066 1067 #define EAXDISTORTION_MINEQBANDWIDTH 80.0f 1068 #define EAXDISTORTION_MAXEQBANDWIDTH 24000.0f 1069 #define EAXDISTORTION_DEFAULTEQBANDWIDTH 3600.0f 1070 1071 //////////////////////////////////////////////////////////////////////////// 1072 1073 1074 //////////////////////////////////////////////////////////////////////////// 1075 // Echo Effect 1076 1077 // EAX ECHO {E9F1BC0-AC82-11D2-88DD-A024D13CE1} 1078 1079 DEFINE_GUID(EAX_ECHO_EFFECT, 1080 0xe9f1bc0, 1081 0xac82, 1082 0x11d2, 1083 0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1); 1084 1085 // Echo properties 1086 typedef enum 1087 { 1088 EAXECHO_NONE, 1089 EAXECHO_ALLPARAMETERS, 1090 EAXECHO_DELAY, 1091 EAXECHO_LRDELAY, 1092 EAXECHO_DAMPING, 1093 EAXECHO_FEEDBACK, 1094 EAXECHO_SPREAD 1095 } EAXECHO_PROPERTY; 1096 1097 // OR these flags with property id 1098 #define EAXECHO_IMMEDIATE 0x00000000 // changes take effect immediately 1099 #define EAXECHO_DEFERRED 0x80000000 // changes take effect later 1100 #define EAXECHO_COMMITDEFERREDSETTINGS (EAXECHO_NONE | \ 1101 EAXECHO_IMMEDIATE) 1102 1103 // Use this structure for EAXECHO_ALLPARAMETERS 1104 typedef struct _EAXECHOPROPERTIES 1105 { 1106 float flDelay; // Controls the initial delay time (seconds) 1107 float flLRDelay; // Controls the delay time between the first and second taps (seconds) 1108 float flDamping; // Controls a low-pass filter that dampens the echoes (0 to 1) 1109 float flFeedback; // Controls the duration of echo repetition (0 to 1) 1110 float flSpread; // Controls the left-right spread of the echoes 1111 } EAXECHOPROPERTIES, *LPEAXECHOPROPERTIES; 1112 1113 // Property ranges and defaults: 1114 1115 #define EAXECHO_MINDAMPING 0.0f 1116 #define EAXECHO_MAXDAMPING 0.99f 1117 #define EAXECHO_DEFAULTDAMPING 0.5f 1118 1119 #define EAXECHO_MINDELAY 0.0f 1120 #define EAXECHO_MAXDELAY 0.207f 1121 #define EAXECHO_DEFAULTDELAY 0.1f 1122 1123 #define EAXECHO_MINLRDELAY 0.0f 1124 #define EAXECHO_MAXLRDELAY 0.404f 1125 #define EAXECHO_DEFAULTLRDELAY 0.1f 1126 1127 #define EAXECHO_MINFEEDBACK 0.0f 1128 #define EAXECHO_MAXFEEDBACK 1.0f 1129 #define EAXECHO_DEFAULTFEEDBACK 0.5f 1130 1131 #define EAXECHO_MINSPREAD (-1.0f) 1132 #define EAXECHO_MAXSPREAD 1.0f 1133 #define EAXECHO_DEFAULTSPREAD (-1.0f) 1134 1135 //////////////////////////////////////////////////////////////////////////// 1136 1137 1138 //////////////////////////////////////////////////////////////////////////// 1139 // Equalizer Effect 1140 1141 // EAX EQUALIZER {65F94CE0-9793-11D3-939D-C0F02DD6F0} 1142 1143 DEFINE_GUID(EAX_EQUALIZER_EFFECT, 1144 0x65f94ce0, 1145 0x9793, 1146 0x11d3, 1147 0x93, 0x9d, 0x0, 0xc0, 0xf0, 0x2d, 0xd6, 0xf0); 1148 1149 1150 // Equalizer properties 1151 typedef enum 1152 { 1153 EAXEQUALIZER_NONE, 1154 EAXEQUALIZER_ALLPARAMETERS, 1155 EAXEQUALIZER_LOWGAIN, 1156 EAXEQUALIZER_LOWCUTOFF, 1157 EAXEQUALIZER_MID1GAIN, 1158 EAXEQUALIZER_MID1CENTER, 1159 EAXEQUALIZER_MID1WIDTH, 1160 EAXEQUALIZER_MID2GAIN, 1161 EAXEQUALIZER_MID2CENTER, 1162 EAXEQUALIZER_MID2WIDTH, 1163 EAXEQUALIZER_HIGHGAIN, 1164 EAXEQUALIZER_HIGHCUTOFF 1165 } EAXEQUALIZER_PROPERTY; 1166 1167 // OR these flags with property id 1168 #define EAXEQUALIZER_IMMEDIATE 0x00000000 // changes take effect immediately 1169 #define EAXEQUALIZER_DEFERRED 0x80000000 // changes take effect later 1170 #define EAXEQUALIZER_COMMITDEFERREDSETTINGS (EAXEQUALIZER_NONE | \ 1171 EAXEQUALIZER_IMMEDIATE) 1172 1173 // Use this structure for EAXEQUALIZER_ALLPARAMETERS 1174 typedef struct _EAXEQUALIZERPROPERTIES 1175 { 1176 long lLowGain; // (mB) 1177 float flLowCutOff; // (Hz) 1178 long lMid1Gain; // (mB) 1179 float flMid1Center; // (Hz) 1180 float flMid1Width; // (octaves) 1181 long lMid2Gain; // (mB) 1182 float flMid2Center; // (Hz) 1183 float flMid2Width; // (octaves) 1184 long lHighGain; // (mB) 1185 float flHighCutOff; // (Hz) 1186 } EAXEQUALIZERPROPERTIES, *LPEAXEQUALIZERPROPERTIES; 1187 1188 // Property ranges and defaults: 1189 1190 #define EAXEQUALIZER_MINLOWGAIN (-1800) 1191 #define EAXEQUALIZER_MAXLOWGAIN 1800 1192 #define EAXEQUALIZER_DEFAULTLOWGAIN 0 1193 1194 #define EAXEQUALIZER_MINLOWCUTOFF 50.0f 1195 #define EAXEQUALIZER_MAXLOWCUTOFF 800.0f 1196 #define EAXEQUALIZER_DEFAULTLOWCUTOFF 200.0f 1197 1198 #define EAXEQUALIZER_MINMID1GAIN (-1800) 1199 #define EAXEQUALIZER_MAXMID1GAIN 1800 1200 #define EAXEQUALIZER_DEFAULTMID1GAIN 0 1201 1202 #define EAXEQUALIZER_MINMID1CENTER 200.0f 1203 #define EAXEQUALIZER_MAXMID1CENTER 3000.0f 1204 #define EAXEQUALIZER_DEFAULTMID1CENTER 500.0f 1205 1206 #define EAXEQUALIZER_MINMID1WIDTH 0.01f 1207 #define EAXEQUALIZER_MAXMID1WIDTH 1.0f 1208 #define EAXEQUALIZER_DEFAULTMID1WIDTH 1.0f 1209 1210 #define EAXEQUALIZER_MINMID2GAIN (-1800) 1211 #define EAXEQUALIZER_MAXMID2GAIN 1800 1212 #define EAXEQUALIZER_DEFAULTMID2GAIN 0 1213 1214 #define EAXEQUALIZER_MINMID2CENTER 1000.0f 1215 #define EAXEQUALIZER_MAXMID2CENTER 8000.0f 1216 #define EAXEQUALIZER_DEFAULTMID2CENTER 3000.0f 1217 1218 #define EAXEQUALIZER_MINMID2WIDTH 0.01f 1219 #define EAXEQUALIZER_MAXMID2WIDTH 1.0f 1220 #define EAXEQUALIZER_DEFAULTMID2WIDTH 1.0f 1221 1222 #define EAXEQUALIZER_MINHIGHGAIN (-1800) 1223 #define EAXEQUALIZER_MAXHIGHGAIN 1800 1224 #define EAXEQUALIZER_DEFAULTHIGHGAIN 0 1225 1226 #define EAXEQUALIZER_MINHIGHCUTOFF 4000.0f 1227 #define EAXEQUALIZER_MAXHIGHCUTOFF 16000.0f 1228 #define EAXEQUALIZER_DEFAULTHIGHCUTOFF 6000.0f 1229 1230 //////////////////////////////////////////////////////////////////////////// 1231 1232 1233 //////////////////////////////////////////////////////////////////////////// 1234 // Flanger Effect 1235 1236 // EAX FLANGER {A70007C0-7D2-11D3-9B1E-A024D13CE1} 1237 1238 DEFINE_GUID(EAX_FLANGER_EFFECT, 1239 0xa70007c0, 1240 0x7d2, 1241 0x11d3, 1242 0x9b, 0x1e, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1); 1243 1244 // Flanger properties 1245 typedef enum 1246 { 1247 EAXFLANGER_NONE, 1248 EAXFLANGER_ALLPARAMETERS, 1249 EAXFLANGER_WAVEFORM, 1250 EAXFLANGER_PHASE, 1251 EAXFLANGER_RATE, 1252 EAXFLANGER_DEPTH, 1253 EAXFLANGER_FEEDBACK, 1254 EAXFLANGER_DELAY 1255 } EAXFLANGER_PROPERTY; 1256 1257 // OR these flags with property id 1258 #define EAXFLANGER_IMMEDIATE 0x00000000 // changes take effect immediately 1259 #define EAXFLANGER_DEFERRED 0x80000000 // changes take effect later 1260 #define EAXFLANGER_COMMITDEFERREDSETTINGS (EAXFLANGER_NONE | \ 1261 EAXFLANGER_IMMEDIATE) 1262 1263 // used by EAXFLANGER_WAVEFORM 1264 enum 1265 { 1266 EAX_FLANGER_SINUSOID, 1267 EAX_FLANGER_TRIANGLE 1268 }; 1269 1270 // Use this structure for EAXFLANGER_ALLPARAMETERS 1271 typedef struct _EAXFLANGERPROPERTIES 1272 { 1273 unsigned long ulWaveform; // Waveform selector - see enum above 1274 long lPhase; // Phase (Degrees) 1275 float flRate; // Rate (Hz) 1276 float flDepth; // Depth (0 to 1) 1277 float flFeedback; // Feedback (0 to 1) 1278 float flDelay; // Delay (seconds) 1279 } EAXFLANGERPROPERTIES, *LPEAXFLANGERPROPERTIES; 1280 1281 // Property ranges and defaults: 1282 1283 #define EAXFLANGER_MINWAVEFORM 0 1284 #define EAXFLANGER_MAXWAVEFORM 1 1285 #define EAXFLANGER_DEFAULTWAVEFORM 1 1286 1287 #define EAXFLANGER_MINPHASE (-180) 1288 #define EAXFLANGER_MAXPHASE 180 1289 #define EAXFLANGER_DEFAULTPHASE 0 1290 1291 #define EAXFLANGER_MINRATE 0.0f 1292 #define EAXFLANGER_MAXRATE 10.0f 1293 #define EAXFLANGER_DEFAULTRATE 0.27f 1294 1295 #define EAXFLANGER_MINDEPTH 0.0f 1296 #define EAXFLANGER_MAXDEPTH 1.0f 1297 #define EAXFLANGER_DEFAULTDEPTH 1.0f 1298 1299 #define EAXFLANGER_MINFEEDBACK (-1.0f) 1300 #define EAXFLANGER_MAXFEEDBACK 1.0f 1301 #define EAXFLANGER_DEFAULTFEEDBACK (-0.5f) 1302 1303 #define EAXFLANGER_MINDELAY 0.0f 1304 #define EAXFLANGER_MAXDELAY 0.004f 1305 #define EAXFLANGER_DEFAULTDELAY 0.002f 1306 1307 //////////////////////////////////////////////////////////////////////////// 1308 1309 1310 //////////////////////////////////////////////////////////////////////////// 1311 // Frequency Shifter Effect 1312 1313 // EAX FREQUENCY SHIFTER {DC3E1880-9212-11D3-939D-C0F02DD6F0} 1314 1315 DEFINE_GUID(EAX_FREQUENCYSHIFTER_EFFECT, 1316 0xdc3e1880, 1317 0x9212, 1318 0x11d3, 1319 0x93, 0x9d, 0x0, 0xc0, 0xf0, 0x2d, 0xd6, 0xf0); 1320 1321 // Frequency Shifter properties 1322 typedef enum 1323 { 1324 EAXFREQUENCYSHIFTER_NONE, 1325 EAXFREQUENCYSHIFTER_ALLPARAMETERS, 1326 EAXFREQUENCYSHIFTER_FREQUENCY, 1327 EAXFREQUENCYSHIFTER_LEFTDIRECTION, 1328 EAXFREQUENCYSHIFTER_RIGHTDIRECTION 1329 } EAXFREQUENCYSHIFTER_PROPERTY; 1330 1331 // OR these flags with property id 1332 #define EAXFREQUENCYSHIFTER_IMMEDIATE 0x00000000 // changes take effect immediately 1333 #define EAXFREQUENCYSHIFTER_DEFERRED 0x80000000 // changes take effect later 1334 #define EAXFREQUENCYSHIFTER_COMMITDEFERREDSETTINGS (EAXFREQUENCYSHIFTER_NONE | \ 1335 EAXFREQUENCYSHIFTER_IMMEDIATE) 1336 1337 // used by EAXFREQUENCYSHIFTER_LEFTDIRECTION and EAXFREQUENCYSHIFTER_RIGHTDIRECTION 1338 enum 1339 { 1340 EAX_FREQUENCYSHIFTER_DOWN, 1341 EAX_FREQUENCYSHIFTER_UP, 1342 EAX_FREQUENCYSHIFTER_OFF 1343 }; 1344 1345 // Use this structure for EAXFREQUENCYSHIFTER_ALLPARAMETERS 1346 typedef struct _EAXFREQUENCYSHIFTERPROPERTIES 1347 { 1348 float flFrequency; // (Hz) 1349 unsigned long ulLeftDirection; // see enum above 1350 unsigned long ulRightDirection; // see enum above 1351 } EAXFREQUENCYSHIFTERPROPERTIES, *LPEAXFREQUENCYSHIFTERPROPERTIES; 1352 1353 // Property ranges and defaults: 1354 1355 #define EAXFREQUENCYSHIFTER_MINFREQUENCY 0.0f 1356 #define EAXFREQUENCYSHIFTER_MAXFREQUENCY 24000.0f 1357 #define EAXFREQUENCYSHIFTER_DEFAULTFREQUENCY 0.0f 1358 1359 #define EAXFREQUENCYSHIFTER_MINLEFTDIRECTION 0 1360 #define EAXFREQUENCYSHIFTER_MAXLEFTDIRECTION 2 1361 #define EAXFREQUENCYSHIFTER_DEFAULTLEFTDIRECTION 0 1362 1363 #define EAXFREQUENCYSHIFTER_MINRIGHTDIRECTION 0 1364 #define EAXFREQUENCYSHIFTER_MAXRIGHTDIRECTION 2 1365 #define EAXFREQUENCYSHIFTER_DEFAULTRIGHTDIRECTION 0 1366 1367 //////////////////////////////////////////////////////////////////////////// 1368 1369 1370 //////////////////////////////////////////////////////////////////////////// 1371 // Vocal Morpher Effect 1372 1373 // EAX VOCAL MORPHER {E41CF10C-3383-11D2-88DD-A024D13CE1} 1374 1375 DEFINE_GUID(EAX_VOCALMORPHER_EFFECT, 1376 0xe41cf10c, 1377 0x3383, 1378 0x11d2, 1379 0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1); 1380 1381 // Vocal Morpher properties 1382 typedef enum 1383 { 1384 EAXVOCALMORPHER_NONE, 1385 EAXVOCALMORPHER_ALLPARAMETERS, 1386 EAXVOCALMORPHER_PHONEMEA, 1387 EAXVOCALMORPHER_PHONEMEACOARSETUNING, 1388 EAXVOCALMORPHER_PHONEMEB, 1389 EAXVOCALMORPHER_PHONEMEBCOARSETUNING, 1390 EAXVOCALMORPHER_WAVEFORM, 1391 EAXVOCALMORPHER_RATE 1392 } EAXVOCALMORPHER_PROPERTY; 1393 1394 // OR these flags with property id 1395 #define EAXVOCALMORPHER_IMMEDIATE 0x00000000 // changes take effect immediately 1396 #define EAXVOCALMORPHER_DEFERRED 0x80000000 // changes take effect later 1397 #define EAXVOCALMORPHER_COMMITDEFERREDSETTINGS (EAXVOCALMORPHER_NONE | \ 1398 EAXVOCALMORPHER_IMMEDIATE) 1399 1400 // used by EAXVOCALMORPHER_PHONEMEA and EAXVOCALMORPHER_PHONEMEB 1401 enum 1402 { 1403 A, E, I, O, U, AA, AE, AH, AO, EH, ER, IH, IY, UH, UW, B, D, F, G, 1404 J, K, L, M, N, P, R, S, T, V, Z 1405 }; 1406 1407 // used by EAXVOCALMORPHER_WAVEFORM 1408 enum 1409 { 1410 EAX_VOCALMORPHER_SINUSOID, 1411 EAX_VOCALMORPHER_TRIANGLE, 1412 EAX_VOCALMORPHER_SAWTOOTH 1413 }; 1414 1415 // Use this structure for EAXVOCALMORPHER_ALLPARAMETERS 1416 typedef struct _EAXVOCALMORPHERPROPERTIES 1417 { 1418 unsigned long ulPhonemeA; // see enum above 1419 long lPhonemeACoarseTuning; // (semitones) 1420 unsigned long ulPhonemeB; // see enum above 1421 long lPhonemeBCoarseTuning; // (semitones) 1422 unsigned long ulWaveform; // Waveform selector - see enum above 1423 float flRate; // (Hz) 1424 } EAXVOCALMORPHERPROPERTIES, *LPEAXVOCALMORPHERPROPERTIES; 1425 1426 // Property ranges and defaults: 1427 1428 #define EAXVOCALMORPHER_MINPHONEMEA 0 1429 #define EAXVOCALMORPHER_MAXPHONEMEA 29 1430 #define EAXVOCALMORPHER_DEFAULTPHONEMEA 0 1431 1432 #define EAXVOCALMORPHER_MINPHONEMEACOARSETUNING (-24) 1433 #define EAXVOCALMORPHER_MAXPHONEMEACOARSETUNING 24 1434 #define EAXVOCALMORPHER_DEFAULTPHONEMEACOARSETUNING 0 1435 1436 #define EAXVOCALMORPHER_MINPHONEMEB 0 1437 #define EAXVOCALMORPHER_MAXPHONEMEB 29 1438 #define EAXVOCALMORPHER_DEFAULTPHONEMEB 10 1439 1440 #define EAXVOCALMORPHER_MINPHONEMEBCOARSETUNING (-24) 1441 #define EAXVOCALMORPHER_MAXPHONEMEBCOARSETUNING 24 1442 #define EAXVOCALMORPHER_DEFAULTPHONEMEBCOARSETUNING 0 1443 1444 #define EAXVOCALMORPHER_MINWAVEFORM 0 1445 #define EAXVOCALMORPHER_MAXWAVEFORM 2 1446 #define EAXVOCALMORPHER_DEFAULTWAVEFORM 0 1447 1448 #define EAXVOCALMORPHER_MINRATE 0.0f 1449 #define EAXVOCALMORPHER_MAXRATE 10.0f 1450 #define EAXVOCALMORPHER_DEFAULTRATE 1.41f 1451 1452 //////////////////////////////////////////////////////////////////////////// 1453 1454 1455 //////////////////////////////////////////////////////////////////////////// 1456 // Pitch Shifter Effect 1457 1458 // EAX PITCH SHIFTER {E7905100-AFB2-11D2-88DD-A024D13CE1} 1459 1460 DEFINE_GUID(EAX_PITCHSHIFTER_EFFECT, 1461 0xe7905100, 1462 0xafb2, 1463 0x11d2, 1464 0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1); 1465 1466 // Pitch Shifter properties 1467 typedef enum 1468 { 1469 EAXPITCHSHIFTER_NONE, 1470 EAXPITCHSHIFTER_ALLPARAMETERS, 1471 EAXPITCHSHIFTER_COARSETUNE, 1472 EAXPITCHSHIFTER_FINETUNE 1473 } EAXPITCHSHIFTER_PROPERTY; 1474 1475 // OR these flags with property id 1476 #define EAXPITCHSHIFTER_IMMEDIATE 0x00000000 // changes take effect immediately 1477 #define EAXPITCHSHIFTER_DEFERRED 0x80000000 // changes take effect later 1478 #define EAXPITCHSHIFTER_COMMITDEFERREDSETTINGS (EAXPITCHSHIFTER_NONE | \ 1479 EAXPITCHSHIFTER_IMMEDIATE) 1480 1481 // Use this structure for EAXPITCHSHIFTER_ALLPARAMETERS 1482 typedef struct _EAXPITCHSHIFTERPROPERTIES 1483 { 1484 long lCoarseTune; // Amount of pitch shift (semitones) 1485 long lFineTune; // Amount of pitch shift (cents) 1486 } EAXPITCHSHIFTERPROPERTIES, *LPEAXPITCHSHIFTERPROPERTIES; 1487 1488 // Property ranges and defaults: 1489 1490 #define EAXPITCHSHIFTER_MINCOARSETUNE (-12) 1491 #define EAXPITCHSHIFTER_MAXCOARSETUNE 12 1492 #define EAXPITCHSHIFTER_DEFAULTCOARSETUNE 12 1493 1494 #define EAXPITCHSHIFTER_MINFINETUNE (-50) 1495 #define EAXPITCHSHIFTER_MAXFINETUNE 50 1496 #define EAXPITCHSHIFTER_DEFAULTFINETUNE 0 1497 1498 //////////////////////////////////////////////////////////////////////////// 1499 1500 1501 //////////////////////////////////////////////////////////////////////////// 1502 // Ring Modulator Effect 1503 1504 // EAX RING MODULATOR {B89FE60-AFB5-11D2-88DD-A024D13CE1} 1505 1506 DEFINE_GUID(EAX_RINGMODULATOR_EFFECT, 1507 0xb89fe60, 1508 0xafb5, 1509 0x11d2, 1510 0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1); 1511 1512 // Ring Modulator properties 1513 typedef enum 1514 { 1515 EAXRINGMODULATOR_NONE, 1516 EAXRINGMODULATOR_ALLPARAMETERS, 1517 EAXRINGMODULATOR_FREQUENCY, 1518 EAXRINGMODULATOR_HIGHPASSCUTOFF, 1519 EAXRINGMODULATOR_WAVEFORM 1520 } EAXRINGMODULATOR_PROPERTY; 1521 1522 // OR these flags with property id 1523 #define EAXRINGMODULATOR_IMMEDIATE 0x00000000 // changes take effect immediately 1524 #define EAXRINGMODULATOR_DEFERRED 0x80000000 // changes take effect later 1525 #define EAXRINGMODULATOR_COMMITDEFERREDSETTINGS (EAXRINGMODULATOR_NONE | \ 1526 EAXRINGMODULATOR_IMMEDIATE) 1527 1528 // used by EAXRINGMODULATOR_WAVEFORM 1529 enum 1530 { 1531 EAX_RINGMODULATOR_SINUSOID, 1532 EAX_RINGMODULATOR_SAWTOOTH, 1533 EAX_RINGMODULATOR_SQUARE 1534 }; 1535 1536 // Use this structure for EAXRINGMODULATOR_ALLPARAMETERS 1537 typedef struct _EAXRINGMODULATORPROPERTIES 1538 { 1539 float flFrequency; // Frequency of modulation (Hz) 1540 float flHighPassCutOff; // Cut-off frequency of high-pass filter (Hz) 1541 unsigned long ulWaveform; // Waveform selector - see enum above 1542 } EAXRINGMODULATORPROPERTIES, *LPEAXRINGMODULATORPROPERTIES; 1543 1544 // Property ranges and defaults: 1545 1546 #define EAXRINGMODULATOR_MINFREQUENCY 0.0f 1547 #define EAXRINGMODULATOR_MAXFREQUENCY 8000.0f 1548 #define EAXRINGMODULATOR_DEFAULTFREQUENCY 440.0f 1549 1550 #define EAXRINGMODULATOR_MINHIGHPASSCUTOFF 0.0f 1551 #define EAXRINGMODULATOR_MAXHIGHPASSCUTOFF 24000.0f 1552 #define EAXRINGMODULATOR_DEFAULTHIGHPASSCUTOFF 800.0f 1553 1554 #define EAXRINGMODULATOR_MINWAVEFORM 0 1555 #define EAXRINGMODULATOR_MAXWAVEFORM 2 1556 #define EAXRINGMODULATOR_DEFAULTWAVEFORM 0 1557 1558 //////////////////////////////////////////////////////////////////////////// 1559 1560 #pragma pack(pop) 1561 1562 #ifdef __cplusplus 1563 } 1564 #endif // __cplusplus 1565 1566 #endif 1567