public FiveLaneKeysMonitor() { this.InitializeComponent(); var buttons = new List <ButtonName>(); buttons.Add(ButtonName.Green); buttons.Add(ButtonName.Red); buttons.Add(ButtonName.Yellow); buttons.Add(ButtonName.Blue); buttons.Add(ButtonName.Orange); this.device = new PsDevice("Five Lane Keys Midi Profile", DeviceType.Piano); this.device.ProfileButtons = new List <PsProfileButton>(); this.monitorButtons = new List <MonitorButton>(); foreach (var button in buttons) { var profileButton = new PsProfileButton(button, 0, 0, 0); var monitorButton = new MonitorButton(profileButton); this.device.ProfileButtons.Add(profileButton); this.monitorButtons.Add(monitorButton); } this.OnPropertyChanged("MonitorButtons"); this.GreenVisibility = Visibility.Hidden; this.RedVisibility = Visibility.Hidden; this.YellowVisibility = Visibility.Hidden; this.BlueVisibility = Visibility.Hidden; this.OrangeVisibility = Visibility.Hidden; }
public TwoOctaveKeysMonitor() { this.InitializeComponent(); this.device = new PsDevice("Two Octave Keys Midi Profile", DeviceType.Piano); this.C3 = Visibility.Hidden; this.CSharp3 = Visibility.Hidden; this.D3 = Visibility.Hidden; this.DSharp3 = Visibility.Hidden; this.E3 = Visibility.Hidden; this.F3 = Visibility.Hidden; this.FSharp3 = Visibility.Hidden; this.G3 = Visibility.Hidden; this.GSharp3 = Visibility.Hidden; this.A3 = Visibility.Hidden; this.ASharp3 = Visibility.Hidden; this.B3 = Visibility.Hidden; this.C4 = Visibility.Hidden; this.CSharp4 = Visibility.Hidden; this.D4 = Visibility.Hidden; this.DSharp4 = Visibility.Hidden; this.E4 = Visibility.Hidden; this.F4 = Visibility.Hidden; this.FSharp4 = Visibility.Hidden; this.G4 = Visibility.Hidden; this.GSharp4 = Visibility.Hidden; this.A4 = Visibility.Hidden; this.ASharp4 = Visibility.Hidden; this.B4 = Visibility.Hidden; this.C5 = Visibility.Hidden; }
public RealGuitarMonitor() { this.InitializeComponent(); this.controller = new Controller(ControllerType.RealGuitar, ControllerCategory.Guitars); this.device = new PsDevice("Sysex Based Real Guitar Midi Profile", DeviceType.GuitarReal); this.device.Method = (int)Method.GuitarSysEx; }
public CustomControllerMonitor() { this.InitializeComponent(); this.controller = new Controller(ControllerType.CustomController, ControllerCategory.Custom); this.device = new PsDevice("Custom Controller Midi Profile", DeviceType.Gamepad); this.device.ProfileButtons = new List <PsProfileButton>(); this.CurrentDeviceType = (DeviceType)this.device.Type; this.CurrentMethod = (Method)this.device.Method; this.monitorButtons = new List <MonitorButton>(); this.RemoveableButtons = new ObservableCollection <RemoveableMonitorButton>(); }
public RealDrumsMonitor() { this.InitializeComponent(); var buttons = new List <ButtonName>(); buttons.Add(ButtonName.Red); buttons.Add(ButtonName.Yellow_C); buttons.Add(ButtonName.Yellow_O); buttons.Add(ButtonName.Yellow_P); buttons.Add(ButtonName.Yellow_S); buttons.Add(ButtonName.Yellow_Tom); buttons.Add(ButtonName.Blue); buttons.Add(ButtonName.Blue_Tom); buttons.Add(ButtonName.Green); buttons.Add(ButtonName.Green_Tom); buttons.Add(ButtonName.Bass); buttons.Add(ButtonName.Bass); this.device = new PsDevice("Real Drums Midi Profile", DeviceType.DrumsReal); this.device.ProfileButtons = new List <PsProfileButton>(); this.monitorButtons = new List <MonitorButton>(); foreach (var button in buttons) { var profileButton = new PsProfileButton(button, 0, 0, 0); var monitorButton = new MonitorButton(profileButton); this.device.ProfileButtons.Add(profileButton); this.monitorButtons.Add(monitorButton); } this.OnPropertyChanged("MonitorButtons"); this.RedVisibility = Visibility.Hidden; this.RimVisibility = Visibility.Hidden; this.YellowClosedVisibility = Visibility.Hidden; this.YellowOpenVisibility = Visibility.Hidden; this.YellowPedalVisibility = Visibility.Hidden; this.YellowSizzleVisibility = Visibility.Hidden; this.YellowTomVisibility = Visibility.Hidden; this.BlueVisibility = Visibility.Hidden; this.BlueTomVisibility = Visibility.Hidden; this.GreenVisibility = Visibility.Hidden; this.GreenTomVisibility = Visibility.Hidden; this.BassVisibility = Visibility.Hidden; }
public FiveFretGuitarMonitor() { this.InitializeComponent(); var buttons = new List <ButtonName>(); buttons.Add(ButtonName.Green); buttons.Add(ButtonName.Red); buttons.Add(ButtonName.Yellow); buttons.Add(ButtonName.Blue); buttons.Add(ButtonName.Orange); buttons.Add(ButtonName.Up); buttons.Add(ButtonName.Down); buttons.Add(ButtonName.Start); buttons.Add(ButtonName.Back); this.device = new PsDevice("Five Fret Whammy Guitar Midi Profile", Enums.DeviceType.Guitar); this.device.Method = (int)Method.GuitarLegacy; this.device.ProfileButtons = new List <PsProfileButton>(); this.monitorButtons = new List <MonitorButton>(); foreach (var button in buttons) { var profileButton = new PsProfileButton(button, 0, 0, 0); var monitorButton = new MonitorButton(profileButton); this.device.ProfileButtons.Add(profileButton); this.monitorButtons.Add(monitorButton); } this.OnPropertyChanged("MonitorButtons"); this.GreenVisibility = Visibility.Hidden; this.RedVisibility = Visibility.Hidden; this.YellowVisibility = Visibility.Hidden; this.BlueVisibility = Visibility.Hidden; this.OrangeVisibility = Visibility.Hidden; this.UpVisibility = Visibility.Hidden; this.DownVisibility = Visibility.Hidden; this.StartVisibility = Visibility.Hidden; this.BackVisibility = Visibility.Hidden; }
public SevenLaneDrumsMonitor() { this.InitializeComponent(); var buttons = new List <ButtonName>(); buttons.Add(ButtonName.Red); buttons.Add(ButtonName.Yellow_Tom); buttons.Add(ButtonName.Blue_Tom); buttons.Add(ButtonName.Green_Tom); buttons.Add(ButtonName.Yellow); buttons.Add(ButtonName.Green); buttons.Add(ButtonName.Blue); buttons.Add(ButtonName.Bass); buttons.Add(ButtonName.Bass); this.device = new PsDevice("Seven Lane Drums Midi Profile", DeviceType.Drums); this.device.ProfileButtons = new List <PsProfileButton>(); this.monitorButtons = new List <MonitorButton>(); foreach (var button in buttons) { var profileButton = new PsProfileButton(button, 0, 0, 0); var monitorButton = new MonitorButton(profileButton); this.device.ProfileButtons.Add(profileButton); this.monitorButtons.Add(monitorButton); } this.OnPropertyChanged("MonitorButtons"); this.RedVisibility = Visibility.Hidden; this.YellowTomVisibility = Visibility.Hidden; this.BlueTomVisibility = Visibility.Hidden; this.GreenTomVisibility = Visibility.Hidden; this.YellowCymbalVisibility = Visibility.Hidden; this.GreenCymbalVisibility = Visibility.Hidden; this.BlueCymbalVisibility = Visibility.Hidden; this.BassVisibility = Visibility.Hidden; }
public static MidiProfile Create(IControllerMonitor monitor, bool checkForZeroOrNullButtons) { if (monitor == null) { throw new ArgumentNullException("monitor"); } PsDevice device = monitor.Device; if ((monitor is IButtonHighlighter) == false) { var strBuilder = new StringBuilder(); strBuilder.AppendLine("<DEVICE>"); strBuilder.AppendFormat("\t<NAME>{0}</NAME>{1}", device.Name, Environment.NewLine); strBuilder.AppendFormat("\t<DESCRIPTION>{0}</DESCRIPTION>{1}", device.Description, Environment.NewLine); strBuilder.AppendFormat("\t<TYPE>{0}</TYPE>{1}", device.Type, Environment.NewLine); if (device.Method != 0) { strBuilder.AppendFormat("\t<METHOD>{0}</METHOD>{1}", device.Method, Environment.NewLine); } strBuilder.Append("</DEVICE>"); return(new MidiProfile( strBuilder.ToString(), null, MidiProfileErrorType.NoError)); } bool buttonsAreInvalid = device.ProfileButtons == null || device.ProfileButtons.Count == 0; if (checkForZeroOrNullButtons && buttonsAreInvalid) { return(new MidiProfile( null, "Midi profile creation failed - no buttons!", MidiProfileErrorType.NoButtonsDefined)); } if (device.ProfileButtons.Where(button => button.Name == ButtonName.None).Count() > 0) { return(new MidiProfile( null, "Midi profile creation failed - button name can not be 'None'!", MidiProfileErrorType.NoneButtonNameDetected)); } string error = "Midi profile creation failed - not all notes were set!"; var buttons = new List <PsProfileButton>(device.ProfileButtons); // checking bass buttons var invalidBassButtons = buttons.Where( button => button.Name == ButtonName.Bass && button.Note == 0).ToList(); if (invalidBassButtons.Count == 2) { return(new MidiProfile(null, error, MidiProfileErrorType.ZeroNoteDetected)); } else if (invalidBassButtons.Count == 1) { // allowing to set just one bass button. Removing the invalid one. buttons.Remove(invalidBassButtons[0]); } var bassButtons = buttons.Where(button => button.Name == ButtonName.Bass).ToList(); if (bassButtons.Count == 2) { var bass1 = bassButtons[0]; var bass2 = bassButtons[1]; if (bass1.Note == bass2.Note && bass1.Channel == bass2.Channel) { // both bass buttons has the same note. Removing this one, which has higher note off value. var bassWithHigherNoteOffValue = bassButtons.OrderBy(x => x.NoteOffValue).Last(); buttons.Remove(bassWithHigherNoteOffValue); } } // checking for not set buttons var invalidButtons = buttons.Where(button => button.Note == 0).ToList(); if (invalidButtons.Count > 0) { return(new MidiProfile(null, error, MidiProfileErrorType.ZeroNoteDetected)); } // checking for note duplications var groups = buttons.GroupBy( button => button.Note, button => button.Name, (note, buttonNames) => new { DuplicatedNote = note, DuplicatedButtons = buttonNames.ToList() }); var builder = new StringBuilder(); foreach (var group in groups) { if (group.DuplicatedButtons.Count > 1) { builder.AppendFormat("-Note {0} is set to multiply buttons:", group.DuplicatedNote); foreach (var duplicatedButton in group.DuplicatedButtons) { builder.AppendFormat(" {0} ", duplicatedButton); } builder.AppendLine(); } } if (!string.IsNullOrEmpty(builder.ToString())) { error = "Midi profile creation failed!\r\n\r\n"; error += builder.ToString(); return(new MidiProfile(null, error, MidiProfileErrorType.NoteDuplicationsDetected)); } var deviceToSerialize = new PsDevice(); deviceToSerialize.Description = device.Description; deviceToSerialize.ProfileButtons = buttons; deviceToSerialize.Method = device.Method; deviceToSerialize.Name = device.Name; deviceToSerialize.Type = device.Type; XmlSerializer serializer = new XmlSerializer(typeof(PsDevice)); StringBuilder sb = new StringBuilder(); XmlWriterSettings xSettings = new XmlWriterSettings() { IndentChars = "\t", Indent = true, Encoding = Encoding.Unicode, OmitXmlDeclaration = true, }; using (XmlWriter writer = XmlWriter.Create(sb, xSettings)) { serializer.Serialize(writer, deviceToSerialize); } sb.Replace("<ProfileButton>", string.Empty); sb.Replace("</ProfileButton>", string.Empty); if (device.Method == 0) { sb.Replace("<METHOD>0</METHOD>", string.Empty); } if (buttonsAreInvalid) { sb.Replace("<BUTTONS />", string.Empty); } var formatted = ProfileCreator.AutoFormatXml(sb.ToString()); return(new MidiProfile(formatted, null, MidiProfileErrorType.NoError)); }