我有一个应用成功地使用 AUSamplerGraph 来播放 soundfont 声音。
主音是吉他。
如果在同一根弦上弹奏“较低”的音符,我会停止播放前一个音符。 默认行为就像拨弦一样,它会响起直到消失。
发送音符关闭事件,声音仍然逐渐减弱。
以 0 的音量发送一个音符,声音仍然逐渐减弱。
UInt32 onVelocity = loudness;
UInt32 noteCommand = kMIDIMessage_NoteOn << 4 | 0;
OSStatus osStatus;
osStatus = MusicDeviceMIDIEvent(self.samplerUnitGuitar, noteCommand, noteNbr, onVelocity, 0);
尝试了很多东西。模式方法似乎不起作用。 AUSampler 似乎没有实现该控制。
AudioUnitReset//成功了。
最佳答案
澄清一下,您想在发送 Note Off 后停止音符衰减?
据我所知,执行此操作的唯一方法是发送带有 All Sound Off 的控制/模式更改消息.不幸的是,这将杀死当前正在该 channel 上播放的任何音符。 (并且 MusicDevice AudioUnits 只响应一个 channel 。)但它有效。
UInt8 kMIDIMessage_ControlModeChange = 0xB0;
UInt8 kMIDIMessage_ControlTypeAllSoundOff = 0x78;
MusicDeviceMIDIEvent(sampler, kMIDIMessage_ControlModeChange, kMIDIMessage_ControlTypeAllSoundOff, 0, 0);
关于ios - 如何阻止 soundfont MusicDeviceMIDIEvent 在 iOS 上完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22735890/