Fact-checked by Grok 2 weeks ago

XAudio2

XAudio2 is a low-level audio developed by that serves as a and mixing foundation for high-performance audio engines, particularly in games and interactive media on Windows and platforms. It enables developers to create complex audio graphs with support for (DSP) effects, submixing of audio streams, and native handling of compressed formats like ADPCM and xWMA, while offering low-latency rendering and multichannel surround sound capabilities without the six-channel limitations of its predecessors. Designed as a successor to DirectSound and the original XAudio, XAudio2 addresses performance issues in legacy systems by introducing a non-blocking model (with exceptions like voice destruction), multirate processing to optimize CPU usage, and per-voice filtering for dynamic sound transformations. Introduced in March 2008 with XAudio2 2.0 as part of the SDK, the has evolved through multiple versions to support advancing hardware and software ecosystems. Key iterations include XAudio2 2.7 for , which integrated with the legacy SDK until its retirement in 2010; version 2.8 for , which added (UWP) compatibility, removed certain legacy creation methods, and merged related libraries like X3DAudio; and version 2.9, released with , which introduced debugging flags, enhanced reverb for 7.1 audio systems, and a redistributable package for older Windows versions like 7 SP1 and 8.x. These updates ensure cross-platform compatibility, from Xbox 360, Xbox One, and Xbox Series X|S to modern Windows, while maintaining backward support for earlier applications through version-specific DLLs like XAUDIO2_9.DLL. In comparison to higher-level APIs like WASAPI or , XAudio2 prioritizes flexibility and minimal overhead for custom audio solutions, making it ideal for real-time applications requiring precise control over voice management, effects chaining, and spatial audio rendering. Its architecture revolves around source voices for raw audio input, filtering and effects voices for processing, and a mastering voice for final output, allowing developers to build scalable audio pipelines without excessive code complexity.

Introduction

Overview and Purpose

XAudio2 is a low-level audio (API) developed by for and mixing, serving as the foundational layer for high-performance audio rendering in interactive applications. It enables developers to build sophisticated audio engines capable of handling complex soundscapes with minimal latency, making it particularly suited for real-time environments where precise timing and dynamic manipulation of audio streams are essential. The primary purpose of XAudio2 is to provide a robust framework for game audio and multimedia playback, supporting features like low-latency buffering and sample-accurate scheduling to ensure synchronized audio output. As a successor to DirectSound on Windows platforms, it addresses limitations of its predecessor, such as support for compressed formats and multichannel audio beyond six channels, while integrating seamlessly with modern hardware. On , XAudio2 acts as a core component underlying higher-level tools like the Cross-Platform Audio Toolkit (XACT), enhancing low-level control for console-specific audio needs. XAudio2 targets Windows operating systems from XP onward, Xbox 360, Xbox One and later consoles, Windows Phone 8, and Universal Windows Platform (UWP) applications on Windows 10 and 11, ensuring cross-platform compatibility for developers building audio-intensive applications. It was initially released on March 7, 2008, as part of the DirectX SDK March 2008 edition, marking the debut of version 2.0 and establishing it as a key element in Microsoft's evolving audio ecosystem.

Design Goals

XAudio2 was developed as a flexible, low-level audio to replace DirectSound on Windows and the original XAudio on , providing a cross-platform foundation for high-performance audio processing in games. Its primary objectives included enabling low-latency audio handling suitable for real-time applications, while supporting complex sound designs through programmable software audio engines that leverage modern CPU capabilities. To address limitations in DirectSound, such as its buffer-based model and restrictions on multichannel audio limited to six channels, XAudio2 introduced native support for compressed formats like ADPCM and xWMA with runtime decompression, along with compatibility for any number of channels on supported hardware. The emphasizes non-blocking operations to facilitate asynchronous processing, with exceptions only for methods like DestroyVoice, ensuring smooth integration in multi-threaded environments without stalling the main game loop. Central to its design for game development is the ability to handle complex mixing of multiple audio streams with minimal CPU overhead, achieved through arbitrary levels of submixing and multirate processing in an audio graph structure. It prioritizes real-time (DSP) via a flexible for per-voice effects and filters, alongside spatial audio capabilities using X3DAudio for positioning, reverb, and modeling, enabling scalable audio systems for dynamic, immersive experiences. As of 2024, the XAudio2.9 redistributable includes enhancements like ARM64 support and up to 384 kHz sampling on Windows 11.

