0

我有一个要求,我需要在用户操作上播放连续的 MIDI 声音。我只需要使用 midi,因为我有大量需要演奏的乐器/声音。这是我能够实现的应用程序的一部分。我使用音频图等来实现这一点。现在的问题是记录这些笔记。正如我提到的,我有很多乐器,我需要分别录制每个乐器的声音。因此,我尝试将 midi 音符编号保存到每个乐器的数组中。现在的问题是我必须混合所有这些声音(最好不要通过混音器重放它们)并用它们创建一个音乐文件。我能想到的一种乏味的方法是在播放 MIDI 音调时将每个乐器单独录制到一个音乐文件中,最后通过加起来混合所有乐器音乐文件。但是用户可能会延迟一些乐器曲调等,然后我发现它很难混合。此外,我无法找到一种合适的方法来混合各种长度的音频文件,以及它们之前的延迟。谁能告诉我是否有一种方法可以从各种乐器的 MIDI 音符编号生成音频文件,而无需通过多通道混音器播放它们,然后等到所有声音都通过混音器播放完成后再录制他们?如果您有其他似乎可行的方法,请您也告诉我吗?谁能告诉我是否有一种方法可以从各种乐器的 MIDI 音符编号生成音频文件,而无需通过多通道混音器播放它们,然后等到所有声音都通过混音器播放完成后再录制他们?如果您有其他似乎可行的方法,请您也告诉我吗?谁能告诉我是否有一种方法可以从各种乐器的 MIDI 音符编号生成音频文件,而无需通过多通道混音器播放它们,然后等到所有声音都通过混音器播放完成后再录制他们?如果您有其他似乎可行的方法,请您也告诉我吗?

4

1 回答 1

0

我不完全理解你想要达到的目标,但我会试一试。

如果您要在 Core Audio 中使用音乐播放器 API,您可以设置一个包含任意数量轨道的音乐序列,每个音乐轨道一个乐器,然后在每个轨道发生时将 midi 数据写入每个轨道。这将为您提供所有已播放内容的同步记录。同步取决于您:实时添加音符(同步所有曲目)或在每个曲目的开头添加音符。

音乐播放器可以让你导出一个 .midi 文件,但你没有得到自定义的 AUSampler 声音字体——所以这对你来说并不是很有用。我不知道在不实际渲染(播放)的情况下生成音频文件的方法。可能是混音器输出上的渲染回调 - 并且混音器未连接到 remoteIO(不知道这是否可能)。

于 2012-11-06T06:33:02.030 回答