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

时间:2017-12-04 18:50:01

标签: audiokit

我有更多时间玩AudioKit,但我有一些关于MIDI的问题。我试过谷歌搜索,我也检查了AKMIDI类引用,但这让我更加困惑。

让我们保持简单:我有一个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中,但为了保持简单,我合并了LOC。

所以我的问题是:

  1. 这会将MIDI信号发送到外部机器吗? (我订购了Lightning Camera Connection Kit,但是它还需要几天才能到达,所以我还不能测试它。)我无法从iPhone模拟器中获得任何东西,所以我接受它,这是行不通的。
  2. 这会通过无线MIDI发送MIDI信号吗?根据我在某些Google小组上看到的内容,您可以在macOS上使用无线MIDI。不幸的是,我没有找到任何关于你是否以及如何在AudioKit中使用它的内容。
  3. MIDI over Bluetooth怎么样?这一切都将由AudioKit自动处理还是我必须改变什么?我读了一些关于midi.createVirtualPorts()的内容,但我不确定这实际上是做什么的。但是“虚拟”这个词让我相信这是用于测试的吗?
  4. 对不起,如果这些问题荒谬可笑,但我真的对此确切的内部运作感到困惑。

    提前多多感谢!

2 个答案:

答案 0 :(得分:0)

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

  2. 我不确定无线MIDI,因为在AudioKit中没有特别考虑到这一点。如果它不“正常”,我可以尝试复制。

  3. 您可能必须使用openOutput(“蓝牙”)明确打开蓝牙连接

答案 1 :(得分:0)

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

Audio MIDI Setup

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