在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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...