]> gitweb.factorcode.org Git - factor.git/blob - basis/windows/directx/xact3/xact3.factor
use radix literals
[factor.git] / basis / windows / directx / xact3 / xact3.factor
1 USING: alien.c-types alien.syntax classes.struct windows.com
2 windows.com.syntax windows.directx windows.directx.xaudio2
3 windows.kernel32 windows.types ;
4 IN: windows.directx.xact3
5
6 LIBRARY: xactengine
7
8 C-TYPE: IXACT3SoundBank
9 C-TYPE: IXACT3WaveBank
10 C-TYPE: IXACT3Cue
11 C-TYPE: IXACT3Wave
12 C-TYPE: IXACT3Engine
13 C-TYPE: XACT_NOTIFICATION
14
15 TYPEDEF: WORD  XACTINDEX
16 TYPEDEF: BYTE  XACTNOTIFICATIONTYPE
17 TYPEDEF: FLOAT XACTVARIABLEVALUE
18 TYPEDEF: WORD  XACTVARIABLEINDEX
19 TYPEDEF: WORD  XACTCATEGORY
20 TYPEDEF: BYTE  XACTCHANNEL
21 TYPEDEF: FLOAT XACTVOLUME
22 TYPEDEF: LONG  XACTTIME
23 TYPEDEF: SHORT XACTPITCH
24 TYPEDEF: BYTE  XACTLOOPCOUNT
25 TYPEDEF: BYTE  XACTVARIATIONWEIGHT
26 TYPEDEF: BYTE  XACTPRIORITY
27 TYPEDEF: BYTE  XACTINSTANCELIMIT
28
29 CONSTANT: WAVE_FORMAT_IEEE_FLOAT 0x0003
30 CONSTANT: WAVE_FORMAT_EXTENSIBLE 0xFFFE
31
32 STRUCT: WAVEFORMATEX
33     { wFormatTag        WORD  }
34     { nChannels         WORD  }
35     { nSamplesPerSec    DWORD }
36     { nAvgBytesPerSec   DWORD }
37     { nBlockAlign       WORD  }
38     { wBitsPerSample    WORD  }
39     { cbSize            WORD  } ;
40 TYPEDEF: WAVEFORMATEX* PWAVEFORMATEX
41 TYPEDEF: WAVEFORMATEX* NPWAVEFORMATEX
42 TYPEDEF: WAVEFORMATEX* LPWAVEFORMATEX
43
44 UNION-STRUCT: WAVEFORMATEXTENSIBLE_UNION
45     { wValidBitsPerSample        WORD }
46     { wSamplesPerBlock           WORD }
47     { wReserved                  WORD } ;
48 STRUCT: WAVEFORMATEXTENSIBLE
49     { Format                  WAVEFORMATEX               }
50     { Union                   WAVEFORMATEXTENSIBLE_UNION }
51     { dwChannelMask           DWORD                      }
52     { SubFormat               GUID                       } ;
53 TYPEDEF: WAVEFORMATEXTENSIBLE* PWAVEFORMATEXTENSIBLE
54
55 CONSTANT: XACTTIME_MIN                    0x80000001
56 CONSTANT: XACTTIME_MAX                    0x7fffffff
57 CONSTANT: XACTTIME_INFINITE               0x7fffffff
58 CONSTANT: XACTINSTANCELIMIT_INFINITE      0xff
59 CONSTANT: XACTINSTANCELIMIT_MIN           0x00
60 CONSTANT: XACTINSTANCELIMIT_MAX           0xfe
61 CONSTANT: XACTINDEX_MIN                   0x0
62 CONSTANT: XACTINDEX_MAX                   0xfffe
63 CONSTANT: XACTINDEX_INVALID               0xffff
64 CONSTANT: XACTNOTIFICATIONTYPE_MIN        0x00
65 CONSTANT: XACTNOTIFICATIONTYPE_MAX        0xff
66 CONSTANT: XACTVARIABLEINDEX_MIN           0x0000
67 CONSTANT: XACTVARIABLEINDEX_MAX           0xfffe
68 CONSTANT: XACTVARIABLEINDEX_INVALID       0xffff
69 CONSTANT: XACTCATEGORY_MIN                0x0
70 CONSTANT: XACTCATEGORY_MAX                0xfffe
71 CONSTANT: XACTCATEGORY_INVALID            0xffff
72 CONSTANT: XACTCHANNEL_MIN                 0
73 CONSTANT: XACTCHANNEL_MAX                 0xFF
74 CONSTANT: XACTPITCH_MIN                   -1200
75 CONSTANT: XACTPITCH_MAX                   1200
76 CONSTANT: XACTPITCH_MIN_TOTAL             -2400
77 CONSTANT: XACTPITCH_MAX_TOTAL             2400
78 CONSTANT: XACTVOLUME_MIN                  0.0
79 CONSTANT: XACTVOLUME_MAX                  16777216.0
80 CONSTANT: XACTLOOPCOUNT_MIN               0x0
81 CONSTANT: XACTLOOPCOUNT_MAX               0xfe
82 CONSTANT: XACTLOOPCOUNT_INFINITE          0xff
83 CONSTANT: XACTWAVEALIGNMENT_MIN           2048
84
85 CONSTANT: XACT_CUE_NAME_LENGTH        0xFF
86 CONSTANT: XACT_CONTENT_VERSION        46
87
88 CONSTANT: XACT_FLAG_STOP_RELEASE       0x00000000
89 CONSTANT: XACT_FLAG_STOP_IMMEDIATE     0x00000001
90
91 CONSTANT: XACT_FLAG_MANAGEDATA         0x00000001
92
93 CONSTANT: XACT_FLAG_BACKGROUND_MUSIC   0x00000002
94 CONSTANT: XACT_FLAG_UNITS_MS           0x00000004
95 CONSTANT: XACT_FLAG_UNITS_SAMPLES      0x00000008
96
97 CONSTANT: XACT_STATE_CREATED           0x00000001
98 CONSTANT: XACT_STATE_PREPARING         0x00000002
99 CONSTANT: XACT_STATE_PREPARED          0x00000004
100 CONSTANT: XACT_STATE_PLAYING           0x00000008
101 CONSTANT: XACT_STATE_STOPPING          0x00000010
102 CONSTANT: XACT_STATE_STOPPED           0x00000020
103 CONSTANT: XACT_STATE_PAUSED            0x00000040
104 CONSTANT: XACT_STATE_INUSE             0x00000080
105 CONSTANT: XACT_STATE_PREPAREFAILED     0x80000000
106
107 C-TYPE: XACT_READFILE_CB
108 C-TYPE: XACT_GETOVERLAPPEDRESULT_CB
109
110 : XACT_FLAG_GLOBAL_SETTINGS_MANAGEDATA ( -- z ) XACT_FLAG_MANAGEDATA ; inline
111
112
113 STRUCT: XACT_FILEIO_CALLBACKS
114     { readFileCallback              XACT_READFILE_CB* }
115     { getOverlappedResultCallback   XACT_GETOVERLAPPEDRESULT_CB* } ;
116 TYPEDEF: XACT_FILEIO_CALLBACKS* PXACT_FILEIO_CALLBACKS
117
118 C-TYPE: XACT_NOTIFICATION_CALLBACK
119
120 CONSTANT: XACT_RENDERER_ID_LENGTH                 0xff
121 CONSTANT: XACT_RENDERER_NAME_LENGTH               0xff
122
123 STRUCT: XACT_RENDERER_DETAILS
124     { rendererID     WCHAR[255] }
125     { displayName    WCHAR[255] }
126     { defaultDevice  BOOL       } ;
127 TYPEDEF: XACT_RENDERER_DETAILS* LPXACT_RENDERER_DETAILS
128
129 CONSTANT: XACT_ENGINE_LOOKAHEAD_DEFAULT 250
130
131 STRUCT: XACT_RUNTIME_PARAMETERS
132     { lookAheadTime                  DWORD                       }
133     { pGlobalSettingsBuffer          void*                       }
134     { globalSettingsBufferSize       DWORD                       }
135     { globalSettingsFlags            DWORD                       }
136     { globalSettingsAllocAttributes  DWORD                       }
137     { fileIOCallbacks                XACT_FILEIO_CALLBACKS       }
138     { fnNotificationCallback         XACT_NOTIFICATION_CALLBACK* }
139     { pRendererID                    PWSTR                       }
140     { pXAudio2                       IXAudio2*                   }
141     { pMasteringVoice                IXAudio2MasteringVoice*     } ;
142 TYPEDEF: XACT_RUNTIME_PARAMETERS* LPXACT_RUNTIME_PARAMETERS
143
144 STRUCT: XACT_STREAMING_PARAMETERS
145     { file          HANDLE }
146     { offset        DWORD  }
147     { flags         DWORD  }
148     { packetSize    WORD   } ;
149 TYPEDEF: XACT_STREAMING_PARAMETERS XACT_WAVEBANK_STREAMING_PARAMETERS
150 TYPEDEF: XACT_WAVEBANK_STREAMING_PARAMETERS* LPXACT_WAVEBANK_STREAMING_PARAMETERS
151 TYPEDEF: XACT_STREAMING_PARAMETERS* LPXACT_STREAMING_PARAMETERS
152
153 STRUCT: XACT_CUE_PROPERTIES
154     { friendlyName     CHAR[255] }
155     { interactive      BOOL }
156     { iaVariableIndex  XACTINDEX }
157     { numVariations    XACTINDEX }
158     { maxInstances     XACTINSTANCELIMIT }
159     { currentInstances XACTINSTANCELIMIT } ;
160 TYPEDEF: XACT_CUE_PROPERTIES* LPXACT_CUE_PROPERTIES
161
162 STRUCT: XACT_TRACK_PROPERTIES
163     { duration            XACTTIME      }
164     { numVariations       XACTINDEX     }
165     { numChannels         XACTCHANNEL   }
166     { waveVariation       XACTINDEX     }
167     { loopCount           XACTLOOPCOUNT } ;
168 TYPEDEF: XACT_TRACK_PROPERTIES* LPXACT_TRACK_PROPERTIES
169
170 STRUCT: XACT_VARIATION_PROPERTIES
171     { index                     XACTINDEX           }
172     { weight                    XACTVARIATIONWEIGHT }
173     { iaVariableMin             XACTVARIABLEVALUE   }
174     { iaVariableMax             XACTVARIABLEVALUE   }
175     { linger                    BOOL                } ;
176 TYPEDEF: XACT_VARIATION_PROPERTIES* LPXACT_VARIATION_PROPERTIES
177
178 STRUCT: XACT_SOUND_PROPERTIES
179     { category            XACTCATEGORY          }
180     { priority            BYTE                  }
181     { pitch               XACTPITCH             }
182     { volume              XACTVOLUME            }
183     { numTracks           XACTINDEX             }
184     { arrTrackProperties  XACT_TRACK_PROPERTIES } ;
185 TYPEDEF: XACT_SOUND_PROPERTIES* LPXACT_SOUND_PROPERTIES
186
187 STRUCT: XACT_SOUND_VARIATION_PROPERTIES
188     { variationProperties   XACT_VARIATION_PROPERTIES }
189     { soundProperties       XACT_SOUND_PROPERTIES     } ;
190 TYPEDEF: XACT_SOUND_VARIATION_PROPERTIES* LPXACT_SOUND_VARIATION_PROPERTIES
191
192 STRUCT: XACT_CUE_INSTANCE_PROPERTIES
193     { allocAttributes           DWORD                           }
194     { cueProperties             XACT_CUE_PROPERTIES             }
195     { activeVariationProperties XACT_SOUND_VARIATION_PROPERTIES } ;
196 TYPEDEF: XACT_CUE_INSTANCE_PROPERTIES* LPXACT_CUE_INSTANCE_PROPERTIES
197
198 STRUCT: WAVEBANKMINIWAVEFORMAT
199     { dwValue DWORD } ;
200
201 STRUCT: WAVEBANKSAMPLEREGION
202     { dwStartSample  DWORD }
203     { dwTotalSamples DWORD } ;
204
205 STRUCT: XACT_WAVE_PROPERTIES
206     { friendlyName      char[64]               }
207     { format            WAVEBANKMINIWAVEFORMAT }
208     { durationInSamples DWORD                  }
209     { loopRegion        WAVEBANKSAMPLEREGION   }
210     { streaming         BOOL                   } ;
211 TYPEDEF: XACT_WAVE_PROPERTIES* LPXACT_WAVE_PROPERTIES
212
213 STRUCT: XACT_WAVE_INSTANCE_PROPERTIES
214     { properties      XACT_WAVE_PROPERTIES }
215     { backgroundMusic BOOL                 } ;
216 TYPEDEF: XACT_WAVE_INSTANCE_PROPERTIES* LPXACT_WAVE_INSTANCE_PROPERTIES
217
218 STRUCT: XACTCHANNELMAPENTRY
219     { InputChannel    XACTCHANNEL }
220     { OutputChannel   XACTCHANNEL }
221     { Volume          XACTVOLUME  } ;
222 TYPEDEF: XACTCHANNELMAPENTRY* LPXACTCHANNELMAPENTRY
223
224 STRUCT: XACTCHANNELMAP
225     { EntryCount             XACTCHANNEL          }
226     { paEntries              XACTCHANNELMAPENTRY* } ;
227 TYPEDEF: XACTCHANNELMAP* LPXACTCHANNELMAP
228
229 STRUCT: XACTCHANNELVOLUMEENTRY
230     { EntryIndex   XACTCHANNEL }
231     { Volume       XACTVOLUME  } ;
232 TYPEDEF: XACTCHANNELVOLUMEENTRY* LPXACTCHANNELVOLUMEENTRY
233
234 STRUCT: XACTCHANNELVOLUME
235     { EntryCount             XACTCHANNEL             }
236     { paEntries              XACTCHANNELVOLUMEENTRY* } ;
237 TYPEDEF: XACTCHANNELVOLUME* LPXACTCHANNELVOLUME
238
239 CONSTANT: XACTNOTIFICATIONTYPE_CUEPREPARED                      1
240 CONSTANT: XACTNOTIFICATIONTYPE_CUEPLAY                          2
241 CONSTANT: XACTNOTIFICATIONTYPE_CUESTOP                          3
242 CONSTANT: XACTNOTIFICATIONTYPE_CUEDESTROYED                     4
243 CONSTANT: XACTNOTIFICATIONTYPE_MARKER                           5
244 CONSTANT: XACTNOTIFICATIONTYPE_SOUNDBANKDESTROYED               6
245 CONSTANT: XACTNOTIFICATIONTYPE_WAVEBANKDESTROYED                7
246 CONSTANT: XACTNOTIFICATIONTYPE_LOCALVARIABLECHANGED             8
247 CONSTANT: XACTNOTIFICATIONTYPE_GLOBALVARIABLECHANGED            9
248 CONSTANT: XACTNOTIFICATIONTYPE_GUICONNECTED                     10
249 CONSTANT: XACTNOTIFICATIONTYPE_GUIDISCONNECTED                  11
250 CONSTANT: XACTNOTIFICATIONTYPE_WAVEPREPARED                     12
251 CONSTANT: XACTNOTIFICATIONTYPE_WAVEPLAY                         13
252 CONSTANT: XACTNOTIFICATIONTYPE_WAVESTOP                         14
253 CONSTANT: XACTNOTIFICATIONTYPE_WAVELOOPED                       15
254 CONSTANT: XACTNOTIFICATIONTYPE_WAVEDESTROYED                    16
255 CONSTANT: XACTNOTIFICATIONTYPE_WAVEBANKPREPARED                 17
256 CONSTANT: XACTNOTIFICATIONTYPE_WAVEBANKSTREAMING_INVALIDCONTENT 18
257
258 CONSTANT: XACT_FLAG_NOTIFICATION_PERSIST 0x01
259
260 STRUCT: XACT_NOTIFICATION_DESCRIPTION
261     { type                     XACTNOTIFICATIONTYPE }
262     { flags                    BYTE                 }
263     { pSoundBank               IXACT3SoundBank*     }
264     { pWaveBank                IXACT3WaveBank*      }
265     { pCue                     IXACT3Cue*           }
266     { pWave                    IXACT3Wave*          }
267     { cueIndex                 XACTINDEX            }
268     { waveIndex                XACTINDEX            }
269     { pvContext                PVOID                } ;
270 TYPEDEF: XACT_NOTIFICATION_DESCRIPTION* LPXACT_NOTIFICATION_DESCRIPTION
271
272 STRUCT: XACT_NOTIFICATION_CUE
273     { cueIndex       XACTINDEX        }
274     { pSoundBank     IXACT3SoundBank* }
275     { pCue           IXACT3Cue*       } ;
276 TYPEDEF: XACT_NOTIFICATION_CUE* LPXACT_NOTIFICATION_CUE
277
278 STRUCT: XACT_NOTIFICATION_MARKER
279     { cueIndex         XACTINDEX        }
280     { pSoundBank       IXACT3SoundBank* }
281     { pCue             IXACT3Cue*       }
282     { marker           DWORD            } ;
283 TYPEDEF: XACT_NOTIFICATION_MARKER* LPXACT_NOTIFICATION_MARKER
284
285 STRUCT: XACT_NOTIFICATION_SOUNDBANK
286     { pSoundBank IXACT3SoundBank* } ;
287 TYPEDEF: XACT_NOTIFICATION_SOUNDBANK* LPXACT_NOTIFICATION_SOUNDBANK
288
289 STRUCT: XACT_NOTIFICATION_WAVEBANK
290     { pWaveBank  IXACT3WaveBank* } ;
291 TYPEDEF: XACT_NOTIFICATION_WAVEBANK* LPXACT_NOTIFICATION_WAVEBANK
292
293 STRUCT: XACT_NOTIFICATION_VARIABLE
294     { cueIndex             XACTINDEX         }
295     { pSoundBank           IXACT3SoundBank*  }
296     { pCue                 IXACT3Cue*        }
297     { variableIndex        XACTVARIABLEINDEX }
298     { variableValue        XACTVARIABLEVALUE }
299     { local                BOOL              } ;
300 TYPEDEF: XACT_NOTIFICATION_VARIABLE* LPXACT_NOTIFICATION_VARIABLE
301
302 STRUCT: XACT_NOTIFICATION_GUI
303     { reserved   DWORD } ;
304 TYPEDEF: XACT_NOTIFICATION_GUI* LPXACT_NOTIFICATION_GUI
305
306 STRUCT: XACT_NOTIFICATION_WAVE
307     { pWaveBank       IXACT3WaveBank*  }
308     { waveIndex       XACTINDEX        }
309     { cueIndex        XACTINDEX        }
310     { pSoundBank      IXACT3SoundBank* }
311     { pCue            IXACT3Cue*       }
312     { pWave           IXACT3Wave*      } ;
313 TYPEDEF: XACT_NOTIFICATION_WAVE* LPXACT_NOTIFICATION_WAVE
314
315 UNION-STRUCT: XACT_NOTIFICATION_UNION
316     { cue       XACT_NOTIFICATION_CUE }
317     { marker    XACT_NOTIFICATION_MARKER }
318     { soundBank XACT_NOTIFICATION_SOUNDBANK }
319     { waveBank  XACT_NOTIFICATION_WAVEBANK }
320     { variable  XACT_NOTIFICATION_VARIABLE }
321     { gui       XACT_NOTIFICATION_GUI }
322     { wave      XACT_NOTIFICATION_WAVE } ;
323 STRUCT: XACT_NOTIFICATION
324     { type                         XACTNOTIFICATIONTYPE    }
325     { timeStamp                    LONG                    }
326     { pvContext                    PVOID                   }
327     { union                        XACT_NOTIFICATION_UNION } ;
328 TYPEDEF: XACT_NOTIFICATION* LPXACT_NOTIFICATION
329
330 CONSTANT: XACT_FLAG_SOUNDBANK_STOP_IMMEDIATE  0x00000001
331 CONSTANT: XACT_SOUNDBANKSTATE_INUSE           0x00000080
332
333 COM-INTERFACE: IXACT3SoundBank f {00000000-0000-0000-0000-000000000000}
334     XACTINDEX GetCueIndex ( PCSTR szFriendlyName )
335     HRESULT GetNumCues ( XACTINDEX* pnNumCues )
336     HRESULT GetCueProperties ( XACTINDEX nCueIndex, LPXACT_CUE_PROPERTIES pProperties )
337     HRESULT Prepare ( XACTINDEX nCueIndex, DWORD dwFlags, XACTTIME timeOffset, IXACT3Cue** ppCue )
338     HRESULT Play ( XACTINDEX nCueIndex, DWORD dwFlags, XACTTIME timeOffset, IXACT3Cue** ppCue )
339     HRESULT Stop ( XACTINDEX nCueIndex, DWORD dwFlags )
340     HRESULT Destroy ( )
341     HRESULT GetState ( DWORD* pdwState ) ;
342
343 CONSTANT: XACT_WAVEBANKSTATE_INUSE            0x00000080
344 CONSTANT: XACT_WAVEBANKSTATE_PREPARED         0x00000004
345 CONSTANT: XACT_WAVEBANKSTATE_PREPAREFAILED    0x80000000
346
347 COM-INTERFACE: IXACT3WaveBank f {00000000-0000-0000-0000-000000000000}
348     HRESULT Destroy ( )
349     HRESULT GetNumWaves ( XACTINDEX* pnNumWaves )
350     XACTINDEX GetWaveIndex ( PCSTR szFriendlyName )
351     HRESULT GetWaveProperties ( XACTINDEX nWaveIndex, LPXACT_WAVE_PROPERTIES pWaveProperties )
352     HRESULT Prepare ( XACTINDEX nWaveIndex, DWORD dwFlags, DWORD dwPlayOffset, XACTLOOPCOUNT nLoopCount, IXACT3Wave** ppWave )
353     HRESULT Play ( XACTINDEX nWaveIndex, DWORD dwFlags, DWORD dwPlayOffset, XACTLOOPCOUNT nLoopCount, IXACT3Wave** ppWave )
354     HRESULT Stop ( XACTINDEX nWaveIndex, DWORD dwFlags )
355     HRESULT GetState ( DWORD* pdwState ) ;
356
357 COM-INTERFACE: IXACT3Wave f {00000000-0000-0000-0000-000000000000}
358     HRESULT Destroy ( )
359     HRESULT Play ( )
360     HRESULT Stop ( DWORD dwFlags )
361     HRESULT Pause ( BOOL fPause )
362     HRESULT GetState ( DWORD* pdwState )
363     HRESULT SetPitch ( XACTPITCH pitch )
364     HRESULT SetVolume ( XACTVOLUME volume )
365     HRESULT SetMatrixCoefficients ( UINT32 uSrcChannelCount, UINT32 uDstChannelCount,  float* pMatrixCoefficients )
366     HRESULT GetProperties ( LPXACT_WAVE_INSTANCE_PROPERTIES pProperties ) ;
367
368 : XACT_FLAG_CUE_STOP_RELEASE      ( -- z ) XACT_FLAG_STOP_RELEASE ; inline 
369 : XACT_FLAG_CUE_STOP_IMMEDIATE    ( -- z ) XACT_FLAG_STOP_IMMEDIATE ; inline 
370
371 : XACT_CUESTATE_CREATED           ( -- z ) XACT_STATE_CREATED ; inline 
372 : XACT_CUESTATE_PREPARING         ( -- z ) XACT_STATE_PREPARING ; inline 
373 : XACT_CUESTATE_PREPARED          ( -- z ) XACT_STATE_PREPARED ; inline 
374 : XACT_CUESTATE_PLAYING           ( -- z ) XACT_STATE_PLAYING ; inline 
375 : XACT_CUESTATE_STOPPING          ( -- z ) XACT_STATE_STOPPING ; inline 
376 : XACT_CUESTATE_STOPPED           ( -- z ) XACT_STATE_STOPPED ; inline 
377 : XACT_CUESTATE_PAUSED            ( -- z ) XACT_STATE_PAUSED ; inline 
378
379 COM-INTERFACE: IXACT3Cue f {00000000-0000-0000-0000-000000000000}
380     HRESULT Play (  )
381     HRESULT Stop ( DWORD dwFlags )
382     HRESULT GetState ( DWORD* pdwState )
383     HRESULT Destroy (  )
384     HRESULT SetMatrixCoefficients ( UINT32 uSrcChannelCount, UINT32 uDstChannelCount,  float* pMatrixCoefficients )
385     XACTVARIABLEINDEX GetVariableIndex ( PCSTR szFriendlyName )
386     HRESULT SetVariable ( XACTVARIABLEINDEX nIndex, XACTVARIABLEVALUE nValue )
387     HRESULT GetVariable ( XACTVARIABLEINDEX nIndex, XACTVARIABLEVALUE* nValue )
388     HRESULT Pause ( BOOL fPause )
389     HRESULT GetProperties ( LPXACT_CUE_INSTANCE_PROPERTIES* ppProperties )
390     HRESULT SetOutputVoices ( XAUDIO2_VOICE_SENDS* pSendList )
391     HRESULT SetOutputVoiceMatrix ( IXAudio2Voice* pDestinationVoice, UINT32 SourceChannels, UINT32 DestinationChannels, float* pLevelMatrix ) ;
392
393 : XACT_FLAG_ENGINE_CREATE_MANAGEDATA    ( -- z ) XACT_FLAG_MANAGEDATA ; inline 
394 : XACT_FLAG_ENGINE_STOP_IMMEDIATE       ( -- z ) XACT_FLAG_STOP_IMMEDIATE ; inline 
395
396 STRUCT: WAVEBANKREGION
397     { dwOffset       DWORD }
398     { dwLength       DWORD } ;
399
400 STRUCT: WAVEBANKENTRY
401     { dwFlagsAndDuration  DWORD                  }
402     { Format              WAVEBANKMINIWAVEFORMAT }
403     { PlayRegion          WAVEBANKREGION         }
404     { LoopRegion          WAVEBANKSAMPLEREGION   } ;
405
406 COM-INTERFACE: IXACT3Engine IUnknown {b1ee676a-d9cd-4d2a-89a8-fa53eb9e480b}
407     HRESULT GetRendererCount ( XACTINDEX* pnRendererCount )
408     HRESULT GetRendererDetails ( XACTINDEX nRendererIndex, LPXACT_RENDERER_DETAILS pRendererDetails )
409     HRESULT GetFinalMixFormat ( WAVEFORMATEXTENSIBLE* pFinalMixFormat )
410     HRESULT Initialize ( XACT_RUNTIME_PARAMETERS* pParams )
411     HRESULT ShutDown (  )
412     HRESULT DoWork (  )
413     HRESULT CreateSoundBank ( void* pvBuffer, DWORD dwSize, DWORD dwFlags, DWORD dwAllocAttributes, IXACT3SoundBank** ppSoundBank )
414     HRESULT CreateInMemoryWaveBank ( void* pvBuffer, DWORD dwSize, DWORD dwFlags, DWORD dwAllocAttributes, IXACT3WaveBank** ppWaveBank )
415     HRESULT CreateStreamingWaveBank ( XACT_WAVEBANK_STREAMING_PARAMETERS* pParms, IXACT3WaveBank** ppWaveBank )
416     HRESULT PrepareWave ( DWORD dwFlags,  PCSTR szWavePath, WORD wStreamingPacketSize, DWORD dwAlignment, DWORD dwPlayOffset, XACTLOOPCOUNT nLoopCount, IXACT3Wave** ppWave )
417     HRESULT PrepareInMemoryWave ( DWORD dwFlags, WAVEBANKENTRY entry, DWORD* pdwSeekTable, BYTE* pbWaveData, DWORD dwPlayOffset, XACTLOOPCOUNT nLoopCount, IXACT3Wave** ppWave )
418     HRESULT PrepareStreamingWave ( DWORD dwFlags, WAVEBANKENTRY entry, XACT_STREAMING_PARAMETERS streamingParams, DWORD dwAlignment, DWORD* pdwSeekTable, DWORD dwPlayOffset, XACTLOOPCOUNT nLoopCount, IXACT3Wave** ppWave )
419     HRESULT RegisterNotification ( XACT_NOTIFICATION_DESCRIPTION* pNotificationDesc )
420     HRESULT UnRegisterNotification ( XACT_NOTIFICATION_DESCRIPTION* pNotificationDesc )
421     XACTCATEGORY GetCategory ( PCSTR szFriendlyName )
422     HRESULT Stop ( XACTCATEGORY nCategory, DWORD dwFlags )
423     HRESULT SetVolume ( XACTCATEGORY nCategory, XACTVOLUME nVolume )
424     HRESULT Pause ( XACTCATEGORY nCategory, BOOL fPause )
425     XACTVARIABLEINDEX GetGlobalVariableIndex ( PCSTR szFriendlyName )
426     HRESULT SetGlobalVariable ( XACTVARIABLEINDEX nIndex, XACTVARIABLEVALUE nValue )
427     HRESULT GetGlobalVariable ( XACTVARIABLEINDEX nIndex,  XACTVARIABLEVALUE* nValue ) ;
428
429 CONSTANT: XACT_FLAG_API_AUDITION_MODE 1
430 CONSTANT: XACT_FLAG_API_DEBUG_MODE    2
431
432 CONSTANT: XACTENGINE_E_OUTOFMEMORY               0x80070000
433 CONSTANT: XACTENGINE_E_INVALIDARG                0x80070057
434 CONSTANT: XACTENGINE_E_NOTIMPL                   0x80004001
435 CONSTANT: XACTENGINE_E_FAIL                      0x80004005
436
437 CONSTANT: XACTENGINE_E_ALREADYINITIALIZED        0x8AC70001
438 CONSTANT: XACTENGINE_E_NOTINITIALIZED            0x8AC70002
439 CONSTANT: XACTENGINE_E_EXPIRED                   0x8AC70003
440 CONSTANT: XACTENGINE_E_NONOTIFICATIONCALLBACK    0x8AC70004
441 CONSTANT: XACTENGINE_E_NOTIFICATIONREGISTERED    0x8AC70005
442 CONSTANT: XACTENGINE_E_INVALIDUSAGE              0x8AC70006
443 CONSTANT: XACTENGINE_E_INVALIDDATA               0x8AC70007
444 CONSTANT: XACTENGINE_E_INSTANCELIMITFAILTOPLAY   0x8AC70008
445 CONSTANT: XACTENGINE_E_NOGLOBALSETTINGS          0x8AC70009
446 CONSTANT: XACTENGINE_E_INVALIDVARIABLEINDEX      0x8AC7000a
447 CONSTANT: XACTENGINE_E_INVALIDCATEGORY           0x8AC7000b
448 CONSTANT: XACTENGINE_E_INVALIDCUEINDEX           0x8AC7000c
449 CONSTANT: XACTENGINE_E_INVALIDWAVEINDEX          0x8AC7000d
450 CONSTANT: XACTENGINE_E_INVALIDTRACKINDEX         0x8AC7000e
451 CONSTANT: XACTENGINE_E_INVALIDSOUNDOFFSETORINDEX 0x8AC7000f
452 CONSTANT: XACTENGINE_E_READFILE                  0x8AC70010
453 CONSTANT: XACTENGINE_E_UNKNOWNEVENT              0x8AC70011
454 CONSTANT: XACTENGINE_E_INCALLBACK                0x8AC70012
455 CONSTANT: XACTENGINE_E_NOWAVEBANK                0x8AC70013
456 CONSTANT: XACTENGINE_E_SELECTVARIATION           0x8AC70014
457 CONSTANT: XACTENGINE_E_MULTIPLEAUDITIONENGINES   0x8AC70015
458 CONSTANT: XACTENGINE_E_WAVEBANKNOTPREPARED       0x8AC70016
459 CONSTANT: XACTENGINE_E_NORENDERER                0x8AC70017
460 CONSTANT: XACTENGINE_E_INVALIDENTRYCOUNT         0x8AC70018
461 CONSTANT: XACTENGINE_E_SEEKTIMEBEYONDCUEEND      0x8AC70019
462 CONSTANT: XACTENGINE_E_SEEKTIMEBEYONDWAVEEND     0x8AC7001a
463 CONSTANT: XACTENGINE_E_NOFRIENDLYNAMES           0x8AC7001b
464
465 CONSTANT: XACTENGINE_E_AUDITION_WRITEFILE             0x8AC70101
466 CONSTANT: XACTENGINE_E_AUDITION_NOSOUNDBANK           0x8AC70102
467 CONSTANT: XACTENGINE_E_AUDITION_INVALIDRPCINDEX       0x8AC70103
468 CONSTANT: XACTENGINE_E_AUDITION_MISSINGDATA           0x8AC70104
469 CONSTANT: XACTENGINE_E_AUDITION_UNKNOWNCOMMAND        0x8AC70105
470 CONSTANT: XACTENGINE_E_AUDITION_INVALIDDSPINDEX       0x8AC70106
471 CONSTANT: XACTENGINE_E_AUDITION_MISSINGWAVE           0x8AC70107
472 CONSTANT: XACTENGINE_E_AUDITION_CREATEDIRECTORYFAILED 0x8AC70108
473 CONSTANT: XACTENGINE_E_AUDITION_INVALIDSESSION        0x8AC70109
474