虚拟MIDI端口与AudioKit之间的通信可能会出现问题,可能会导致收到错误的MIDI消息。为了解决这个问题,我们建议使用CoreMIDI框架提供的MIDISend函数而不是AudioKit的发送函数。可以按照以下步骤进行操作:
在你的项目中导入CoreMIDI框架。
在你的代码中创建并打开一个MIDI输出端口。可以像这样使用MIDI函数来创建和打开一个MIDI输出端口:
var client: MIDIClientRef = 0
var outPort: MIDIPortRef = 0
MIDIClientCreate("MyMIDIClient", nil, nil, &client)
MIDIOutputPortCreate(client, "MyMIDIClient_OutPort", &outPort)
var packet = MIDIPacket()
packet.timeStamp = 0
packet.length = UInt16(bytes.count)
memcpy(packet.data, bytes, bytes.count)
let packetList = MIDIPacketList(packet: packet, numPackets: 1)
MIDISend(outPort, destinationEndpoint, &packetList)
其中,bytes
是包含要发送的MIDI数据的字节数组,destinationEndpoint
是要发送到的MIDI目标端口。
使用CoreMIDI框架发送MIDI消息可以避免AudioKit的虚拟MIDI端口混淆问题,确保你的MIDI消息发送和接收的准确性。