History

Development and Initial Release

XAudio2 was developed by as a foundational component of the multimedia API suite, emerging from the evolution of audio technologies initially created for the console. Development began during the early design phases of the around 2006-2007, with the original XAudio API tailored for the console's all-software audio model, leveraging increased CPU capabilities to handle complex processing without heavy reliance on . This effort integrated elements from the LEAP (Longhorn Extensible Audio Processor) technology developed for , resulting in XAudio2 as a cross-platform solution built from the ground up to advance beyond legacy systems. The primary motivations for creating XAudio2 stemmed from developer feedback highlighting DirectSound's aging architecture, which struggled with modern game audio demands such as low-latency mixing, support for compressed formats like ADPCM and xWMA, and advanced environmental modeling for composite sounds. DirectSound, introduced in the , had become outdated, lacking efficient handling of dynamic audio graphs and facing compatibility issues on newer operating systems like , where hardware acceleration was deprecated in favor of software-based . XAudio2 addressed these limitations by providing a flexible, non-blocking with built-in runtime decompression and a low-latency engine optimized for real-time game audio. XAudio2's initial release occurred in March 2008 as part of the March 2008 SDK (version 2.0), marking its debut for and , while a parallel approved version shipped in the XDK for console development. This launch followed a preview in the November 2007 XDK, allowing early testing by developers. The API was designed for seamless integration across platforms, supporting C++ programming for high-performance applications. Upon release, XAudio2 saw rapid early adoption through its incorporation into development tools, including the XACT3 audio content creation pipeline, and was quickly utilized in initial Windows games targeting 9 and 10. officially declared it the successor to DirectSound, recommending its use for new audio projects to leverage improved performance and format flexibility, which garnered positive feedback from console developers transitioning from the original XAudio.

Version History

XAudio2 version 2.0 was released in March 2008 as part of the SDK, providing initial support for , , , and platforms, along with a foundational voice-based system for audio mixing and processing. In June 2010, version 2.7 was introduced through the SDK and integrated into , incorporating debugging tools such as trace output and configuration options for developers, while lacking support for emerging WinRT environments. Known issues in the legacy SDK implementation of XAudio2 2.7, such as access violations during object destruction, have been documented but do not affect later versions. Version 2.8 arrived in 2012 alongside , enabling support for (UWP) and Windows Store applications; it removed dependencies on CoCreateInstance for object creation, integrated audio device enumeration directly into the API, and merged the X3DAudio and XAPOFX libraries into the core framework, though it did not include xWMA format support. The most recent stable release, version 2.9, launched on July 29, 2015, with and offered as a redistributable for SP1, 8, and 8.1; it introduced xWMA audio format support, the CreateHrtfApo function for head-related transfer function-based spatial audio, and enhanced reverb parameters optimized for 7.1 surround systems, alongside new engine creation flags like XAUDIO2_DEBUG_ENGINE. Since 2015, no major updates to XAudio2 have been released, with maintaining across versions to ensure existing applications continue to function on supported platforms.

Architecture

Core Engine and Voices

