如何使用Swift通过LE蓝牙将MIDI数据从iOS发送到OS X.

时间:2015-03-24 19:38:20

标签: ios macos swift bluetooth midi

是否有任何教程解释如何使用CABTMIDILocalPeripheralViewController()将MIDI数据从iOS设备发送到Mac?

连接有效,但我不知道如何发送MIDI数据。我用Google搜索了大约两个小时,没有找到任何东西。也许你可以帮帮我?

1 个答案:

答案 0 :(得分:2)

从Apple的文档中(以及您发现的),CABTMIDILocalPeripheralViewController舞蹈所做的就是使联网的MIDI设备可用。它实际上并不与它通过网络发现的设备建立任何MIDI连接。

  

建立连接后,它只会显示为任何MIDI应用程序都可以与之通信的普通MIDI设备。

这意味着您仍然需要处理应用程序的其余MIDI实现。要做到这一点,你必须使用CoreMIDI框架,这有点麻烦,尤其是在Swift世界。

以下代码说明了如何枚举可用的MIDI设备:

let numDevices = MIDIGetNumberOfDevices()
for ix in 1...numDevices {
    let dev = MIDIGetDevice(ix)  // `dev` is a MIDIDeviceRef
    print("Device \(ix) is \(dev)")  // so it shows up as a number here
    var deviceNameCF: Unmanaged<CFString>?  // the Swift equivalent of a pointer to a string
    let propertyNameErr = MIDIObjectGetStringProperty(dev, kMIDIPropertyName, &deviceNameCF)
    if (propertyNameErr != 0) {
        print("Error getting property: \(propertyNameErr)")
    } else {
        let deviceName = deviceNameCF!.takeRetainedValue() as? NSString
        print("Device name: \(deviceName!)")
    }
}

对于调试,您可以将其添加到显示为in their exampledoneAction处理程序中,或者对于生产中更强大的处理程序,您可以使用doneAction处理程序来触发您的UI刷新以显示新可用的设备。

编辑 PGMidi library是一种方便,轻量级,灵活许可的选项,用于将MIDI数据发送到目的地,包括通过蓝牙连接的目的地。