问题描述
我想使用一个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 (将#修改为@)