static void EditorUpdate()
    {
        //return;
        MidiMessage midiMessage = new MidiMessage();
        bool        received    = false;

        while (MidiINPlugin.PopMessage(out midiMessage, true) != 0)
        {
            messages = midiMessage.ToString() + System.Environment.NewLine + messages;
            received = true;
        }

        if (window != null && received && oneFrameDelay)
        {
            window.Repaint();
        }
    }
        //static void OnTimer (object sender, System.Timers.ElapsedEventArgs e)
        //{
        //	Fetch ();
        //}

        //static void InitTimer ()
        //{
        //	timer = new System.Timers.Timer (10);
        //	timer.Elapsed += OnTimer;
        //	timer.Start ();
        //}

        //static void FinalizeTimer ()
        //{
        //	if (timer != null) {
        //		timer.Stop ();
        //		timer.Elapsed -= OnTimer;
        //		timer.Dispose ();
        //	}
        //}

        public static void Fetch()
        {
            MidiMessage midiMessage = new MidiMessage();

            while (MidiINPlugin.PopMessage(out midiMessage) != 0)
            {
                midiInMessages.Enqueue(midiMessage);
                midiOutMessages.Enqueue(midiMessage);
                midiMessage = new MidiMessage();
            }

            while (midiOutMessages.Count > 0)
            {
                if (midiOutMessages.TryDequeue(out midiMessage))
                {
                    MidiOUTPlugin.SendShortMessage(midiMessage.command, midiMessage.data1, midiMessage.data2);
                    Synth.SendMidiMessage(midiMessage.command, midiMessage.data1, midiMessage.data2);
                    midiMessage = new MidiMessage();
                }
            }
        }