我想为.sid文件(C64芯片音乐)编写一个解析器,以将一些模式提取到音符中。我搜索格式并找到这个:http://cpansearch.perl.org/src/LALA/Audio-SID-3.11/SID_file_format.txt
我可以像该文档一样阅读标题,但我不明白如何提取单个注释并输出它们。
我搜索现成的转换器并找到了这些:
- http://www.vgmpf.com/Wiki/index.php?title=SID_to_MIDI_(Windows)和 - 很旧,不起作用
- ... - 非常非常旧,输出空文件
- ... - 只是一个论坛讨论
那是我找到了更多,但 StackOverflow 说我不能发布超过 2 个链接。
请帮忙。对不起,我的英语不好。感谢您的考虑!
除了包含各种元数据的标头外,.sid文件的其余部分由代码(播放器例程)和数据(乐器和音符数据)组成。
音符数据的格式取决于播放器代码,并且存在无数不同的播放器,其中任何一个都可能有多个版本,代码和数据格式各不相同。甚至有许多曲调具有专门为该曲调开发的代码和数据格式。
这意味着确定注释数据格式的唯一方法是研究播放器代码(在机器代码监视器或单独的反汇编工具中),以了解它的作用以及数据的组织方式,即使您已经熟悉 6510 机器代码和 SID 芯片,这也是一项艰巨的任务。
没看错的话,如果你只对音符(即音高)感兴趣,你应该能够通过查看通道 1 写入 $d 400/$d 401 的内容来过得去。
查看 https://github.com/M3wP/XSID
您将在分发目录中找到二进制文件:https://github.com/M3wP/XSID/tree/master/Distribution
这个有效,我试过了。注释信息可以在输出 midi 文件中找到。检查代码以详细了解其工作原理。
您将需要Delphi(当前使用XE8)和Microsoft Visual Studio来编译适用于 Windows 的所有项目二进制文件。 Visual Studio 僅是必需的对于 DLL。