Пример #1
0
        public override void OnInspectorGUI()
        {
            float   outFloat  = 0;
            int     outInt    = 0;
            Crusher component = (Crusher)target;

            GUILayout.BeginVertical("Box"); {
                if (InspectorUtils.IntSlider(component.BitDepth, 1, 32, "Bit Depth", "Precision of audio samples. Less precision is more distorted.", out outInt))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Bit Depth");
                    component.BitDepth = outInt;
                    EditorGUIUtility.ExitGUI();
                }

                if (InspectorUtils.FloatSliderExponential(component.SampleRate, 0.001f, 1, "Sample Rate", "Sample rate effects the resolution of the sound. Smaller value increases grittiness.", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Sample Rate");
                    component.SampleRate = outFloat;
                    EditorGUIUtility.ExitGUI();
                }
            } GUILayout.EndVertical();

            GUILayout.BeginVertical("Box"); {
                if (InspectorUtils.FloatSlider(component.DryWet, 0, 1, "Dry/Wet", "Dry/Wet ratio", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Dry/Wet");
                    component.DryWet = outFloat;
                    EditorGUIUtility.ExitGUI();
                }
            } GUILayout.EndVertical();

            component.runEffectInEditMode = GUILayout.Toggle(component.runEffectInEditMode, new GUIContent("Run Effect In Edit Mode (" + component.runTime.ToString() + " ms)", "Enable/disable component when the editor is not playing.\nEnable to reduce CPU usage"));
            Repaint();
        }
Пример #2
0
        public override void OnInspectorGUI()
        {
            float         outFloat  = 0;
            RingModulator component = (RingModulator)target;

            GUILayout.BeginVertical("Box"); {
                if (InspectorUtils.FloatSliderExponential(component.CarrierFrequency, 20f, 5000, "Carrier Frequency", "Speed of oscillation measured in hertz (oscillations per second)", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Rate");
                    component.CarrierFrequency = outFloat;
                    EditorGUIUtility.ExitGUI();
                }
            } GUILayout.EndVertical();

            GUILayout.BeginVertical("Box"); {
                if (InspectorUtils.FloatSlider(component.DryWet, 0, 1, "Dry/Wet", "Dry/Wet ratio", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Dry/Wet");
                    component.DryWet = outFloat;
                    EditorGUIUtility.ExitGUI();
                }
            } GUILayout.EndVertical();

            component.runEffectInEditMode = GUILayout.Toggle(component.runEffectInEditMode, new GUIContent("Run Effect In Edit Mode (" + component.runTime.ToString() + " ms)", "Enable/disable component when the editor is not playing.\nEnable to reduce CPU usage"));
            Repaint();
        }
Пример #3
0
        public override void OnInspectorGUI()
        {
            float outFloat  = 0;
            Gate  component = (Gate)target;

            MAX_inputGain  *= 0.95f;
            MAX_outputGain *= 0.95f;
            MAX_gateState  *= 0.95f;

            MAX_inputGain  = MAX_inputGain > component.MAX_inputGain ? MAX_inputGain : component.MAX_inputGain;
            MAX_outputGain = MAX_outputGain > component.MAX_outputGain ? MAX_outputGain : component.MAX_outputGain;
            MAX_gateState  = MAX_gateState > component.MAX_gateState ? MAX_gateState : component.MAX_gateState;

            GUILayout.BeginVertical("Box"); {
                if (InspectorUtils.FloatSlider(component.InputGain, 0, 3, "Input Gain", "Volume going into device", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Input Gain");
                    component.InputGain = outFloat;
                    EditorGUIUtility.ExitGUI();
                }
                InspectorUtils.VolumeMeter(MAX_inputGain);
            } GUILayout.EndVertical();

            GUILayout.BeginVertical("Box"); {
                if (InspectorUtils.FloatSlider(component.Threshold, 0, 1, "Threshold", "Volume at which gate is triggered", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Threshold");
                    component.Threshold = outFloat;
                    EditorGUIUtility.ExitGUI();
                }

                if (InspectorUtils.FloatSlider(component.Attack, 0, 1, "Attack", "How quickly the gate opens", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Attack");
                    component.Attack = outFloat;
                    EditorGUIUtility.ExitGUI();
                }

                if (InspectorUtils.FloatSlider(component.Release, 0, 1, "Release", "How quickly the gate closes", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Released");
                    component.Release = outFloat;
                    EditorGUIUtility.ExitGUI();
                }
                InspectorUtils.VolumeMeter(MAX_gateState);
            } GUILayout.EndVertical();

            GUILayout.BeginVertical("Box"); {
                if (InspectorUtils.FloatSlider(component.OutputGain, 0, 5, "Output Gain", "Volume going out of the device", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Output Gain");
                    component.OutputGain = outFloat;
                    EditorGUIUtility.ExitGUI();
                }
                InspectorUtils.VolumeMeter(MAX_outputGain);
            } GUILayout.EndVertical();

            component.runEffectInEditMode = GUILayout.Toggle(component.runEffectInEditMode, new GUIContent("Run Effect In Edit Mode (" + component.runTime.ToString() + " ms)", "Enable/disable component when the editor is not playing.\nEnable to reduce CPU usage"));
            Repaint();
        }
Пример #4
0
        public override void OnInspectorGUI()
        {
            float   outFloat  = 0;
            Flanger component = (Flanger)target;

            GUILayout.BeginVertical("Box"); {
                if (InspectorUtils.FloatSlider(component.Rate, 0.1f, 8, "Rate", "Speed of oscillation measured in hertz (oscillations per second)", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Rate");
                    component.Rate = outFloat;
                    EditorGUIUtility.ExitGUI();
                }

                if (InspectorUtils.FloatSlider(component.Intensity, 0.1f, 0.9f, "Intensity", "Severity of the flange effect", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Intensity");
                    component.Intensity = outFloat;
                    EditorGUIUtility.ExitGUI();
                }
            } GUILayout.EndVertical();

            GUILayout.BeginVertical("Box"); {
                if (InspectorUtils.FloatSlider(component.DryWet, 0, 1, "Dry/Wet", "Dry/Wet ratio", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Dry/Wet");
                    component.DryWet = outFloat;
                    EditorGUIUtility.ExitGUI();
                }
            } GUILayout.EndVertical();

            component.runEffectInEditMode = GUILayout.Toggle(component.runEffectInEditMode, new GUIContent("Run Effect In Edit Mode (" + component.runTime.ToString() + " ms)", "Enable/disable component when the editor is not playing.\nEnable to reduce CPU usage"));
            Repaint();
        }
Пример #5
0
        public override void OnInspectorGUI()
        {
            float  outFloat  = 0;
            Reverb component = (Reverb)target;

            GUILayout.BeginVertical("Box"); {
                if (InspectorUtils.FloatSlider(component.ReverbTime, 0.5f, 10, "Reverb Time", "Duration of reverbations", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Reverb Time");
                    component.ReverbTime = outFloat;
                    EditorGUIUtility.ExitGUI();
                }
                if (InspectorUtils.FloatSlider(component.ReverbGain, 0.5f, 5, "Reverb Gain", "Volume of reverberations", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Reverb Gain");
                    component.ReverbGain = outFloat;
                    EditorGUIUtility.ExitGUI();
                }
                if (InspectorUtils.FloatSlider(component.DryWet, 0, 1, "Dry/Wet", "Dry/Wet ratio", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Dry/Wet");
                    component.DryWet = outFloat;
                    EditorGUIUtility.ExitGUI();
                }
            } GUILayout.EndVertical();

            component.runEffectInEditMode = GUILayout.Toggle(component.runEffectInEditMode, new GUIContent("Run Effect In Edit Mode (" + component.runTime.ToString() + " ms)", "Enable/disable component when the editor is not playing.\nEnable to reduce CPU usage"));
            Repaint();
        }
Пример #6
0
        public override void OnInspectorGUI()
        {
            float       outFloat  = 0;
            int         outInt    = 0;
            SimpleDelay component = (SimpleDelay)target;

            GUILayout.BeginVertical("Box"); {
                if (InspectorUtils.IntSlider(component.DelayLengthMS, 10, 3000, "Delay Length (ms)", "Offset of the delayed signal measured in milliseconds", out outInt))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Delay Length");
                    component.DelayLengthMS = outInt;
                    EditorGUIUtility.ExitGUI();
                }

                if (InspectorUtils.FloatSlider(component.DecayLength, 0.1f, 1, "Decay Length", "Length of signal decay", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Slope");
                    component.DecayLength = outFloat;
                    EditorGUIUtility.ExitGUI();
                }
            } GUILayout.EndVertical();

            GUILayout.BeginVertical("Box"); {
                if (InspectorUtils.FloatSlider(component.DryWet, 0, 1, "Dry/Wet", "Dry/Wet ratio", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Dry/Wet");
                    component.DryWet = outFloat;
                    EditorGUIUtility.ExitGUI();
                }
            } GUILayout.EndVertical();

            component.runEffectInEditMode = GUILayout.Toggle(component.runEffectInEditMode, new GUIContent("Run Effect In Edit Mode (" + component.runTime.ToString() + " ms)", "Enable/disable component when the editor is not playing.\nEnable to reduce CPU usage"));
            Repaint();
        }
Пример #7
0
        public override void OnInspectorGUI()
        {
            float outFloat = 0;
            FoldbackDistortion component = (FoldbackDistortion)target;

            MAX_inputGain  *= 0.95f;
            MAX_outputGain *= 0.95f;

            MAX_inputGain  = MAX_inputGain > component.MAX_inputGain ? MAX_inputGain : component.MAX_inputGain;
            MAX_outputGain = MAX_outputGain > component.MAX_outputGain ? MAX_outputGain : component.MAX_outputGain;

            GUILayout.BeginVertical("Box"); {
                if (InspectorUtils.FloatSlider(component.InputGain, 0, 3, "Input Gain", "Volume going into device", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Input Gain");
                    component.InputGain = outFloat;
                    EditorGUIUtility.ExitGUI();
                }

                InspectorUtils.VolumeMeter(MAX_inputGain);

                if (InspectorUtils.FloatSlider(component.SoftDistortAmount, 0, 1, "Soft Distort Amount", "Amount of distortion applied to the whole signal", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Soft Distort Amount");
                    component.SoftDistortAmount = outFloat;
                    EditorGUIUtility.ExitGUI();
                }
            } GUILayout.EndVertical();

            GUILayout.BeginVertical("Box"); {
                if (InspectorUtils.FloatSlider(component.Threshold, 0, 1, "Threshold", "Volume at which distortion is triggered", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Threshold");
                    component.Threshold = outFloat;
                    EditorGUIUtility.ExitGUI();
                }

                if (InspectorUtils.FloatSlider(component.DistortAmount, 0.0001f, 1, "Distort Amount", "Amount of distortion applied starting at threshold", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Distort Amount");
                    component.DistortAmount = outFloat;
                    EditorGUIUtility.ExitGUI();
                }
            } GUILayout.EndVertical();

            GUILayout.BeginVertical("Box"); {
                if (InspectorUtils.FloatSlider(component.OutputGain, 0, 5, "Output Gain", "Volume going out of the device", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Output Gain");
                    component.OutputGain = outFloat;
                    EditorGUIUtility.ExitGUI();
                }

                InspectorUtils.VolumeMeter(MAX_outputGain);
            } GUILayout.EndVertical();

            component.runEffectInEditMode = GUILayout.Toggle(component.runEffectInEditMode, new GUIContent("Run Effect In Edit Mode (" + component.runTime.ToString() + " ms)", "Enable/disable component when the editor is not playing.\nEnable to reduce CPU usage"));
            Repaint();
        }
Пример #8
0
        public override void OnInspectorGUI()
        {
            float outFloat  = 0;
            int   outInt    = 0;
            Delay component = (Delay)target;

            GUILayout.BeginVertical("Box"); {
                if (InspectorUtils.FloatSlider(component.BPM, 40, 300, "BPM", "Beats Per Minute of audio track", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - BPM");
                    component.BPM = outFloat;
                    EditorGUIUtility.ExitGUI();
                }

                if (InspectorUtils.IntSlider(component.DelayCount, 1, 8, "Delay Count", "How many beats (measured in Delay Units) to delay track", out outInt))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Delay Count");
                    component.DelayCount = outInt;
                    EditorGUIUtility.ExitGUI();
                }

                if (InspectorUtils.IntSlider(component.DelayUnit, 1, 32, "Delay Unit", "Size Delay Units - larger number results in smaller units", out outInt))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Delay Unit");
                    component.DelayUnit = outInt;
                    EditorGUIUtility.ExitGUI();
                }
            } GUILayout.EndVertical();

            GUILayout.BeginVertical("Box"); {
                if (InspectorUtils.FloatSlider(component.Pan, -1, 1, "Pan", "Pan direction of delayed tracks - Ranges from -1 (left) to 1 (right). A value of 0 is centered.", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - BPM");
                    component.Pan = outFloat;
                    EditorGUIUtility.ExitGUI();
                }
                component.PingPong = GUILayout.Toggle(component.PingPong, new GUIContent("Ping Pong", "Determines whether panning stays in one direction or bounces back and forth between speaker channels."));
            } GUILayout.EndVertical();

            GUILayout.BeginVertical("Box"); {
                if (InspectorUtils.FloatSlider(component.DecayLength, 0.1f, 1, "Decay Length", "How long the delay persists", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Decay Length");
                    component.DecayLength = outFloat;
                    EditorGUIUtility.ExitGUI();
                }
                if (InspectorUtils.FloatSlider(component.DryWet, 0, 1, "Dry/Wet", "Dry/Wet ratio", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Dry/Wet");
                    component.DryWet = outFloat;
                    EditorGUIUtility.ExitGUI();
                }
            } GUILayout.EndVertical();

            component.runEffectInEditMode = GUILayout.Toggle(component.runEffectInEditMode, new GUIContent("Run Effect In Edit Mode (" + component.runTime.ToString() + " ms)", "Enable/disable component when the editor is not playing.\nEnable to reduce CPU usage"));
            Repaint();
        }
Пример #9
0
        public override void OnInspectorGUI()
        {
            float         outFloat  = 0;
            StereoWidener component = (StereoWidener)target;

            GUILayout.BeginVertical("Box"); {
                if (InspectorUtils.FloatSlider(component.Width, 0, 2, "Width", "Amount spread throughout the stereo field. 0 is mono, 1 is normal stereo, 2 is extra wide", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Width");
                    component.Width = outFloat;
                    EditorGUIUtility.ExitGUI();
                }
            } GUILayout.EndVertical();

            component.runEffectInEditMode = GUILayout.Toggle(component.runEffectInEditMode, new GUIContent("Run Effect In Edit Mode (" + component.runTime.ToString() + " ms)", "Enable/disable component when the editor is not playing.\nEnable to reduce CPU usage"));
            Repaint();
        }
Пример #10
0
        public override void OnInspectorGUI()
        {
            float      outFloat  = 0;
            PanControl component = (PanControl)target;

            GUILayout.BeginVertical("Box"); {
                if (InspectorUtils.FloatSlider(component.PanAmount, -1, 1, "Pan Amount", "Values range from -1 (left) to 1 (right). A value of 0 is centered.", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Pan Amount");
                    component.PanAmount = outFloat;
                    EditorGUIUtility.ExitGUI();
                }
            } GUILayout.EndVertical();

            component.runEffectInEditMode = GUILayout.Toggle(component.runEffectInEditMode, new GUIContent("Run Effect In Edit Mode (" + component.runTime.ToString() + " ms)", "Enable/disable component when the editor is not playing.\nEnable to reduce CPU usage"));
            Repaint();
        }
Пример #11
0
        public override void OnInspectorGUI()
        {
            float     outFloat  = 0;
            Saturator component = (Saturator)target;

            MAX_inputGain *= 0.95f;

            MAX_inputGain = MAX_inputGain > component.MAX_inputGain ? MAX_inputGain : component.MAX_inputGain;

            GUILayout.BeginVertical("Box"); {
                if (InspectorUtils.FloatSlider(component.InputGain, 0, 3, "Input Gain", "Volume going into device", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Input Gain");
                    component.InputGain = outFloat;
                    EditorGUIUtility.ExitGUI();
                }

                InspectorUtils.VolumeMeter(MAX_inputGain);
            } GUILayout.EndVertical();

            GUILayout.BeginVertical("Box"); {
                if (InspectorUtils.FloatSlider(component.Threshold, 0, 1, "Threshold", "Volume at which saturation is triggered", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Threshold");
                    component.Threshold = outFloat;
                    EditorGUIUtility.ExitGUI();
                }

                if (InspectorUtils.FloatSlider(component.Amount, 0.0001f, 1, "Amount", "The amount of saturation applied to the audio source.", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Amount");
                    component.Amount = outFloat;
                    EditorGUIUtility.ExitGUI();
                }
            } GUILayout.EndVertical();

            component.runEffectInEditMode = GUILayout.Toggle(component.runEffectInEditMode, new GUIContent("Run Effect In Edit Mode (" + component.runTime.ToString() + " ms)", "Enable/disable component when the editor is not playing.\nEnable to reduce CPU usage"));
            Repaint();
        }
Пример #12
0
        public override void OnInspectorGUI()
        {
            float outFloat  = 0;
            Fader component = (Fader)target;

            MAX_gain *= 0.95f;

            MAX_gain = MAX_gain > component.MAX_gain ? MAX_gain : component.MAX_gain;

            GUILayout.BeginVertical("Box"); {
                if (InspectorUtils.FloatSlider(component.Gain, 0, 3, "Gain", "Gain control for device", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Gain");
                    component.Gain = outFloat;
                    EditorGUIUtility.ExitGUI();
                }

                InspectorUtils.VolumeMeter(MAX_gain);
                component.Mute = GUILayout.Toggle(component.Mute, new GUIContent("Mute", "Toggle track on and off"));
            } GUILayout.EndVertical();

            component.runEffectInEditMode = GUILayout.Toggle(component.runEffectInEditMode, new GUIContent("Run Effect In Edit Mode (" + component.runTime.ToString() + " ms)", "Enable/disable component when the editor is not playing.\nEnable to reduce CPU usage"));
            Repaint();
        }
Пример #13
0
        public override void OnInspectorGUI()
        {
            float outFloat = 0;
            StateVariableFilter component = (StateVariableFilter)target;

            GUILayout.BeginVertical("Box"); {
                FilterState currentFilter = component.Filter;
                FilterState newFilter     = (FilterState)EditorGUILayout.EnumPopup(new GUIContent("Filter State", "Hi Band,low band, etc"), component.Filter);
                if (currentFilter != newFilter)
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Filter State");
                    component.Filter = newFilter;
                    EditorGUIUtility.ExitGUI();
                }

                if (InspectorUtils.FloatSliderExponential(component.Frequency, 60, 12000, "Frequency", "Frequency of Filter", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Frequency");
                    component.Frequency = outFloat;
                    EditorGUIUtility.ExitGUI();
                }

                if (InspectorUtils.FloatSlider(component.Resonance, 0, 1, "Resonance (Q)", "Resonance (Q) of filter", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Resonance");
                    component.Resonance = outFloat;
                    EditorGUIUtility.ExitGUI();
                }

                if (InspectorUtils.FloatSlider(component.Drive, 0, 0.1f, "Drive", "Filter drive", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Drive");
                    component.Drive = outFloat;
                    EditorGUIUtility.ExitGUI();
                }

                bool isAdditive = false;
                switch (newFilter)
                {
                case FilterState.BandAdd:
                case FilterState.LowShelf:
                case FilterState.HighShelf:
                    isAdditive = true;
                    break;

                default:
                    isAdditive = false;
                    break;
                }

                if (isAdditive)
                {
                    if (InspectorUtils.FloatSlider(component.AdditiveGain, -1, 1, "Additive Gain", "Amount of selected frequency band to add to original signal", out outFloat))
                    {
                        InspectorUtils.RecordObject(component, inspectorName + " - Additive Gain");
                        component.AdditiveGain = outFloat;
                        EditorGUIUtility.ExitGUI();
                    }
                }
            } GUILayout.EndVertical();

            component.runEffectInEditMode = GUILayout.Toggle(component.runEffectInEditMode, new GUIContent("Run Effect In Edit Mode (" + component.runTime.ToString() + " ms)", "Enable/disable component when the editor is not playing.\nEnable to reduce CPU usage"));
            Repaint();
        }
Пример #14
0
        public override void OnInspectorGUI()
        {
            float      outFloat  = 0;
            Compressor component = (Compressor)target;

            MAX_inputGain      *= 0.95f;
            MAX_compressedGain *= 0.95f;
            MAX_dryGain        *= 0.95f;
            MAX_outputGain     *= 0.95f;
            MAX_gainReduction  *= 0.95f;

            MAX_inputGain      = Mathf.Max(MAX_inputGain, component.MAX_inputGain);
            MAX_compressedGain = Mathf.Max(MAX_compressedGain, component.MAX_compressedGain);
            MAX_dryGain        = Mathf.Max(MAX_dryGain, component.MAX_dryGain);
            MAX_outputGain     = Mathf.Max(MAX_outputGain, component.MAX_outputGain);
            MAX_gainReduction  = Mathf.Max(MAX_gainReduction, component.MAX_gainReduction);

            GUILayout.Label(component.envelope.attackCoeff.ToString());

            GUILayout.BeginVertical("Box"); {
                if (InspectorUtils.FloatSlider(component.InputGain, 0, 3, "Input Gain", "Volume going into device", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Input Gain");
                    component.InputGain = outFloat;
                    EditorGUIUtility.ExitGUI();
                }

                InspectorUtils.VolumeMeter(MAX_inputGain);
            } GUILayout.EndVertical();

            GUILayout.BeginVertical("Box"); {
                if (InspectorUtils.FloatSlider(component.Threshold, 0, 1, "Threshold", "Volume at which compression is triggered", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Threshold");
                    component.Threshold = outFloat;
                    EditorGUIUtility.ExitGUI();
                }

                if (InspectorUtils.FloatSlider(component.Slope, 0, 2, "Slope", "Amount of compression", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Slope");
                    component.Slope = outFloat;
                    EditorGUIUtility.ExitGUI();
                }

                if (InspectorUtils.FloatSlider(component.Attack, 0, 1, "Attack", "How quickly the component impacts sound", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Attack");
                    component.Attack = outFloat;
                    EditorGUIUtility.ExitGUI();
                }

                if (InspectorUtils.FloatSlider(component.Release, 0, 1, "Release", "How quickly the audio returns to normal", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Released");
                    component.Release = outFloat;
                    EditorGUIUtility.ExitGUI();
                }

                InspectorUtils.VolumeMeter(1 - MAX_gainReduction);
            } GUILayout.EndVertical();

            GUILayout.BeginVertical("Box"); {
                if (InspectorUtils.FloatSlider(component.DryGain, 0, 5, "Dry Gain", "Amount of the dry signal into mix", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Dry Gain");
                    component.DryGain = outFloat;
                    EditorGUIUtility.ExitGUI();
                }

                InspectorUtils.VolumeMeter(MAX_dryGain);

                if (InspectorUtils.FloatSlider(component.CompressedGain, 0, 5, "Compressed Gain", "Amount of the compressed signal into mix", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Compressed Gain");
                    component.CompressedGain = outFloat;
                    EditorGUIUtility.ExitGUI();
                }

                InspectorUtils.VolumeMeter(MAX_compressedGain);

                if (InspectorUtils.FloatSlider(component.OutputGain, 0, 5, "Output Gain", "Volume going out of the device", out outFloat))
                {
                    InspectorUtils.RecordObject(component, inspectorName + " - Output Gain");
                    component.OutputGain = outFloat;
                    EditorGUIUtility.ExitGUI();
                }

                InspectorUtils.VolumeMeter(MAX_outputGain);
            } GUILayout.EndVertical();

            component.runEffectInEditMode = GUILayout.Toggle(component.runEffectInEditMode, new GUIContent("Run Effect In Edit Mode (" + component.runTime.ToString() + " ms)", "Enable/disable component when the editor is not playing.\nEnable to reduce CPU usage"));
            Repaint();
        }