The XAudio2 engine serves as the foundational component for audio processing in applications, providing a low-level for signal mixing and manipulation. It is instantiated through the interface using CoCreateInstance or the convenience function XAudio2Create, which initializes an IXAudio2 object responsible for managing audio engine states, processing threads, voice graphs, and performance metrics. Each engine instance operates with its own independent audio processing thread, enabling concurrent handling of audio tasks without interference, and multiple instances can coexist within a single process to support isolated audio contexts, though debug configurations remain shared across them. This design allows developers to create dedicated engines for different audio subsystems, such as game sound effects versus , ensuring efficient and . At the heart of the XAudio2 engine are voices, which are the primary objects for processing, manipulating, and rendering audio data. There are three distinct types of voices, each fulfilling a specific role in the audio pipeline. Source voices act as entry points for client-provided audio data, accepting input buffers or streaming data in formats like PCM or compressed streams, and they handle initial decoding and basic filtering before passing the audio downstream. Submix voices serve as intermediate nodes, receiving audio from source or other submix voices to perform mixing, sample-rate conversion, and other preparatory processing without direct hardware access. Mastering voices represent the final stage, connecting directly to the audio output device and applying global adjustments like fixed-rate sample-rate conversion or clipping prevention before rendering the mixed audio to hardware; typically, one mastering voice exists per output device. Voices are created via dedicated methods on the IXAudio2 engine interface: CreateSourceVoice for source voices, CreateSubmixVoice for submix voices, and CreateMasteringVoice for mastering voices. These methods require parameters such as input count, sample (e.g., 44.1 kHz or 48 kHz), and format tags to define the audio characteristics, ensuring compatibility with the engine's processing capabilities. For instance, source voices specify the input format to enable proper decoding, while mastering voices often default to the device's native sample rate but can be configured for specific output configurations. The lifecycle of a voice begins with initialization through creation on the , followed by the submission of audio buffers—primarily for source voices, where data is queued via methods like SubmitSourceBuffer for playback scheduling. Once active, voices process audio in a sequential managed by the , applying volume controls, effects, and mixing as needed, until the voice reaches a stopped or destroyed state via explicit calls like DestroyVoice, which releases resources back to the . This managed lifecycle ensures low-latency operation and prevents resource leaks, with the overseeing to maintain real-time performance.

Audio Graphs and Processing

XAudio2 organizes audio processing into a (DAG) of interconnected voices, where source voices generate audio streams that feed into submix voices or directly to the single mastering voice via configurable send lists. This structure allows for flexible routing and hierarchical mixing, enabling developers to create complex audio scenarios such as layered sound effects or spatial audio without direct device access. The graph operates on 32-bit floating-point PCM data, processed in a dedicated to ensure low-latency mixing independent of the main application thread. In the processing pipeline, audio buffers are submitted exclusively to source voices using the SubmitSourceBuffer method, which queues raw audio data for playback. From there, the data flows through the graph: source voices route their output to submix voices for collective manipulation, such as adjusting overall volume with SetVolume or panning via channel matrix coefficients, before reaching the mastering voice for final output to the audio device. The mastering voice aggregates all incoming streams and handles device-specific rendering, ensuring synchronized playback across the graph. Voice sends provide the primary mechanism for routing audio within the graph, defined through the XAUDIO2_VOICE_SENDS structure during voice creation or updated dynamically with SetOutputVoices. Each send can include filter parameters, such as low-pass or high-pass filters applied via SetOutputFilterParameters, to modify audio en route to a destination voice. For effects like I3DL2 reverb, parameters are converted to native XAudio2 formats using ReverbConvertI3DL2ToNative and integrated into per-send effect chains, allowing targeted spatial processing without affecting the entire graph. To handle varying sample rates efficiently, XAudio2 implements multirate processing in submix voices, performing automatic on incoming audio from sources with mismatched rates, using the XAUDIO2_DEFAULT_FREQ_RATIO for resampling. This conversion ensures compatibility across the graph while minimizing CPU overhead, as all sends from a source voice must target destinations at the same sample rate to avoid redundant processing. Effects within the chain may alter channel counts but preserve the sample rate, maintaining pipeline integrity.

Features

Audio Formats and Effects

