如何阻止声音MusicDeviceMIDIEvent在iOS上完成

时间:2014-03-29 19:35:55

标签: ios core-audio midi soundfont

我的应用程序成功使用AUSamplerGraph播放声音声音。

主要声音是吉他。

如果'更低'注意播放相同的字符串,我停止播放前一个音符。 默认行为就像拔弦一样,直到它消失为止。

发送音符关闭事件,声音仍然逐渐消失 以音量0发送音符,声音仍然逐渐消失。

UInt32 onVelocity = loudness;
UInt32 noteCommand = kMIDIMessage_NoteOn << 4 | 0;

OSStatus osStatus;

osStatus = MusicDeviceMIDIEvent(self.samplerUnitGuitar, noteCommand, noteNbr, onVelocity, 0);


尝试了很多事情。模式方法似乎不起作用。看起来AUSampler没有实现这种控制。

     AudioUnitReset //做了诀窍。

1 个答案:

答案 0 :(得分:1)

澄清一下,您想在发送Note后停止音符的衰减吗?

据我所知,执行此操作的唯一方法是发送带有All Sound Off的控制/模式更改消息。不幸的是,这会杀死当前正在该频道播放的任何音符。 (而MusicDevice AudioUnits只响应一个频道。)但它确实有效。

UInt8 kMIDIMessage_ControlModeChange = 0xB0;
UInt8 kMIDIMessage_ControlTypeAllSoundOff = 0x78;

MusicDeviceMIDIEvent(sampler, kMIDIMessage_ControlModeChange, kMIDIMessage_ControlTypeAllSoundOff, 0, 0);