home *** CD-ROM | disk | FTP | other *** search
/ Game Audio Programming / GameAudioProgramming.iso / Game_Audio / audio_sdk / include / AudioLib / 3dl2.h next >
C/C++ Source or Header  |  2002-05-26  |  9KB  |  199 lines

  1. // 3DL2.H
  2. //
  3.  
  4. #ifndef __3DL2_H_INCLUDED
  5. #define __3DL2_H_INCLUDED
  6.  
  7. #include <dsound.h>
  8.  
  9. #ifdef __cplusplus
  10. extern "C" {
  11. #endif // __cplusplus
  12.  
  13. #pragma pack(push, 4)
  14.  
  15. // I3DL2 listener property set {DA0F0520-300A-11D3-8A2B-0060970DB011}
  16. static const GUID DSPROPSETID_I3DL2_ListenerProperties = 
  17. { 0xDA0F0520, 0x300A, 0x11D3, { 0x8A, 0x2B, 0x00, 0x60, 0x97, 0x0D, 0xB0, 0x11 } };
  18.  
  19.  
  20. typedef enum
  21. {
  22.     DSPROPERTY_I3DL2LISTENER_ALL,                 // sets all I3DL2 listener properties
  23.     DSPROPERTY_I3DL2LISTENER_ROOM,                // room effect level at low frequencies
  24.     DSPROPERTY_I3DL2LISTENER_ROOMHF,              // room effect high-frequency level re. low frequency level
  25.     DSPROPERTY_I3DL2LISTENER_ROOMROLLOFFFACTOR,   // like DS3D flRolloffFactor but for room effect
  26.     DSPROPERTY_I3DL2LISTENER_DECAYTIME,           // reverberation decay time at low-frequencies
  27.     DSPROPERTY_I3DL2LISTENER_DECAYHFRATIO,        // high-frequency to low-frequency decay time ratio
  28.     DSPROPERTY_I3DL2LISTENER_REFLECTIONS,         // early reflections level relative to room effect
  29.     DSPROPERTY_I3DL2LISTENER_REFLECTIONSDELAY,    // delay time of first reflection
  30.     DSPROPERTY_I3DL2LISTENER_REVERB,              // late reverberation level relative to room effect
  31.     DSPROPERTY_I3DL2LISTENER_REVERBDELAY,         // late reverberation delay time relative to first reflection
  32.     DSPROPERTY_I3DL2LISTENER_DIFFUSION,           // reverberation diffusion (echo density)
  33.     DSPROPERTY_I3DL2LISTENER_DENSITY,             // reverberation density (modal density)
  34.     DSPROPERTY_I3DL2LISTENER_HFREFERENCE          // reference high frequency
  35. } DSPROPERTY_I3DL2_LISTENERPROPERTY;
  36.  
  37. // use this structure for DSPROPERTY_I3DL2LISTENER_ALL
  38. // - all levels are hundredths of decibels (mB)
  39. // - all times are in seconds (s)
  40. typedef struct _I3DL2_LISTENERPROPERTIES
  41. {
  42.     long lRoom;                    // [-10000, 0]      default: -10000 mB
  43.     long lRoomHF;                  // [-10000, 0]      default: 0 mB
  44.     float flRoomRolloffFactor;     // [0.0, 10.0]      default: 0.0
  45.     float flDecayTime;             // [0.1, 20.0]      default: 1.0 s
  46.     float flDecayHFRatio;          // [0.1, 2.0]       default: 0.5
  47.     long lReflections;             // [-10000, 1000]   default: -10000 mB
  48.     float flReflectionsDelay;      // [0.0, 0.3]       default: 0.02 s
  49.     long lReverb;                  // [-10000, 2000]   default: -10000 mB
  50.     float flReverbDelay;           // [0.0, 0.1]       default: 0.04 s
  51.     float flDiffusion  ;           // [0.0, 100.0]     default: 100.0 %
  52.     float flDensity;               // [0.0, 100.0]     default: 100.0 %
  53.     float flHFReference;           // [20.0, 20000.0]  default: 5000.0 Hz
  54. } I3DL2_LISTENERPROPERTIES, *LPI3DL2_LISTENERPROPERTIES;
  55.  
  56. // property ranges and defaults:
  57.  
  58. #define I3DL2LISTENER_MINROOM                       -10000
  59. #define I3DL2LISTENER_MAXROOM                       0
  60. #define I3DL2LISTENER_DEFAULTROOM                   -10000
  61.  
  62. #define I3DL2LISTENER_MINROOMHF                     -10000
  63. #define I3DL2LISTENER_MAXROOMHF                     0
  64. #define I3DL2LISTENER_DEFAULTROOMHF                 0
  65.  
  66. #define I3DL2LISTENER_MINROOMROLLOFFFACTOR          0.0f
  67. #define I3DL2LISTENER_MAXROOMROLLOFFFACTOR          10.0f
  68. #define I3DL2LISTENER_DEFAULTROOMROLLOFFFACTOR      0.0f
  69.  
  70. #define I3DL2LISTENER_MINDECAYTIME                  0.1f
  71. #define I3DL2LISTENER_MAXDECAYTIME                  20.0f
  72. #define I3DL2LISTENER_DEFAULTDECAYTIME              1.0f
  73.  
  74. #define I3DL2LISTENER_MINDECAYHFRATIO               0.1f
  75. #define I3DL2LISTENER_MAXDECAYHFRATIO               2.0f
  76. #define I3DL2LISTENER_DEFAULTDECAYHFRATIO           0.5f
  77.  
  78. #define I3DL2LISTENER_MINREFLECTIONS                -10000
  79. #define I3DL2LISTENER_MAXREFLECTIONS                1000
  80. #define I3DL2LISTENER_DEFAULTREFLECTIONS            -10000
  81.  
  82. #define I3DL2LISTENER_MINREFLECTIONSDELAY           0.0f
  83. #define I3DL2LISTENER_MAXREFLECTIONSDELAY           0.3f
  84. #define I3DL2LISTENER_DEFAULTREFLECTIONSDELAY       0.02f
  85.  
  86. #define I3DL2LISTENER_MINREVERB                     -10000
  87. #define I3DL2LISTENER_MAXREVERB                     2000
  88. #define I3DL2LISTENER_DEFAULTREVERB                 -10000
  89.  
  90. #define I3DL2LISTENER_MINREVERBDELAY                0.0f
  91. #define I3DL2LISTENER_MAXREVERBDELAY                0.1f
  92. #define I3DL2LISTENER_DEFAULTREVERBDELAY            0.04f
  93.  
  94. #define I3DL2LISTENER_MINDIFFUSION                  0.0f
  95. #define I3DL2LISTENER_MAXDIFFUSION                  100.0f
  96. #define I3DL2LISTENER_DEFAULTDIFFUSION              100.0f
  97.  
  98. #define I3DL2LISTENER_MINDENSITY                    0.0f
  99. #define I3DL2LISTENER_MAXDENSITY                    100.0f
  100. #define I3DL2LISTENER_DEFAULTDENSITY                100.0f
  101.  
  102. #define I3DL2LISTENER_MINHFREFERENCE                20.0f
  103. #define I3DL2LISTENER_MAXHFREFERENCE                20000.0f
  104. #define I3DL2LISTENER_DEFAULTHFREFERENCE            5000.0f
  105.  
  106. // I3DL2 buffer property set {DA0F0521-300A-11D3-8A2B-0060970DB011}
  107. static const GUID DSPROPSETID_I3DL2_BufferProperties = 
  108. { 0xDA0F0521, 0x300A, 0x11D3, { 0x8A, 0x2B, 0x00, 0x60, 0x97, 0x0D, 0xB0, 0x11 } };
  109.  
  110. typedef enum
  111. {
  112.     DSPROPERTY_I3DL2BUFFER_ALL,                   // sets all I3DL2 buffer properties
  113.     DSPROPERTY_I3DL2BUFFER_OBSTRUCTIONALL,        // sets both obstruction properties
  114.     DSPROPERTY_I3DL2BUFFER_OCCLUSIONALL,          // sets both occlusion properties
  115.     DSPROPERTY_I3DL2BUFFER_DIRECT,                // additional direct path level correction
  116.     DSPROPERTY_I3DL2BUFFER_DIRECTHF,              // additional direct path high-frequency re. low-frequency level correction
  117.     DSPROPERTY_I3DL2BUFFER_ROOM,                  // additional room effect level correction
  118.     DSPROPERTY_I3DL2BUFFER_ROOMHF,                // additional room effect high-frequency re. low-frequency level correction
  119.     DSPROPERTY_I3DL2BUFFER_ROOMROLLOFFFACTOR,     // like DS3D flRolloffFactor but for room effect
  120.     DSPROPERTY_I3DL2BUFFER_OBSTRUCTION,           // main obstruction control (attenuation at high frequencies)
  121.     DSPROPERTY_I3DL2BUFFER_OBSTRUCTIONLFRATIO,    // obstruction low-frequency re. high-frequency ratio
  122.     DSPROPERTY_I3DL2BUFFER_OCCLUSION,             // main occlusion control (attenuation at high frequencies)
  123.     DSPROPERTY_I3DL2BUFFER_OCCLUSIONLFRATIO       // occlusion low-frequency re. high-frequency ratio
  124. } DSPROPERTY_I3DL2_BUFFERPROPERTY;
  125.  
  126. // use this structure for DSPROPERTY_I3DL2BUFFER_OBSTRUCTIONALL
  127. // - all levels are hundredths of decibels (mB)
  128. typedef struct _I3DL2_OBSTRUCTIONPROPERTIES
  129. {
  130.     long lHFLevel;              // [-10000, 0] default: 0 mB
  131.     float flLFRatio;            // [0.0, 1.0]  default: 0.0
  132. } I3DL2_OBSTRUCTIONPROPERTIES, *LPI3DL2_OBSTRUCTIONPROPERTIES;
  133.  
  134. // use this structure for DSPROPERTY_I3DL2BUFFER_OCCLUSIONALL
  135. // - all levels are hundredths of decibels (mB)
  136. typedef struct _I3DL2_OCCLUSIONPROPERTIES
  137. {
  138.     long lHFLevel;              // [-10000, 0] default: 0 mB
  139.     float flLFRatio;            // [0.0, 1.0]  default: 0.25
  140. } I3DL2_OCCLUSIONPROPERTIES, *LPI3DL2_OCCLUSIONPROPERTIES;
  141.  
  142. // use this structure for DSPROPERTY_I3DL2BUFFER_ALL
  143. // - all levels are hundredths of decibels (mB)
  144. typedef struct _I3DL2_BUFFERPROPERTIES
  145. {
  146.     long lDirect;                // [-10000, 1000] default: 0 mB
  147.     long lDirectHF;              // [-10000, 0]    default: 0 mB
  148.     long lRoom;                  // [-10000, 1000] default: 0 mB
  149.     long lRoomHF;                // [-10000, 0]    default: 0 mB
  150.     float flRoomRolloffFactor;   // [0.0, 10.0]    default: 0.0
  151.     I3DL2_OBSTRUCTIONPROPERTIES Obstruction;
  152.     I3DL2_OCCLUSIONPROPERTIES Occlusion;
  153. } I3DL2_BUFFERPROPERTIES, *LPI3DL2_BUFFERPROPERTIES;
  154.  
  155. // property ranges and defaults:
  156.  
  157. #define I3DL2BUFFER_MINDIRECT                  -10000
  158. #define I3DL2BUFFER_MAXDIRECT                  1000
  159. #define I3DL2BUFFER_DEFAULTDIRECT              0
  160.  
  161. #define I3DL2BUFFER_MINDIRECTHF                -10000
  162. #define I3DL2BUFFER_MAXDIRECTHF                0
  163. #define I3DL2BUFFER_DEFAULTDIRECTHF            0
  164.  
  165. #define I3DL2BUFFER_MINROOM                    -10000
  166. #define I3DL2BUFFER_MAXROOM                    1000
  167. #define I3DL2BUFFER_DEFAULTROOM                0
  168.  
  169. #define I3DL2BUFFER_MINROOMHF                  -10000
  170. #define I3DL2BUFFER_MAXROOMHF                  0
  171. #define I3DL2BUFFER_DEFAULTROOMHF              0
  172.  
  173. #define I3DL2BUFFER_MINROOMROLLOFFFACTOR       0.0f
  174. #define I3DL2BUFFER_MAXROOMROLLOFFFACTOR       10.f
  175. #define I3DL2BUFFER_DEFAULTROOMROLLOFFFACTOR   0.0f
  176.  
  177. #define I3DL2BUFFER_MINOBSTRUCTION             -10000
  178. #define I3DL2BUFFER_MAXOBSTRUCTION             0
  179. #define I3DL2BUFFER_DEFAULTOBSTRUCTION         0
  180.  
  181. #define I3DL2BUFFER_MINOBSTRUCTIONLFRATIO      0.0f
  182. #define I3DL2BUFFER_MAXOBSTRUCTIONLFRATIO      1.0f
  183. #define I3DL2BUFFER_DEFAULTOBSTRUCTIONLFRATIO  0.0f
  184.  
  185. #define I3DL2BUFFER_MINOCCLUSION               -10000
  186. #define I3DL2BUFFER_MAXOCCLUSION               0
  187. #define I3DL2BUFFER_DEFAULTOCCLUSION           0
  188.  
  189. #define I3DL2BUFFER_MINOCCLUSIONLFRATIO        0.0f
  190. #define I3DL2BUFFER_MAXOCCLUSIONLFRATIO        1.0f
  191. #define I3DL2BUFFER_DEFAULTOCCLUSIONLFRATIO    0.25f
  192.  
  193. #pragma pack(pop)
  194.  
  195. #ifdef __cplusplus
  196. }
  197. #endif // __cplusplus
  198.  
  199. #endif // __3DL2_H_INCLUDED