XAudio2 supports a variety of audio formats for input buffers, including linear 16-bit PCM, linear 32-bit floating-point PCM, 16-bit ADPCM with native run-time , and xWMA on and later versions. The XMA format is supported on platforms. Multichannel audio is handled up to the limits of the underlying hardware, without a fixed channel cap like previous APIs, enabling flexible configurations such as mono to 5.1 or stereo to conversions during processing. The provides built-in () effects, including a Princeton Digital Reverb implemented as an Audio Processing Object (APO) and a volume meter for monitoring audio levels. Additional effects are available through the XAPOFX library, which includes FXReverb for customizable reverb simulation, FXEcho for delay-based echoing, and FXEQ as a four-band supporting sample rates from 22 kHz to 48 kHz on floating-point audio. These effects, along with user-defined ones via the IXAPO interface, are applied to voices through configurable effect chains specified in XAUDIO2_EFFECT_DESCRIPTOR arrays, allowing sequential processing such as reverb followed by equalization. Reverb parameters can be derived from I3DL2 standards using conversion functions like ReverbConvertI3DL2ToNative, facilitating compatibility with established audio guidelines. Spatial audio capabilities in XAudio2 integrate with the X3DAudio API, which calculates 3D positioning parameters including emitter and listener orientations to simulate in virtual environments. These calculations produce settings for volume, pitch, and low-pass filtering to emulate distance and occlusion effects, applied directly to voice parameters. In XAudio2 version 2.9, (HRTF) processing is supported via the CreateHrtfApo function, enabling binaural rendering for immersive 3D audio on compatible hardware. Each voice in XAudio2 includes built-in filtering options, such as low-pass, high-pass, and band-pass filters, configurable via SetFilterParameters to shape efficiently without additional effect chains. Volume control is available per-voice through SetVolume, supporting dynamic level adjustments, while (LFE) channels in multichannel formats are routed and attenuated independently to match output configurations. These features are applied within the audio graph structure, where voices process and route signals accordingly.

Performance Optimizations

XAudio2 achieves low through its asynchronous submission and callback , which allow developers to queue audio data without blocking the main application . Buffers are submitted via the IXAudio2SourceVoice::SubmitSourceBuffer , enabling continuous playback while the application performs other tasks, with callbacks like OnBufferStart signaling when new data can be prepared for low- streaming scenarios. This design minimizes blocking operations, as most API calls—excluding voice destruction, engine stopping, and release—do not interrupt the audio processing , supporting applications such as . Multithreading in XAudio2 enhances by dedicating a separate audio thread to each engine instance, allowing independent operation and reducing contention on the main thread. Critical sections in methods ensure but are optimized to avoid significant delays, maintaining smooth audio flow. For , XAudio2 provides data through IXAudio2::GetPerformanceData, which reports metrics like glitches and CPU usage without imposing substantial overhead in release configurations. Resource management in XAudio2 focuses on efficiency to prevent allocation bottlenecks, with voice pooling recommended to reuse source and submix voices instead of repeatedly creating and destroying them, thereby avoiding the computational cost of initialization. Format conversions, including sample rate adjustments, are optimized within submix voices to handle discrepancies between input and output rates seamlessly, reducing unnecessary CPU cycles during processing. Hardware integration in XAudio2 promotes efficient use of audio devices by leveraging standard Windows APIs for automatic enumeration and selection of output endpoints, enabling dynamic switching when devices change. It supports multichannel configurations without the previous 6-channel limitation, allowing up to the device's maximum channels—such as 7.1 or beyond—on compatible audio cards for immersive audio delivery. This is facilitated through the IXAudio2::CreateMasteringVoice method, which directs output to specified devices while maintaining low-latency performance.

Comparisons with Other APIs

Versus DirectSound

