The XNA Framework provides audio playback through the Microsoft Cross-Platform Audio Creation Tool (XACT), and a simple
Some general terminology is provided below, followed by a more detailed discussion.
-
Wave
-
A wave is an audio data file used independently, or as a building block for creating game sound effects.
-
Wave Bank
-
A wave bank is multiple wave files logically grouped into a single file.
-
Sound Bank
-
A sound bank is a logically grouped collection of sounds (wave banks) and cues.
-
Cue
-
A cue allows a game programmer to play sounds. It is composed of one or more sounds, and is referenced through a sound bank.
Simple Audio Playback
Introducing XACT
XACT is at the heart of the XNA Framework Audio API. XACT combines two things. It combines a powerful graphical tool for authoring audio content with an API that is responsible for interpreting the authored XACT files and playing audio in response to game events. It is expected that core audio elements (waves) will be fully developed before using XACT.
Getting Started with XACT
What XACT Does
As a GUI-driven audio content creation system, XACT enables audio designers to load wave files into
groups, organize the files into discrete cues that can be activated by in-game events, and create
transitions between cues. XACT also enables designers to define variables that can be changed
in-game to modify audio settings. With these advanced tools, an audio designer might, for example, design
a set of car engine sounds for a racing game, and through the use of a variable, cause the car engine
sounds to increase or decrease in pitch and volume as the variable is controlled in-game by the XACT
engine.
To get started using XACT
-
Click the Start menu, and then click All Programs.
-
Click the XNA Game Studio folder, then Tools, and then click Microsoft Cross-Platform Audio Creation Tool (XACT).
For detailed information about how to author audio in the XACT tool, including information about categories, variables, and other advanced features, see XACT Audio Authoring.
Programming for XACT
Once you create an XACT project and save it as an .xap file, add the .xap file and any wave files the XACT project uses as input to your XNA Game Studio game. The Content Pipeline will build the needed files for you to access your content at run time.
An XACT project builds a set of files: a global settings file (.xgs), one or more wave banks (.xwb), and one or more sound banks (.xsb). These files may be provided to AudioEngine, WaveBank, and SoundBank constructors, respectively.
To initialize the XACT engine, you must create a new AudioEngine, and provide the path to the global settings file. Then, load any wave banks you need by creating new WaveBank
objects, and load any sound banks that you need by creating SoundBank objects. Once you load the necessary files, you can access cues created by the audio designer by calling GetCue
on the SoundBank that contains the Cue that you want to retrieve. Each Cue instance that you retrieve is unique, even when you retrieve multiple cues with the same name. This allows multiple instances of the same Cue to exist and play simultaneously.
You can play, pause, resume, and stop Cue objects by using the Play, Pause, Resume, and Stop methods, respectively. See How To: Play a Sound Using XACT for information about how to play a cue. For more information about how to pause, resume, and stop cues, see How To: Stop or Pause a Sound Using XACT.
Periodically, you must call Update to allow the audio engine to process audio data.
For more advanced projects, you can also access AudioCategory objects for controlling the playback of sound categories by calling AudioEngine.GetCategory. Also, to access variables that the audio designer has tied to playback changes in volume, pitch, or DSP effects, you can call AudioEngine.GetGlobalVariable. For more information about how to use categories to change sound volume levels, see How To: Change Sound Volume Levels Using XACT.
3D Audio