AKMIDI-行为不同-虚拟Midi

时间:2019-09-17 21:40:05

标签: midi audiokit

我有以下情况:在我的应用程序中,我已经创建了虚拟MIDI端口,如“音频工具包”页面上的一些示例中所述。 我使用midi来触发AKMIDISampler和AKMIDISampler为打击乐器加载.aupresets。我在AULAB中创建了.aupresets,因此NOTE OFF应该被忽略。 因此,下一次打击时,样本可能会淡出,并且不会被剪切掉。 它可以与我的MIDI键盘和某些其他硬件MIDI控制器一起使用。 MIDI NOTE OFF被忽略,先前的声音可能淡出,并且声音重叠良好。但是,当我将我的应用程序加载到AudioBus并使用音序器通过虚拟MIDI触发它时,每个新采样总是会切断前一个采样。听起来很不自然,应该更改。

虚拟MIDI与非虚拟MIDI有何区别?我在做什么错?如何在两个级别上获得相同的行为?任何帮助表示赞赏!谢谢!

//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音符。 那也可能是一个解决方案。

1 个答案:

答案 0 :(得分:0)

@ user3491466,

在没有看到整个Xcode项目和从AU Lab保存的.aupreset的情况下,是否可以尝试在参数菜单中增加图层的“发布时间”,以便样本继续播放而不被截断?< / p>

Image of AU Lab preset parameters

请告诉我这是否有帮助。请确保还签出AudioKit Synth One开源项目中的Audiobus SDK和关联的类。这样,您可以查看是否有任何其他设置。

https://github.com/AudioKit/AudioKitSynthOne