Skip to main content
Use o XAudio2 para carregar e reproduzir um arquivo .wav no XBOX One. As seções a seguir descrevem como usar o XAudio2 para carregar e reproduzir um som no XBOX One Development Kit. Para obter um exemplo funcional do XAudio2, baixe o exemplo SimplePlaySound dos exemplos do Microsoft Game Development Kit (GDK).

Tipos de dados importantes do XAudio2

O XAudio2 fornece vários tipos de dados para ajudar você a reproduzir efeitos sonoros no XBOX One. Para reproduzir um arquivo .wav, você precisa no mínimo dos tipos de dados a seguir.
  • IXAudio2: esta é a interface do objeto XAudio2 que gerencia todos os estados do Audio Engine, o thread de processamento de áudio, o grafo de vozes e muito mais.
  • IXAudio2SourceVoice: use uma voz de origem para enviar dados de áudio ao pipeline de processamento do XAudio2. Para serem ouvidos, os dados de voz devem ser enviados a uma voz de masterização.
  • IXAudio2MasteringVoice: use este tipo de dados para representar o dispositivo de saída de áudio. Buffers de dados não podem ser enviados diretamente às vozes de masterização. No entanto, para serem ouvidos, os dados enviados a outros tipos de vozes devem ser direcionados a uma voz de masterização.
Além disso, os tipos de dados a seguir podem ser úteis.
  • PlaySoundVoiceContext: use este tipo de dados para liberar o buffer de áudio após o processamento.
  • IXAudio2VoiceCallback: este tipo de dados contém métodos que notificam o cliente quando determinados eventos ocorrem em um IXAudio2SourceVoice específico.

Inicializando o XAudio2

CoInitializeEx() inicializa o Component Object Model (COM) para uso pelo thread atual. Defina o primeiro parâmetro como NULL. Defina o segundo parâmetro como COINIT_MULTITHREADED. XAudio2Create() cria um novo objeto XAudio2 e retorna um ponteiro para sua interface IXAudio2. Verifique se XAUDIO2_PROCESSOR está definido com um valor válido. O valor XAUDIO2_USE_DEFAULT_PROCESSOR é recomendado para permitir que o sistema operacional escolha o processador ideal com base na plataforma de hardware. IXAudio2::CreateMasteringVoice() cria e configura uma voz de masterização e aponta para ela com o ponteiro fornecido pelo usuário.

C++

Carregando um arquivo .wav

Para acessar o arquivo de áudio, use uma instância da classe WaveFile.
  • Para abrir um arquivo .wav e recuperar algumas informações armazenadas no cabeçalho do arquivo, chame WaveFile::Open(LPCWSTR strFileName).
  • Para determinar o formato do arquivo .wav, chame WaveFile::GetFormat().
  • Para determinar o número de bytes e amostras no arquivo .wav, chame WaveFile::GetDuration().
  • Para ler os dados de amostra na memória, chame WaveFile::ReadSample().

C++

Definindo um caminho de arquivo para um arquivo .wav

Para carregar e usar arquivos de áudio, use o código a seguir para encontrar o local de instalação do seu projeto no dispositivo local. Armazene o local de instalação em uma cadeia de caracteres. Acrescente o local do arquivo de áudio ao final da cadeia de caracteres do local de instalação.

C++

Reproduzindo um arquivo .wav

Crie uma classe IXAudio2::CreateSourceVoice() e use-a para enviar dados de áudio ao pipeline de processamento do XAudio2. Para que os dados de voz sejam ouvidos, você deve enviá-los a uma voz de masterização diretamente ou por meio de vozes de submix intermediárias. Para armazenar os detalhes do arquivo de áudio, crie um XAUDIO2_BUFFER. Depois de criar e inicializar o buffer do XAudio2 e a voz de origem, chame IXAudio2SourceVoice::SubmitSourceBuffer() para adicionar o buffer de áudio à fila de entrada da voz. Observe que os dados de áudio apontados por XAUDIO2_BUFFER::pAudioData devem permanecer válidos até que o XAudio2 termine de reproduzir o conteúdo do buffer. Depois que a fila de entrada da voz for preenchida, chame IXAudio2SourceVoice::Start() para reproduzir o próximo som da fila.

C++

Encerrando um arquivo .wav

Para determinar se um arquivo .wav foi reproduzido até o fim, você precisará do estado atual da voz de origem. Crie um struct XAUDIO2_VOICE_STATE e chame IXAudio2SourceVoice::GetState(). Se o áudio tiver sido reproduzido até o fim, chame IXAudio2SourceVoice::DestroyVoice().

C++

Confira também

Visão geral do XAudio2 Visão geral do ADPCM Codificador de linha de comando ADPCM
Last modified on October 6, 2026