【发布时间】:2019-09-17 21:40:05
【问题描述】:
我有以下情况:在我的应用程序中,我创建了虚拟 MIDI 端口,如 Audiokit 页面上的一些示例中所述。 我使用 midi 来触发 AKMIDISampler 和 AKMIDISampler 为打击乐器加载 .aupresets。我在 AULAB 中创建了 .aupresets,以便忽略 NOTE OFF。 所以样本可以淡出并且不会在下一次命中时被切断。 它可以与我的 MIDI 键盘和其他一些硬件 MIDI 控制器一起正常工作。 MIDI NOTE OFF 被忽略,之前的声音可以淡出并且声音重叠很好。但是当我在 AudioBus 中加载我的应用程序并使用音序器通过虚拟 MIDI 触发它时,每个新样本总是会切断前一个样本。这听起来很不自然,应该改变。
virtual MIDI 和 not virtual 的区别在哪里?我做错了什么以及如何在两个级别上获得相同的行为?任何帮助表示赞赏!谢谢!
//open midi ports
let midi = AudioKit.midi
midi.createVirtualPorts()
midi.openInput(name: "Session 1")
midi.addListener(self)
//Play Sampler
func receivedMIDINoteOn(noteNumber: MIDINoteNumber, velocity: MIDIVelocity, channel: MIDIChannel) {
do {
try self.myMIDISampler.play(noteNumber: myNote, velocity: velocity, channel: myMIDIChannel)
} catch {
AKLog("Can't play the file, error:\(error)")
}
}
它在虚拟 MIDI 和硬件 MIDI 命令上应该有相同的结果。 原则上,我认为我需要一种方法来忽略/过滤所有级别的 midi 音符。 这也可能是一个解决方案。
【问题讨论】: