예제 #1
0
        public void AddDPad(GuiDrumDPad dpad,
                            NumericUpDown nupNoteNormal, NumericUpDown nupNoteAdv,
                            NumericUpDown nupButtonNoteVelocityAdv, ComboBox ddlSwitchStateAdv,
                            CheckBox chkNoteOnCheck)
        {
            m_NupNoteArray[NUM_PADS + NUM_BUTTON_STATES + (byte)dpad / 2]    = nupNoteNormal;
            m_NupAdvNoteArray[NUM_PADS + NUM_BUTTON_STATES + (byte)dpad / 2] = nupNoteAdv;

            m_NupAdvButtonVelArray[NUM_BUTTON_STATES + (byte)dpad / 2]   = nupButtonNoteVelocityAdv;
            m_DdlAdvSwitchStateArray[NUM_BUTTON_STATES + (byte)dpad / 2] = ddlSwitchStateAdv;

            m_ChkNoteOnCheck[NUM_BUTTON_STATES + (byte)dpad / 2] = chkNoteOnCheck;


            InitControl((byte)dpad, GuiLinkerType.DPad, nupNoteNormal);
            InitControl((byte)dpad, GuiLinkerType.DPadVelocity, nupButtonNoteVelocityAdv);
            InitControl((byte)dpad, GuiLinkerType.DPad, nupNoteAdv);
            InitControl((byte)dpad, GuiLinkerType.DPad, ddlSwitchStateAdv);
            InitControl((byte)dpad, GuiLinkerType.DPad, chkNoteOnCheck);

            InitNumericUpDown(nupNoteNormal);
            InitNumericUpDown(nupNoteAdv);
            InitNumericUpDown(nupButtonNoteVelocityAdv);

            InitDDLSwitchState(ddlSwitchStateAdv);
        }
예제 #2
0
        private void DPadOn(GuiDrumDPad dp)
        {
            Debug.Assert((byte)dp % 2 == 0, "only left, up, right, down is allowed here");

            if (GuiLinker.GetButtonChecked(dp) == false)
            {
                GuiLinker.CheckboxButton(dp, true);
                MidiSender.SendNoteOn(GuiLinker.GetMidiNote(dp), GuiLinker.GetButtonVelocity(dp));
                if (GuiLinker.GetButtonSwitchType(dp) != SwitchType.KeyboardLike)
                {
                    MidiSender.SendNoteOff(GuiLinker.GetMidiNote(dp));
                }
            }
        }
예제 #3
0
 internal void SetButtonSwitchType(GuiDrumDPad dp, SwitchType type)
 {
     Debug.Assert((byte)dp % 2 == 0, "only left, up, right, down is allowed here");
     SetSelectIndex(ref m_DdlAdvSwitchStateArray[NUM_BUTTON_STATES + (byte)dp / 2], type);
 }
예제 #4
0
 internal byte GetButtonVelocity(GuiDrumDPad drumDPad)
 {
     Debug.Assert((byte)drumDPad % 2 == 0, "only left, up, right, down is allowed here");
     return (byte)m_NupAdvButtonVelArray[NUM_BUTTON_STATES + (byte)drumDPad / 2].Value;
 }
예제 #5
0
 internal byte GetMidiNote(GuiDrumDPad dp)
 {
     Debug.Assert((byte)dp % 2 == 0, "only left, up, right, down is allowed here");
     return (byte)m_NupAdvNoteArray[NUM_PADS + NUM_BUTTON_STATES + (byte)dp / 2].Value;
 }
예제 #6
0
 internal bool GetButtonChecked(GuiDrumDPad dp)
 {
     Debug.Assert((byte)dp % 2 == 0, "only left, up, right, down is allowed here");
     return m_ChkNoteOnCheck[NUM_BUTTON_STATES + (byte)dp / 2].Checked;
 }
예제 #7
0
 internal SwitchType GetButtonSwitchType(GuiDrumDPad drumDPad)
 {
     Debug.Assert((byte)drumDPad % 2 == 0, "only left, up, right, down is allowed here");
     return (SwitchType)m_DdlAdvSwitchStateArray[NUM_BUTTON_STATES + (byte)drumDPad / 2].SelectedItem;
 }
예제 #8
0
 internal void CheckboxButton(GuiDrumDPad dp, bool check)
 {
     Debug.Assert((byte)dp % 2 == 0, "only left, up, right, down is allowed here");
     m_ChkNoteOnCheck[NUM_BUTTON_STATES + (byte)dp / 2].Checked = check;
 }
예제 #9
0
 internal void CheckboxButton(GuiDrumDPad dp, bool check)
 {
     Debug.Assert((byte)dp % 2 == 0, "only left, up, right, down is allowed here");
     m_ChkNoteOnCheck[NUM_BUTTON_STATES + (byte)dp / 2].Checked = check;
 }
