NAudio和Midi文件读取

| 我在这里发布我的问题,因为建议在NAudio页面(http://naudio.codeplex.com/documentation)上这样做。 鉴于我已经用NAudio加载了.mid文件,所以我想在适当的时间逐步处理曲目的事件。达到\“ NoteOn \”事件后,我想在控制台中写入\“ Beep \”之类的内容。这样,我可以显示.mid文件的简单活动。详细地说,如何正确地逐步处理文件的事件? 我正在使用vsC#2008,并且NAudio的.dll运行正常。我已经在库中加载了一个Midi文件,可以提取曲目信息和所有内容,但是我不确定如何根据时间使用它。我想我需要对提供的“绝对时间”或“增量时间”值进行处理。感谢您的帮助。 编辑: 经过非常有帮助的回复后,我得以弄清楚该怎么做。
   double convertAbsoluteTimeToMilliseconds = 1.0 / 30.0;
    System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
    sw.Start();
    foreach (MidiEvent note in _f1.Events[1])
    {
        while (note.AbsoluteTime * convertAbsoluteTimeToMilliseconds > sw.ElapsedMilliseconds) { }
        if(note.CommandCode==MidiCommandCode.NoteOn)
            Console.Write (\"beep \");
    }
    sw.Stop();
如果有人知道替代方法,请告诉我。由于时间的原因而使用睡眠时间会导致响应变得越来越慢,由于某种原因。但是,这似乎工作正常。另外,我确定\“ convertAbsoluteTimeToMilliseconds \”与计算机有关。     
已邀请:
        伪代码:
DateTime offset = DateTime.Now;  /Start playing here.
foreach (MidiEvent note in events)
{
  DateTime beepAt = offset.AddMilliseconds (note.AbsoluteTime * convertAbsoluteTimeToMilliseconds);
  System.Threading.Thread.Sleep (beepAt - offset);
  Console.WriteLine (\"beep\");
}
    

要回复问题请先登录注册