触后/压力 Midi 命令在 AVFoundation 中不起作用

Aftertouch / Pressure Midi command not working in AVFoundation

我正在使用 AVAudioUnitSampler 来播放一些 MIDI 声音,我加载了一个 soundfont 并成功地使用了开始音符、停止音符和应用弯音 MIDI 命令。我现在正在尝试合并 AVFoundation 中调用的触后或压力命令。

所以我的代码大致如下(简化):

self.midiAudioUnitSampler.startNote(60, withVelocity: 60, onChannel: 0)
//some time later... 
self.midiAudioUnitSampler.sendPressure(20, onChannel: 0)

音符嗡嗡作响,但发送压力命令似乎对声音输出没有影响。我试过使用 send pressure 和 sendPressureForKey ,但没有成功。

我做错了什么或者我误解了 sendPressure 的作用?我希望它在播放后改变音符的音量。

顺便说一句,我有一个正在播放音符的设置,并且我有一个单独的控件,可以在音符播放开始后的某个时间将 pressureCommands 发射到样本中。

我的猜测是采样器不知道如何处理触后消息。如果你想改变音符的音量(以及任何其他演奏的音符),你可以将你的值发送到参数 7(音量):

self.midiAudioUnitSampler.sendController(7, withValue: 20, onChannel: 0)

根据我的经验,我感觉采样器确实响应 MIDI 控制器 7。