예제 #1
0
        internal static AGenericMidiDefinition Parse(MappingType type, Format.MidiDefinition definition)
        {
            string id = definition.MidiNote;

            if (string.IsNullOrEmpty(id))
            {
                return(null);
            }

            int channel = int.Parse(id.Substring(2, 2));

            if (id.Contains("+"))
            {
                return(new ComboMidiDefinition(type, channel, definition));
            }

            var parts = id.Split('.');

            switch (parts[1])
            {
            case "CC":
                return(new ControlChangeMidiDefinition(type, channel, int.Parse(parts[2]), definition));

            case "Note":
                return(new NoteMidiDefinition(type, channel, parts[2], definition));

            case "PitchBend":
                return(new PitchBendMidiDefinition(type, channel, definition));

            default:
                return(null);
            }
        }
        internal static AProprietaryMidiDefinition Parse(string deviceTypeStr, Format.MidiDefinition definition)
        {
            switch (definition.MidiControlType)
            {
            case MidiControlType.Button:
                return(new ButtonMidiDefinition(deviceTypeStr, definition));

            case MidiControlType.FaderOrKnob:
                return(new FaderOrKnobMidiDefinition(deviceTypeStr, definition));

            case MidiControlType.PushEncoder:
                return(new PushEncoderMidiDefinition(deviceTypeStr, definition));

            case MidiControlType.Encoder:
                return(new EncoderMidiDefinition(deviceTypeStr, definition));

            case MidiControlType.Jog:
                return(new JogMidiDefinition(deviceTypeStr, definition));

            case MidiControlType.Out:
                return(new OutMidiDefinition(deviceTypeStr, definition));

            default:
                return(null);
            }
        }
예제 #3
0
        internal ComboMidiDefinition(MappingType type, int channel, Format.MidiDefinition definition)
            : base(type, channel, definition)
        {
            var defs = splitDefinition(definition);

            _midiDefinition1 = AGenericMidiDefinition.Parse(type, defs.Item1);
            _midiDefinition2 = AGenericMidiDefinition.Parse(type, defs.Item2);
        }
예제 #4
0
        private Tuple <Format.MidiDefinition, Format.MidiDefinition> splitDefinition(Format.MidiDefinition definition)
        {
            var parts = definition.MidiNote.Split('+');

            return(new Tuple <Format.MidiDefinition, Format.MidiDefinition>(
                       new Format.MidiDefinition(
                           parts[0],
                           definition.MidiControlType,
                           definition.MinValue,
                           definition.MaxValue,
                           definition.EncoderMode,
                           definition.ControlId),
                       new Format.MidiDefinition(
                           parts[1],
                           definition.MidiControlType,
                           definition.MinValue,
                           definition.MaxValue,
                           definition.EncoderMode,
                           definition.ControlId)
                       ));
        }
예제 #5
0
 internal EncoderMidiDefinition(string deviceTypeStr, Format.MidiDefinition definition)
     : base(deviceTypeStr, MappingType.In, definition)
 {
 }
예제 #6
0
 internal FaderOrKnobMidiDefinition(string deviceTypeStr, Format.MidiDefinition definition)
     : base(deviceTypeStr, MappingType.In, definition)
 {
 }
예제 #7
0
        internal static AMidiDefinition Parse(string deviceTypeStr, MappingType type, Format.MidiDefinition definition)
        {
            if (
                (deviceTypeStr == "Traktor.Kontrol S4 MK3") ||
                (deviceTypeStr == "Traktor.Kontrol S2 MK3") ||
                (deviceTypeStr == "Traktor.Kontrol S8") ||
                false
                )
            {
                return(AProprietaryMidiDefinition.Parse(deviceTypeStr, definition));
            }

            if (definition.ControlId > -1)
            {
                return(AProprietaryMidiDefinition.Parse(deviceTypeStr, definition));
            }
            else
            {
                return(AGenericMidiDefinition.Parse(type, definition));
            }
        }
예제 #8
0
 internal AMidiDefinition(string deviceTypeStr, MappingType type, Format.MidiDefinition definition)
 {
     DeviceTypeStr = deviceTypeStr;
     Type          = type;
     RawDefinition = definition;
 }
예제 #9
0
 internal PitchBendMidiDefinition(MappingType type, int channel, Format.MidiDefinition definiton)
     : base(type, channel, definiton)
 {
 }
예제 #10
0
 internal AGenericMidiDefinition(MappingType type, int channel, Format.MidiDefinition definition)
     : base(Device.TYPE_STRING_GENERIC_MIDI, type, definition)
 {
     _channel = channel;
     _note    = definition.MidiNote.Replace(string.Format("Ch{0:00}.", channel), "");
 }
예제 #11
0
 internal AProprietaryMidiDefinition(string deviceTypeStr, MappingType type, Format.MidiDefinition definition)
     : base(deviceTypeStr, type, definition)
 {
 }
예제 #12
0
 internal static AMidiDefinition Parse(string deviceTypeStr, MappingType type, Format.MidiDefinition definition)
 {
     if (definition.ControlId > -1)
     {
         return(AProprietaryMidiDefinition.Parse(deviceTypeStr, definition));
     }
     else
     {
         return(AGenericMidiDefinition.Parse(type, definition));
     }
 }
예제 #13
0
 internal OutMidiDefinition(string deviceTypeStr, Format.MidiDefinition definition)
     : base(deviceTypeStr, MappingType.Out, definition)
 {
 }
예제 #14
0
 internal NoteMidiDefinition(MappingType type, int channel, string keyText, Format.MidiDefinition definition)
     : base(type, channel, definition)
 {
     _keyText = keyText;
 }
예제 #15
0
 internal ControlChangeMidiDefinition(MappingType type, int channel, int cc, Format.MidiDefinition definition)
     : base(type, channel, definition)
 {
     _cc = cc;
 }