Beispiel #1
0
        public XGPControlCell AddControlCell(XGMidiParameter target, int x, int y, int w, Color c)
        {
            y += 2;
            XGPControlCell ctrl = new XGPControlCell()
            {
                Location        = new Point(CellW * x + 6, CellH * y + 6),
                Size            = new Size(CellW * w, CellH),
                BaseColor       = c,
                TargetParameter = target,
            };

            XGControls.Add(ctrl);
            return(ctrl);
        }
Beispiel #2
0
 XGPControlCell AddControl(int x, int y, string label, XGMidiParameter param)
 {
     Parameters.Add(param);
     AddLabelCell(label, x, y, 4, labelColor);
     return(AddControlCell(param, x + 4, y, 3, valueColor));
 }
Beispiel #3
0
        void CreateXGPControls()
        {
            masterVolume_    = new XGMidiParameter(Device, "XGMasterVolume", 0x000004, 1, 0, 127, 0);
            masterAttn_      = new XGMidiParameter(Device, "XGMasterVolume", 0x000005, 1, 0, 127, 127);
            masterTranspose_ = new XGMidiParameter(Device, "Transpose", 0x000006, 1, 0x28, 0x58, 64);
            masterTranspose_.ToStringConverter = XGMidiParameter.CenterPM;
            masterTune_ = new XGMidiParameter(Device, "MasterTune", 0x000000, 4, 0, 0x7FF, 0x400);
            masterTune_.ReadValueEncoding  = v => v & 0xF | v >> 3 & 0xF0 | v >> 6 & 0xF00;
            masterTune_.WriteValueEncoding = v => v & 0xF | (v & 0xF0) << 3 | (v & 0xF00) << 6;
            masterTune_.ToStringConverter  = v => ((v - 1024) / 10).ToString("+000;-000") + "." + ((v - 1024) % 10).ToString();

            int w = 5;
            int x = 7;
            int y = -2;

            xgpGrid1.AddTriggerCell("[CONNECTION TEST]", x, y, w, Color.Gray, () =>
            {
                Device.WriteXGParam(0x10000, 4, 0);
                Device.WriteXGParam(0x10004, 4, 0);
                Device.WriteXGParam(0x10008, 4, 0);
                Device.WriteXGParam(0x1000C, 4, 0);

                Device.SendXGBulkDumpRequest(0x010000);
                while (!Device.AllDumpRequestHasDone)
                {
                    Application.DoEvents();
                }
                byte[] information = new byte[16];
                for (int i = 0; i < information.Length; i++)
                {
                    information[i] = (byte)Device.ReadXGParam(0x10000 + i, 1);
                }
                if (information[0] != 0)
                {
                    int len          = Array.IndexOf(information, 0);
                    string modelName = System.Text.Encoding.ASCII.GetString(information, 0, len >= 0 && len < 14 ? len : 14);
                    MessageBox.Show("Connection OK. \nReplied from " + modelName, "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    MessageBox.Show("Reqest timed out.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
            }).GetDescriptionFunc = () => "DblClick: Request DeviceName";
            y++;

            xgpGrid1.AddTriggerCell("[XG SYSTEM ON]", x, y, w, Color.Red, () =>
            {
                if (MessageBox.Show("Send XG SYSTEM ON?", "Confirmation", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                {
                    Device.SendXGParameterByValue(0x00007E, 0, 1);
                    xgpGrid1.RedrawOnRequestComplete();
                }
            }).GetDescriptionFunc = () => "DblClick: Send XG SYSTEM ON.";
            y++;

            xgpGrid1.AddTriggerCell("[RESET All]", x, y, w, Color.Maroon, () =>
            {
                if (MessageBox.Show("Reset all parameters?", "Confirmation", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                {
                    Device.ResetXG();
                    xgpGrid1.RedrawOnRequestComplete();
                }
            }).GetDescriptionFunc = () => "DblClick: Reset all parameters.";
            y++;

            xgpGrid1.AddTriggerCell("[AllDump]", x, y, w, Color.Black, () =>
            {
                if (MessageBox.Show("Dump ALL XG Parameters?\n Including A1-A16 parts, drum S1-S4, Sys/INS effects settings.", "Confirmation", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK)
                {
                    return;
                }

                lock (Device)
                {
                    Device.SendXGBulkDumpRequest(0x000000);
                    Device.SendXGBulkDumpRequest(0x010000);
                    Device.SendXGBulkDumpRequest(0x020100);
                    Device.SendXGBulkDumpRequest(0x020110);
                    Device.SendXGBulkDumpRequest(0x020120);
                    Device.SendXGBulkDumpRequest(0x020130);
                    Device.SendXGBulkDumpRequest(0x020140);
                    Device.SendXGBulkDumpRequest(0x020170);
                    Device.SendXGBulkDumpRequest(0x024000);
                    Device.SendXGBulkDumpRequest(0x030000);
                    Device.SendXGBulkDumpRequest(0x030020);
                    Device.SendXGBulkDumpRequest(0x030100);
                    Device.SendXGBulkDumpRequest(0x030120);
                    Device.SendXGBulkDumpRequest(0x030200);
                    Device.SendXGBulkDumpRequest(0x030220);
                    Device.SendXGBulkDumpRequest(0x030300);
                    Device.SendXGBulkDumpRequest(0x030320);
                    Device.SendXGBulkDumpRequest(0x030300);
                    Device.SendXGBulkDumpRequest(0x030320);

                    for (int i = 0; i < 16; i++)
                    {
                        Device.SendXGBulkDumpRequest(0x080000 | i << 8);
                        Device.SendXGBulkDumpRequest(0x080030 | i << 8);
                        Device.SendXGBulkDumpRequest(0x080070 | i << 8);
                        Device.SendXGBulkDumpRequest(0x080074 | i << 8);
                        Device.SendXGBulkDumpRequest(0x0A0020 | i << 8);
                    }

                    for (int i = 0; i < 4; i++)
                    {
                        for (int j = 0x0d; j <= 0x5B; j++)
                        {
                            Device.SendXGBulkDumpRequest(0x300000 | i << 16 | j << 8);
                            Device.SendXGBulkDumpRequest(0x300020 | i << 16 | j << 8);
                            Device.SendXGBulkDumpRequest(0x300050 | i << 16 | j << 8);
                            Device.SendXGBulkDumpRequest(0x300060 | i << 16 | j << 8);
                        }
                    }
                    progressBar1.Style = ProgressBarStyle.Marquee;
                }

                xgpGrid1.RedrawOnRequestComplete();
            }).GetDescriptionFunc = () => "DblClick: Request Dump all XG Params.";

            y++;

            x = 0;
            y = -2;
            w = 6;
            xgpGrid1.AddTriggerCell("[Dump]", x, y, w, Color.Black, () =>
            {
                masterVolume_.Pick();
                masterAttn_.Pick();
                masterTune_.Pick();
                masterTranspose_.Pick();
                xgpGrid1.RedrawOnRequestComplete();
            }).GetDescriptionFunc = () => "DblClick: Request Dump parameters.";
            y++;

            xgpGrid1.AddLabelCell("MasterVolume", x, y, w - 2, Color.Green);
            xgpGrid1.AddControlCell(masterVolume_, x + w - 2, y, 2, Color.Lime);
            y++;
            xgpGrid1.AddLabelCell("MasterAttn", x, y, w - 2, Color.Navy);
            xgpGrid1.AddControlCell(masterAttn_, x + w - 2, y, 2, Color.Blue);
            y++;
            xgpGrid1.AddLabelCell("Transpose", x, y, w - 2, Color.Olive);
            xgpGrid1.AddControlCell(masterTranspose_, x + w - 2, y, 2, Color.Yellow);
            y++;
            xgpGrid1.AddLabelCell("MasterTune", x, y, w - 2, Color.Purple);
            xgpGrid1.AddControlCell(masterTune_, x + w - 2, y, 2, Color.Magenta);
            y++;
            xgpGrid1.SetDevice(Device);
        }