XAudio2 represents a significant evolution from DirectSound, its predecessor in the Microsoft DirectX audio stack, by introducing a more flexible and efficient architecture designed for modern hardware and multithreaded applications. While DirectSound, introduced in 1995, relied on a buffer-centric model where audio playback was managed through primary and secondary buffers for mixing and hardware acceleration, XAudio2 employs a voice-based audio graph system comprising source voices for input, submix voices for processing chains, and a mastering voice for output. This shift enables arbitrary levels of submixing and dynamic signal processing, addressing DirectSound's limitations in handling complex audio scenarios without hardware dependencies. Additionally, XAudio2 provides enhanced cross-platform compatibility, sharing its core design with the Xbox 360 audio subsystem, which facilitates development across Windows and console environments. In terms of features, XAudio2 closes several gaps present in DirectSound, particularly regarding audio format support and spatial audio capabilities. DirectSound required audio data to be decompressed into uncompressed PCM format prior to playback, lacking native handling for compressed streams and thus increasing memory and processing demands. In contrast, XAudio2 natively supports compressed formats such as ADPCM with runtime decompression and xWMA on Windows, allowing developers to stream compressed data directly without prior expansion. Furthermore, while DirectSound imposed a limit of six channels for multichannel audio (typically 5.1 surround), XAudio2 removes this restriction, supporting unlimited channels on hardware capable of multichannel output, which enables more immersive spatial audio configurations. Performance improvements in XAudio2 stem from its optimized design for contemporary systems, offering lower latency and reduced CPU overhead compared to DirectSound. DirectSound's kernel-mode mixing, especially in its emulated software form post-Windows Vista, introduced higher latency due to blocking operations and inefficient buffer management on multi-core processors. XAudio2 mitigates this through a non-blocking API that allows asynchronous submission of audio buffers and multirate processing, where audio can be resampled at the source rate if below 48 kHz, significantly lowering CPU usage for applications like games. These enhancements make XAudio2 suitable for real-time audio demands, with reported latency reductions enabling smoother integration in latency-sensitive scenarios. DirectSound was officially marked as a component following the release of in 2007, with disabled in favor of software emulation to align with the Vista audio stack. XAudio2 emerged as its designated successor in the March 2008 DirectX SDK, providing a forward-compatible path for developers migrating from DirectSound's aging model to a more robust framework that supports ongoing Windows evolution. This transition was driven by the need to retire DirectSound's outdated dependencies on while preserving core functionality through XAudio2's extensible voice system.

Versus WASAPI

XAudio2 operates as a higher-level built atop lower-level audio interfaces such as WASAPI, providing built-in mixing and (DSP) capabilities that simplify complex audio scenarios. In contrast, WASAPI delivers direct access to audio hardware through its exclusive and shared modes, bypassing additional processing layers to enable raw, unadulterated data transfer without inherent mixing or effects. This architectural difference positions XAudio2 as an intermediary that leverages WASAPI for output on and later, while adding features like format conversion and submixing to streamline development. For use cases, XAudio2 excels in scenarios requiring intricate audio management, such as game development involving multiple simultaneous streams, dynamic effects, and spatial audio integration, where its audio graph allows for efficient handling of sound effects and without extensive custom code. WASAPI, however, is better suited for straightforward, low-overhead applications like basic playback or audio recording, particularly in professional environments where bit-perfect output and minimal intervention are prioritized over complex orchestration. Regarding latency and overhead, XAudio2 introduces a modest amount of additional from its internal mixing pipeline, typically in the range of a few milliseconds, but this enables greater dynamic control and sample-accurate synchronization for interactive applications. WASAPI in exclusive mode achieves the lowest possible by directly interfacing with and avoiding the system mixer, though it demands manual implementation of mixing and buffering logic, increasing developer effort for multi-source scenarios. In shared mode, WASAPI incurs similar overhead to XAudio2 due to the audio engine's involvement but lacks the latter's built-in optimizations for real-time adjustments. In terms of , XAudio2 abstracts underlying changes and supports a broad range of formats and multichannel configurations across compatible , reducing the need for application-level handling of audio endpoint variations. WASAPI, by exposing raw audio endpoints and requiring explicit management, offers finer control for workflows but necessitates more code to manage multi- environments or hot-plugging events.

Development and Usage

Integration in Applications

