DirectX audio development roadmap

[This article is for Windows 8.x and Windows Phone 8.x developers writing Windows Runtime apps. If you’re developing for Windows 10, see the latest documentation]

This topic provides a list of resources for audio development in Windows Runtime apps using DirectX with C++. It covers XAudio2, Media Foundation, and the Windows Runtime XAML audio support types.

XAudio2 conceptual resources

XAudio2 is the audio mixing library for DirectX, and is primarily intended for developing high performance audio engines for games. For game developers who want to add sound effects and background music to their modern games, XAudio2 offers an audio graph and mixing engine with low-latency and support for dynamic buffers, synchronous sample-accurate playback, and implicit source rate conversion.

Topic Description

Introduction to XAudio2

The topic provides a list of the audio programming features supported by XAudio2.

Getting Started with XAudio2

This topic provides information on key XAudio2 concepts, XAudio2 versions, and the RIFF audio format.

Common Audio Programming Concepts

This topic provides an overview of common audio concepts with which an audio developer should be familiar.

XAudio2 Voices

This topic contains an overview of XAudio2 voices, which are used to submix, operate on and master audio data.

XAudio2 Callbacks

This topic covers the XAudio 2 callbacks, which are used to prevent breaks in the audio playback.

XAudio2 Audio Graphs

This topic covers the XAudio2 audio processing graphs, which take a set of audio streams from the client as input, process them, and deliver the final result to an audio device.

XAudio2 Audio Effects

The topic covers XAudio2 audio effects, which take incoming audio data and perform some operation on the data (such as a reverb effect) before passing it on.

Streaming Audio Data with XAudio2

This topic covers audio streaming with XAudio2.

X3DAudio

this topic covers X3DAudio, an API used in conjunction with XAudio2 to create the illusion of a sound coming from a point in 3D space.

XAudio2 Programming Reference

This section contains the complete reference for the XAudio2 APIs.

 

XAudio2 "how to" resources

Topic Description

How to: Initialize XAudio2

Learn how to initialize XAudio2 for audio playback by creating an instance of the XAudio2 engine, and creating a mastering voice.

How to: Load Audio Data Files in XAudio2

Learn how to populate the structures required to play audio data in XAudio2.

How to: Play a Sound with XAudio2

Learn how to play previously-loaded audio data in XAudio2.

How to: Use Submix Voices

Learn how to set groups of voices to send their output to the same submix voice.

How to: Use Source Voice Callbacks

Learn how to use XAudio2 source voice callbacks.

How to: Use Engine Callbacks

Learn how to use XAudio2 engine callbacks.

How to: Build a Basic Audio Processing Graph

Learn how to create an audio processing graph, constructed from a single mastering voice and a single source voice.

How to: Dynamically Add or Remove Voices From an Audio Graph

Learn how to add or remove submix voices from a graph that has been created following the steps in How to: Build a Basic Audio Processing Graph.

How to: Create an Effect Chain

Learn how to apply an effect chain to a voice to allow custom processing of the audio data for that voice.

How to: Create an XAPO

Learn how to implement IXAPO to create an XAudio2 audio processing object (XAPO).

How to: Add Run-time Parameter Support to an XAPO

Learn how to add run-time parameter support to an XAPO by implementing the IXAPOParameters interface.

How to: Use an XAPO in XAudio2

Learn how to use an effect implemented with as an XAPO in an XAudio2 effect chain.

How to: Use XAPOFX in XAudio2

Learn how to use one of the effects included in XAPOFX in an XAudio2 effect chain.

How to: Stream a Sound from Disk

Learn how to stream audio data in XAudio2 by creating a separate thread to read an audio buffer, and to use callbacks to control that thread.

How to: Integrate X3DAudio with XAudio2

Learn how to use X3DAudio to provide the volume and pitch values for XAudio2 voices as well as the parameters for the XAudio2 built-in reverb effect.

How to: Group Audio Methods as an Operation Set

Learn how to use XAudio2 operation sets to make a group of method calls take effect at the same time.

Debugging Audio Glitches in XAudio2

Learn how to set the debug logging level for XAudio2.

 

Media Foundation resources

Media Foundation (MF) is a media platform for streaming audio and video playback. You can use the Media Foundation APIs to stream audio and video encoded and compressed with a variety of algorithms. It is not designed for real-time gameplay scenarios; instead, it provides powerful tools and broad codec support for more linear capture and presentation of audio and video components.

Topic Description

About Media Foundation

This section contains general information about the Media Foundation APIs, and the tools available to support them.

Media Foundation: Essential Concepts

This topic introduces some concepts that you will need to understand before writing a Media Foundation application.

Media Foundation Architecture

This section describes the general design of Microsoft Media Foundation, as well as the media primitives and processing pipeline it uses.

Audio/Video Capture

This topic describes how to use Microsoft Media Foundation to perform audio and video capture.

Audio/Video Playback

This topic describes how to implement audio/video playback in your app.

Supported Media Formats in Media Foundation

This topic lists the media formats that Microsoft Media Foundation supports natively. (Third parties can support additional formats by writing custom plug-ins.)

Encoding and File Authoring

This topic describes how to use Microsoft Media Foundation to perform audio and video encoding, and author media files.

Windows Media Codecs

This topic describes how to use the features of the Windows Media Audio and Video codecs to produce and consume compressed data streams.

Media Foundation Programming Reference

This section contains reference information for the Media Foundation APIs.

Media Foundation SDK Samples

This section lists sample apps that demonstrate how to use Media Foundation.

 

Windows Runtime XAML media types

If you are using DirectX-XAML interop, you can incorporate the Windows Runtime XAML media APIs into your Windows Store apps using DirectX with C++ for simpler game scenarios.

Topic Description

Windows.UI.Xaml.Controls.MediaElement

XAML element that represents an object that contains audio, video, or both.

Quickstart: video and audio

Learn how to incorporate basic audio and video in your Windows Store app using C++, C#, or Visual Basic.

How to play a local media file using a MediaElement

Learn how to play a locally-stored media file in your Windows Store app using C++, C#, or Visual Basic.

How to enable low-latency playback

Learn how to stream a media file with low-latency in your Windows Store app using C++, C#, or Visual Basic.

Streaming media to devices using Play To

Learn how to use the Play To contract to stream media from your Windows Store app using C++, C#, or Visual Basic to another device.

 

Working with audio in your DirectX game

Creating a DirectX game