チャラXAudio2とは?Microsoftが提供しているサウンドを扱う低レベルなAPIです。※低レベルとはハードウェアに近い部分を操作できるという意味です。ゲームのサウンド制御の用途で提供されています。WindowsやXBox系の環境でゲームを開発する際には必須と言っていいAPIとなります。BGMやSE等の再生やミキシングなどを行うことが出来ます。XAudioはVoiceと呼ばれるインターフェイスで制御されています。ボイスには次の3種類のボイスが存在します。ソースボイス(SourceVoice)サブミックスボイス(IXAurio2SubmixVoice)マスターボイス(MasteringVoice)ソースボイスソースボイスとは、各サウンドの波形を受け取って再生する機能を持ったオブジェクトです。XAudio2でサウンドを鳴らす際の起点となります。各SEやBGM毎にソースボイスを作成して管理するので最低でも同時に鳴らすサウンド数分のボイスが必要となります。サブミックスボイスサブミックスボイスとは、関連付けた複数のソースボイスの出力をまとめてエフェクトをかける機能を持ったオブジェクトです。SE、BGM、VOICEといった形にグループ化して、それぞれの音量を調整する機能を作ったりできます。エフェクトをかける必要がない場合は省略することが出来ます。マスターボイスマスターボイスとは、ソースボイスとサブミックスボイスの出力を全てまとめてサウンドカードへ送る機能を持ったオブジェクトです。XAudio2で音を鳴らす場合は、最終的に必ずここを通るようになっています。XAudio2の初期化XAudio2を使用するためには3つの手順を行う必要があります。COMコンポーネントの初期化XAudio2の初期化MasteringVoiceの作成この3つの手順を踏んでいく事でXAudio2を扱う為の準備が整います。それぞれを実装していきましょう。Comコンポーネントの初期化COMコンポーネントとはMicrodoftが提唱しているコードの再利用を目的とした技術の事です。XAudio2を含めて、Microsoftが提供しているCOMを使用した機能を使う際に必要となります。※詳しくはこちらを参照してください。初期化と言っていますが、実際にはCOMのスレッド間の同期を自身で行うかどうかの設定をしています。細かい話は今回の記事と関係ないので割愛します。COINIT_MULTITHREADED);これでCOMコンポーネントの初期化は完了です。一行なので一瞬ですね!XAudio2の初期化これでやっとXAudio2の初期化が始まります。XAudio2の初期化もDirectXなどと比べて凄く簡単です。pXAudio;XAudio2Create(&pXAudio);たったこれだけです。IXAudio2のポインターに対してXAudio2のインスタンスを返してくれます。次にマスターボイスの作成です。最初の項目の説明で書いた通り、再生される全てのボイスの最終到達地点となります。作成する処理を書いていきましょう。指定するものもないので簡単ですね!終了処理XAudio2ももちろん作ったら解放する必要があります。解放も簡単でそれぞれ下記の関数を呼び出すだけです。COMコンポーネントの解放CoUninitialize();XAudio2の解放pXAudio->Release();マスターボイスの解放pMasteringVoice->DestroyVoice();大して注意する点もありませんね!まとめXAudio2の初期化をまとめると下記のような形になります。nullptr;}CoUninitialize();}各APIからは失敗した際にエラーコードが返ってきます。やってチェックしておけばエラーの際に途中で中断してくれます。実際にはエラーコードを出力するなどすればもっと細かい内容が分かったりします。それでは初期化はこの辺りで終了とします。次回はSourceVoiceを使ったWaveファイルの再生を記事にしようかと思います。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。気が向いたらクリックお願いしますこのサイトについてチャラです。ゲーム会社を設立をしてプログラマやってます。専門学校の講師もやることになり、自分で色々と発信していく場が必要になってきたのでサイトを作りました。ここで仕事に限らず様々な情報を発信していければと思っています。様々な質問なども受け付けております。FameThemes。