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."); }
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); }
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); } } } }
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); }
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); }
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); }
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); }
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."); }
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); } }
static MixerEffectDefinitionReloader() { MixerEffectDefinitions.Refresh(); EditorApplication.projectWindowChanged = (EditorApplication.CallbackFunction)Delegate.Combine(EditorApplication.projectWindowChanged, new EditorApplication.CallbackFunction(MixerEffectDefinitionReloader.OnProjectChanged)); }
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; }