Aftertouch / Pressure Midi 命令在 AVFoundation 中不起作用
Posted
技术标签:
【中文标题】Aftertouch / Pressure Midi 命令在 AVFoundation 中不起作用【英文标题】:Aftertouch / Pressure Midi command not working in AVFoundation 【发布时间】:2015-10-18 18:06:46 【问题描述】:我正在使用 AVAudioUnitSampler 播放一些 MIDI 声音,我已加载声音字体并成功使用开始音符、停止音符和应用弯音 MIDI 命令。我现在正在尝试合并触后或压力命令,因为它在 AVFoundation 中被调用。
所以我的代码大致如下(简化):
self.midiAudioUnitSampler.startNote(60, withVelocity: 60, onChannel: 0)
//some time later...
self.midiAudioUnitSampler.sendPressure(20, onChannel: 0)
音符正在嗡嗡作响,但发送压力命令似乎对声音输出没有影响。我曾尝试使用发送压力和 sendPressureForKey 并没有运气。
我做错了什么还是我误解了 sendPressure 的作用?我希望它在播放后会改变音符的音量。
顺便说一句,我有一个正在播放音符的设置,并且我有一个单独的控件,可以在音符播放开始后的某个时间向 samplee 发射压力命令。
【问题讨论】:
【参考方案1】:我的猜测是采样器不知道如何处理触后消息。如果您想更改音符的音量(以及播放的任何其他音符),您可以将值发送到参数 7(音量):
self.midiAudioUnitSampler.sendController(7, withValue: 20, onChannel: 0)
根据我的经验,我感觉采样器确实响应 MIDI 控制器 7。
【讨论】:
感谢我也得出了同样的结论,我认为廉价的 .sf2 文件中没有这些数据。虽然不知道参数 7,但您对正常工作有一个很好的参考吗? 不幸的是我没有,但我发现 CC#11(表达式)也可以。音量 (7) 通常只在每个 MIDI 通道的歌曲开头使用一次,而表达式 (11) 用于在您播放时创建动态音量,例如渐强。采样器还会对 Pan (10)、Sustain (64)、Sostenuto (66)、All Notes Off (120) 和 All Controllers Off (121) 做出反应。以上是关于Aftertouch / Pressure Midi 命令在 AVFoundation 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Physicists Measure Pressure Distribution inside Proton
flink和spark Streaming中的Back Pressure
如何使用 Audiokit 发送 midi poly pressure 消息?
Trump signed presidential directive ordering actions to pressure North Korea