バージョン
menu

Understanding secondary outputs

セカンダリアウトプットとは、メインテレビやメインスピーカーアウトプット以外のあらゆるオーディオアウトプットを指します。状況によって、このアウトプット用に別のオーディオミックスを行う必要があります。You can have as many main secondary busses as you need for each of the expected outputs of the game. 最も一般的なセカンダリアウトプットは、ゲームコントローラのスピーカーやヘッドフォンです。これ以外の独立したアウトプットも考えられます(チャット、BGM、ヘッドフォンなど)。このセクションでは主にゲームコントローラのスピーカーについて説明しますが、ほかの全ての種類のアウトプットにも該当する内容です。

To output something on a secondary output, sounds need to be routed to the main secondary bus hierarchy using one of the two following approaches:

  • 対象サウンドのアウトプットバスのプロパティを、セカンダリバス階層にあるバスに直接設定する方式。 これは、ほかのサウンドルーティングと同じように使います。通常は1つのセカンダリアウトプットインスタンスだけに結び付いているサウンドなどに向いています。例えば、プレイヤーが発射するガンショット、テニスラケットの打音、PDAの音、ゲームプレイのフィードバックなどがあります。

  • Routing a sound through any bus in the Main Audio Bus hierarchy and adding a user or game send to an Auxiliary Bus inside the secondary bus hierarchy. This is the preferred method if the same sound is going to be heard from multiple outputs and/or the TV at the same time. 例えば、スパイカメラやアナウンスなどです。

バス階層は、ミキシングの構造を定義するだけです。To associate that mix to a specific output, choose the appropriate Audio Device ShareSet on the corresponding main secondary bus.

ゲーム中に複数のインスタンスが存在するかもしれないプレイヤー関連のアウトプット(ゲームコントローラやヘッドフォンなど)の場合は、それに関連するミキシング階層が、プレイヤーごとにコピーされることを、知っておく必要があります。プロジェクトで定義するのは、特定のアウトプットタイプ用のミキシングレシピのようなもの だけです。実際にどのコピー構造にルーティングされるかは、プログラマーの設定するリスナーとゲームオブジェクトの関連付けで決まります。これを以下の例を用いて説明します。

Secondary output examples

全ての例で、Secondary Bus階層として下記のバス構造を用いています。メインAudio Bus階層は省略します。この構造はアウトプットごとに複製されるので、最終的なミックスは互いに独立しています。なお、インスタンス化されるのは必要なバスだけです。

図1 Main Secondary Bus structure

Main Secondary Bus structure

図2 サウンドがメインアウトプットに送られる単純な例

サウンドがメインアウトプットに送られる単純な例

これは、1つのサウンドがメインアウトプットに送られる単純な例です。通常のゲームでは、複数のサウンドが複数のサブバスにルーティングされます。ここでは簡略化して、テレビアウトプットで再生される音が1つと仮定します。

図3 サウンドが2人目のプレイヤーのコントローラアウトプットに送られる単純な例

サウンドが2人目のプレイヤーのコントローラアウトプットに送られる単純な例

次に、2人目のプレイヤーのゲームコントローラで別のサウンドを再生するとします。例えば、メニュー画面にこのプレイヤーだけが入り他のプレイヤーが入らない場合の、メニューサウンドを考えます。この場合、メニューサウンドが通常通り設定されたアウトプットバスにミキシングされ、TVミックスとは別となります。このサウンドがプレイヤー2のコントローラだけで再生されるのは、ゲーム内で、リスナーとゲームオブジェクトの関連付けが設定されたからです。この場合プログラマーは、コントローラ2のリスナーだけが聞くゲームオブジェクトで、このサウンドを再生させます。

図4 サウンドがプレイヤー1、プレイヤー2、テレビに送られる

サウンドがプレイヤー1、プレイヤー2、テレビに送られる

