我正在使用C#/ Windows Presentation Foundation编写应用程序。 它可以看到脚形舞蹈的步骤。 目前我正在播放音乐作为WAV文件,并使用计时器对步骤进行计时。
由于定时器的不规则,音乐与步骤不同步。 我需要某种同步,这就是我想使用 MIDI文件的原因。
为了同步步骤,我需要在音乐中每次事件,然后显示下一步。在这种情况下,我不再使用Timer了。
我已经看过 NAudio 了。我发现播放MP3文件的教程对我没用。我创建了一个 MidiFile-object ,但我不知道怎么玩它。我知道MIDI文件包含有关如何播放音乐的信息(用于合成器),但我不想实现自己的播放器。
使用NAudio 播放 MIDI文件的简单方式是什么?
如何在每次音乐中接收活动?
NAudio是否有替代可能对我有所帮助?
是否有可以同步到我的可视化的MIDI替代品?
我感谢各种帮助。我一直在寻找一段时间,并认为我可能正朝着错误的方向前进。
答案 0 :(得分:1)
如果你想深入了解midi内部,这看起来就像一个非常酷的库和源代码。
答案 1 :(得分:1)
使用DryWetMIDI(我是作者)来播放MIDI文件以及触发播放的事件非常简单:
namespace SimplePlaybackApp
{
class Program
{
private static Playback _playback;
static void Main(string[] args)
{
var midiFile = MidiFile.Read("The Greatest Song Ever.mid");
var outputDevice = OutputDevice.GetByName("Microsoft GS Wavetable Synth");
_playback = midiFile.GetPlayback(outputDevice);
_playback.EventPlayed += OnEventPlayed;
_playback.Start();
SpinWait.SpinUntil(() => !_playback.IsRunning);
Console.WriteLine("Playback stopped or finished.");
outputDevice.Dispose();
_playback.Dispose();
}
private static void OnEventPlayed(object sender, MidiEventPlayedEventArgs e)
{
// ... do something
}
}
}
Playback文章和Playback API参考中的更多信息。