在VB.NET中使用一个midiOutShortMsg发送多个MIDI音符和弦

问题描述

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