XAudio2 is compatible with Windows 7 and later versions, where it ships natively as part of the operating system—specifically, version 2.7 with , 2.8 with and 8.1, and 2.9 with and subsequent releases. For older systems like and , support is provided through redistributable DLLs from the SDK, such as xaudio2_7.dll. Additionally, XAudio2 version 2.8 and later offers compatibility with (UWP) applications on and beyond. Deployment of XAudio2 in applications requires including the appropriate redistributable DLLs in installers when targeting older operating systems, such as the XAudio 2.9 package (Microsoft.XAudio2.Redist) for SP1 and later, which places XAUDIO2_9REDIST.DLL in the application's directory. Recent versions of this package, such as 1.2.13, also include support for ARM64 architectures. To handle multiple versions gracefully, developers use version-specific creation functions like XAudio2Create, which allows the runtime to detect and utilize the system's native implementation if available, falling back to the bundled DLL otherwise. This approach ensures broad compatibility without overwriting system files. XAudio2 is primarily integrated into game development workflows, serving as the low-level audio backend for engines like on Windows and Xbox platforms, where it handles mixing and processing for immersive soundscapes. It also supports custom audio implementations in via native plugins, enabling high-performance mixing for complex game audio scenarios. Beyond gaming, XAudio2 finds use in multimedia applications requiring advanced real-time audio mixing and effects. For device handling, XAudio2 automatically directs output to the system's default audio endpoint, providing seamless fallback if the primary device becomes unavailable. Applications can enumerate available audio endpoints using standard Windows APIs like WASAPI, allowing dynamic selection and integration with user-configured hardware setups.

Programming Model

XAudio2 initialization begins with setting up the (COM) environment using CoInitializeEx(NULL, COINIT_MULTITHREADED) to ensure thread-safe operation. Next, an IXAudio2 instance is created via the XAudio2Create function, which takes pointers for the output interface, optional flags (such as 0 for default behavior), and a processor architecture identifier like XAUDIO2_DEFAULT_PROCESSOR. To handle engine-level events such as processing passes or critical errors, developers implement the IXAudio2EngineCallback interface and register it using the RegisterForCallbacks method on the IXAudio2 object. The core workflow in XAudio2 revolves around creating voice objects, which serve as the primary units for audio processing and playback. Source voices are instantiated using CreateSourceVoice on the IXAudio2 instance, specifying input format details like sample rate and channel count. Audio data is then submitted to these voices through XAUDIO2_BUFFER structures via the SubmitSourceBuffer method, allowing specification of buffer contents, flags for looping or end-of-stream, and optional callback contexts. Playback is controlled by calling Start or Stop on the voice interface, while events such as buffer completion are managed through an implemented IXAudio2VoiceCallback interface, enabling asynchronous notifications for seamless audio handling. Advanced patterns in XAudio2 support flexible audio management, including dynamic creation and destruction of voices using CreateSourceVoice and DestroyVoice to adapt to runtime needs without restarting the engine. For long-duration audio, buffer streaming is achieved by submitting multiple XAUDIO2_BUFFER instances in a queue, often managed via a separate thread that asynchronously reads data from disk and signals buffer completion through callbacks to maintain continuous playback. Effect parameters can be updated dynamically on active voices using SetEffectParameters, which modifies settings for attached effects like reverb or equalization without interrupting the audio stream. Error handling in XAudio2 relies on standard HRESULT return codes from all API methods, where developers check for success (S_OK) or specific failures like invalid parameters to ensure robust operation. For debugging, the XAudio2SetDebugConfiguration function applies an XAUDIO2_DEBUG_CONFIGURATION structure to enable trace logging, set verbosity levels, and output warnings or errors to the debug console, facilitating identification of issues like buffer underruns.