예제 #10
0
 internal void SetButtonVelocity(GuiDrumDPad drumDPad, byte vel)
 {
     Debug.Assert((byte)drumDPad % 2 == 0, "only left, up, right, down is allowed here");
     m_NupAdvButtonVelArray[NUM_BUTTON_STATES + (byte)drumDPad / 2].Value = vel;
 }
예제 #11
0
        private void DPadOn(GuiDrumDPad dp, GuiDrumDPad dp2)
        {
            Debug.Assert((byte)dp % 2 == 0, "only left, up, right, down is allowed here");
            Debug.Assert((byte)dp2 % 2 == 0, "only left, up, right, down is allowed here");

            if (GuiLinker.GetButtonChecked(dp) == false)
            {
                GuiLinker.CheckboxButton(dp, true);
                MidiSender.SendNoteOn(GuiLinker.GetMidiNote(dp), GuiLinker.GetButtonVelocity(dp));
                if (GuiLinker.GetButtonSwitchType(dp) != SwitchType.KeyboardLike)
                    MidiSender.SendNoteOff(GuiLinker.GetMidiNote(dp));
            }
            if (GuiLinker.GetButtonChecked(dp2) == false)
            {
                GuiLinker.CheckboxButton(dp2, true);
                MidiSender.SendNoteOn(GuiLinker.GetMidiNote(dp2), GuiLinker.GetButtonVelocity(dp));
                if (GuiLinker.GetButtonSwitchType(dp) != SwitchType.KeyboardLike)
                    MidiSender.SendNoteOff(GuiLinker.GetMidiNote(dp));
            }
        }
예제 #12
0
 internal byte GetButtonVelocity(GuiDrumDPad drumDPad)
 {
     Debug.Assert((byte)drumDPad % 2 == 0, "only left, up, right, down is allowed here");
     return((byte)m_NupAdvButtonVelArray[NUM_BUTTON_STATES + (byte)drumDPad / 2].Value);
 }
예제 #13
0
 internal SwitchType GetButtonSwitchType(GuiDrumDPad drumDPad)
 {
     Debug.Assert((byte)drumDPad % 2 == 0, "only left, up, right, down is allowed here");
     return((SwitchType)m_DdlAdvSwitchStateArray[NUM_BUTTON_STATES + (byte)drumDPad / 2].SelectedItem);
 }
예제 #14
0
 internal void SetButtonSwitchType(GuiDrumDPad dp, SwitchType type)
 {
     Debug.Assert((byte)dp % 2 == 0, "only left, up, right, down is allowed here");
     SetSelectIndex(ref m_DdlAdvSwitchStateArray[NUM_BUTTON_STATES + (byte)dp / 2], type);
 }
예제 #15
0
 internal void SetButtonVelocity(GuiDrumDPad drumDPad, byte vel)
 {
     Debug.Assert((byte)drumDPad % 2 == 0, "only left, up, right, down is allowed here");
     m_NupAdvButtonVelArray[NUM_BUTTON_STATES + (byte)drumDPad / 2].Value = vel;
 }
예제 #16
0
 internal void SetMidiNote(GuiDrumDPad dp, byte note)
 {
     Debug.Assert((byte)dp % 2 == 0, "only left, up, right, down is allowed here");
     m_NupAdvNoteArray[NUM_PADS + NUM_BUTTON_STATES + (byte)dp / 2].Value = note;
     m_NupNoteArray[NUM_PADS + NUM_BUTTON_STATES + (byte)dp / 2].Value    = note;
 }
예제 #17
0
 internal byte GetMidiNote(GuiDrumDPad dp)
 {
     Debug.Assert((byte)dp % 2 == 0, "only left, up, right, down is allowed here");
     return((byte)m_NupAdvNoteArray[NUM_PADS + NUM_BUTTON_STATES + (byte)dp / 2].Value);
 }
예제 #18
0
 internal bool GetButtonChecked(GuiDrumDPad dp)
 {
     Debug.Assert((byte)dp % 2 == 0, "only left, up, right, down is allowed here");
     return(m_ChkNoteOnCheck[NUM_BUTTON_STATES + (byte)dp / 2].Checked);
 }
예제 #19
0
 internal void SetMidiNote(GuiDrumDPad dp, byte note)
 {
     Debug.Assert((byte)dp % 2 == 0, "only left, up, right, down is allowed here");
     m_NupAdvNoteArray[NUM_PADS + NUM_BUTTON_STATES + (byte)dp / 2].Value = note;
     m_NupNoteArray[NUM_PADS + NUM_BUTTON_STATES + (byte)dp / 2].Value = note;
 }
