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;
        }
Ejemplo n.º 2
0
        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>();
        }
Ejemplo n.º 5
0
        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;
        }
Ejemplo n.º 7
0
        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;
        }
Ejemplo n.º 8
0
        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));
        }