问题描述
需要在Delphi中发送类似91.17.00的midi消息。 GitHub 上有一个 midiio-master 包,它适用于 32 位的输入和输出。输入函数也适用于 64 位,但不适用于输出。尝试设置输出设备时会引发异常。有一个新包“NativeMidi”似乎具有 64 位功能,但没有文档或示例,我无法弄清楚如何使用它。修复 midiio-master 或 NativeMidi 控制输出的示例都会有很大帮助。
解决方法
通过更改 Midiout.pas
包中的模块 midiio-master
解决了问题。
第 580 行说
for TestDeviceID := -1 to (MidiOutGetNumDevs - 1) do
需要改成
for TestDeviceID := 0 to (MidiOutGetNumDevs - 1) do
在 32 位世界中,-1
触发测试以查看是否存在任何 Midi 接口,但在 64 位中失败。
解压缩包后,为 64 位源创建一个子文件夹并将所有 .pas
文件复制到其中。相应地更改工具 > 选项 > 语言 > Delphi 选项 > 库中的库文件引用。这样您就可以拥有两个版本的 Midiout.pas
。