1

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

4

1 回答 1

1

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

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

MusicDeviceMIDIEvent (samplerUnit,                //audiounit
                                 noteCommand,    
                                 note,            //note being played
                                 velocity,
                                 0);
于 2013-02-10T09:20:12.763 回答