リバーブを使用して立体オーディオに距離を追加するUsing reverb to add distance to spatial audio

目標Objectives

前の章では、spatialization をサウンドに追加して、方向を理解できるようにしました。In previous chapters, we added spatialization to sounds to give them a sense of direction. この5番目の章では、リバーブ効果を追加して、距離を示す音を出します。In this 5th chapter, we'll add a reverb effect to give sounds a sense of distance. 目標は次のとおりです。Our objectives are to:

  • リバーブを追加することで、サウンドソースの知覚距離を向上させるImprove perceived distance of sound sources by adding reverb
  • リスナーとホログラムの距離を使用して、サウンドの知覚距離を制御します。Control perceived distance of the sound using the listener's distance to the hologram

ミキサーグループとリバーブ効果を追加するAdd a mixer group and a reverb effect

第2章では、ミキサーを追加しました。In Chapter 2, we added a mixer. ミキサーには、既定で マスター と呼ばれる グループ が1つ含まれています。The mixer includes one Group by default called Master. 一部のサウンドにはリバーブ効果を適用するだけなので、これらのサウンドに対して2番目の グループ を追加してみましょう。Because we'll only want to apply a reverb effect to some sounds, let's add a second Group for those sounds. グループ を追加するには、オーディオミキサーマスター グループを右クリックし、[子グループの追加] を選択します。To add a Group, right click on the Master group in the Audio Mixer and choose Add child group:

子グループの追加

この例では、新しいグループに "Room Effect" という名前を付けています。In this example, we've named the new group "Room Effect".

グループ には、独自の効果セットがあります。Each Group has its own set of effects. 新しいグループに [ 追加... ] をクリックし、[ SFX リバーブ] を選択して、新しいグループにリバーブ効果を追加します。Add a reverb effect to the new group by clicking Add... on the new group, and choosing SFX Reverb:

SFX リバーブを追加する

オーディオの用語では、元の unreverberated オーディオは ドライパス と呼ばれ、リバーブフィルターを使用したフィルター処理後のオーディオは ウェットパス と呼ばれます。In audio terminology, the original, unreverberated audio is called the dry path, and the audio after filtering with the reverb filter is called the wet path. どちらのパスもオーディオ出力に送信され、この混合におけるそれらの相対的な長所は ウェット/ドライミックス と呼ばれます。Both paths are sent to the audio output, and their relative strengths in this mixture is called the wet/dry mix. ウェットミックスとドライミックスは、距離の意味に強く影響します。The wet/dry mix strongly affects the sense of distance.

SFX リバーブ には、エフェクト内のウェットミックスとドライミックスを調整するためのコントロールが含まれています。The SFX Reverb includes controls to adjust the wet/dry mix within the effect. Microsoft Spatializer プラグインはドライパスを処理するため、 SFX リバーブ はウェットパスに対してのみ使用します。Because the Microsoft Spatializer plugin handles the dry path, we'll be using the SFX Reverb only for the wet path. SFX リバーブ の [インスペクター ] ウィンドウで、次のようにします。On the Inspector pane of your SFX Reverb:

  • [ドライレベル] プロパティを最も低い設定 (-1万 mB) に設定します。Set the Dry Level property to the lowest setting (-10000 mB)
  • Room プロパティを最高の設定 (0 mB) に設定します。Set the Room property to the highest setting (0 mB)

これらの変更が完了すると、 SFX リバーブ の [インスペクター ] ウィンドウは次のようになります。After these changes, the Inspector pane of the SFX Reverb will look like this:

SFX リバーブのプロパティ

その他の設定は、シミュレートされたルームの感覚を制御します。The other settings control the feel of the simulated room. 特に、 減衰時間 は、認識される部屋のサイズに関連しています。In particular, Decay Time is related to perceived room size.

ビデオ再生でリバーブを有効にするEnable reverb on the video playback

オーディオソースでリバーブを有効にするには、次の2つの手順を実行します。There are two steps to enable reverb on an audio source:

  • オーディオソース を適切な グループ にルーティングするRoute the Audio Source to the appropriate Group
  • 処理のためにオーディオを グループ に渡すように Microsoft Spatializer プラグインを設定しますSet the Microsoft Spatializer plugin to pass audio into the Group for processing

