Пример #1
0
    void coreSignalHit(bool on, int ID)
    {
        if (keyStates[ID].nonSeqStateChange())
        {
            keyStates[ID].currentNonSeqState = keyStates[ID].getNonSeqState();
            _timeline.onTimelineEvent(ID, keyStates[ID].currentNonSeqState);
        }

        if (keyStates[ID].stateChange())
        {
            on = keyStates[ID].currentState = keyStates[ID].getState();
            keys[ID].phantomHit(on);
        }
        else
        {
            return;
        }

        if (on)
        {
            if (selectedKeys.Contains(ID))
            {
                selectedKeys.Remove(ID);
            }
            selectedKeys.Insert(0, ID);
        }
        else
        {
            selectedKeys.Remove(ID);
        }

        if (!on)
        {
            signal.updateVoices(ID, on);
            _midiOut.OutputNote(on, ID);
            if (arpPattern != 0)
            {
                if (selectedKeys.Count == 1)
                {
                    setKeyActive(selectedKeys[0], true);
                }
            }
        }
        else if (arpPattern == 0 || selectedKeys.Count < 2)
        {
            setKeyActive(ID, on);
        }
    }
 public void trackUpdate(int trackID, bool on)
 {
     _timeline.onTimelineEvent(trackID, on);
 }