예제 #20
0
        private void DrumDPadStateChanged(GuiDrumDPad dp)
        {
            if (m_PrevDPadState == dp)
            {
                return;
            }
            if (InvokeRequired)
            {
                Invoke(new DPadDelegate(DrumDPadStateChanged), new object[] { dp });
            }
            else
            {
                int new1, new2;
                if ((byte)dp % 2 == 0)
                {
                    new1 = (byte)dp;
                    new2 = (byte)dp;
                }
                else
                {
                    new1 = (byte)dp - 1;
                    new2 = (byte)dp + 1;
                    if (new2 == 8)
                    {
                        new2 = 0;
                    }
                }

                if (dp != GuiDrumDPad.None)
                {
                    DPadOn((GuiDrumDPad)new1, (GuiDrumDPad)new2);
                }
                if (m_PrevDPadState != GuiDrumDPad.None)
                {
                    if ((byte)m_PrevDPadState % 2 == 0)
                    {
                        if ((byte)m_PrevDPadState != new1 && (byte)m_PrevDPadState != new2)
                        {
                            DPadOff(m_PrevDPadState);
                        }
                    }
                    else
                    {
                        int prev1 = (byte)m_PrevDPadState - 1;
                        int prev2 = (byte)m_PrevDPadState + 1;
                        if (prev2 == 8)
                        {
                            prev2 = 0;
                        }

                        if (prev1 != new1 && prev1 != new2)
                        {
                            DPadOff((GuiDrumDPad)prev1);
                        }
                        if (prev2 != new1 && prev2 != new2)
                        {
                            DPadOff((GuiDrumDPad)prev2);
                        }
                    }
                }
                m_PrevDPadState = dp;
            }
        }
예제 #21
0
        private void DrumDPadStateChanged(GuiDrumDPad dp)
        {
            if (m_PrevDPadState == dp)
                return;
            if (InvokeRequired)
            {
                Invoke(new DPadDelegate(DrumDPadStateChanged), new object[] { dp });
            }
            else
            {
                int new1, new2;
                if ((byte)dp % 2 == 0)
                {
                    new1 = (byte)dp;
                    new2 = (byte)dp;
                }
                else
                {
                    new1 = (byte)dp - 1;
                    new2 = (byte)dp + 1;
                    if (new2 == 8) new2 = 0;
                }

                if (dp != GuiDrumDPad.None)
                {
                    DPadOn((GuiDrumDPad)new1, (GuiDrumDPad)new2);
                }
                if (m_PrevDPadState != GuiDrumDPad.None)
                {
                    if ((byte)m_PrevDPadState % 2 == 0)
                    {
                        if ((byte)m_PrevDPadState != new1 && (byte)m_PrevDPadState != new2)
                            DPadOff(m_PrevDPadState);
                    }
                    else
                    {
                        int prev1 = (byte)m_PrevDPadState - 1;
                        int prev2 = (byte)m_PrevDPadState + 1;
                        if (prev2 == 8) prev2 = 0;

                        if (prev1 != new1 && prev1 != new2)
                            DPadOff((GuiDrumDPad)prev1);
                        if (prev2 != new1 && prev2 != new2)
                            DPadOff((GuiDrumDPad)prev2);
                    }
                }
                m_PrevDPadState = dp;
            }
        }
예제 #22
0
        public void AddDPad(GuiDrumDPad dpad,
                     NumericUpDown nupNoteNormal, NumericUpDown nupNoteAdv,
                     NumericUpDown nupButtonNoteVelocityAdv, ComboBox ddlSwitchStateAdv,
                     CheckBox chkNoteOnCheck)
        {
            m_NupNoteArray[NUM_PADS + NUM_BUTTON_STATES + (byte)dpad / 2] = nupNoteNormal;
            m_NupAdvNoteArray[NUM_PADS + NUM_BUTTON_STATES + (byte)dpad / 2] = nupNoteAdv;

            m_NupAdvButtonVelArray[NUM_BUTTON_STATES + (byte)dpad / 2] = nupButtonNoteVelocityAdv;
            m_DdlAdvSwitchStateArray[NUM_BUTTON_STATES + (byte)dpad / 2] = ddlSwitchStateAdv;

            m_ChkNoteOnCheck[NUM_BUTTON_STATES + (byte)dpad / 2] = chkNoteOnCheck;

            InitControl((byte)dpad, GuiLinkerType.DPad, nupNoteNormal);
            InitControl((byte)dpad, GuiLinkerType.DPadVelocity, nupButtonNoteVelocityAdv);
            InitControl((byte)dpad, GuiLinkerType.DPad, nupNoteAdv);
            InitControl((byte)dpad, GuiLinkerType.DPad, ddlSwitchStateAdv);
            InitControl((byte)dpad, GuiLinkerType.DPad, chkNoteOnCheck);

            InitNumericUpDown(nupNoteNormal);
            InitNumericUpDown(nupNoteAdv);
            InitNumericUpDown(nupButtonNoteVelocityAdv);

            InitDDLSwitchState(ddlSwitchStateAdv);
        }