是否可以使用midiOutLongMsg来演奏和弦? (Win32 API)

时间:2010-10-21 06:43:37

标签: winapi midi

这家伙说是的: http://web.tiscalinet.it/giordy/midi-tech/lowmidi.htm 与1998年的一本非常古老的书(最大MIDI)相同。 MSDN没有提到它。 我没有听到任何声音。

  • 我用状态| note | velocity | status | note | velocity ...
  • 填充char缓冲区
  • 设置MIDIHDR结构的lpData,dwBufferLength和dwFlags
  • 致电midiOutPrepareHeader(MMSYSERR_NOERROR)
  • 致电midiOutLongMsg(MMSYSERR_NOERROR)

仍然没有声音!垃圾邮件midiOutShortMsg正在运行,但是它适用于速度较慢的机器吗?他们改变了功能吗?

感谢。

2 个答案:

答案 0 :(得分:2)

我是个白痴!我明白了:Microsoft GS Wavetable Synth不支持在midiOutLongMsg中发送多条短消息。 MIDI Mapper DOES!

答案 1 :(得分:0)

即使在慢速机器上,midiOutShortMsg应该足够快。 MIDI接口本身(硬件,但有些软件会限制自己)以31,250波特率运行。这当然忽略了你调用midiOutShortMsg的任何慢速代码。

无论如何,从技术上讲,如果以下注释使用相同的状态字节,您也应该能够使用一个状态字节。因此,如果您想要打开/关闭音符(使用速度0关闭)并且这些音符在同一频道上,您可以这样做:

status|note|velocity|note|velocity|note|velocity|note|velocity

这称为running status