C ++ MIDI文件更改工具

时间:2011-10-19 17:05:55

标签: c++ visual-studio-2008 visual-c++ instruments midi

有没有办法在MSVC 2008中使用C ++播放MIDI文件并更改正在播放的乐器?也就是说,我可以播放少量钢琴的.mid文件,但将钢琴音色改为电吉他吗?

编辑:对不起,我不够具体!我正在使用Microsoft GS Wavetable Synth作为我的合成器。

4 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

如果乐器支持,您应发送程序更改消息以更改声音。否则,你可能会以错误的方式看待这个问题,而应该使用多个仪器。

答案 2 :(得分:0)

检查此链接:

http://protodesign-inc.com/source/MIDI.htm

您正在寻找的功能是在MIDI.cpp中实现的。还有一个测试控制台应用程序:

http://protodesign-inc.com/source/MIDIplay_X.htm

答案 3 :(得分:0)

从您的帖子中,我假设您已经编写了代码,从MIDI文件中读取事件并将其实时输出到设备。因此,要更改声音,您需要MIDI程序更改事件。您可以找到GM声音列表here(请注意GS是GM的超集)以及MIDI事件here的定义。

如果你想将通道1上的程序更改为失真吉他,那么你需要输出字节(十六进制):

C0 1E

'C'是程序更改事件的前缀,0表示通道1(注意我们通常是指midi通道1-16,但MIDI事件从零开始计算通道编号)。 1E是程序31(同样,它们通常表示为1-128,但是midi事件从零开始计算)。