References

  1. [1]
    XAudio2 Introduction - Win32 apps | Microsoft Learn
    Jan 7, 2021 · XAudio2 is a low-level audio API. It provides a signal processing and mixing foundation for games that is similar to its predecessors, DirectSound and XAudio.
  2. [2]
    XAudio2 Versions - Win32 apps - Microsoft Learn
    Feb 3, 2021 · XAudio2 is a cross-platform API that has shipped for use on Xbox 360 as well as versions of Windows, including Windows XP, Windows Vista, Windows 7, and ...Missing: documentation | Show results with:documentation
  3. [3]
    Microsoft DirectX SDK March 2008 - Internet Archive
    Sep 23, 2018 · Microsoft DirectX SDK March 2008 ; Publication date: 2008-03-07 ; Topics: directx sdk ; Item Size: 442.3M.
  4. [4]
    Sponsored Feature: An Introduction and Overview of XAudio2
    Jan 28, 2008 · The first approved version for Xbox 360 and release version for Windows will be available in the March 2008 XDK/SDK, with updates and ...
  5. [5]
    DirectX Factor - Windows 8 Sound Generation with XAudio2
    While it's theoretically possible to access XAudio2 from any programming language supported by Windows 8, the most natural and easiest language for XAudio2 is C ...Missing: development history
  6. [6]
    XAudio2 Debugging Facilities - Win32 apps - Microsoft Learn
    Nov 19, 2021 · The debugging facilities are always available for XAUDIO2 in Windows 8.x, Windows 10, Windows 11, and when using the XAudio2Redist package. For ...Missing: 2.7 | Show results with:2.7
  7. [7]
    Known Issues - XAudio 2.7
    Oct 9, 2015 · In some situations the XAudio DLL itself is unloaded before the XAudio2 objects are completely destroyed, thus leading to an access violation.Missing: changes | Show results with:changes
  8. [8]
    Developer guide for redistributable version of XAudio 2.9 - Win32 apps
    Jun 16, 2021 · Choosing which headers to include. The XAudio 2.9 NuGet package includes the same XAudio2 header files that are included in the Windows 10 SDK.
  9. [9]
    XAudio2 Key Concepts - Win32 apps | Microsoft Learn
    Jan 7, 2021 · Voices are the objects XAudio2 use to process, to manipulate, and to play audio data. There are three types of voices in XAudio2.
  10. [10]
    XAudio2 Voices - Win32 apps - Microsoft Learn
    Jan 7, 2021 · There are three types of XAudio2 voice objects: source, submix, and mastering voices. Source voices operate on audio data provided by the client.
  11. [11]
    How to: Initialize XAudio2 - Win32 apps | Microsoft Learn
    Aug 14, 2024 · In this article​​ You initialize XAudio2 for audio playback by creating an instance of the XAudio2 engine, and then creating a mastering voice. ...
  12. [12]
    XAudio2 Audio Graph - Win32 apps | Microsoft Learn
    Jan 7, 2021 · The XAudio2 audio graph is a set of voices and their connections that processes audio streams, taking input and delivering the final result.Missing: goals | Show results with:goals
  13. [13]
    How to: Build a Basic Audio Processing Graph - Win32 apps
    ### Summary of Basic Audio Processing Graph, Pipeline, Buffer Submission, and Routing
  14. [14]
    XAudio2 Audio Effects - Win32 apps
    ### Summary of Applying Effects like I3DL2 Reverb and Filter Parameters in XAudio2
  15. [15]
    How to: Use Submix Voices - Win32 apps
    ### Summary of Submix Voices, Multirate Processing, and Sample-Rate Conversion in XAudio2
  16. [16]
    XAPOFX Overview - Win32 apps - Microsoft Learn
    Jan 7, 2021 · XAudio2 Implicit Effects. In addition to the library of XAPOs provided by XAPOFX, XAudio2 has built-in reverb and volume meter audio effects.
  17. [17]
    ReverbConvertI3DL2ToNative function (xaudio2fx.h) - Win32 apps
    Feb 22, 2024 · Inline function that converts I3DL2 (Interactive 3D Audio Rendering Guidelines Level 2.0) parameters to native XAudio2 parameters.Missing: reverb | Show results with:reverb
  18. [18]
    X3DAudio Overview - Win32 apps - Microsoft Learn
    Jan 7, 2021 · X3DAudio is an API used with XAudio2 to position sound in 3D space, using listeners and emitters to manage sounds.
  19. [19]
    How to: Integrate X3DAudio with XAudio2 - Win32 apps
    Aug 23, 2022 · You can use X3DAudio to provide the volume and pitch values for XAudio2 voices and the parameters for the XAudio2 built in reverb effect.
  20. [20]
    CreateHrtfApo function (hrtfapoapi.h) - Win32 apps | Microsoft Learn
    Creates an instance of the IXAPO interface for head-related transfer function (HRTF) processing.
  21. [21]
    XAudio2 Volume and Pitch Control - Win32 apps - Microsoft Learn
    Jan 7, 2021 · XAudio2 automatically adjusts volume levels based on the user's speaker settings to maintain a consistent volume level across configurations.<|control11|><|separator|>
  22. [22]
    How to: Play a sound with XAudio2 - Win32 apps | Microsoft Learn
    Aug 15, 2024 · This topic describes the minimum steps required to play previously-loaded audio data in XAudio2.
  23. [23]
    IXAudio2VoiceCallback::OnBufferStart (xaudio2.h) - Win32 apps
    Feb 22, 2024 · It is also safe to use this callback to write audio data to the buffer directly, which can be useful for low-latency streaming scenarios.
  24. [24]
  25. [25]
    Debugging Audio Glitches in XAudio2 - Win32 apps | Microsoft Learn
    Jan 7, 2021 · Glitches can occur in XAudio2, this topic covers how they are reported and some approaches to fixing them.Missing: 2.7 | Show results with:2.7
  26. [26]
    IXAudio2Voice::DestroyVoice (xaudio2.h) - Win32 - Microsoft Learn
    Oct 4, 2021 · Destroys the voice. If necessary, stops the voice and removes it from the XAudio2 graph ... voice pooling strategies to reuse voices rather than ...
  27. [27]
    IXAudio2::CreateMasteringVoice (xaudio2.h) - Win32 apps
    Feb 1, 2023 · Mastering voices receive the output of one or more source or submix voices. They process the data, and send it to the audio output device.
  28. [28]
    Real-time Audio in Windows Store and Windows Phone Apps
    May 15, 2014 · XAudio2 is purposely built to provide signal processing and mixing foundation for developing high performance audio engines for games. In terms ...
  29. [29]
    About WASAPI - Win32 apps - Microsoft Learn
    Jul 25, 2025 · Through the session abstraction, a WASAPI client can identify an audio stream as a member of a group of related audio streams. The system ...
  30. [30]
    Sound Classes in Unreal Engine - Epic Games Developers
    Available on Windows and Xbox with the XAudio2 backend. Output to Master EQ Submix: If enabled, sends the sounds within the output for this Sound Class to the ...
  31. [31]
    Playing 5.1 surround audio - Questions & Answers - Unity Discussions
    Sep 18, 2015 · Turns out this is not really a unity issue but an XAudio2 issue. XAudio2 is an audio engine used in xbox 360 and some windows installs.
  32. [32]
    IXAudio2 (xaudio2.h) - Win32 apps - Microsoft Learn
    Feb 22, 2024 · IXAudio2 is the interface for the XAudio2 object that manages all audio engine states, the audio processing thread, the voice graph, and so forth.
  33. [33]
    Getting started with XAudio2 - Win32 apps - Microsoft Learn
    Jan 7, 2021 · Introduces key concepts for using XAudio2. XAudio2 Versions, Describes the versions of the XAudio2 libraries available.
  34. [34]
    Voices - Win32 apps | Microsoft Learn
    Jan 7, 2021 · Describes how to use XAudio2 submix voices. XAudio2 Sample Rate Conversions. Explains the process of sample rate conversion in XAudio2.<|control11|><|separator|>
  35. [35]
    How to: Stream a sound from disk - Win32 apps - Microsoft Learn
    Jan 7, 2021 · You can stream audio data in XAudio2 by creating a separate thread and perform buffer reads of the audio data in the streaming thread, and then ...Missing: parameters | Show results with:parameters<|control11|><|separator|>
  36. [36]
    XAudio2 Error Codes - Win32 - Microsoft Learn
    Mar 22, 2021 · In this article​​ XAudio2 specific error codes returned by XAudio2 methods. Returned by XAudio2 for certain API usage errors (invalid calls and ...