我的应用程序成功使用AUSamplerGraph播放声音声音。
主要声音是吉他。
如果'更低'注意播放相同的字符串,我停止播放前一个音符。 默认行为就像拔弦一样,直到它消失为止。
发送音符关闭事件,声音仍然逐渐消失 以音量0发送音符,声音仍然逐渐消失。
UInt32 onVelocity = loudness;
UInt32 noteCommand = kMIDIMessage_NoteOn << 4 | 0;
OSStatus osStatus;
osStatus = MusicDeviceMIDIEvent(self.samplerUnitGuitar, noteCommand, noteNbr, onVelocity, 0);
尝试了很多事情。模式方法似乎不起作用。看起来AUSampler没有实现这种控制。
AudioUnitReset //做了诀窍。
答案 0 :(得分:1)
澄清一下,您想在发送Note后停止音符的衰减吗?
据我所知,执行此操作的唯一方法是发送带有All Sound Off的控制/模式更改消息。不幸的是,这会杀死当前正在该频道播放的任何音符。 (而MusicDevice AudioUnits只响应一个频道。)但它确实有效。
UInt8 kMIDIMessage_ControlModeChange = 0xB0;
UInt8 kMIDIMessage_ControlTypeAllSoundOff = 0x78;
MusicDeviceMIDIEvent(sampler, kMIDIMessage_ControlModeChange, kMIDIMessage_ControlTypeAllSoundOff, 0, 0);