Exemplo n.º 1
0
        public void ControllerEventHandler(XInput.GamepadEx state)
        {
            var newState = ProcessState(state);

            if (lastState == null)
            {
                lastState = newState;
                return;
            }
            if (state.wButtons.HasFlag(XInput.Buttons.A))
            {
                OnControlChange?.Invoke(Channel.Channel1, Control.AllNotesOff, 0);
            }
            for (int i = 0; i < 6; i++)
            {
                if (lastState.Velocities[i] != newState.Velocities[i])
                {
                    newPitches[i] = (byte)(newState.Frets[i] + StandardTuning[i]);
                    OnNoteOff?.Invoke(Channel.Channel1, (Pitch)lastPitches[i]);
                    OnNoteOn?.Invoke(Channel.Channel1, (Pitch)newPitches[i], newState.Velocities[i]);
                }
            }
            // swap note buffers
            var temp = lastPitches;

            lastPitches = newPitches;
            newPitches  = temp;
            // swap guitar state
            lastState = newState;
        }
Exemplo n.º 2
0
 private void ThreadRun()
 {
     while (true)
     {
         OnControlChange onControlChange = null;
         onControlChange = new OnControlChange(setMousePositionText);
         this.Invoke(onControlChange);
     }
 }
Exemplo n.º 3
0
        void SendMessages(bool[] newKeys, bool sustain, byte[] velocities)
        {
            int newVelocityStart = 0;
            int finalVelocity    = 0;

            for (int i = 0; i < 5; i++)
            {
                if (velocities[i] != 0)
                {
                    finalVelocity = i;
                    if (velocityState[i] == velocities[i])
                    {
                        newVelocityStart = i + 1;
                    }
                }
                velocityState[i] = velocities[i];
            }
            for (int i = 0; i < 25; i++)
            {
                var pitch = (Midi.Enums.Pitch)(i + offset);
                if (newKeys[i] && (0 == keyState[i]))
                {
                    OnNoteOn?.Invoke(Channel, pitch, velocities[Math.Min(newVelocityStart, finalVelocity)]);
                    keyState[i] = velocities[Math.Min(newVelocityStart, finalVelocity)];
                    newVelocityStart++;
                }
                else if (!newKeys[i] && (0 != keyState[i]))
                {
                    OnNoteOff?.Invoke(Channel, pitch);
                    keyState[i] = 0;
                }
            }
            if (sustain && !sustainState)
            {
                OnControlChange?.Invoke(Channel, Midi.Enums.Control.SustainPedal, 127);
            }
            else if (!sustain && sustainState)
            {
                OnControlChange?.Invoke(Channel, Midi.Enums.Control.SustainPedal, 0);
            }
        }
Exemplo n.º 4
0
 private void Ns_MemoryThreshold_ValueChanged(object sender, EventArgs e)
 {
     OnControlChange?.Invoke((int)ns_MemoryThreshold.Value, (int)ns_Opacity.Value, (int)ns_PollInterval.Value);
 }