上記の例で明らかなことが2点あり、つまりあるサウンドを複数のセカンダリアウトプットと同時にTVミックスへもルーティングできるということです。この例では、事前に録音された助けを求めるプレイヤー1の無線通信というサウンドが、同じチームのプレイヤー2に聞こえ、またテレビの視点がこのサウンドを発するプレイヤー2の近くにあるため、テレビからも聞こえます。なお、このサウンドのアウトプットバスはBus 1に設定されています。This bus is duplicated for player 1 and 2, as is the main secondary Bus. 当然、プレイヤー2のミックスには、プレイヤー2にしか聞こえないSound 2と、Sound 1が入らなければなりません。Both copies of the Main Secondary Bus will have the same effects applied (if any), but won't do so on the same audio signal.

またSound 3からTVミックスに向かうSendがあります。他のアウトプットに対して送る場合は、全種類のSendを使えます。この例では、距離関係や減衰によって無線通信がカメラにも聞こえることがあるので、メインTVミックスへ入れる必要があり、設定されたAuxiliary Busから送ります。

Background music mixing with DVR example

著作権のある音楽の録音は、一般的にPS4、PS5、Xbox One、Xbox Series XのDVR機能で禁止されています。これらのプラットフォームでは、音楽だけを管理するための、特別なバーチャルデバイスを提供し、その録音を回避しています。Wwiseでも、音楽だけを違う階層で別にミキシングすることになります。インテグレーションのデモプロジェクトで、これを実装してみました。NonRecordable_Bus、RecordableMusic、NonRecordableMusicの設定を確認できます。コードの観点からは、DemoBGM.cppを見てください。

以下の通り、NonRecordableMusicは、Non Recordable Busへとルーティングされ、ここから信号がDVR_Bypassアウトプットにアウトプットされます。

図5 音をNonRecordable_Busにルーティング

音をNonRecordable_Busにルーティング

図6 Bus Audio Deviceに、DVR_Bypassを設定

Bus Audio Deviceに、DVR_Bypassを設定

コード的には、これを実装するための作業はそれほどありません。アウトプットを初期化するために、ゲームがAudio Deviceシェアセットの名前を使い、 AK::SoundEngine::AddOutput() をコールする必要があります。

Wwise Advanced Profilerを使うと、各サウンドが別々のバスや別々のアウトプットに行くのが分かります。これが、対応しているプラットフォーム上の通常の流れです。(中間のバスミュージックは、省略しています。)

図7 Two main busses mixing in separate outputs

Two main busses mixing in separate outputs

DVR機能は、ほかの対応プラットフォームには存在しないので、何か違う処理が必要です。その場合、当然ゲーム中に音楽を失いたくないので、正しくルーティングするようにします。対処するには、Audio Deviceプロパティをアンリンクするだけです。In the main bus Property Editor, the Audio Device property can also be unlinked. 以下の例では、Non Recordable Busのアウトプットを通常のシステムアウトプットにしました。ただし対応しているプラットフォームでは、DVR_Bypassにいくので、リンクアイコンが半分、オレンジ色です。以上を、インテグレーションデモプロジェクトで設定しました。この場合、コードでアウトプットを初期化するためのAK::SoundEngine::AddOutputをコールする必要はなく、それはシステムのアウトプットが起動時に必ず初期化されるからです。

図8 Audio DeviceのアウトプットをSystemに設定

Audio DeviceのアウトプットをSystemに設定

両方のサウンドを再生すると、2つのソースのシグナルが別々のバスを通り、最終的に同じシステムアウトプットでミキシングされるのが分かります。

図9 Two main busses mixing in device

Two main busses mixing in device


このページはお役に立ちましたか?

サポートは必要ですか?

ご質問や問題、ご不明点はございますか?お気軽にお問い合わせください。

サポートページをご確認ください

あなたのプロジェクトについて教えてください。ご不明な点はありませんか。

プロジェクトを登録していただくことで、ご利用開始のサポートをいたします。

Wwiseからはじめよう