如何阻止一个soundfont MusicDeviceMIDIEvent在iOS上完成



我有一个应用程序,它成功地使用AUSamplerGraph来播放soundfont的声音。

主要声音是吉他。

如果在同一根弦上演奏了一个"较低"的音符,我将阻止前一个音符的演奏。默认行为就像拨动一根弦,它会一直响,直到消失。

发送一个note off事件,声音仍然逐渐变小。
发送一个音量为0的便条,声音仍然会逐渐变小。

UInt32 onVelocity = loudness;
UInt32 noteCommand = kMIDIMessage_NoteOn << 4 | 0;
OSStatus osStatus;
osStatus = MusicDeviceMIDIEvent(self.samplerUnitGuitar, noteCommand, noteNbr, onVelocity, 0);


尝试了很多东西。模式方法似乎不起作用。看起来不像AUSampler实现了那个控件。

AudioUnitReset//成功了

澄清一下,您想在发送note Off后阻止note的衰变?

据我所知,要做到这一点,唯一的方法是发送控制/模式更改消息与所有声音关闭。不幸的是,这将杀死任何音符,目前正在播放该频道。(MusicDevice AudioUnits只响应一个通道。)

UInt8 kMIDIMessage_ControlModeChange = 0xB0;
UInt8 kMIDIMessage_ControlTypeAllSoundOff = 0x78;
MusicDeviceMIDIEvent(sampler, kMIDIMessage_ControlModeChange, kMIDIMessage_ControlTypeAllSoundOff, 0, 0);

相关内容

  • 没有找到相关文章

最新更新