public static MidiMappingRules LoadFromXml(string fileName) { MidiMappingRules mappingRules = new MidiMappingRules(); XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load(fileName); if (xmlDocument.DocumentElement.Name != RootElementName) { // this is some other type of XML file return(null); } foreach (XmlNode ruleNode in xmlDocument.DocumentElement.ChildNodes) { if (ruleNode.Name == "NoteMap") { NoteMap mappingRule = NoteMap.LoadFromXmlNode(ruleNode); mappingRules.noteRules.Add(mappingRule); } else if (ruleNode.Name == "Exclude") { ExcludeRule excludeRule = ExcludeRule.LoadFromXmlNode(ruleNode); mappingRules.excludeRules.Add(excludeRule); } else if (ruleNode.Name == "ControllerMap") { ControllerMap controllerMap = ControllerMap.LoadFromXmlNode(ruleNode); mappingRules.eventRules.Add(controllerMap); } else if (ruleNode.Name == "AfterTouchMap") { AfterTouchMap afterTouchMap = AfterTouchMap.LoadFromXmlNode(ruleNode); mappingRules.eventRules.Add(afterTouchMap); } else if (ruleNode.Name == "PitchWheelMap") { PitchWheelMap pitchWheelMap = PitchWheelMap.LoadFromXmlNode(ruleNode); mappingRules.eventRules.Add(pitchWheelMap); } else if (ruleNode.Name == "TextMap") { TextMap map = TextMap.LoadFromXmlNode(ruleNode); mappingRules.eventRules.Add(map); } else if (ruleNode.Name == "Insert") { InsertRule insertRule = InsertRule.LoadFromXmlNode(ruleNode); mappingRules.insertEvents.Add(insertRule.Apply(null)); } else if (ruleNode.Name == GeneralSettingsElementName) { foreach (XmlAttribute attribute in ruleNode.Attributes) { mappingRules.generalProperties.Add(attribute.Name, attribute.Value); } // TODO: could check that property names are as expected and validate any // non-string ones } } return(mappingRules); }
public static MidiMappingRules LoadFromCubaseDrumMap(string fileName) { MidiMappingRules mappingRules = new MidiMappingRules(); XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load(fileName); if (xmlDocument.DocumentElement.Name != "DrumMap") { // this is some other type of XML file return(null); } foreach (XmlNode mapNode in xmlDocument.DocumentElement.ChildNodes) { if (mapNode.Name == "list" && mapNode.Attributes["name"].Value == "Map") { foreach (XmlNode itemNode in mapNode.ChildNodes) { if (itemNode.Name == "item") { NoteMap mappingRule = new NoteMap(); foreach (XmlNode node in itemNode.ChildNodes) { string name = node.Attributes["name"].Value; if (name == "INote") { mappingRule.InNotes = new InputValueParameters(node.Attributes["value"].Value); } else if (name == "Channel") { mappingRule.OutChannel = new NoteEventOutputParameters((Int32.Parse(node.Attributes["value"].Value) + 1).ToString(), 1, 16); } else if (name == "ONote") { mappingRule.OutNote = new NoteEventOutputParameters(node.Attributes["value"].Value, 0, 127); } else if (name == "Name") { mappingRule.Name = node.Attributes["value"].Value; } // TODO: consider support for: // Length (float) not exactly sure what this is - 200 a common value // Mute - mutes this note? // DisplayNote - ? // HeadSymbol // Voice // PortIndex // QuantizeIndex } mappingRules.noteRules.Add(mappingRule); } } } } return(mappingRules); }
public static MidiMappingRules LoadFromCakewalkDrumMap(string fileName) { MidiMappingRules mappingRules = new MidiMappingRules(); CakewalkMapFile map = new CakewalkMapFile(fileName); foreach (CakewalkDrumMapping mapping in map.DrumMappings) { NoteMap mappingRule = new NoteMap(); mappingRule.Name = mapping.NoteName; mappingRule.InNotes = new InputValueParameters(mapping.InNote); mappingRule.OutChannel = new NoteEventOutputParameters(mapping.Channel); mappingRule.OutNote = new NoteEventOutputParameters(mapping.OutNote); mappingRule.OutVelocity = new NoteEventOutputParameters(mapping.VelocityAdjust, (int)mapping.VelocityScale, 0, 127); // TODO: support out velocity scaling mappingRules.noteRules.Add(mappingRule); } return(mappingRules); }
public bool ValidatePage() { ComboItem selectedItem = (ComboItem)listBoxMapping.SelectedItem; if (selectedItem == null) { MessageBox.Show("Please select a mapping file to use first", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning); return(false); } try { if (selectedItem.FileName.ToLower().EndsWith(".xml")) { this.mappingRules = MidiMappingRules.LoadFromXml(selectedItem.FileName); } else if (selectedItem.FileName.ToLower().EndsWith(".map")) { this.mappingRules = MidiMappingRules.LoadFromCakewalkDrumMap(selectedItem.FileName); } else if (selectedItem.FileName.ToLower().EndsWith(".drm")) { this.mappingRules = MidiMappingRules.LoadFromCubaseDrumMap(selectedItem.FileName); } else { throw new NotSupportedException(String.Format("{0} is not a supported map format", selectedItem.FileName)); } } catch (Exception e) { MessageBox.Show( String.Format("Error Loading Map\r\n{0}", e.Message), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning); return(false); } Settings.Default.LastSelectedMapping = selectedItem.FileName; return(true); }
public ProcessFilesThreadParams(MidiMappingRules mappingRules, List <string> selectedFiles) { this.mappingRules = mappingRules; this.selectedFiles = selectedFiles; }
public MidiFileMapper(MidiMappingRules mappingRules, List <string> filesToConvert) { this.filesToConvert = filesToConvert; this.mappingRules = mappingRules; this.settings = Settings.Default; }
public MidiFileMapper(MidiMappingRules mappingRules) : this(mappingRules, null) { }