1
TNet 3 Support / Re: Sound question
« on: October 27, 2016, 05:09:19 PM »- using UnityEngine;
- using System.Collections;
- using UnityEngine.Audio;
- public class SpawnedSoundObject : MonoBehaviour
- {
- private AudioClip audioClip = null;
- private AudioSource audioSource = null;
- //Audio Filters
- public float distortionLevel = 0.0f; //Distortion
- public float lowPassCutoff = 0.0f; //Low Pass Filter
- public float lowPassRes = 0.0f; //Low Pass Resonance
- public float highPassCutoff = 0.0f; //High Pass Cuttoff
- public float highPassRes = 0.0f; //High Pass Res
- public int HighPassFilterOff; //HighPassFilter On/Off
- public int LowPassFilterOff; //LowPassFilter On/Off
- public int ReverbOff = 0; //Reverb On/Off
- public int ReverbPreset = 0; //Reverb Preset
- public int SpatialBlend = 0;
- public float spread = 0.0f;
- public float pitch = 1.0f;
- public float volume = 1.0f;
- public float minDistance = 0.5f;
- public float maxDistance = 80.0f;
- public float dopplerLevel = 0.1f;
- public int loopCount = 0;
- public int RolloffMode = 0;
- public float DelaySound = 0.0f;
- //AudioMixer
- public int CleanMixer = 0;
- public int RadioMixer = 0;
- public int AmbienceMixer = 0;
- //AudioMixer SnapShots
- //public int Radio = 0;
- //public int Natural = 0;
- private void OnDestroy()
- {
- if (audioClip != null)
- {
- //Set the mixer to be with no effects
- //AudioMixer mixer = Resources.Load("MainGen4Mixer") as AudioMixer;
- //AudioMixerSnapshot DrySnapShot = mixer.FindSnapshot("Dry");
- //DrySnapShot.TransitionTo(0.01f);
- DestroyImmediate(audioClip);
- audioClip = null;
- }
- }
- public void LoadFromFile(string file)
- {
- Debug.Log("SpawnedSoundObject.LoadFromFile " + file);
- StartCoroutine(LoadSoundFromFileRoutine(file));
- }
- private IEnumerator LoadSoundFromFileRoutine(string file)
- {
- yield return fileLoad;
- if (!string.IsNullOrEmpty(fileLoad.error))
- {
- Debug.LogError("Failed to load Sound file " + file);
- yield break;
- }
- Debug.Log("Done Sound LoadFromFile " + file);
- audioClip = fileLoad.GetAudioClip(true);
- StartCoroutine(PlayClip());
- }
- private IEnumerator PlayClip()
- {
- if (audioClip)
- {
- //Here we get a refrence to our audio mixer
- AudioMixer mixer = Resources.Load("UndergroundMixer") as AudioMixer;
- string _outPutMixer = "UndergroundMixer";
- //Get our audio source
- audioSource = gameObject.AddComponent<AudioSource>();
- //We plugg out audio source into the Mixer Group
- audioSource.outputAudioMixerGroup = mixer.FindMatchingGroups(_outPutMixer)[0];
- //Get a refrence to our audio mixer
- AudioMixer mixer = Resources.Load("MainGen4Mixer") as AudioMixer;
- string _outPutMixer = "MainGen4Group";
- //Refrence to the radio mixer
- AudioMixer radioMixer = Resources.Load("RadioMixer") as AudioMixer;
- string _outPutRadioMixer = "RadioMixer";
- //Refrence to the ambience mixer for ambience sounds
- AudioMixer ambienceMixer = Resources.Load("AmbienceMixer") as AudioMixer;
- string _outPutAmbienceMixer = "AmbienceMixer";
- //we set our audiomixer update mode to normal
- //mixer.updateMode = AudioMixerUpdateMode.Normal;
- audioSource = gameObject.AddComponent<AudioSource>();
- audioSource = gameObject.AddComponent<AudioSource>();
- //Plugg audio source into the Mixer Group
- if (CleanMixer == 1)
- {
- audioSource.outputAudioMixerGroup = mixer.FindMatchingGroups(_outPutMixer)[0];
- }
- if (RadioMixer == 1)
- {
- audioSource.outputAudioMixerGroup = radioMixer.FindMatchingGroups(_outPutRadioMixer)[0];
- }
- if (AmbienceMixer == 1)
- {
- Debug.Log("Ambience mixer is on");
- audioSource.outputAudioMixerGroup = ambienceMixer.FindMatchingGroups(_outPutAmbienceMixer)[0];
- }
- //Set our audiomixer update mode to normal
- //mixer.updateMode = AudioMixerUpdateMode.Normal;
- audioSource.volume = volume;
- audioSource.rolloffMode = AudioRolloffMode.Linear;
- audioSource.minDistance = minDistance;
- audioSource.maxDistance = maxDistance;
- audioSource.clip = audioClip;
- audioSource.spatialBlend = 1.0f;
- audioSource.dopplerLevel = dopplerLevel;
- audioSource.PlayDelayed(DelaySound);
- audioSource.spread = spread;
- audioSource.pitch = pitch;
- if (RolloffMode == 1)
- {
- audioSource.rolloffMode = AudioRolloffMode.Logarithmic;
- }
- if(SpatialBlend == 1)
- {
- audioSource.spatialBlend = 0.0f;
- }
- //Distortion
- AudioDistortionFilter distortion = gameObject.AddComponent(typeof(AudioDistortionFilter)) as AudioDistortionFilter;
- distortion.distortionLevel = distortionLevel;
- //Low Pass Filter and High Pass Filter
- AudioLowPassFilter lowPassFilter = gameObject.AddComponent(typeof(AudioLowPassFilter)) as AudioLowPassFilter;
- AudioHighPassFilter highPassFilter = gameObject.AddComponent(typeof(AudioHighPassFilter)) as AudioHighPassFilter;
- if (LowPassFilterOff == 0)
- {
- Debug.Log("LowPassFilter is Off");
- lowPassFilter.enabled = false;
- }
- else if (LowPassFilterOff == 1)
- {
- Debug.Log("LowPassFilter is On");
- lowPassFilter.enabled = true;
- lowPassFilter.cutoffFrequency = lowPassCutoff;
- lowPassFilter.lowpassResonanceQ = lowPassRes;
- }
- if (HighPassFilterOff == 0)
- {
- Debug.Log("HighPassFilter is Off");
- highPassFilter.enabled = false;
- }
- else if (HighPassFilterOff == 1)
- {
- Debug.Log("HighPassFilter is On");
- highPassFilter.enabled = true;
- highPassFilter.cutoffFrequency = highPassCutoff;
- highPassFilter.highpassResonanceQ = highPassRes;
- }
- //Reverb Filter
- AudioReverbFilter reverFilter = gameObject.AddComponent(typeof(AudioReverbFilter)) as AudioReverbFilter;
- if (ReverbOff == 0)
- {
- Debug.Log("Reverb Filter is Off");
- reverFilter.enabled = false;
- }
- else if (ReverbOff == 1)
- {
- Debug.Log("Reverb Filter is On");
- reverFilter.enabled = true;
- }
- //Reverb Presets
- if (ReverbPreset == 1)
- {
- reverFilter.reverbPreset = AudioReverbPreset.Cave;
- }
- if (ReverbPreset == 2)
- {
- reverFilter.reverbPreset = AudioReverbPreset.Hangar;
- }
- if (ReverbPreset == 3)
- {
- reverFilter.reverbPreset = AudioReverbPreset.Mountains;
- }
- if (ReverbPreset == 4)
- {
- reverFilter.reverbPreset = AudioReverbPreset.Stoneroom;
- }
- if (ReverbPreset == 5)
- {
- reverFilter.reverbPreset = AudioReverbPreset.Quarry;
- }
- if (ReverbPreset == 6)
- {
- reverFilter.reverbPreset = AudioReverbPreset.Room;
- }
- if (ReverbPreset == 7)
- {
- reverFilter.reverbPreset = AudioReverbPreset.StoneCorridor;
- }
- if (ReverbPreset == 8)
- {
- reverFilter.reverbPreset = AudioReverbPreset.Generic;
- }
- //Audio MixerSnap Shots
- // if (Radio == 1)
- //{
- // AudioMixerSnapshot RadioSnapShot = mixer.FindSnapshot("Radio");
- // RadioSnapShot.TransitionTo(.01f);
- // Debug.Log("Radio Sound On");
- // }
- if (loopCount < 0)
- {
- audioSource.loop = true;
- audioSource.Play();
- yield break;
- }
- else if (loopCount == 0)
- {
- audioSource.PlayOneShot(audioClip);
- yield return null;
- while (audioSource.isPlaying) yield return null;
- }
- else
- {
- audioSource.loop = true;
- audioSource.Play();
- audioSource.loop = false;
- while (audioSource.isPlaying) yield return null;
- }
- Destroy(gameObject);
- }
- }
- }
