音频到8位文本样本转换

时间:2009-12-07 21:33:02

标签: c audio assembly 68000 8-bit

我今天有一个有趣的问题。

我需要将一些口袋妖怪音频文件转换为8位样本列表(0-255值)。我正在MC6800芯片组上编写一个汇编程序,需要播放这些声音。我计划在调用函数时包含一个包含8位样本的数组,程序将循环执行。

有没有人知道将音频文件(wav / mp3)转换为逗号分隔的8位文本样本值列表的方法?或者这种相对方法的任何内容?

提前非常感谢你!

4 个答案:

答案 0 :(得分:2)

您可以使用命令行“sox”工具或Audacity音频编辑器将文件转换为原始的无符号8位单声道音频文件。

在Audacity 1.3或更高版本中,打开音频然后选择导出,选择“Wave,AIFF和其他未压缩类型”作为格式,然后单击选项... - 然后为格式选择“其他...”,标题为“RAW”,有符号8位PCM为编码。 (抱歉,无法签名。)

从命令行中,尝试使用-c 1表示1个通道,-t raw表示无标题,-u表示无符号线性,-1表示每个样本1个字节。

然后你可以使用像“hexdump”这样的工具将文件的字节转储为数字并粘贴到你的代码中。

答案 1 :(得分:0)

如果sox没有它,则必须使用它来生成原始(无头)文件,并将原始文件转换为逗号分隔。

编辑:sox从网页上将“原始文本数据”作为其格式之一。您可以在第一遍中将声音文件转换为无符号8位线性样本,然后可能使用此选项输出所需的输出。

答案 2 :(得分:0)

对于.wav来说,这是一个非常简单的过程。您可以通过谷歌搜索轻松找到.wav规范。它包含一个标题,然后只是原始样本。您应首先读取标题,然后遍历所有样本。通常它们是16位样本,因此您需要将它们从-32768到32767范围归一化到0-255范围。我建议首先简单缩放。如果不成功,可以在样本中找到实际的最小值和最大值,并相应地调整您的比例。

答案 3 :(得分:0)

很多都取决于你的音频格式。例如,波形格式由未压缩的交错PCM数据组成。

即对于8位立体声文件,每个样本将按如下方式排列。

[左样品1] [右样品1] [左样品2] [右样品2] ... [左样品n] [右样品n]。

即每个8位立体声样本以2个字节存储。左声道1,右声道1。这是声音硬件最有可能需要的数据格式。

16或24位音频文件将以各种方式工作,但左右两个样本分别为2或3个字节。

显然,wave文件中包含了extyra信息。它遵循RIFF格式。您可以在www.wotsit.org等地方找到有关它和“块”波形文件的信息。

解压缩MP3更复杂。您最好抓住解压缩器并在MP3编码音频上运行它。 IT将从另一方面吐出如上所述的PCM数据。