Я использую Wpf. Я анализирую midi-файл и использую midioutshortmsg для отправки сообщения в For L oop, и перерыва для ожидания Delta Time; Воспроизведение у меня запаздывает, но, когда я одновременно открываю другое программное обеспечение midi (включая WindowMediaPlayer), все проблемы сбрасываются, моя программа работает нормально. Когда я закрываю другое открытое программное обеспечение. Проблема возвращается.
Моя программа застряла здесь. Я уже попробовал отправить в midistreamout, MidiOutPro c или midioutlongmsg и т. Д. c. Но моя проблема все еще не решена. Большое спасибо.
[DllImport("winmm.dll")]
private extern static int midiOutOpen(out int lphMidiOut, int uDeviceID, int dwCallback, int dwInstance, int dwFlags);
[DllImport("winmm.dll")]
public extern static int midiOutShortMsg(int lphMidiOut, int dwMsg);
public int midiOut;
private void Play_Click(object sender, RoutedEventArgs e)
{
midiOutOpen(out midiOut, 0, 0, 0, 0);
InstanceCaller = new Thread(new ThreadStart(SendMessage));
InstanceCaller.Start();
}
private void SendMessage()
{
for (int i = 0; i < melodyList.Count; i++)
{
var messgae = Convert.ToInt32(melodyList[i], 16);
midiOutShortMsg(midiOut, messgae);
Thread.Sleep(Convert.ToInt32(durationList[i]));
}
}