Для MIDI вы должны либо проанализировать файл самостоятельно (что я и сделал, и я рекомендую следующие две ссылки: один и два ), либо получить инструментарий MIDI.Я не знаю ничего для .NET, но вот поиск Google .
Как только вы это получите, это должно быть довольно легко.Считайте MIDI-файл с помощью инструментария, и это даст вам набор дорожек .Каждая дорожка содержит последовательность событий , каждая с отметкой времени относительно предыдущего события.Событие может быть «Записано включено», «Записано выключено» или одно из сотен других событий, которые вам, вероятно, не нужны и которые можно игнорировать в этом упражнении.Просто посмотрите на события "note on" и "note off".Обычно каждая нота - это «нота» (с определенной высотой и скоростью, то есть объемом), за которой следует «нота» через некоторое время (с той же высотой и скоростью 0).
Таким образом, вооружившись этой информацией, вы можете построить таблицу заметок с четверкой (время начала, длительность, высота тона, скорость), где время начала - это время события «заметка о», длительность - это разница во времени между «заметкой».on "и" note off ", а pitch / speed - это высота тона / скорость" note on ".Вы можете преобразовать высоту звука в частоту, используя эту формулу .
Что касается WAV / MP3 / AAC / OGG, все они имеют одинаковую технику, которую Пол предлагает в своем ответе.