home *** CD-ROM | disk | FTP | other *** search
/ Game Audio Programming / GameAudioProgramming.iso / Game_Audio / audio_sdk / include / AudioLib / eax.h < prev    next >
C/C++ Source or Header  |  2001-02-21  |  18KB  |  458 lines

  1. /******************************************************************
  2. *
  3. *  EAX.H - DirectSound3D Environmental Audio Extensions version 2.0
  4. *  Updated July 8, 1999
  5. *
  6. *******************************************************************
  7. */
  8.  
  9. #ifndef EAX_H_INCLUDED
  10. #define EAX_H_INCLUDED
  11.  
  12. #ifdef __cplusplus
  13. extern "C" {
  14. #endif // __cplusplus
  15.  
  16. #ifndef OPENAL
  17.     #include <dsound.h>
  18.     /*
  19.     * EAX Wrapper Interface (using Direct X 7) {4FF53B81-1CE0-11d3-AAB8-00A0C95949D5}
  20.     */
  21.     DEFINE_GUID(CLSID_EAXDirectSound, 
  22.         0x4ff53b81, 
  23.         0x1ce0, 
  24.         0x11d3,
  25.         0xaa, 0xb8, 0x0, 0xa0, 0xc9, 0x59, 0x49, 0xd5);
  26.  
  27.     /*
  28.     * EAX Wrapper Interface (using Direct X 8) {CA503B60-B176-11d4-A094-D0C0BF3A560C}
  29.     */
  30.     DEFINE_GUID(CLSID_EAXDirectSound8, 
  31.         0xca503b60,
  32.         0xb176,
  33.         0x11d4,
  34.         0xa0, 0x94, 0xd0, 0xc0, 0xbf, 0x3a, 0x56, 0xc);
  35.  
  36. #ifdef DIRECTSOUND_VERSION
  37. #if DIRECTSOUND_VERSION == 0x0800
  38.         __declspec(dllimport) HRESULT WINAPI EAXDirectSoundCreate8(GUID*, LPDIRECTSOUND8*, IUnknown FAR *);
  39.         typedef HRESULT (FAR PASCAL *LPEAXDIRECTSOUNDCREATE8)(GUID*, LPDIRECTSOUND8*, IUnknown FAR*);
  40. #endif
  41. #endif
  42.  
  43.     __declspec(dllimport) HRESULT WINAPI EAXDirectSoundCreate(GUID*, LPDIRECTSOUND*, IUnknown FAR *);
  44.     typedef HRESULT (FAR PASCAL *LPEAXDIRECTSOUNDCREATE)(GUID*, LPDIRECTSOUND*, IUnknown FAR*);
  45.  
  46. #else
  47.     #include <al.h>
  48.  
  49.     #ifndef GUID_DEFINED
  50.         #define GUID_DEFINED
  51.         typedef struct _GUID
  52.         {
  53.             unsigned long Data1;
  54.             unsigned short Data2;
  55.             unsigned short Data3;
  56.             unsigned char Data4[8];
  57.         } GUID;
  58.     #endif // !GUID_DEFINED
  59.  
  60.     #ifndef DEFINE_GUID
  61.         #ifndef INITGUID
  62.             #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
  63.                     extern const GUID FAR name
  64.         #else
  65.             #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
  66.                     extern const GUID name = { l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }
  67.         #endif // INITGUID
  68.     #endif // DEFINE_GUID
  69.  
  70.     /*
  71.     * EAX OpenAL Extension {4FF53B81-1CE0-11d3-AAB8-00A0C95949D5}
  72.     */
  73.     typedef ALenum (*EAXSet)(const GUID*, ALuint, ALuint, ALvoid*, ALuint);
  74.     typedef ALenum (*EAXGet)(const GUID*, ALuint, ALuint, ALvoid*, ALuint);
  75. #endif
  76.  
  77. #pragma pack(push, 4)
  78.  
  79. /*
  80. * EAX 2.0 listener property set {0306A6A8-B224-11d2-99E5-0000E8D8C722}
  81. */
  82. DEFINE_GUID(DSPROPSETID_EAX20_ListenerProperties, 
  83.     0x306a6a8, 
  84.     0xb224, 
  85.     0x11d2, 
  86.     0x99, 0xe5, 0x0, 0x0, 0xe8, 0xd8, 0xc7, 0x22);
  87.  
  88. // For compatibility with future EAX versions:
  89. #define DSPROPSETID_EAX_ListenerProperties DSPROPSETID_EAX20_ListenerProperties
  90. #define DSPROPSETID_EAX_SourceProperties DSPROPSETID_EAX20_BufferProperties
  91.  
  92. typedef enum
  93. {
  94.     DSPROPERTY_EAXLISTENER_NONE,
  95.     DSPROPERTY_EAXLISTENER_ALLPARAMETERS,
  96.     DSPROPERTY_EAXLISTENER_ROOM,
  97.     DSPROPERTY_EAXLISTENER_ROOMHF,
  98.     DSPROPERTY_EAXLISTENER_ROOMROLLOFFFACTOR,
  99.     DSPROPERTY_EAXLISTENER_DECAYTIME,
  100.     DSPROPERTY_EAXLISTENER_DECAYHFRATIO,
  101.     DSPROPERTY_EAXLISTENER_REFLECTIONS,
  102.     DSPROPERTY_EAXLISTENER_REFLECTIONSDELAY,
  103.     DSPROPERTY_EAXLISTENER_REVERB,
  104.     DSPROPERTY_EAXLISTENER_REVERBDELAY,
  105.     DSPROPERTY_EAXLISTENER_ENVIRONMENT,
  106.     DSPROPERTY_EAXLISTENER_ENVIRONMENTSIZE,
  107.     DSPROPERTY_EAXLISTENER_ENVIRONMENTDIFFUSION,
  108.     DSPROPERTY_EAXLISTENER_AIRABSORPTIONHF,
  109.     DSPROPERTY_EAXLISTENER_FLAGS
  110. } DSPROPERTY_EAX_LISTENERPROPERTY;
  111.     
  112. // OR these flags with property id
  113. #define DSPROPERTY_EAXLISTENER_IMMEDIATE 0x00000000 // changes take effect immediately
  114. #define DSPROPERTY_EAXLISTENER_DEFERRED  0x80000000 // changes take effect later
  115. #define DSPROPERTY_EAXLISTENER_COMMITDEFERREDSETTINGS (DSPROPERTY_EAXLISTENER_NONE | \
  116.                                                        DSPROPERTY_EAXLISTENER_IMMEDIATE)
  117.  
  118. // Use this structure for DSPROPERTY_EAXLISTENER_ALLPARAMETERS
  119. // - all levels are hundredths of decibels
  120. // - all times are in seconds
  121. // - the reference for high frequency controls is 5 kHz
  122. //
  123. // NOTE: This structure may change in future EAX versions.
  124. //       It is recommended to initialize fields by name:
  125. //              myListener.lRoom = -1000;
  126. //              myListener.lRoomHF = -100;
  127. //              ...
  128. //              myListener.dwFlags = myFlags /* see EAXLISTENERFLAGS below */ ;
  129. //       instead of:
  130. //              myListener = { -1000, -100, ... , 0x00000009 };
  131. //       If you want to save and load presets in binary form, you 
  132. //       should define your own structure to insure future compatibility.
  133. //
  134. typedef struct _EAXLISTENERPROPERTIES
  135. {
  136.     long lRoom;                    // room effect level at low frequencies
  137.     long lRoomHF;                  // room effect high-frequency level re. low frequency level
  138.     float flRoomRolloffFactor;     // like DS3D flRolloffFactor but for room effect
  139.     float flDecayTime;             // reverberation decay time at low frequencies
  140.     float flDecayHFRatio;          // high-frequency to low-frequency decay time ratio
  141.     long lReflections;             // early reflections level relative to room effect
  142.     float flReflectionsDelay;      // initial reflection delay time
  143.     long lReverb;                  // late reverberation level relative to room effect
  144.     float flReverbDelay;           // late reverberation delay time relative to initial reflection
  145.     unsigned long dwEnvironment;   // sets all listener properties
  146.     float flEnvironmentSize;       // environment size in meters
  147.     float flEnvironmentDiffusion;  // environment diffusion
  148.     float flAirAbsorptionHF;       // change in level per meter at 5 kHz
  149.     unsigned long dwFlags;         // modifies the behavior of properties
  150. } EAXLISTENERPROPERTIES, *LPEAXLISTENERPROPERTIES;
  151.  
  152. // used by DSPROPERTY_EAXLISTENER_ENVIRONMENT
  153. enum
  154. {
  155.     EAX_ENVIRONMENT_GENERIC,
  156.     EAX_ENVIRONMENT_PADDEDCELL,
  157.     EAX_ENVIRONMENT_ROOM,
  158.     EAX_ENVIRONMENT_BATHROOM,
  159.     EAX_ENVIRONMENT_LIVINGROOM,
  160.     EAX_ENVIRONMENT_STONEROOM,
  161.     EAX_ENVIRONMENT_AUDITORIUM,
  162.     EAX_ENVIRONMENT_CONCERTHALL,
  163.     EAX_ENVIRONMENT_CAVE,
  164.     EAX_ENVIRONMENT_ARENA,
  165.     EAX_ENVIRONMENT_HANGAR,
  166.     EAX_ENVIRONMENT_CARPETEDHALLWAY,
  167.     EAX_ENVIRONMENT_HALLWAY,
  168.     EAX_ENVIRONMENT_STONECORRIDOR,
  169.     EAX_ENVIRONMENT_ALLEY,
  170.     EAX_ENVIRONMENT_FOREST,
  171.     EAX_ENVIRONMENT_CITY,
  172.     EAX_ENVIRONMENT_MOUNTAINS,
  173.     EAX_ENVIRONMENT_QUARRY,
  174.     EAX_ENVIRONMENT_PLAIN,
  175.     EAX_ENVIRONMENT_PARKINGLOT,
  176.     EAX_ENVIRONMENT_SEWERPIPE,
  177.     EAX_ENVIRONMENT_UNDERWATER,
  178.     EAX_ENVIRONMENT_DRUGGED,
  179.     EAX_ENVIRONMENT_DIZZY,
  180.     EAX_ENVIRONMENT_PSYCHOTIC,
  181.  
  182.     EAX_ENVIRONMENT_COUNT
  183. };
  184.  
  185. // Used by DSPROPERTY_EAXLISTENER_FLAGS
  186. //
  187. // Note: The number and order of flags may change in future EAX versions.
  188. //       It is recommended to use the flag defines as follows:
  189. //              myFlags = EAXLISTENERFLAGS_DECAYTIMESCALE | EAXLISTENERFLAGS_REVERBSCALE;
  190. //       instead of:
  191. //              myFlags = 0x00000009;
  192. //
  193. // These flags determine what properties are affected by environment size.
  194. #define EAXLISTENERFLAGS_DECAYTIMESCALE        0x00000001 // reverberation decay time
  195. #define EAXLISTENERFLAGS_REFLECTIONSSCALE      0x00000002 // reflection level
  196. #define EAXLISTENERFLAGS_REFLECTIONSDELAYSCALE 0x00000004 // initial reflection delay time
  197. #define EAXLISTENERFLAGS_REVERBSCALE           0x00000008 // reflections level
  198. #define EAXLISTENERFLAGS_REVERBDELAYSCALE      0x00000010 // late reverberation delay time
  199.  
  200. // This flag limits high-frequency decay time according to air absorption.
  201. #define EAXLISTENERFLAGS_DECAYHFLIMIT          0x00000020
  202.  
  203. #define EAXLISTENERFLAGS_RESERVED              0xFFFFFFC0 // reserved future use
  204.  
  205. // property ranges and defaults:
  206.  
  207. #define EAXLISTENER_MINROOM                       (-10000)
  208. #define EAXLISTENER_MAXROOM                       0
  209. #define EAXLISTENER_DEFAULTROOM                   (-1000)
  210.  
  211. #define EAXLISTENER_MINROOMHF                     (-10000)
  212. #define EAXLISTENER_MAXROOMHF                     0
  213. #define EAXLISTENER_DEFAULTROOMHF                 (-100)
  214.  
  215. #define EAXLISTENER_MINROOMROLLOFFFACTOR          0.0f
  216. #define EAXLISTENER_MAXROOMROLLOFFFACTOR          10.0f
  217. #define EAXLISTENER_DEFAULTROOMROLLOFFFACTOR      0.0f
  218.  
  219. #define EAXLISTENER_MINDECAYTIME                  0.1f
  220. #define EAXLISTENER_MAXDECAYTIME                  20.0f
  221. #define EAXLISTENER_DEFAULTDECAYTIME              1.49f
  222.  
  223. #define EAXLISTENER_MINDECAYHFRATIO               0.1f
  224. #define EAXLISTENER_MAXDECAYHFRATIO               2.0f
  225. #define EAXLISTENER_DEFAULTDECAYHFRATIO           0.83f
  226.  
  227. #define EAXLISTENER_MINREFLECTIONS                (-10000)
  228. #define EAXLISTENER_MAXREFLECTIONS                1000
  229. #define EAXLISTENER_DEFAULTREFLECTIONS            (-2602)
  230.  
  231. #define EAXLISTENER_MINREFLECTIONSDELAY           0.0f
  232. #define EAXLISTENER_MAXREFLECTIONSDELAY           0.3f
  233. #define EAXLISTENER_DEFAULTREFLECTIONSDELAY       0.007f
  234.  
  235. #define EAXLISTENER_MINREVERB                     (-10000)
  236. #define EAXLISTENER_MAXREVERB                     2000
  237. #define EAXLISTENER_DEFAULTREVERB                 200
  238.  
  239. #define EAXLISTENER_MINREVERBDELAY                0.0f
  240. #define EAXLISTENER_MAXREVERBDELAY                0.1f
  241. #define EAXLISTENER_DEFAULTREVERBDELAY            0.011f
  242.  
  243. #define EAXLISTENER_MINENVIRONMENT                0
  244. #define EAXLISTENER_MAXENVIRONMENT                (EAX_ENVIRONMENT_COUNT-1)
  245. #define EAXLISTENER_DEFAULTENVIRONMENT            EAX_ENVIRONMENT_GENERIC
  246.  
  247. #define EAXLISTENER_MINENVIRONMENTSIZE            1.0f
  248. #define EAXLISTENER_MAXENVIRONMENTSIZE            100.0f
  249. #define EAXLISTENER_DEFAULTENVIRONMENTSIZE        7.5f
  250.  
  251. #define EAXLISTENER_MINENVIRONMENTDIFFUSION       0.0f
  252. #define EAXLISTENER_MAXENVIRONMENTDIFFUSION       1.0f
  253. #define EAXLISTENER_DEFAULTENVIRONMENTDIFFUSION   1.0f
  254.  
  255. #define EAXLISTENER_MINAIRABSORPTIONHF            (-100.0f)
  256. #define EAXLISTENER_MAXAIRABSORPTIONHF            0.0f
  257. #define EAXLISTENER_DEFAULTAIRABSORPTIONHF        (-5.0f)
  258.  
  259. #define EAXLISTENER_DEFAULTFLAGS                  (EAXLISTENERFLAGS_DECAYTIMESCALE |        \
  260.                                                    EAXLISTENERFLAGS_REFLECTIONSSCALE |      \
  261.                                                    EAXLISTENERFLAGS_REFLECTIONSDELAYSCALE | \
  262.                                                    EAXLISTENERFLAGS_REVERBSCALE |           \
  263.                                                    EAXLISTENERFLAGS_REVERBDELAYSCALE |      \
  264.                                                    EAXLISTENERFLAGS_DECAYHFLIMIT)
  265.  
  266.  
  267.  
  268. /*
  269. * EAX 2.0 buffer property set {0306A6A7-B224-11d2-99E5-0000E8D8C722}
  270. */
  271. DEFINE_GUID(DSPROPSETID_EAX20_BufferProperties, 
  272.     0x306a6a7, 
  273.     0xb224, 
  274.     0x11d2, 
  275.     0x99, 0xe5, 0x0, 0x0, 0xe8, 0xd8, 0xc7, 0x22);
  276.  
  277. // For compatibility with future EAX versions:
  278. #define DSPROPSETID_EAX_BufferProperties DSPROPSETID_EAX20_BufferProperties
  279.  
  280. typedef enum
  281. {
  282.     DSPROPERTY_EAXBUFFER_NONE,
  283.     DSPROPERTY_EAXBUFFER_ALLPARAMETERS,
  284.     DSPROPERTY_EAXBUFFER_DIRECT,
  285.     DSPROPERTY_EAXBUFFER_DIRECTHF,
  286.     DSPROPERTY_EAXBUFFER_ROOM,
  287.     DSPROPERTY_EAXBUFFER_ROOMHF, 
  288.     DSPROPERTY_EAXBUFFER_ROOMROLLOFFFACTOR,
  289.     DSPROPERTY_EAXBUFFER_OBSTRUCTION,
  290.     DSPROPERTY_EAXBUFFER_OBSTRUCTIONLFRATIO,
  291.     DSPROPERTY_EAXBUFFER_OCCLUSION, 
  292.     DSPROPERTY_EAXBUFFER_OCCLUSIONLFRATIO,
  293.     DSPROPERTY_EAXBUFFER_OCCLUSIONROOMRATIO,
  294.     DSPROPERTY_EAXBUFFER_OUTSIDEVOLUMEHF,
  295.     DSPROPERTY_EAXBUFFER_AIRABSORPTIONFACTOR,
  296.     DSPROPERTY_EAXBUFFER_FLAGS
  297. } DSPROPERTY_EAX_BUFFERPROPERTY;    
  298.  
  299. // OR these flags with property id
  300. #define DSPROPERTY_EAXBUFFER_IMMEDIATE 0x00000000 // changes take effect immediately
  301. #define DSPROPERTY_EAXBUFFER_DEFERRED  0x80000000 // changes take effect later
  302. #define DSPROPERTY_EAXBUFFER_COMMITDEFERREDSETTINGS (DSPROPERTY_EAXBUFFER_NONE | \
  303.                                                      DSPROPERTY_EAXBUFFER_IMMEDIATE)
  304.  
  305. // Use this structure for DSPROPERTY_EAXBUFFER_ALLPARAMETERS
  306. // - all levels are hundredths of decibels
  307. //
  308. // NOTE: This structure may change in future EAX versions.
  309. //       It is recommended to initialize fields by name:
  310. //              myBuffer.lDirect = 0;
  311. //              myBuffer.lDirectHF = -200;
  312. //              ...
  313. //              myBuffer.dwFlags = myFlags /* see EAXBUFFERFLAGS below */ ;
  314. //       instead of:
  315. //              myBuffer = { 0, -200, ... , 0x00000003 };
  316. //
  317. typedef struct _EAXBUFFERPROPERTIES
  318. {
  319.     long lDirect;                // direct path level
  320.     long lDirectHF;              // direct path level at high frequencies
  321.     long lRoom;                  // room effect level
  322.     long lRoomHF;                // room effect level at high frequencies
  323.     float flRoomRolloffFactor;   // like DS3D flRolloffFactor but for room effect
  324.     long lObstruction;           // main obstruction control (attenuation at high frequencies) 
  325.     float flObstructionLFRatio;  // obstruction low-frequency level re. main control
  326.     long lOcclusion;             // main occlusion control (attenuation at high frequencies)
  327.     float flOcclusionLFRatio;    // occlusion low-frequency level re. main control
  328.     float flOcclusionRoomRatio;  // occlusion room effect level re. main control
  329.     long lOutsideVolumeHF;       // outside sound cone level at high frequencies
  330.     float flAirAbsorptionFactor; // multiplies DSPROPERTY_EAXLISTENER_AIRABSORPTIONHF
  331.     unsigned long dwFlags;       // modifies the behavior of properties
  332. } EAXBUFFERPROPERTIES, *LPEAXBUFFERPROPERTIES;
  333.  
  334. // Used by DSPROPERTY_EAXBUFFER_FLAGS
  335. //    TRUE:    value is computed automatically - property is an offset
  336. //    FALSE:   value is used directly
  337. //
  338. // Note: The number and order of flags may change in future EAX versions.
  339. //       To insure future compatibility, use flag defines as follows:
  340. //              myFlags = EAXBUFFERFLAGS_DIRECTHFAUTO | EAXBUFFERFLAGS_ROOMAUTO;
  341. //       instead of:
  342. //              myFlags = 0x00000003;
  343. //
  344. #define EAXBUFFERFLAGS_DIRECTHFAUTO 0x00000001 // affects DSPROPERTY_EAXBUFFER_DIRECTHF
  345. #define EAXBUFFERFLAGS_ROOMAUTO     0x00000002 // affects DSPROPERTY_EAXBUFFER_ROOM
  346. #define EAXBUFFERFLAGS_ROOMHFAUTO   0x00000004 // affects DSPROPERTY_EAXBUFFER_ROOMHF
  347.  
  348. #define EAXBUFFERFLAGS_RESERVED     0xFFFFFFF8 // reserved future use
  349.  
  350. // property ranges and defaults:
  351.  
  352. #define EAXBUFFER_MINDIRECT                  (-10000)
  353. #define EAXBUFFER_MAXDIRECT                  1000
  354. #define EAXBUFFER_DEFAULTDIRECT              0
  355.  
  356. #define EAXBUFFER_MINDIRECTHF                (-10000)
  357. #define EAXBUFFER_MAXDIRECTHF                0
  358. #define EAXBUFFER_DEFAULTDIRECTHF            0
  359.  
  360. #define EAXBUFFER_MINROOM                    (-10000)
  361. #define EAXBUFFER_MAXROOM                    1000
  362. #define EAXBUFFER_DEFAULTROOM                0
  363.  
  364. #define EAXBUFFER_MINROOMHF                  (-10000)
  365. #define EAXBUFFER_MAXROOMHF                  0
  366. #define EAXBUFFER_DEFAULTROOMHF              0
  367.  
  368. #define EAXBUFFER_MINROOMROLLOFFFACTOR       0.0f
  369. #define EAXBUFFER_MAXROOMROLLOFFFACTOR       10.f
  370. #define EAXBUFFER_DEFAULTROOMROLLOFFFACTOR   0.0f
  371.  
  372. #define EAXBUFFER_MINOBSTRUCTION             (-10000)
  373. #define EAXBUFFER_MAXOBSTRUCTION             0
  374. #define EAXBUFFER_DEFAULTOBSTRUCTION         0
  375.  
  376. #define EAXBUFFER_MINOBSTRUCTIONLFRATIO      0.0f
  377. #define EAXBUFFER_MAXOBSTRUCTIONLFRATIO      1.0f
  378. #define EAXBUFFER_DEFAULTOBSTRUCTIONLFRATIO  0.0f
  379.  
  380. #define EAXBUFFER_MINOCCLUSION               (-10000)
  381. #define EAXBUFFER_MAXOCCLUSION               0
  382. #define EAXBUFFER_DEFAULTOCCLUSION           0
  383.  
  384. #define EAXBUFFER_MINOCCLUSIONLFRATIO        0.0f
  385. #define EAXBUFFER_MAXOCCLUSIONLFRATIO        1.0f
  386. #define EAXBUFFER_DEFAULTOCCLUSIONLFRATIO    0.25f
  387.  
  388. #define EAXBUFFER_MINOCCLUSIONROOMRATIO      0.0f
  389. #define EAXBUFFER_MAXOCCLUSIONROOMRATIO      10.0f
  390. #define EAXBUFFER_DEFAULTOCCLUSIONROOMRATIO  0.5f
  391.  
  392. #define EAXBUFFER_MINOUTSIDEVOLUMEHF         (-10000)
  393. #define EAXBUFFER_MAXOUTSIDEVOLUMEHF         0
  394. #define EAXBUFFER_DEFAULTOUTSIDEVOLUMEHF     0
  395.  
  396. #define EAXBUFFER_MINAIRABSORPTIONFACTOR     0.0f
  397. #define EAXBUFFER_MAXAIRABSORPTIONFACTOR     10.0f
  398. #define EAXBUFFER_DEFAULTAIRABSORPTIONFACTOR 1.0f
  399.  
  400. #define EAXBUFFER_DEFAULTFLAGS               (EAXBUFFERFLAGS_DIRECTHFAUTO | \
  401.                                               EAXBUFFERFLAGS_ROOMAUTO |     \
  402.                                               EAXBUFFERFLAGS_ROOMHFAUTO)
  403.  
  404. // Material transmission presets
  405. // 3 values in this order:
  406. //     1: occlusion (or obstruction)
  407. //     2: occlusion LF Ratio (or obstruction LF Ratio)
  408. //     3: occlusion Room Ratio
  409.  
  410. // Single window material preset
  411. #define EAX_MATERIAL_SINGLEWINDOW          (-2800)
  412. #define EAX_MATERIAL_SINGLEWINDOWLF        0.71f
  413. #define EAX_MATERIAL_SINGLEWINDOWROOMRATIO 0.43f
  414.  
  415. // Double window material preset
  416. #define EAX_MATERIAL_DOUBLEWINDOW          (-5000)
  417. #define EAX_MATERIAL_DOUBLEWINDOWHF        0.40f
  418. #define EAX_MATERIAL_DOUBLEWINDOWROOMRATIO 0.24f
  419.  
  420. // Thin door material preset
  421. #define EAX_MATERIAL_THINDOOR              (-1800)
  422. #define EAX_MATERIAL_THINDOORLF            0.66f
  423. #define EAX_MATERIAL_THINDOORROOMRATIO     0.66f
  424.  
  425. // Thick door material preset
  426. #define EAX_MATERIAL_THICKDOOR             (-4400)
  427. #define EAX_MATERIAL_THICKDOORLF           0.64f
  428. #define EAX_MATERIAL_THICKDOORROOMRTATION  0.27f
  429.  
  430. // Wood wall material preset
  431. #define EAX_MATERIAL_WOODWALL              (-4000)
  432. #define EAX_MATERIAL_WOODWALLLF            0.50f
  433. #define EAX_MATERIAL_WOODWALLROOMRATIO     0.30f
  434.  
  435. // Brick wall material preset
  436. #define EAX_MATERIAL_BRICKWALL             (-5000)
  437. #define EAX_MATERIAL_BRICKWALLLF           0.60f
  438. #define EAX_MATERIAL_BRICKWALLROOMRATIO    0.24f
  439.  
  440. // Stone wall material preset
  441. #define EAX_MATERIAL_STONEWALL             (-6000)
  442. #define EAX_MATERIAL_STONEWALLLF           0.68f
  443. #define EAX_MATERIAL_STONEWALLROOMRATIO    0.20f
  444.  
  445. // Curtain material preset
  446. #define EAX_MATERIAL_CURTAIN               (-1200)
  447. #define EAX_MATERIAL_CURTAINLF             0.15f
  448. #define EAX_MATERIAL_CURTAINROOMRATIO      1.00f
  449.  
  450.  
  451. #pragma pack(pop)
  452.  
  453. #ifdef __cplusplus
  454. }
  455. #endif // __cplusplus
  456.  
  457. #endif
  458.