Esempio n. 1
0
        private void updateEncoderMode()
        {
            if (TypeStr != TYPE_STRING_GENERIC_MIDI)
            {
                return;
            }

            _encoderMode = _mappings
                           .Where(m => m.Command.Control is EncoderControl && m.MidiBinding != null)
                           .Select(m => (m.MidiBinding as AGenericMidiDefinition).MidiEncoderMode)
                           .FirstOrDefault();
        }
Esempio n. 2
0
        public void hack_encoder_mididefinition()
        {
            AGenericMidiDefinition midiBinding = (this._mapping.MidiBinding as AGenericMidiDefinition);

            if (midiBinding == null)
            {
                return;    //nothing todo. We are not linked to a midi modifier yet
            }

            MidiEncoderMode actual_encoder_mode = _mapping.Command.get_EncoderMode();

            midiBinding.MidiEncoderMode = actual_encoder_mode;
        }
Esempio n. 3
0
        // pestrela: this is for the whole device. The new behaviour is per mapping (=per midibinding)
        private void updateEncoderMode()
        {
            if (TypeStr != TYPE_STRING_GENERIC_MIDI)
            {
                return;
            }

            //_encoderMode = _mappings
            //    .Where(m => m.Command.Control is EncoderControl && m.MidiBinding != null)
            //   .Select(m => (m.MidiBinding as AGenericMidiDefinition).MidiEncoderMode)
            //    .FirstOrDefault();

            var all_mappings = _mappings
                               .Where(m => m.Command.Control is EncoderControl && m.MidiBinding != null)
                               .Select(m => (m.MidiBinding as AGenericMidiDefinition));

            var all_encoder_modes = all_mappings
                                    .Select(m => m.MidiEncoderMode);

            bool multiple_modes = all_encoder_modes.Count() > 1;

            _encoderMode = all_encoder_modes.FirstOrDefault();
            return;
        }
Esempio n. 4
0
        private List <Setting> getSettings()
        {
            _propertyDict = new Dictionary <Setting, System.Reflection.PropertyInfo>();

            string[] ignored = { "Type", "AllowedInteractionModes" };

            var detailsSettings = new List <Setting>();

            Type t     = _command.Control.GetType();
            var  props = t.GetProperties().Where(p => !ignored.Contains(p.Name));

            int     i = 0;
            Setting s = null;
            string  name;

            foreach (var p in props)
            {
                Type targetType = p.PropertyType;
                name = p.Name;

                switch (name)
                {
                case "Invert":
                case "Blend":
                    s = new BoolSetting(i++, name + ":");
                    break;

                case "SoftTakeOver":
                    s = new BoolSetting(i++, "Soft Takeover:");
                    break;

                case "AutoRepeat":
                    s = new BoolSetting(i++, "Auto Repeat:");
                    break;

                case "RotaryAcceleration":
                    s = new IntSetting(i++, "Rotary Acceleration:", 0, 100);
                    break;

                case "RotarySensitivity":
                    s = new IntSetting(i++, "Rotary Sensitivity:", 0, 300);
                    break;

                case "Mode":
                case "EncoderMode":
                    AGenericMidiDefinition midiBinding = (this._mappings.First().MidiBinding as AGenericMidiDefinition);
                    if (midiBinding != null)
                    {
                        MidiEncoderMode actual_encoder_mode = midiBinding.MidiEncoderMode;
                        _command.set_EncoderMode(actual_encoder_mode);
                    }
                    s = new EnumSetting <MidiEncoderMode>(i++, name + ":");
                    break;

                case "MidiRangeMin":
                    // pestrela 2020/04/11: there is no source code to "IntSetting", comes from "SettingControlLibrary.dll" that is pre-compiled.
                    //s = new IntSetting(i++, "MIDI Range Min:", 0, 127);

                    // pestrela: replaced this with a realy large enum.
                    s = new EnumSetting <MidiOutRange>(i++, "MIDI Range Min:");
                    break;

                case "MidiRangeMax":
                    // s = new IntSetting(i++, "MIDI Range Max:", 0, 127);
                    s = new EnumSetting <MidiOutRange>(i++, "MIDI Range Max:");
                    break;

                case "Resolution":
                    s = new EnumSetting <MappingResolution>(i++, name + ":");
                    break;

                default:
                    s = null;
                    break;
                }

                if (s != null)
                {
                    object rawValue = p.GetValue(_command.Control, null);

                    s.TryParse(rawValue.ToString());
                    s.AcceptChanges();
                    detailsSettings.Add(s);
                    _propertyDict.Add(s, p);
                    s.PropertyChanged += s_PropertyChanged;
                }
                else
                {
                    // Datatype not supported
                }
            }
            return(detailsSettings);
        }
Esempio n. 5
0
 public void set_EncoderMode(MidiEncoderMode new_value)
 {
     RawSettings.EncoderMode2 = new_value;
 }