ios - 如何阻止 soundfont MusicDeviceMIDIEvent 在 iOS 上完成

标签 ios core-audio midi soundfont

我有一个应用成功地使用 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/

相关文章:

midi - 开源 MIDI 库

ios - 地址簿和核心数据

macos - osx 音频单元多 channel 输出

ios - 更改 UIView 的框架并更新其子项的约束

iOS8 AVAudioEngine 如何将麦克风输入路由到(底部)扬声器输出?

ios - 16hz 的 AudioStreamBasicDescription 示例,16 位单声道格式作为 WAV 文件

python - 除非我添加延迟,否则使用 pyportmidi 发送大量数据会停止工作

mp3 - 将音频转换为MIDI的软件

ios - react native - 在构建发布时将 --max_old_space_size 添加到 iOS 项目

ios - 在图像 xcasset Xcode 上使用向量并渲染为模板