通过 64 位 Delphi 发送 MIDI 控制信息

问题描述

需要在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