问题描述
我想使用一个midioutShortMsg通过MIDI同时发送多个音符(基本上是和弦)。目前,当我要发送多个便笺时,我会这样做:
Dim mdata1 As Byte() = New Byte(3) {}
Dim mdata2 As Byte() = New Byte(3) {}
Dim msg1 As UInteger = BitConverter.ToUInt32(mdata1,0)
Dim msg2 As UInteger = BitConverter.ToUInt32(mdata2,0)
mdata1(0) = &H90 'Note On
mdata1(1) = 60 'Note to play
mdata1(2) = 95 'VeLocity
mdata2(0) = &H90 'Note On
mdata2(1) = 75 'Note to play
mdata2(2) = 95 'VeLocity
midioutopen(hMidiout,Outdeviceid,0)
midioutShortMsg(hMidiout,CInt(msg1))
midioutShortMsg(hMidiout,CInt(msg2))
midioutClose(hMidiout)
但是用这种方法放下许多和弦时,有时两个音符之间会有延迟。如果我不使用自动量化功能,那会很明显。
我试图这样使用它,但无济于事(在类似的地方应该可以工作):
Dim mdata1 As Byte() = New Byte(5) {}
Dim msg1 As UInteger = BitConverter.ToUInt32(mdata1,0)
mdata1(0) = &H90 'Note On
mdata1(1) = 60 'Note to play
mdata1(2) = 95 'VeLocity
mdata2(3) = 75 'Note to play
mdata2(4) = 95 'VeLocity
midioutopen(hMidiout,CInt(msg1))
midioutClose(hMidiout)
因此,我需要一种可以同时发送这两个(或更多)笔记的方法,但可以在一个单独的midi消息(midioutShortMsg)中发送而不是2个或更多。
我希望有人知道答案,谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)