Example #1
0
        public override string ResolveStringPath(bool getOnlyBasePath)
        {
            if (getOnlyBasePath)
            {
                return(GetBasePath(group.GetDisplayString(), effect.effectName));
            }

            if (effect.GetGUIDForMixLevel() == parameter)
            {
                if (effect.IsSend())
                {
                    var allGroups = group.controller.GetAllAudioGroupsSlow();
                    var effectMap = AudioMixerGroupController.GetEffectMapSlow(allGroups);
                    return($"Send level{GetBasePath(group.GetDisplayString(), null)} to {effect.sendTarget.GetDisplayString(effectMap)}");
                }

                return($"Mix Level{GetBasePath(group.GetDisplayString(), effect.effectName)}");
            }

            MixerParameterDefinition[] paramDefs = MixerEffectDefinitions.GetEffectParameters(effect.effectName);

            for (int i = 0; i < paramDefs.Length; i++)
            {
                GUID guid = effect.GetGUIDForParameter(paramDefs[i].name);

                if (guid == parameter)
                {
                    return(paramDefs[i].name + GetBasePath(group.GetDisplayString(), effect.effectName));
                }
            }

            return("Error finding Parameter path.");
        }
Example #2
0
        public AudioMixerEffectController CopyEffect(AudioMixerEffectController sourceEffect)
        {
            var copiedEffect = new AudioMixerEffectController(sourceEffect.effectName);

            copiedEffect.name = sourceEffect.name;
            copiedEffect.PreallocateGUIDs();
            MixerParameterDefinition[] paramDefs = MixerEffectDefinitions.GetEffectParameters(sourceEffect.effectName);
            float value;

            foreach (var s in snapshots)
            {
                if (s.GetValue(sourceEffect.GetGUIDForMixLevel(), out value))
                {
                    s.SetValue(copiedEffect.GetGUIDForMixLevel(), value);
                }
                foreach (var p in paramDefs)
                {
                    if (s.GetValue(sourceEffect.GetGUIDForParameter(p.name), out value))
                    {
                        s.SetValue(copiedEffect.GetGUIDForParameter(p.name), value);
                    }
                }
            }

            AssetDatabase.AddObjectToAsset(copiedEffect, this);
            return(copiedEffect);
        }
Example #3
0
 public void CopyEffectSettingsToAllSnapshots(AudioMixerGroupController group, int effectIndex, AudioMixerSnapshotController snapshot, bool includeWetParam)
 {
     AudioMixerSnapshotController[] snaps = snapshots;
     for (int n = 0; n < snaps.Length; n++)
     {
         if (snaps[n] == snapshot)
         {
             continue;
         }
         var effect = group.effects[effectIndex];
         MixerParameterDefinition[] paramDefs = MixerEffectDefinitions.GetEffectParameters(effect.effectName);
         float value;
         if (includeWetParam)
         {
             var guid = effect.GetGUIDForMixLevel();
             if (snapshot.GetValue(guid, out value))
             {
                 snaps[n].SetValue(guid, value);
             }
         }
         foreach (var p in paramDefs)
         {
             var guid = effect.GetGUIDForParameter(p.name);
             if (snapshot.GetValue(guid, out value))
             {
                 snaps[n].SetValue(guid, value);
             }
         }
     }
 }
Example #4
0
        public static bool RegisterAudioMixerEffect(string name, MixerParameterDefinition[] definitions)
        {
            using (List <MixerEffectDefinition> .Enumerator enumerator = MixerEffectDefinitions.s_MixerEffectDefinitions.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    if (enumerator.Current.name == name)
                    {
                        return(false);
                    }
                }
            }
            MixerEffectDefinition effectDefinition = new MixerEffectDefinition(name, definitions);

            MixerEffectDefinitions.s_MixerEffectDefinitions.Add(effectDefinition);
            MixerEffectDefinitions.ClearDefinitionsRuntime();
            using (List <MixerEffectDefinition> .Enumerator enumerator = MixerEffectDefinitions.s_MixerEffectDefinitions.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    MixerEffectDefinition current = enumerator.Current;
                    MixerEffectDefinitions.AddDefinitionRuntime(current.name, current.parameters);
                }
            }
            return(true);
        }
Example #5
0
        public override string ResolveStringPath(bool getOnlyBasePath)
        {
            string result;

            if (getOnlyBasePath)
            {
                result = base.GetBasePath(this.group.GetDisplayString(), this.effect.effectName);
            }
            else if (this.effect.GetGUIDForMixLevel() == this.parameter)
            {
                result = "Mix Level" + base.GetBasePath(this.group.GetDisplayString(), this.effect.effectName);
            }
            else
            {
                MixerParameterDefinition[] effectParameters = MixerEffectDefinitions.GetEffectParameters(this.effect.effectName);
                for (int i = 0; i < effectParameters.Length; i++)
                {
                    GUID gUIDForParameter = this.effect.GetGUIDForParameter(effectParameters[i].name);
                    if (gUIDForParameter == this.parameter)
                    {
                        result = effectParameters[i].name + base.GetBasePath(this.group.GetDisplayString(), this.effect.effectName);
                        return(result);
                    }
                }
                result = "Error finding Parameter path.";
            }
            return(result);
        }
