gpt4 book ai didi

swift - CoreMIDI:接收来自 MIDISendSysex 的响应

转载 作者:行者123 更新时间:2023-11-30 11:23:56 26 4
gpt4 key购买 nike

我有一个可以通过 MIDI 控制的 Marshall CODE 放大器。我可以通过向放大器发送简单的 MIDI 消息来成功更改放大器上的某些控件:

var midiClient: MIDIClientRef = 0;
var outPort:MIDIPortRef = 0;
MIDIClientCreate("MidiTestClient" as CFString, nil, nil, &midiClient);
MIDIOutputPortCreate(midiClient, "MidiTest_OutPort" as CFString, &outPort);

var packet1:MIDIPacket = MIDIPacket();
packet1.timeStamp = 0;
packet1.length = 3;
packet1.data.0 = 0xB0;
packet1.data.1 = 0x46;
packet1.data.2 = 0x64;
var packetList:MIDIPacketList = MIDIPacketList(numPackets: 1, packet: packet1);

let dest:MIDIEndpointRef = MIDIGetDestination(0);
MIDISend(outPort, dest, &packetList);

编码(marshal) spec表示您可以通过发送 SysEx 消息来检索整个预设的数据,我正在这样做:

var method:MIDICompletionProc = comp
let buffer:UnsafePointer<UInt8> = UnsafePointer([0xF0,0x00,0x21,0x15,0x7F,0x7F,0x7F,0x72,0x01,0x00,0xF7])
var sendRequest = MIDISysexSendRequest(destination: dest,
data: buffer,
bytesToSend: 11,
complete: false,
reserved: (0, 0, 0),
completionProc: method,
completionRefCon: UnsafeMutableRawPointer(&method))
MIDISendSysex(&sendRequest);
CFRunLoopRun();

func comp(req: UnsafeMutablePointer<MIDISysexSendRequest>) -> Void {
print("Complete");
}

只要没有任何错误并且 comp() 回调触发,这似乎就可以工作。我不知道如何从包含预设数据的 SysEx 调用中获取响应。

我尝试设置一个输入端口并将其连接到代码的源,但回调从未触发:

var inPort:MIDIPortRef = 0;
MIDIInputPortCreate(midiClient, "MidiTest_InPort" as CFString, midiInputCallback, nil, &inPort);
let endpoint:MIDIEndpointRef = MIDIGetSource(0);
MIDIPortConnectSource(inPort, endpoint, nil);

func midiInputCallback (pktList: UnsafePointer<MIDIPacketList>,
readProcRefCon: UnsafeMutableRawPointer?, srcConnRefCon: UnsafeMutableRawPointer?) -> Void
{
print("midiInputCallback was called");
}

我确信我错过了一些明显的东西,但它现在却回避了我。

最佳答案

好吧,我不确定到底是什么问题,但我最初是在 Playground 中尝试这个,我尝试创建一个实际的 Mac 应用程序,上面的代码现在可以工作了。

关于swift - CoreMIDI:接收来自 MIDISendSysex 的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50963060/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com