// Win32 メッセージ処理デリゲート
- public delegate void MidiInProc( IntPtr hMidiIn, uint wMsg, int dwInstance, int dwParam1, int dwParam2 );
+ public delegate void MidiInProc( IntPtr hMidiIn, uint wMsg, IntPtr dwInstance, IntPtr dwParam1, IntPtr dwParam2 );
}
}
// メソッド
- public void tメッセージからMIDI信号のみ受信( uint wMsg, int dwInstance, int dwParam1, int dwParam2, long n受信システム時刻 )
+ public void tメッセージからMIDI信号のみ受信( uint wMsg, IntPtr dwInstance, IntPtr dwParam1, IntPtr dwParam2, long n受信システム時刻 )
{
if( wMsg == CWin32.MIM_DATA )
{
- int nMIDIevent = dwParam1 & 0xF0;
- int nPara1 = ( dwParam1 >> 8 ) & 0xFF;
- int nPara2 = ( dwParam1 >> 16 ) & 0xFF;
+ int nMIDIevent = (int)dwParam1 & 0xF0;
+ int nPara1 = ( (int)dwParam1 >> 8 ) & 0xFF;
+ int nPara2 = ( (int)dwParam1 >> 16 ) & 0xFF;
+ int nPara3 = ((int)dwParam2 >> 8) & 0xFF;
+ int nPara4 = ((int)dwParam2 >> 16) & 0xFF;
-// Trace.TraceInformation( "MIDIevent={0:X2} para1={1:X2} para2={2:X2}", nMIDIevent, nPara1, nPara2 );
+
+// Trace.TraceInformation( "MIDIevent={0:X2} para1={1:X2} para2={2:X2} para3={3:X2} para4={4:X2}", nMIDIevent, nPara1, nPara2, nPara3, nPara4 );
if( ( nMIDIevent == 0x90 ) && ( nPara2 != 0 ) ) // Note ON
{
{
Trace.TraceError( "MIDI In: Device{0}: midiInDevCaps(): {1:X2}: ", i, num3 );
}
- else if ( ( CWin32.midiInOpen( ref item.hMidiIn, i, this.proc, IntPtr.Zero, 0x30000 ) == 0 ) && ( item.hMidiIn != IntPtr.Zero ) )
- {
- CWin32.midiInStart( item.hMidiIn );
- Trace.TraceInformation( "MIDI In: [{0}] \"{1}\" の入力受付を開始しました。", i, lpMidiInCaps.szPname );
- }
else
{
- Trace.TraceError( "MIDI In: [{0}] \"{1}\" の入力受付の開始に失敗しました。", i, lpMidiInCaps.szPname );
+ uint ret = CWin32.midiInOpen(ref item.hMidiIn, i, this.proc, IntPtr.Zero, 0x30000);
+ Trace.TraceInformation("midiInOpen()==" + ret);
+ Trace.TraceInformation("item.hMidiIn==" + item.hMidiIn.ToString());
+ if ((ret == 0) && (item.hMidiIn != IntPtr.Zero))
+ {
+ CWin32.midiInStart(item.hMidiIn);
+ Trace.TraceInformation("MIDI In: [{0}] \"{1}\" の入力受付を開始しました。", i, lpMidiInCaps.szPname);
+ item.strDeviceName = lpMidiInCaps.szPname;
+ this.list入力デバイス.Add(item);
+ continue;
+ }
}
- item.strDeviceName = lpMidiInCaps.szPname;
- this.list入力デバイス.Add(item);
+ Trace.TraceError( "MIDI In: [{0}] \"{1}\" の入力受付の開始に失敗しました。", i, lpMidiInCaps.szPname );
}
}
else
private CWin32.MidiInProc proc;
// private CTimer timer;
- private void MidiInCallback( IntPtr hMidiIn, uint wMsg, int dwInstance, int dwParam1, int dwParam2 )
+ private void MidiInCallback( IntPtr hMidiIn, uint wMsg, IntPtr dwInstance, IntPtr dwParam1, IntPtr dwParam2 )
{
- int p = dwParam1 & 0xF0;
+ int p = (int)dwParam1 & 0xF0;
if( wMsg != CWin32.MIM_DATA || ( p != 0x80 && p != 0x90 && p != 0xB0 ) )
return;
- long time = CSound管理.rc演奏用タイマ.nシステム時刻; // lock前に取得。演奏用タイマと同じタイマを使うことで、BGMと譜面、入力ずれを防ぐ。
+ long time = CSound管理.rc演奏用タイマ.nシステム時刻; // lock前に取得。演奏用タイマと同じタイマを使うことで、BGMと譜面、入力ずれを防ぐ。
- lock( this.objMidiIn排他用 )
+//Trace.TraceInformation($"MidiInCallback: hMidiIn={hMidiIn.ToString("X4")}, dwInstance={dwInstance.ToString("X4")}, dwParam1={dwParam1.ToString("X4")}, dwParam2={dwParam2.ToString("X4")}");
+
+ lock ( this.objMidiIn排他用 )
{
if( ( this.list入力デバイス != null ) && ( this.list入力デバイス.Count != 0 ) )
{
private object objMidiIn排他用 = new object();\r
private CWin32.MidiInProc proc;\r
\r
- private void MidiInCallback( IntPtr hMidiIn, uint wMsg, int dwInstance, int dwParam1, int dwParam2 )\r
+ private void MidiInCallback( IntPtr hMidiIn, uint wMsg, IntPtr dwInstance, IntPtr dwParam1, IntPtr dwParam2 )\r
{\r
- int p = dwParam1 & 0xF0;\r
+ int p = (int)dwParam1 & 0xF0;\r
if ( wMsg != CWin32.MIM_DATA ) // || ( p != 0x80 && p != 0x90 && p != 0xB0 ) )\r
return;\r
\r
\r
// メソッド\r
\r
- public void tメッセージからMIDI信号のみ受信( uint wMsg, int dwInstance, int dwParam1, int dwParam2, long n受信システム時刻 )\r
+ public void tメッセージからMIDI信号のみ受信( uint wMsg, IntPtr dwInstance, IntPtr dwParam1, IntPtr dwParam2, long n受信システム時刻 )\r
{\r
if ( wMsg == CWin32.MIM_DATA )\r
{\r
- int nMIDIevent = dwParam1 & 0xFF;\r
- int nPara1 = ( dwParam1 >> 8 ) & 0xFF;\r
- int nPara2 = ( dwParam1 >> 16 ) & 0xFF;\r
+ int nMIDIevent = (int)dwParam1 & 0xFF;\r
+ int nPara1 = ( (int)dwParam1 >> 8 ) & 0xFF;\r
+ int nPara2 = ( (int)dwParam1 >> 16 ) & 0xFF;\r
\r
Trace.TraceInformation( "MIDIevent={0:X2} para1={1:X2} para2={2:X2}", nMIDIevent, nPara1, nPara2 );\r
\r
{\r
STInputEvent item = new STInputEvent();\r
// item.nKey = nPara1;\r
- item.nKey = dwParam1;\r
+ item.nKey = (int)dwParam1;\r
item.b押された = true;\r
item.nTimeStamp = n受信システム時刻;\r
item.nVelocity = nPara2;\r
\r
// Win32 メッセージ処理デリゲート\r
\r
- public delegate void MidiInProc( IntPtr hMidiIn, uint wMsg, int dwInstance, int dwParam1, int dwParam2 );\r
+ public delegate void MidiInProc( IntPtr hMidiIn, uint wMsg, IntPtr dwInstance, IntPtr dwParam1, IntPtr dwParam2 );\r
}\r
}\r