我目前正在尝试在歌曲播放时浏览一个 midi 文件,midi 文件在歌曲前几毫秒“播放”。更详细地说,我通过将所述音符从屏幕的右侧滑动到左侧来可视化歌曲的音符。我根据来自 midi 文件的信号在屏幕右侧创建音符的可视化,然后开始将它们翻译到左侧。我希望他们在歌曲中实际播放音符的同时通过屏幕中心。
我可以使用以下代码很好地播放 midi 文件:
if (counter < _file.Events[track].Count)
{
double s_ms = Microsoft.Xna.Framework.Media.MediaPlayer.PlayPosition.TotalMilliseconds;
double m_ms = _file.Events[track][counter].AbsoluteTime / _pulses_per_millisecond;
if (s_ms + offset > m_ms)
{
counter++;
if (_file.Events[track][counter].CommandCode == NAudio.Midi.MidiCommandCode.NoteOn)
{
Console.Beep(777, 25);
Console.Write("Beep ");
}
}
}
偏移有效地使 MIDI 文件播放一连串音符,然后返回到根本不使用偏移时的轨道位置。
我很难过,非常感谢任何帮助。我正在使用 XNA 3.1 和 NAudio。MIDI 与歌曲同步播放就好了。当然,我需要midi的播放速度与歌曲保持一致。