Skip to main content
Utilisez XAudio2 pour charger et lire un fichier .wav sur XBOX One. Les sections suivantes décrivent comment utiliser XAudio2 pour charger et lire un son sur la trousse de développement XBOX One. Pour obtenir un exemple fonctionnel de XAudio2, téléchargez l’exemple SimplePlaySound à partir des exemples du Microsoft Game Development Kit (GDK).

Types de données XAudio2 importants

XAudio2 fournit plusieurs types de données pour vous aider à lire des effets sonores sur XBOX One. Pour lire un fichier .wav, vous avez besoin au minimum des types de données suivants.
  • IXAudio2 : il s’agit de l’interface de l’objet XAudio2 qui gère tous les états du moteur audio, le thread de traitement audio, le graphe de voix, et plus encore.
  • IXAudio2SourceVoice : utilisez une voix source pour soumettre des données audio au pipeline de traitement de XAudio2. Pour être entendues, les données de voix doivent être envoyées à une voix de mastering.
  • IXAudio2MasteringVoice : utilisez ce type de données pour représenter le périphérique de sortie audio. Les mémoires tampons de données ne peuvent pas être soumises directement aux voix de mastering. Cependant, pour être entendues, les données soumises à d’autres types de voix doivent être dirigées vers une voix de mastering.
De plus, les types de données suivants pourraient vous être utiles.
  • PlaySoundVoiceContext : utilisez ce type de données pour libérer la mémoire tampon audio après le traitement.
  • IXAudio2VoiceCallback : ce type de données contient des méthodes qui avertissent le client lorsque certains événements se produisent dans une IXAudio2SourceVoice précise.

Initialisation de XAudio2

CoInitializeEx() initialise le modèle COM (Component Object Model) pour une utilisation par le thread actuel. Définissez le premier paramètre à NULL. Définissez le deuxième paramètre à COINIT_MULTITHREADED. XAudio2Create() crée un nouvel objet XAudio2 et retourne un pointeur vers son interface IXAudio2. Assurez-vous que XAUDIO2_PROCESSOR est défini à une valeur valide. La valeur XAUDIO2_USE_DEFAULT_PROCESSOR est recommandée pour laisser le système d’exploitation choisir le processeur idéal en fonction de la plateforme matérielle. IXAudio2::CreateMasteringVoice() crée et configure une voix de mastering et pointe vers celle-ci au moyen du pointeur fourni par l’utilisateur.

C++

Chargement d’un fichier .wav

Pour accéder au fichier audio, utilisez une instance de la classe WaveFile.
  • Pour ouvrir un fichier .wav et récupérer certaines informations stockées dans l’en-tête du fichier, appelez WaveFile::Open(LPCWSTR strFileName).
  • Pour déterminer le format du fichier .wav, appelez WaveFile::GetFormat().
  • Pour déterminer le nombre d’octets et d’échantillons dans le fichier .wav, appelez WaveFile::GetDuration().
  • Pour lire les données d’échantillon en mémoire, appelez WaveFile::ReadSample().

C++

Définition d’un chemin d’accès vers un fichier .wav

Pour charger et utiliser des fichiers audio, utilisez le code suivant afin de trouver l’emplacement d’installation de votre projet sur l’appareil local. Stockez l’emplacement d’installation dans une chaîne. Ajoutez l’emplacement du fichier audio à la fin de la chaîne de l’emplacement d’installation.

C++

Lecture d’un fichier .wav

Créez une classe IXAudio2::CreateSourceVoice(), puis utilisez-la pour soumettre des données audio au pipeline de traitement de XAudio2. Pour que les données de voix soient entendues, vous devez les envoyer à une voix de mastering directement ou par l’intermédiaire de voix de sous-mixage intermédiaires. Pour stocker les détails du fichier audio, créez un XAUDIO2_BUFFER. Après avoir créé et initialisé la mémoire tampon XAudio2 et la voix source, appelez IXAudio2SourceVoice::SubmitSourceBuffer() pour ajouter la mémoire tampon audio à la file d’attente d’entrée de la voix. Notez que les données audio pointées par XAUDIO2_BUFFER::pAudioData doivent demeurer valides jusqu’à ce que XAudio2 ait terminé de lire le contenu de la mémoire tampon. Une fois la file d’attente d’entrée de la voix remplie, appelez IXAudio2SourceVoice::Start() pour lire le prochain son de la file d’attente.

C++

Fin de la lecture d’un fichier .wav

Pour déterminer si un fichier .wav a été lu jusqu’à la fin, vous aurez besoin de l’état actuel de la voix source. Créez une structure XAUDIO2_VOICE_STATE, puis appelez IXAudio2SourceVoice::GetState(). Si l’audio a été lu jusqu’à la fin, appelez IXAudio2SourceVoice::DestroyVoice().

C++

Voir aussi

Vue d’ensemble de XAudio2 Vue d’ensemble d’ADPCM Encodeur ADPCM en ligne de commande
Last modified on October 6, 2026