题
今天我有一个有趣的问题。
我需要为一些小宠物的音频文件转换为8位的样本强>(0-255值)的列表。我写的MC6800芯片组,将需要这些声音时播放的汇编程序。我计划包括与该程序将循环通过当一个函数被调用的8位采样的阵列。
有谁知道一种音频文件(WAV / MP3)转换成逗号列表分隔8位文本样本值?此相对的方法,或者什么?
非常感谢你提前!的
解决方案
可以使用命令行“袜”工具或Audacity的音频编辑器将文件转换成原始的,无符号的8位单声道的音频文件。
在Audacity的1.3或更高版本,然后打开音频选择导出,选择“波浪,AIFF,和其他非压缩类型”的格式,然后单击选项... - 然后选择“其他...”的格式, “RAW”为标题,和符号8位PCM作为编码。 (对不起,无符号不可用。)
从命令行中,尝试用-c 1 Sox为1个通道,-t原料为无标头,-u为无符号的线性,和-1每个样品1个字节。
然后你可以使用像“hexdump都”的工具转储出来的文件为数字的字节并将其粘贴到您的代码。
其他提示
如果 SOX 没有它,你将不得不使用它来生成原始(无头)文件和原始文件转换为逗号分隔自己。
编辑:SOX具有“原始文本数据”作为其格式中的一种,从网页。你可以把它转换成声音文件以无符号8位线性样本第一遍,然后可能会得到正是你想要使用此选项为输出的输出。
有关的.wav这是一个非常简单的过程。你可以用谷歌搜索很容易地找到.WAV规范。它包括一个头然后简单原始样本。你应该通过所有样本读取头第一,然后循环。通常他们是16个样本,所以你要从范围-32768归他们32767到您的0-255范围。我起初认为简单的缩放。如果这不是成功的,也许找到实际的最小和最大的样本当中,并相应地调整你的规模。
好了很多取决于你的音频格式。波格式,例如,由未压缩隔行PCM数据。
即,对于一个8位的立体声文件中的每个样品将被安排如下:
[左样品1] [右样品1] [左样品2] [右样品2] ... [左采样n] [右样本n]。
即,每个8位的立体声样本被存储在2个字节。 1,用于右侧的左声道和1。这是数据格式的声音硬件很可能要求。
一个16比特或24比特的音频文件将在每个方式工作,但在左右样品将每个,分别为2或3个字节。
显然,一个波形文件具有在它extyra信息的负载。它遵循RIFF格式。你可以在上面找到信息和“块”波形文件使用等场所www.wotsit.org。
要解压缩的MP3更为复杂。你最好身上得到一个解压缩的保持和对MP3编码的音频运行它。它将从另一侧吐出PCM数据如上述。