我有一个要求,我需要在用户操作上播放连续的midi声音。我需要只使用midi,因为我需要播放大量的乐器/声音。这是我能够实现的应用程序的一部分。我使用Audio graph等来实现这一目标。现在的问题是录制这些笔记。正如我所提到的,我有很多乐器,我需要分别录制每个乐器的声音。因此,我尝试将midi音符编号保存到每个乐器的数组中。现在的问题是我必须混合所有这些声音(理想情况下通过混音器重放它们)并从中创建音乐文件。我能想到的一个单调乏味的方法是,当midi音调自己播放时,将每个乐器分别录制成音乐文件,最后通过加起来混合所有乐器音乐文件。但是用户可能会延迟一些乐器曲调等等,然后,我发现它很难混合。此外,我无法找到一种合适的方式来混合各种长度的音频文件,并在它们之前延迟。任何人都可以告诉我,如果有一种方法我可以从各种乐器的midi音符编号生成音频文件,而无需通过多声道混音器播放它们并等到所有声音都通过调音台播放完成录音他们?如果你有不同的方法,请你能告诉我吗?
答案 0 :(得分:0)
我不完全明白你想要实现的目标,但我会一拍。
如果您要在Core Audio中使用音乐播放器API,您可以设置一个音乐序列,其中包含所需数量的音轨,每个音乐曲目一个乐器,然后在发生时将midi数据写入每个音轨。这将为您提供所播放的所有内容的同步记录。同步取决于您:实时添加音符(所有音轨同步)或开始在每首曲目的开头添加音符。
音乐播放器将允许您导出.midi文件,但您没有获得自定义AUSampler声音字体 - 因此这对您没有用。我不知道如何生成音频文件而不实际呈现它(播放它)。可能是混音器输出上的渲染回调 - 而混音器未连接到remoteIO(不知道是否可能)。