private static Dictionary <string, AMidiDefinition> createGenericMidiDefinitions(MappingType type) { Dictionary <string, AMidiDefinition> result = new Dictionary <string, AMidiDefinition>(); KeyConverter keyConverter = new KeyConverter(); int numChannels = 16; int num = 128; for (int i = 1; i <= numChannels; i++) { for (int j = 0; j < num; j++) { var cc = new ControlChangeMidiDefinition(type, i, j); result.Add(cc.Note, cc); var note = new NoteMidiDefinition(type, i, keyConverter.GetKeyTextIPN(j)); result.Add(note.Note, note); } var pitch = new PitchBendMidiDefinition(type, i); result.Add(pitch.Note, pitch); } return(result); }
//////////// private void applyMidiRange() { var templateBinding = _mappings.First().MidiBinding as AGenericMidiDefinition; var isCC = templateBinding is ControlChangeMidiDefinition; var keyConverter = new MidiLib.Utils.KeyConverter(); int number = isCC ? (templateBinding as ControlChangeMidiDefinition).Cc : keyConverter.ToKeyIPN((templateBinding as NoteMidiDefinition).KeyText); AGenericMidiDefinition newBinding; foreach (var m in _mappings) { if (m.MidiBinding != null && m.MidiBinding.Equals(templateBinding)) { continue; } number++; if (isCC) { newBinding = new ControlChangeMidiDefinition(templateBinding.Type, templateBinding.Channel, number); } else { newBinding = new NoteMidiDefinition(templateBinding.Type, templateBinding.Channel, keyConverter.GetKeyTextIPN(number)); } m.SetBinding(newBinding); } analyzeSelection(); updateMenus(); }