次の手順では、オーディオルーティングを制御するようにスクリプトを調整し、 Microsoft Spatializer プラグインに用意されているコントロールスクリプトを添付して、リバーブにデータをフィードします。In the following steps, we'll adjust our script to control the audio routing, and attach a control script provided with the Microsoft Spatializer plugin to feed data into the reverb.

クワッド の [インスペクター ] ウィンドウで、[コンポーネントの追加] をクリックし、ルーム効果の送信レベル のスクリプトを追加します。On the Inspector pane for the Quad, click Add Component and add the Room Effect Send Level script:

送信レベルスクリプトの追加

注意

Microsoft Spatializer プラグインの ルーム効果の送信レベル 機能を有効にしない限り、結果の処理のためにオーディオが Unity オーディオエンジンに送信されることはありません。Unless you enable Room Effect Send Level feature of the Microsoft Spatializer plugin, it doesn't send any audio back to the Unity audio engine for effect processing.

Room 効果の送信レベル コンポーネントには、リバーブ処理のために Unity オーディオエンジンに送信されるオーディオのレベルを設定するグラフコントロールが含まれています。The Room Effect Send Level component includes a graph control that sets the level of the audio sent to the Unity audio engine for reverb processing. 曲線を下にドラッグして、レベルを約-30dB に設定します。Click and drag the curve downwards to set the level to about -30dB:

リバーブ曲線の調整

次に、 SpatializeOnOff スクリプトの4つのコメント行のコメントを解除します。Next, uncomment the 4 commented lines in the SpatializeOnOff script. スクリプトは次のようになります。The script will now look like this:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;

[RequireComponent(typeof(AudioSource))]
public class SpatializeOnOff : MonoBehaviour
{
    public GameObject ButtonTextObject;
    public AudioMixerGroup RoomEffectGroup;
    public AudioMixerGroup MasterGroup;

    private AudioSource m_SourceObject;
    private bool m_IsSpatialized;
    private TMPro.TextMeshPro m_TextMeshPro;

    public void Start()
    {
        m_SourceObject = gameObject.GetComponent<AudioSource>();
        m_TextMeshPro = ButtonTextObject.GetComponent<TMPro.TextMeshPro>();
        SetSpatialized();
    }

    public void SwapSpatialization()
    {
        if (m_IsSpatialized)
        {
            SetStereo();
        }
        else
        {
            SetSpatialized();
        }
    }

    private void SetSpatialized()
    {
        m_IsSpatialized = true;
        m_SourceObject.spatialBlend = 1;
        m_TextMeshPro.SetText("Set Stereo");
        m_SourceObject.outputAudioMixerGroup = RoomEffectGroup;
    }

    private void SetStereo()
    {
        m_IsSpatialized = false;
        m_SourceObject.spatialBlend = 0;
        m_TextMeshPro.SetText("Set Spatialized");
        m_SourceObject.outputAudioMixerGroup = MasterGroup;
    }

}

コメント解除これらの行では、スクリプトの [ インスペクター ] ペインに2つのプロパティが追加されます。Uncommenting these lines adds two properties to the Inspector pane for the script. これらを設定するには、 QuadSpatialize on Off コンポーネントの [インスペクター ] ウィンドウで次の手順を実行します。To set these, on the Inspector pane of the Spatialize On Off component of the Quad:

  • [ ルーム効果グループ] プロパティを新しい部屋効果ミキサーグループに設定します。Set the Room Effect Group property to your new Room Effect mixer group
  • マスター グループ プロパティをマスターミキサーグループに設定しますSet the Master Group property to the Master mixer group

これらの変更が完了すると、 Spatialize On Off プロパティは次のようになります。After these changes, the Spatialize On Off properties will look like this:

Spatialize On Off Extended

次のステップNext steps

HoloLens 2 または Unity エディターでアプリを試してみてください。Try out your app on a HoloLens 2 or in the Unity editor. これで、アプリのボタンにタッチして spatialization をアクティブにすると、スクリプトはビデオのオーディオを部屋の効果グループにルーティングして、リバーブを追加します。Now, when touching the button in the app to activate spatialization, the script will route the video's audio to the Room Effect Group to add reverb. ステレオに切り替えると、オーディオがマスターグループにルーティングされ、リバーブの追加を回避できます。When switching to stereo, it will route the audio to the Master group, and avoid adding reverb.

Unity 用の HoloLens 2 空間オーディオチュートリアルが完了しました。You've completed the HoloLens 2 spatial audio tutorials for Unity. おめでとうございます。Congratulations!