Я публикую свой вопрос здесь, как это было предложено на странице NAudio (http://naudio.codeplex.com/documentation).
Учитывая, что я загрузил файл .mid с помощью NAudio, я бы хотел своевременно просмотреть события дорожки. При достижении события «NoteOn» я хотел бы написать в свою консоль что-то вроде «Beep». Таким образом, я мог отобразить простую активность файла .mid. Подробно, как я могу правильно просмотреть события файла во времени?
Я использую vsC # 2008 и .dll из NAudio работает нормально. Я загрузил в MIDI-файл с библиотекой и могу извлечь информацию о треке и все остальное, но я просто не уверен, как использовать его в отношении времени. Я думаю, что мне нужно что-то сделать с предоставленными значениями «абсолютного времени» или «дельта-времени». Спасибо за помощь.
Edit:
После очень полезного ответа я смог понять, как делать то, что я хотел.
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" зависит от машины.