我有一个各种格式的旧音乐档案 - .mod,.s3m,.it 和 Commodore 64 .sid 文件。
是否存在一种单一的、得到良好支持的、可跟踪的音乐格式,具有所有这些功能的超集,我可以无损地将所有文件转换为这种格式?
我对支持多种标签的格式(a-la-ID3)特别感兴趣。
答案1
注意:我是 OpenMPT/libopenmpt 开发人员,从事处理模块格式的代码工作已有十多年。
这个问题的答案很简单,就是“不”。甚至 mr_lou 所建议的 IT 格式也不是上述任何格式的可行超集。没有一种格式可以完成所有其他格式所做的一切,特别是在您提到的格式中,.sid 是例外,因为它不是跟踪音乐格式(它包含在 C64 或模拟器上执行的程序代码)。就在您提到的格式中,每种格式都有其他格式不支持的独特命令:
- MOD 具有反转循环,这是此格式所独有的
- 以“规范”方式播放 S3M(即 ScreamTracker 3 播放它们的方式)在几个方面与 IT 不兼容,因为它以不同的方式处理效果内存。
- 大多数人会认为 XM 是 IT 的一个子集,但 IT 缺少 XM 的一些命令(例如 Key Off 或 Set Envelope Position)。
- 历史上,有一些格式试图实现您想要实现的目标(例如 MikMod 的内部格式或 BWSB 的 GDM),但它们实际上并不是所有格式的超集,更现实地说,它们只是模拟 MikMod 或 BWSB 内部运作的功能。
您可以继续列出任何两种模块格式的组合,并且您总会发现其中一种格式以不同的方式完成或不支持某些功能。每种格式和播放器都有其独特的特点。在一般情况下,在这些格式之间进行转换总是有损的。请不转换模块除非绝对必要,否则请将其转换为不同的格式。
关于元数据问题,最好将元数据与文件分开存储,因为大多数模块格式对元数据的支持较差,而且嵌入自定义元数据并不总是可行的。例如,可以使用 High Voltage SID Collection 附带的 C64 SID 音乐 STIL 数据库等数据库来解决此问题。
我认为解决您问题的可行方法不是发明另一种容器格式来包含所有已跟踪的音乐,而是拥有一个标准化的跟踪器音乐数据库和一个可以处理大量格式的播放器(例如通过结合 libopenmpt、UADE、reSID 和其他一些库)。有各种可以通过插件扩展的播放器(例如 XMPlay),它们在这方面做得很好。目前正在开发的还有 HippoPlayer 的现代版本,旨在能够播放几乎任何已跟踪的音乐格式,并最终提供丰富的元数据,可能通过外部数据库。您可以在此处查看此项目的进展:https://github.com/emoon/HippoPlayer
答案2
只是预感最好的格式是 VLC、FastTracker 和 Milkytracker 支持的“扩展模块”格式,所以这可能很好。
维基百科指出“XM 是许多芯片音乐的通用格式”。
我“认为”标签是受支持的,但我知道您可以从格式中获取每个样本和乐器,所以如果是我的话,我会研究一下。
答案3
如果您坚持要将所有文件转换为相同格式,我建议您使用 Impulse Tracker (IT) 文件,而不是 eXtended Module (XM) 文件。在所有 (oldskool) 模块格式中,IT 是提供最多功能的格式。因此,如果您将 IT 转换为 XM,您几乎肯定会丢失一些数据。要进行转换,开放MPT值得一看。它可以打开多种不同格式,并允许您以其他格式保存。
话虽如此,但这个想法很愚蠢。不同的文件格式的出现是有原因的。它们彼此之间有很大的不同。考虑到转换所有文件的工作量,你花在为现有的不同文件开发数据库系统应用程序上的时间要少得多。很有可能你的大多数文件已经在线了模组存档无论如何,它具有一个在线播放器。
答案4
我建议研究 Renoise,它是继 fast-tracker 和 XM(可能更适合您)之后的下一个重要步骤(恕我直言)。Renoise 是 mod/xm 的演变(就我使用而言),但我发现它也支持加载 S3M,因此绝对值得一试。