我正在尝试制作一个可以直接将 ORG 文件转换为 WAV 文件的程序。ORG 格式类似于 MIDI,从某种意义上说,它是关于何时以及如何演奏特定乐器的“指令”列表,并且程序会播放这些乐器以创建歌曲。
但是,正如我所说,我想直接生成 WAV,而不仅仅是播放 ORG。所以,从某种意义上说,我想将声音“播放”成 WAV。我确实知道 WAV 格式,并从原始 PCM 样本创建了一些文件,但这并不那么简单。
ORG 生成的声音来自我拥有的一堆包含 WAV 样本的文件。它们是单声道的,应以 22050Hz 播放 8 位样本。它们都不到一秒长,最大的不超过 11KB。我会假设要一个接一个地播放它们,我只需将样本一个接一个地放入 WAV 中。但这并不是那么简单,因为 ORG 最多可以同时演奏 16 种不同的乐器,并且每种乐器的每个音符也有一个声像(即平衡,允许立体声)。更重要的是,每个ORG都有自己的节奏(即每个点之间可以播放一个声音的毫秒数),有些声音可能会比这个节奏长,这意味着同一乐器上的两个声音可以重叠。例如,一个音符在乐器上演奏,
我只是想解释所有这些以确保情况清楚。无论如何,我基本上想知道我将如何将 ORG(或者如果你喜欢,一个 MIDI(因为它们本质上是相同的))转换或“播放”为 WAV。正如我提到的,每个音符都有声相/平衡,所以 WAV 也需要是立体声的。
如果这很重要,我将在 FlashDevelop 的 ActionScript 3.0 中执行此操作。我不需要任何代码(因为那会要求有人为我做这项工作),但我只想知道我将如何正确地做到这一点。一两个算法也可能很方便。