著作権のある音楽の録音は、一般的にPS4、PS5、Xbox One、Xbox Series XのDVR機能で禁止されています。これらのプラットフォームでは、音楽だけを管理するための、特別なバーチャルデバイスを提供し、その録音を回避しています。Wwiseでも、音楽だけを違う階層で別にミキシングすることになります。インテグレーションのデモプロジェクトで、これを実装してみました。NonRecordable_Bus、RecordableMusic、NonRecordableMusicの設定を確認できます。コードの観点からは、DemoBGM.cppを見てください。
以下の通り、NonRecordableMusicは、Non Recordable Busへとルーティングされ、ここから信号がDVR_Bypassアウトプットにアウトプットされます。
コード的には、これを実装するための作業はそれほどありません。アウトプットを初期化するために、ゲームがAudio Deviceシェアセットの名前を使い、 AK::SoundEngine::AddOutput()
をコールする必要があります。
Wwise Advanced Profilerを使うと、各サウンドが別々のバスや別々のアウトプットに行くのが分かります。これが、対応しているプラットフォーム上の通常の流れです。(中間のバスミュージックは、省略しています。)
DVR機能は、ほかの対応プラットフォームには存在しないので、何か違う処理が必要です。その場合、当然ゲーム中に音楽を失いたくないので、正しくルーティングするようにします。対処するには、Audio Deviceプロパティをアンリンクするだけです。マスターバスのプロパティエディタで、Audio Deviceプロパティをアンリンクすることもできます。以下の例では、Non Recordable Busのアウトプットを通常のシステムアウトプットにしました。ただし対応しているプラットフォームでは、DVR_Bypassにいくので、リンクアイコンが半分、オレンジ色です。以上を、インテグレーションデモプロジェクトで設定しました。この場合、コードでアウトプットを初期化するためのAK::SoundEngine::AddOutput
をコールする必要はなく、それはシステムのアウトプットが起動時に必ず初期化されるからです。
両方のサウンドを再生すると、2つのソースのシグナルが別々のバスを通り、最終的に同じシステムアウトプットでミキシングされるのが分かります。