我需要在我的应用中同时播放多个轨道。音轨可以是普通音频文件或一组 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/