【问题标题】:Play multiple midi notes simultaneously in iOS using Audio units使用音频单元在 iOS 中同时播放多个 MIDI 音符
【发布时间】:2013-01-25 14:27:49
【问题描述】:

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

【问题讨论】:

    标签: ios core-audio


    【解决方案1】:

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

    UInt32 noteCommand =     kMIDIMessage_NoteOff << 4 | 0;
    UInt32 velocity = 0;
    
    MusicDeviceMIDIEvent (samplerUnit,                //audiounit
                                     noteCommand,    
                                     note,            //note being played
                                     velocity,
                                     0);
    

    【讨论】:

    • 非常感谢!我以不同的方式停止了笔记,但这很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多