我试图找出 Roland TR-8S 鼓机用于导入/导出架子鼓的文件格式。我的目标是替换套件中的样本 (PCM) 数据。它是一种专有的二进制格式,文件的扩展名为.t8k
. 这是我到目前为止想出来的:
格式包括与一个四个字符魔码启动每个(多段的NAME
,TONE
,WAVE
,SMPL
等等)。我SMPL
首先关注该部分。下面是一个例子:
00000868 53 4d 50 4c 00 00 02 00 cd cd e8 7e 3c db dc dd |SMPL.......~<...|
00000878 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00020878 53 4d 50 4c 00 00 02 00 cd cd e8 7e 3c db dc dd |SMPL.......~<...|
在 4 字节幻码之后,有一个 32 位值 (0x20000),表示从 0x878 开始的 PCM 数据的长度。在此示例中,PCM 数据全为零。如果原始样本数据短于 0x20000,它将用零填充。
接下来的四个字节 ( cd cd e8 7e
) 是整个 PCM 数据的 CRC32(示例中为 0x20000 零)。
CRC32 ( 3c db dc dd
)之后的四个字节是未知的。每当 PCM 数据的整个零填充块发生变化时,它们就会发生变化。与 CRC32 一样,如果仅零填充字节数发生变化,它们不会发生变化,并且它们似乎不受SMPL
块外因素的影响。如果这些字节的值不正确,则将鼓组导入鼓机将失败并显示一般错误消息。
我尝试过CRC RevEng,但没有找到算法。此外,未知字节似乎不太可能是额外的 CRC。
这四个未知字节的用途可能是什么?有什么方法可以帮我找出来吗?