ios - 使用音频单元在 iOS 中同时播放多个 midi 音符

标签 ios core-audio

我需要在我的应用中同时播放多个轨道。音轨可以是普通音频文件或一组 MIDI 音符。因此,我配置了音频图并将各种音频单元(文件播放器 AU 和采样器 AU)连接到多 channel 混音器,其输出连接到远程 io 单元以播放音频文件和 midi 音符。采样器单元加载了各种仪器的 sf2 文件。所有这一切都很好,但是一旦我有两个以上的 midi 采样器音频单元并尝试使用 MusicDeviceMIDIEvent 函数通过这些单元同时播放 midi 音符,输出声音在几次循环后会失真/中断。我需要同时播放大约 10 个乐器音轨,在我添加第三个 MIDI 单元后问题就开始了。如果这种方法有问题,有人能指出我吗?如果有,你能告诉我如何实现同时播放各种乐器的 MIDI 音符的任务吗?

最佳答案

在不同轨道上播放多个 Midi 音符应该不是问题。我让它工作正常。确保在播放新音符之前停止正在播放的 MIDI 音符。您可以使用相同的功能来停止如下所示的 MIDI 音符

UInt32 noteCommand =     kMIDIMessage_NoteOff << 4 | 0;
UInt32 velocity = 0;

MusicDeviceMIDIEvent (samplerUnit,                //audiounit
                                 noteCommand,    
                                 note,            //note being played
                                 velocity,
                                 0);

关于ios - 使用音频单元在 iOS 中同时播放多个 midi 音符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14796012/

相关文章:

ios - 将 ScrollView 添加到现有 View

ios - 如何防止数据库中的APNS设备 token 冗余

ios - 流媒体播放的实时音频效果

ios - 与 AudioUnit 一起播放声音文件

ios - 如何指定 AVAudioEngine Mic-Input 的格式?

iphone - 选择器添加参数

html - “ block 样式”单选按钮适用于除 iPad 以外的所有设备

iphone - iAd 测试广告未显示

ios - 匹配 AVAudioEngine 的输入和输出硬件设置

objective-c - Obj-C 对象未在 C 回调函数中释放