home *** CD-ROM | disk | FTP | other *** search
/ Game Audio Programming / GameAudioProgramming.iso / Extras / Sensaura / SDK1.0 / data1.cab / SDK_Files / include / 3dl2.h next >
Encoding:
C/C++ Source or Header  |  2000-06-13  |  7.5 KB  |  196 lines

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