private static bool SetMute(MidiConfiguration midiConfig, MidiControlChangeMessage msg, bool oldMute)
        {
            var newMute = oldMute;

            if (midiConfig.ControllerType == ControllerTypes.LinearPotentiometer)
            {
                var calcVolume = Current.CalculateVolume(msg.ControlValue, midiConfig.MinValue, midiConfig.MaxValue,
                                                         midiConfig.ScalingValue);

                newMute = calcVolume < 50;
            }
            else if (midiConfig.ControllerType == ControllerTypes.Button)
            {
                if (msg.ControlValue == midiConfig.MaxValue)
                {
                    newMute = !newMute;
                }
            }
            else if (midiConfig.ControllerType == ControllerTypes.RotaryEncoder)
            {
                if (msg.ControlValue == midiConfig.MaxValue)
                {
                    newMute = false;
                }
                else
                {
                    newMute = true;
                }
            }

            return(newMute);
        }
        private static int SetVolume(MidiConfiguration midiConfig, MidiControlChangeMessage msg, int oldVolume)
        {
            var newVolume = oldVolume;

            switch (midiConfig.ControllerType)
            {
            case ControllerTypes.LinearPotentiometer:
                newVolume = Current.CalculateVolume(msg.ControlValue, midiConfig.MinValue, midiConfig.MaxValue,
                                                    midiConfig.ScalingValue);
                break;

            case ControllerTypes.Button:
            {
                if (msg.ControlValue == midiConfig.MaxValue)
                {
                    newVolume = oldVolume > 0 ? 0 : 100;
                }

                break;
            }

            case ControllerTypes.RotaryEncoder when msg.ControlValue == midiConfig.MinValue:
            {
                newVolume -= (int)midiConfig.ScalingValue;
                if (newVolume < 0)
                {
                    newVolume = 0;
                }

                break;
            }

            case ControllerTypes.RotaryEncoder:
            {
                if (msg.ControlValue == midiConfig.MaxValue)
                {
                    newVolume += (int)midiConfig.ScalingValue;

                    if (newVolume > 100)
                    {
                        newVolume = 100;
                    }
                }

                break;
            }
            }

            return(newVolume);
        }
 private static bool MidiEquals(MidiConfiguration midiConfig, MidiControlChangeMessage msg)
 {
     return(midiConfig.Channel == msg.Channel && midiConfig.Controller == msg.Controller);
 }