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。
所以我的问题是:
- 这会向外部机器发送 MIDI 信号吗? (我订购了Lightning Camera Connection Kit,但要等几天才能到,所以我还不能测试。)我无法从iPhone模拟器中得到任何东西,所以我接受了,这是行不通的.
- 这也会通过无线 MIDI 发送 MIDI 信号吗?根据我在某些 Google 组中阅读的内容,您可以在 macOS 上使用无线 MIDI。不幸的是,我没有找到关于是否以及如何在 AudioKit 中使用它的任何信息。
- 蓝牙 MIDI 怎么样?这一切会由 AudioKit 自动处理还是我必须更改任何内容?我阅读了一些关于 midi.createVirtualPorts() 的内容,但我不确定这实际上是做什么的。但是"virtual"这个词让我相信这是为了测试?
很抱歉,如果这些问题太菜鸟了,但我真的对它的确切内部工作原理感到困惑。
提前致谢!
是的,应该的。您已经打开所有输出,所以一切都应该得到输出。
我不确定无线 MIDI,因为在 AudioKit 中没有专门针对无线 MIDI 做任何事情。如果不行"just work"我可以尝试复制
您可能必须使用 openOutput("Bluetooth")
显式打开蓝牙连接
您也可以使用模拟器测试您的应用。只需 运行 模拟器上的应用程序并打开 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 可用或无法连接时得到通知。
我有更多时间玩弄 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。
所以我的问题是:
- 这会向外部机器发送 MIDI 信号吗? (我订购了Lightning Camera Connection Kit,但要等几天才能到,所以我还不能测试。)我无法从iPhone模拟器中得到任何东西,所以我接受了,这是行不通的.
- 这也会通过无线 MIDI 发送 MIDI 信号吗?根据我在某些 Google 组中阅读的内容,您可以在 macOS 上使用无线 MIDI。不幸的是,我没有找到关于是否以及如何在 AudioKit 中使用它的任何信息。
- 蓝牙 MIDI 怎么样?这一切会由 AudioKit 自动处理还是我必须更改任何内容?我阅读了一些关于 midi.createVirtualPorts() 的内容,但我不确定这实际上是做什么的。但是"virtual"这个词让我相信这是为了测试?
很抱歉,如果这些问题太菜鸟了,但我真的对它的确切内部工作原理感到困惑。
提前致谢!
是的,应该的。您已经打开所有输出,所以一切都应该得到输出。
我不确定无线 MIDI,因为在 AudioKit 中没有专门针对无线 MIDI 做任何事情。如果不行"just work"我可以尝试复制
您可能必须使用 openOutput("Bluetooth")
显式打开蓝牙连接
您也可以使用模拟器测试您的应用。只需 运行 模拟器上的应用程序并打开 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 可用或无法连接时得到通知。