Example #6
0
        public override string ResolveStringPath(bool getOnlyBasePath)
        {
            if (getOnlyBasePath)
            {
                return(GetBasePath(group.GetDisplayString(), effect.effectName));
            }

            if (effect.GetGUIDForMixLevel() == parameter)
            {
                return("Mix Level" + GetBasePath(group.GetDisplayString(), effect.effectName));
            }
            else
            {
                MixerParameterDefinition[] paramDefs = MixerEffectDefinitions.GetEffectParameters(effect.effectName);
                for (int i = 0; i < paramDefs.Length; i++)
                {
                    GUID guid = effect.GetGUIDForParameter(paramDefs[i].name);
                    if (guid == parameter)
                    {
                        return(paramDefs[i].name + GetBasePath(group.GetDisplayString(), effect.effectName));
                    }
                }

                return("Error finding Parameter path.");
            }
        }
 static MixerEffectDefinitionReloader()
 {
     MixerEffectDefinitions.Refresh();
     if (MixerEffectDefinitionReloader.< > f__mg$cache0 == null)
     {
         MixerEffectDefinitionReloader.< > f__mg$cache0 = new Action(MixerEffectDefinitionReloader.OnProjectChanged);
     }
     EditorApplication.projectChanged += MixerEffectDefinitionReloader.< > f__mg$cache0;
 }
        static MixerEffectDefinitionReloader()
        {
            MixerEffectDefinitions.Refresh();
            Delegate arg_28_0 = EditorApplication.projectWindowChanged;

            if (MixerEffectDefinitionReloader.< > f__mg$cache0 == null)
            {
                MixerEffectDefinitionReloader.< > f__mg$cache0 = new EditorApplication.CallbackFunction(MixerEffectDefinitionReloader.OnProjectChanged);
            }
            EditorApplication.projectWindowChanged = (EditorApplication.CallbackFunction)Delegate.Combine(arg_28_0, MixerEffectDefinitionReloader.< > f__mg$cache0);
        }
Example #9
0
        public string ResolveExposedParameterPath(GUID parameter, bool getOnlyBasePath)
        {
            // Consult the cache of parameters first.
            if (exposedParamCache.ContainsKey(parameter))
            {
                var path = exposedParamCache[parameter];

                return(path.ResolveStringPath(getOnlyBasePath));
            }

            // Search through the whole mixer!
            List <AudioMixerGroupController> groups = GetAllAudioGroupsSlow();

            foreach (AudioMixerGroupController group in groups)
            {
                if (group.GetGUIDForVolume() == parameter || group.GetGUIDForPitch() == parameter)
                {
                    var newPath = new AudioGroupParameterPath(group, parameter);
                    exposedParamCache[parameter] = newPath;
                    return(newPath.ResolveStringPath(getOnlyBasePath));
                }

                for (var i = 0; i < group.effects.Length; i++)
                {
                    var effect = group.effects[i];

                    if (effect.IsSend() && parameter == effect.GetGUIDForMixLevel())
                    {
                        var newPath = new AudioEffectParameterPath(group, effect, parameter);
                        exposedParamCache[parameter] = newPath;
                        return(newPath.ResolveStringPath(getOnlyBasePath));
                    }

                    var paramDefs = MixerEffectDefinitions.GetEffectParameters(effect.effectName);

                    for (var j = 0; j < paramDefs.Length; j++)
                    {
                        var guid = effect.GetGUIDForParameter(paramDefs[j].name);

                        if (guid == parameter)
                        {
                            var newPath = new AudioEffectParameterPath(group, effect, parameter);
                            exposedParamCache[parameter] = newPath;
                            return(newPath.ResolveStringPath(getOnlyBasePath));
                        }
                    }
                }
            }

            return("Error finding Parameter path");
        }
        public static bool RegisterAudioMixerEffect(string name, MixerParameterDefinition[] definitions)
        {
            foreach (MixerEffectDefinition current in MixerEffectDefinitions.s_MixerEffectDefinitions)
            {
                if (current.name == name)
                {
                    return(false);
                }
            }
            MixerEffectDefinition item = new MixerEffectDefinition(name, definitions);

            MixerEffectDefinitions.s_MixerEffectDefinitions.Add(item);
            MixerEffectDefinitions.ClearDefinitionsRuntime();
            foreach (MixerEffectDefinition current2 in MixerEffectDefinitions.s_MixerEffectDefinitions)
            {
                MixerEffectDefinitions.AddDefinitionRuntime(current2.name, current2.parameters);
            }
            return(true);
        }
