首页 文章

C MIDI文件更改乐器

提问于
浏览
1

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

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

4 回答

  • 0

    如果仪器支持它,您应发送程序更改消息以更改声音 . 否则,您可能以错误的方式查看此问题,而应使用多个仪器 .

  • 0

    检查此链接:

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

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

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

  • 0
  • 0

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

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

    C0 1E
    

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

相关问题