This document describes new features of this Microsoft Cross-Platform Audio Creation Tool (XACT) release.
You can now apply the ADPCM compression format in a compression preset. This will allow ADPCM compression of wave files as they are built into wave banks. For more information, see Compression Presets and ADPCM Compression.
XACT now features X3DAudio functionality to provide calculation of 3D audio DSP effects. These effects can be calculated by calling the XACT3DCalculate function and applied to cues using the XACT3DApply function.
Digital Signal Processing (DSP) Presets are now available in XACT. Currently, only one preset type, Reverb, is available.
To get started using DSP Presets in your project, see XACT DSP Presets.
The runtime XACT engine is now implemented as a COM object (IXACTEngine) with the CLSID CLSID_XACTEngine (defined in xact.h).
In addition, if the DirectX SDK is installed on a system, there is an auditioning version of the XACT engine available with the CLSID CLSID_XACTAuditionEngine.
Both COM objects provide a single public interface: IXACTEngine (defined in xact.h). There is no difference between the public interfaces provided by the two COM objects, and they can be used in exactly the same way by client code.
The XACT engine's COM support provides the following:
The XACT engine's COM support is intentionally limited in the following ways:
Here is sample code showing standard COM object creation:
#define _WIN32_DCOM #include <windows.h> #include <xact.h> void main() { IXACTEngine* pXact = NULL; XACT_RUNTIME_PARAMETERS xactParameters; // TODO: Set up xactParameters as desired HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED); //you may also use COINIT_APARTMENTTHREADED if (SUCCEEDED(hr)) { hr = CoCreateInstance(__uuidof(XACTEngine), NULL, CLSCTX_INPROC_SERVER, __uuidof(IXACTEngine), (void**)&pXact); } if (SUCCEEDED(hr)) { hr = pXact->Initialize(&xactParameters); } // TODO: Call all top-level XACT functions via the pXact pointer if (pXact) { pXact->ShutDown(); pXact->Release(); } CoUninitialize(); }
Alternatively, you can use the XACTCreateEngine function to create an instance of the XACT engine. Regardless of the method you choose, you must call CoInitializeEx before attempting to create an instance of an IXACTEngine.