什么时候执行 MIDI 输出设备回调?
When MIDI output device callback is executed?
我正在尝试在 C# 中使用 MIDI 设备。现在我正在通过输出设备实现发送消息。我看到有 MidiOutProc for it. I'm passing appropriate callback in midiOutOpen 方法。问题是当我通过设备发送消息时没有执行回调(发送正常,我看到数据是通过我正在测试 API 的虚拟 MIDI 端口传输的)。发送消息时是否应该陷入这个回调?当我打开一个设备时,我陷入了带有 MOM_OPEN
消息的回调中,因此正确附加了回调。
我正在通过 midiOutShortMsg 函数发送消息。
更新:
似乎只有 MOM_DONE
才会执行带有消息的输出设备回调。来自关于此消息类型的文档:
The MOM_DONE message is sent to a MIDI output callback function when the specified system-exclusive or stream buffer has been played and is being returned to the application.
所以似乎没有对通过 midiOutShortMsg
发送的 Note On 等频道消息执行回调。是这样吗?
使用缓冲区发送大型 MIDI 消息时,需要 MOM_DONE 回调消息来告诉您的程序何时可以重新使用(或释放)缓冲区。该回调消息仅用于管理缓冲区。
对于短消息,不需要这样的通知。发送短信后如果想做点什么,直接调用该代码即可。
我正在尝试在 C# 中使用 MIDI 设备。现在我正在通过输出设备实现发送消息。我看到有 MidiOutProc for it. I'm passing appropriate callback in midiOutOpen 方法。问题是当我通过设备发送消息时没有执行回调(发送正常,我看到数据是通过我正在测试 API 的虚拟 MIDI 端口传输的)。发送消息时是否应该陷入这个回调?当我打开一个设备时,我陷入了带有 MOM_OPEN
消息的回调中,因此正确附加了回调。
我正在通过 midiOutShortMsg 函数发送消息。
更新:
似乎只有 MOM_DONE
才会执行带有消息的输出设备回调。来自关于此消息类型的文档:
The MOM_DONE message is sent to a MIDI output callback function when the specified system-exclusive or stream buffer has been played and is being returned to the application.
所以似乎没有对通过 midiOutShortMsg
发送的 Note On 等频道消息执行回调。是这样吗?
使用缓冲区发送大型 MIDI 消息时,需要 MOM_DONE 回调消息来告诉您的程序何时可以重新使用(或释放)缓冲区。该回调消息仅用于管理缓冲区。
对于短消息,不需要这样的通知。发送短信后如果想做点什么,直接调用该代码即可。