Пример #1
0
//		private CTimer timer;

        private void MidiInCallback(uint hMidiIn, uint wMsg, int dwInstance, int dwParam1, int dwParam2)
        {
            int p = dwParam1 & 0xF0;

            if (wMsg != CWin32.MIM_DATA || (p != 0x80 && p != 0x90))
            {
                return;
            }

            long time = CSound管理.rc演奏用タイマ.nシステム時刻;      // lock前に取得。演奏用タイマと同じタイマを使うことで、BGMと譜面、入力ずれを防ぐ。

            lock (this.objMidiIn排他用)
            {
                if ((this.list入力デバイス != null) && (this.list入力デバイス.Count != 0))
                {
                    foreach (IInputDevice device in this.list入力デバイス)
                    {
                        CInputMIDI tmidi = device as CInputMIDI;
                        if ((tmidi != null) && (tmidi.hMidiIn == hMidiIn))
                        {
                            tmidi.tメッセージからMIDI信号のみ受信(wMsg, dwInstance, dwParam1, dwParam2, time);
                            break;
                        }
                    }
                }
            }
        }
Пример #2
0
        private void onMessageRecevied(object sender, MidiReceivedEventArgs e)
        {
            long time = CSoundManager.rc演奏用タイマ.nシステム時刻ms;              // lock前に取得。演奏用タイマと同じタイマを使うことで、BGMと譜面、入力ずれを防ぐ。

            int dev = int.Parse((sender as IMidiInput).Details.Id);

            lock (this.objMidiIn排他用)
            {
                if ((this.listInputDevices != null) && (this.listInputDevices.Count != 0))
                {
                    foreach (IInputDevice device in this.listInputDevices)
                    {
                        CInputMIDI tmidi = device as CInputMIDI;
                        if ((tmidi != null) && (tmidi.ID == dev))
                        {
                            for (int i = 0; i < e.Length / 3; i++)
                            {
                                tmidi.tメッセージからMIDI信号のみ受信(dev, time, e.Data, i);
                            }
                            break;
                        }
                    }
                }
            }
        }
Пример #3
0
        //		private CTimer timer;

        private void MidiInCallback(int dev, double intime, IntPtr buffer, int length, IntPtr user)
        {
            long time = CSound管理.rc演奏用タイマ.nシステム時刻ms;              // lock前に取得。演奏用タイマと同じタイマを使うことで、BGMと譜面、入力ずれを防ぐ。

            lock (this.objMidiIn排他用)
            {
                if ((this.list入力デバイス != null) && (this.list入力デバイス.Count != 0))
                {
                    foreach (IInputDevice device in this.list入力デバイス)
                    {
                        CInputMIDI tmidi = device as CInputMIDI;
                        if ((tmidi != null) && (tmidi.ID == dev))
                        {
                            tmidi.tメッセージからMIDI信号のみ受信(dev, time, buffer, length, user);
                            break;
                        }
                    }
                }
            }
        }