Example #11
0
 public override string ResolveStringPath(bool getOnlyBasePath)
 {
     if (getOnlyBasePath)
     {
         return(base.GetBasePath(base.group.GetDisplayString(), this.effect.effectName));
     }
     if (this.effect.GetGUIDForMixLevel() == base.parameter)
     {
         return("Mix Level" + base.GetBasePath(base.group.GetDisplayString(), this.effect.effectName));
     }
     MixerParameterDefinition[] effectParameters = MixerEffectDefinitions.GetEffectParameters(this.effect.effectName);
     for (int i = 0; i < effectParameters.Length; i++)
     {
         if (this.effect.GetGUIDForParameter(effectParameters[i].name) == base.parameter)
         {
             return(effectParameters[i].name + base.GetBasePath(base.group.GetDisplayString(), this.effect.effectName));
         }
     }
     return("Error finding Parameter path.");
 }
Example #12
0
 public static void Refresh()
 {
     MixerEffectDefinitions.ClearDefinitions();
     MixerEffectDefinitions.RegisterAudioMixerEffect("Attenuation", new MixerParameterDefinition[0]);
     MixerEffectDefinitions.RegisterAudioMixerEffect("Send", new MixerParameterDefinition[0]);
     MixerEffectDefinitions.RegisterAudioMixerEffect("Receive", new MixerParameterDefinition[0]);
     MixerParameterDefinition[] parameterDefinitionArray = new MixerParameterDefinition[7] {
         new MixerParameterDefinition()
         {
             name = "Threshold", units = "dB", displayScale = 1f, displayExponent = 1f, minRange = -80f, maxRange = 0.0f, defaultValue = -10f, description = "Threshold of side-chain level detector"
         }, new MixerParameterDefinition()
         {
             name = "Ratio", units = "%", displayScale = 100f, displayExponent = 1f, minRange = 0.2f, maxRange = 10f, defaultValue = 2f, description = "Ratio of compression applied when side-chain signal exceeds threshold"
         }, new MixerParameterDefinition()
         {
             name = "Attack Time", units = "ms", displayScale = 1000f, displayExponent = 3f, minRange = 0.0f, maxRange = 10f, defaultValue = 0.1f, description = "Level detector attack time"
         }, new MixerParameterDefinition()
         {
             name = "Release Time", units = "ms", displayScale = 1000f, displayExponent = 3f, minRange = 0.0f, maxRange = 10f, defaultValue = 0.1f, description = "Level detector release time"
         }, new MixerParameterDefinition()
         {
             name = "Make-up Gain", units = "dB", displayScale = 1f, displayExponent = 1f, minRange = -80f, maxRange = 40f, defaultValue = 0.0f, description = "Make-up gain"
         }, new MixerParameterDefinition()
         {
             name = "Knee", units = "dB", displayScale = 1f, displayExponent = 1f, minRange = 0.0f, maxRange = 50f, defaultValue = 10f, description = "Sharpness of compression curve knee"
         }, new MixerParameterDefinition()
         {
             name = "Sidechain Mix", units = "%", displayScale = 100f, displayExponent = 1f, minRange = 0.0f, maxRange = 1f, defaultValue = 1f, description = "Sidechain/source mix. If set to 100% the compressor detects level entirely from sidechain signal."
         }
     };
     MixerEffectDefinitions.RegisterAudioMixerEffect("Duck Volume", parameterDefinitionArray);
     MixerEffectDefinitions.AddDefinitionRuntime("Duck Volume", parameterDefinitionArray);
     foreach (string audioEffectName in MixerEffectDefinitions.GetAudioEffectNames())
     {
         MixerParameterDefinition[] effectParameterDesc = MixerEffectDefinitions.GetAudioEffectParameterDesc(audioEffectName);
         MixerEffectDefinitions.RegisterAudioMixerEffect(audioEffectName, effectParameterDesc);
     }
 }
Example #13
0
 static MixerEffectDefinitionReloader()
 {
     MixerEffectDefinitions.Refresh();
     EditorApplication.projectWindowChanged = (EditorApplication.CallbackFunction)Delegate.Combine(EditorApplication.projectWindowChanged, new EditorApplication.CallbackFunction(MixerEffectDefinitionReloader.OnProjectChanged));
 }
Example #14
0
 private static void OnProjectChanged()
 {
     MixerEffectDefinitions.Refresh();
 }
 static MixerEffectDefinitionReloader()
 {
     MixerEffectDefinitions.Refresh();
     if (< > f__mg$cache0 == null)
     {
 public static void ClearDefinitions()
 {
     MixerEffectDefinitions.s_MixerEffectDefinitions.Clear();
     MixerEffectDefinitions.ClearDefinitionsRuntime();
 }
        // We use this class with InitializeOnLoad attribute for ensuring MixerEffectDefinitions are refreshed
        // when needed: 1) At startup, 2) after script recompile and 3) when project changes (new effects can have been added)
        static MixerEffectDefinitionReloader()
        {
            MixerEffectDefinitions.Refresh();

            EditorApplication.projectChanged += OnProjectChanged;
        }