通过 64 位 Delphi 发送 MIDI 控制消息
Posted
技术标签:
【中文标题】通过 64 位 Delphi 发送 MIDI 控制消息【英文标题】:Sending MIDI control message via 64 bit Delphi 【发布时间】:2021-03-01 04:49:20 【问题描述】:需要在 Delphi 中发送 91.17.00 之类的 midi 消息。 GitHub 上有一个包 midiio-master,它适用于 32 位的输入和输出。输入功能也适用于 64 位,但不适用于输出。尝试设置输出设备时会引发异常。有一个新的包,“NativeMidi”,它似乎有 64 位功能,但没有文档或示例,我不知道如何使用它。修复 midiio-master 或 NativeMidi 控件输出示例都会有很大帮助。
【问题讨论】:
抛出的异常究竟是什么?显示异常发生位置的源代码。编辑您的消息以添加信息。 欢迎来到互联网 - 它通过链接工作。请链接到“GitHub 上的 package midiio-master”和“一个新的包,'NativeMidi'”,因为不是每个读者都必须自己弄清楚,我们' re 也在查看完全相同的代码。 我希望您明白,除非您展示您遇到问题的代码,否则没有人可以帮助您解决问题。因此,请显示您用于发送 midi 消息的代码,包括变量声明。此外,按照其他人的要求,显示触发异常的代码并重复确切的错误消息。 【参考方案1】:通过更改 midiio-master
包中的模块 Midiout.pas
解决了问题。
第 580 行说
for TestDeviceID := -1 to (MidiOutGetNumDevs - 1) do
需要改成
for TestDeviceID := 0 to (MidiOutGetNumDevs - 1) do
在 32 位环境中,-1
触发测试以查看是否存在任何 Midi 接口,但在 64 位环境中失败。
解压包后,为 64 位源创建一个子文件夹,并将所有 .pas
files 复制到其中。相应地更改工具 > 选项 > 语言 > Delphi 选项 > 库中的库文件引用。这样你就可以拥有两个版本的Midiout.pas
。
【讨论】:
那么很有可能是beNative midiio。以上是关于通过 64 位 Delphi 发送 MIDI 控制消息的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 pyPortMidi 或 pygame 发送 midi 控制更改消息 (CC)?