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

时间:2013-02-10 08:33:24

标签: ios core-audio

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

1 个答案:

答案 0 :(得分:1)

在不同的曲目上播放多个Midi音符应该不是问题。我把它弄好了。确保在播放新的midi音符之前停止播放midi音符。您可以使用相同的功能来停止midi音符,如下所示

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

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