如何在C#上暂停/取消暂停midi音频文件

时间:2015-08-01 03:49:11

标签: c# midi

我正在使用http://csharpsynthproject.codeplex.com/的统一端口 但我有问题暂停和取消暂停midi。

停止播放有效,但我试图暂停midi的所有内容都失败了,比如将BPM设置为0。

是否有任何简单的方法可以暂停和取消暂停midi文件?

2 个答案:

答案 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开发跨平台应用程序,则不是一种选择。