AudioKit MIDI 事件 - 基本问题,发送到外部合成器,不确定如何处理

AudioKit MIDI Events - basic questions, sending to external synth, not sure about handling

我有更多时间玩弄 AudioKit,但我对 MIDI 有一些疑问。我尝试使用谷歌搜索,还检查了 AKMIDI class 参考资料,但这让我更加困惑。

让我们保持简单:我有一个 UIButton,它应该向外部合成器发出 "C"。

import AudioKit
midiOut.openOutput()
midiOut.sendEvent(AKMIDIEvent(noteOn: 72, velocity: 80, channel: 1))
sleep(1)
midiOut.sendEvent(AKMIDIEvent(noteOff: 72, velocity: 0, channel: 1))

显然这段代码分布在整个 ViewController.swift 中,sendEvents 在 @IBAction 中,但为了简单起见,我合并了 LOCs。

所以我的问题是:

  1. 这会向外部机器发送 MIDI 信号吗? (我订购了Lightning Camera Connection Kit,但要等几天才能到,所以我还不能测试。)我无法从iPhone模拟器中得到任何东西,所以我接受了,这是行不通的.
  2. 这也会通过无线 MIDI 发送 MIDI 信号吗?根据我在某些 Google 组中阅读的内容,您可以在 macOS 上使用无线 MIDI。不幸的是,我没有找到关于是否以及如何在 AudioKit 中使用它的任何信息。
  3. 蓝牙 MIDI 怎么样?这一切会由 AudioKit 自动处理还是我必须更改任何内容?我阅读了一些关于 midi.createVirtualPorts() 的内容,但我不确定这实际上是做什么的。但是"virtual"这个词让我相信这是为了测试?

很抱歉,如果这些问题太菜鸟了,但我真的对它的确切内部工作原理感到困惑。

提前致谢!

  1. 是的,应该的。您已经打开所有输出,所以一切都应该得到输出。

  2. 我不确定无线 MIDI,因为在 AudioKit 中没有专门针对无线 MIDI 做任何事情。如果不行"just work"我可以尝试复制

  3. 您可能必须使用 openOutput("Bluetooth")

  4. 显式打开蓝牙连接

您也可以使用模拟器测试您的应用。只需 运行 模拟器上的应用程序并打开 Mac 上的音频 MIDI 设置应用程序,转到网络设置并连接模拟器。这是屏幕截图:

您可以完全控制 AKMIDI
* 如果你想打开所有可用的输出,只需调用 midi.openOutput().
* 如果你想打开一个特定的,比如网络会话,主要命名为 "Session 1",请调用 midi.openOutput(name: "Session 1").
* 你可以通过 midi.destinationNames 字符串数组获取所有可用的目的地,如果你想向用户提示一个 midi 目的地选择器,那么只需用他们的名字打开它们。
* 关闭它们 midi.endpoints.removeValue(forKey: "Session 1").
* 对于虚拟输出,请调用 sequencer.midi.createVirtualOutputPort(name: "App MIDI Out"),这有助于将 MIDI 发送到您 iOS/Mac 中的其他应用程序。
* 此外,您可以订阅 AKMIDIListener 协议的 receivedMIDISetupChange 功能,以便在 MIDI hardware/software 可用或无法连接时得到通知。