NAudio - 从 Stream 播放 MIDI

Posted

技术标签:

【中文标题】NAudio - 从 Stream 播放 MIDI【英文标题】:NAudio - Playing back MIDI from Stream 【发布时间】:2013-04-12 08:40:14 【问题描述】:

我正在制作游戏并使用 NAudio 播放声音。我想在后台播放 MIDI 文件以进行音乐循环。在文档中搜索它,一无所获。

如何从流中播放 MIDI 文件?

然后循环播放?

谢谢。

【问题讨论】:

很遗憾,这不是 NAudio 的功能。一些更多面向游戏开发的音频库可能会在这里提供更好的选择。 @MarkHeath 感谢您的回复。我正在使用来自winmm.dllmciSendString 播放midi 文件 【参考方案1】:

您可以通过DryWetMIDI轻松做到这一点:

using Melanchall.DryWetMidi.Devices;
using Melanchall.DryWetMidi.Core;

// ...

var midiFile = MidiFile.Read("Background music.mid");
// or from stream:
// var midiFile = MidiFile.Read(stream);

var outputDevice = OutputDevice.GetByName("MIDI device to play with");
var playback = midiFile.GetPlayback(outputDevice);

playback.Loop = true;
playback.Start();

在库文档的Playback 文章中阅读有关回放的更多信息。

【讨论】:

以上是关于NAudio - 从 Stream 播放 MIDI的主要内容,如果未能解决你的问题,请参考以下文章

使用 NAudio 从 MIDI 文件中读取音符

来自流的NAudio?播放音频

NAudio Asio 录制播放和保存(仅限噪音)

播放(不是录制/导出)多个 MIDI 轨道

保存到 MIDI 文件时,Music21 一次播放所有音符

C# - 使用外部 Midi 控制器更改音量