1

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

主要声音是吉他。

如果播放同一弦上的“较低”音符,我会停止播放前一个音符。默认行为就像拨弦一样,它会响起直到它消失。

发送一个音符关闭事件,声音仍然逐渐减弱。
以 0 的音量发送音符,声音仍然逐渐减弱。

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

OSStatus osStatus;

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


尝试了很多东西。模式方法似乎不起作用。看起来 AUSampler 没有实现该控制。

AudioUnitReset // 成功了。

4

1 回答 1

1

澄清一下,您想在发送 Note Off 后停止便笺的衰减吗?

据我所知,这样做的唯一方法是发送一条控制/模式更改消息并关闭 All Sound Off。不幸的是,这将杀死当前在该频道上播放的任何音符。(而且 MusicDevice AudioUnits 只响应一个通道。)但它有效。

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

MusicDeviceMIDIEvent(sampler, kMIDIMessage_ControlModeChange, kMIDIMessage_ControlTypeAllSoundOff, 0, 0);
于 2014-05-25T00:00:45.260 回答