我正在使用http://csharpsynthproject.codeplex.com/的统一端口 但我有问题暂停和取消暂停midi。
停止播放有效,但我试图暂停midi的所有内容都失败了,比如将BPM设置为0。
是否有任何简单的方法可以暂停和取消暂停midi文件?
答案 0 :(得分:0)
看看This。本文使用winmm.dll
库包括暂停音频文件。这部分的基本代码是
_command = "pause MediaFile";
mciSendString(_command, null, 0, IntPtr.Zero);
答案 1 :(得分:0)
可以使用托管的.NET库来代替使用Winmm函数。例如,DryWetMIDI:
using Melanchall.DryWetMidi.Devices;
using Melanchall.DryWetMidi.Smf;
// ...
var midiFile = MidiFile.Read("Some MIDI file.mid");
var outputDevice = OutputDevice.GetByName("MIDI device to play with");
var playback = midiFile.GetPlayback(outputDevice);
// Starting playback
playback.Start();
// ...
// Pausing playback
playback.Stop();
// ...
// Resuming playback
playback.Start();
Wiki的Playback文章中有更多详细信息。
请注意,当前这仅适用于Windows。因此,如果您使用Unity开发跨平台应用程序,则不是一种选择。