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