演習 - リバーブを使用して、空間オーディオに距離感を追加する

完了

前の演習では、サウンドの空間化を追加して、方向を感じられるようにしました。 この演習では、リバーブ効果を追加してサウンドに距離感を与えます。

ミキサー グループとリバーブ効果を追加する

  1. 前に、ミキサーを追加しました。 ミキサーには、[マスター] と呼ばれる 1 つの [グループ] が既定で含まれています。 リバーブ効果を適用するのは一部の音だけなので、その音のために 2 つ目のグループを追加しましょう。 グループを追加するには、[オーディオ ミキサー][マスター] グループを右クリックし、[子グループを追加] を選びます。 グループに適切な名前 (たとえば "ルーム効果") を付けます。

    Screenshot of Add child group.

  2. [グループ] には、一連の独自の効果が含まれています。 新しいグループにリバーブ エフェクトを追加するには、[ルーム効果] ミキサーを右クリックし、[下部にエフェクトを追加] を選び、次に [SFX リバーブ] を選びます。

    Screenshot of Add SFX Reverb.

    オーディオ用語では、リバーブのないオリジナルのオーディオはドライ パスと呼ばれ、リバーブ フィルターでフィルター処理された後のオーディオはウェット パスと呼ばれます。 両方のパスがオーディオ出力に送信され、この混合におけるそれぞれの相対的な強度は、ウェット/ドライ ミックスと呼ばれます。 ウェット/ドライ ミックスは、距離の感覚に大きな影響を与えます。

  3. [SFX Reverb](SFX リバーブ) には、効果内のウェット/ドライ ミックスを調整するためのコントロールが含まれています。 ドライ パスは Microsoft Spatializer プラグインが処理するため、[SFX Reverb](SFX リバーブ) はウェット パスにのみ使用します。 [SFX リバーブ] のインスペクター ペインで次の操作を行います。

    1. [ドライ レベル] プロパティを、最小 (-10000 mB) に設定します。
    2. [ルーム] プロパティを、最大 (0 mB) に設定します。

    Screenshot of SFX Reverb properties.

    他の設定により、シミュレーション ルームの雰囲気を制御できます。 特に [減衰時間] は部屋の大きさの感覚に影響を与えます。

ビデオ再生でのリバーブを有効にする

  1. Visual Studio に戻り、SpatializeOnOff スクリプト内の 4 つのコメント行のコメントを解除します。 スクリプトは次のようになります。

    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. これらの行のコメントを解除すると、SpatializeOnOff スクリプトのインスペクター ウィンドウに 2 つのプロパティが追加されます。 これらを、QuadSpatializeOnOff コンポーネントの [インスペクター] ウィンドウで次のように割り当てます。

    1. [ルーム効果グループ] プロパティを新しいルーム効果ミキサー グループに設定します。
    2. [マスター グループ] プロパティをマスター ミキサー グループに設定します。

    Screenshot of the new SpatializeOnOff fields with the correct options selected.