【发布时间】:2017-11-30 07:54:25
【问题描述】:
我正在尝试使用 AKSequencer() 从一个 .mid 文件中发送一个 midi 数据,在一个虚拟输出上以在应用程序外部使用它(下面有更多详细信息)。 我的问题是我的 AKSequencer 没有在我的应用程序之外发送 midi,就像我想对 virtualOuput 端口做的那样。
// My midiOutput is set like this:
let midiOut = AKMIDI()
midiOut.createVirtualOutputPort()
midiOut.openOutput()
//And my AKSequencer connect to the midiOuput like this:
sequencer.setGlobalMIDIOutput(midiOut.virtualOutput)
我设置了一个 AKSampler() 以确保我的 AKSequencer 工作正常。
我认为我的问题提供了从我到 midiOutput 的连接,或者我使用 AKSequencer 而不是像我想象的那样设计发送 midi。
为了详细说明,我正在尝试通过蓝牙将 MIDI 从 iOS 应用程序发送到 DAW。感谢 CABTMIDILocalPeripheralViewController。当两个设备建立连接时,很容易建立一个连接来发送 MIDI。我用 AKMIDI().sendNoteOnMessage() 实现了发送 midi,所以我确定连接不是问题。
【问题讨论】:
-
问题出在哪里?
-
AKSequencer 不在 virtualOutput 上发送 midi。也许我对虚拟输出有误。用于在应用程序外部发送 midi 的对象是否正确?
-
AKSequencer 可以将 MIDI 发送到 AKMIDICallbackInstrument 或 AKMIDIListener 对象。您可以通过 virtualOutput 将 MIDI 从回调乐器或 midi 侦听器重新路由到其他应用程序。如果您想将 MIDI 发送到硬件或其他输出,例如 CoreMIDI Network Session,您需要启用该输出,例如
midi.openOutput("Session 1")。您可以通过midi.destinationNames获取所有目的地,并让用户选择他们想要打开的目的地。然后使用用户选择的目标名称打开该输出。