DirectXTK12 オーディオを試してみることにしましたが、3D サウンド以外は問題なく動作しています。私はwikiのガイドに従っていますが、リスナー/エミッターをどのように配置しても、サウンドは常に左側のスピーカーにあります。どうしたの?私のコードは次のようになります。
HRESULT hr = CoInitializeEx(nullptr, COINIT_MULTITHREADED);
if (FAILED(hr)) {...}
std::unique_ptr<DirectX::AudioEngine> audEngine;
DirectX::AUDIO_ENGINE_FLAGS eflags = DirectX::AudioEngine_Default;
#ifdef _DEBUG
eflags |= DirectX::AudioEngine_Debug;
#endif
std::unique_ptr<DirectX::SoundEffect> soundEffect;
soundEffect = std::make_unique<DirectX::SoundEffect>(audEngine.get(), L"Sound.wav");
auto effect = soundEffect->CreateInstance(DirectX::SoundEffectInstance_Use3D);
effect->Play(false);
DirectX::AudioListener listener;
listener.SetPosition(DirectX::XMFLOAT3(0.0f, 0.0f, 0.0f));
DirectX::AudioEmitter emitter;
emitter.SetPosition(DirectX::XMFLOAT3(0.0f, 0.0f, 0.0f));
effect->Apply3D(listener, emitter, false);
中央にあるはずですが、出力にエラーはありませんが、左チャンネルのみを使用しています。出力が示す唯一のことは次のとおりです。
INFO: XAudio 2.9 debugging enabled
INFO: mastering voice has 2 channels, 96000 sample rate, 00000003 channel mask
3D なしでサウンドを再生すると、予想どおり両方のスピーカーが使用されます。