0

JukeBlocks.io 是一个令人难以置信的工具——我希望自己的算法能够为我自己做一些不同的事情。诀窍当然是能够进入 Ableton.als 文件并对其进行修改。是否需要反编译,或者有什么方法可以查看内部并知道发生了什么?谢谢!

4

2 回答 2

1

如果您想开发可以重写或解码 ALS 文件的东西,请先帮自己一个忙。

首先从 Ableton 编写包含 Midi、Audio 和 Return Tracks 以及 Master Track 的基本文件。

然后把那些写好的文件重命名为gzip,解压整理一下里面的样子。您会发现经常提到的 XML。

但是仅仅说它“只是”XML 是不够的,因为在某些方案中到处都有pointees 和IDs,您必须弄清楚这些方案是如何工作的。正如您从 Midi 规范中所知道的那样,自动化也不是编写的。ID 和参数命名只是不直接按逻辑顺序。然后从 Ableton 内部更改,再次保存并比较更改的内容。它是分解哪些信息属于 XML 树的哪个部分的最简单方法。

到目前为止,我的研究还没有完整的规范,所有的 Github 资源都缺乏启动项目的基本信息。因此,再次将 XML 分支写入和复制到完整的树中很可能会以损坏的文件告终,这将迫使您的 Ableton 实例终止自己的进程或放弃您尝试打开的文件。

只需读取未压缩的 ALS 文件以及解析包含的 XML 树即可。

编写 ALS 文件是一项完全不同的任务。

我编写了一个 ALS 编写器类,它从 Elektron Machines 数据库中构建了一个完整的 Ableton Set(v10 和 v11),包括使用过的注释、样本、参数自动化以及根据数据使用现成的 fx 链的返回轨道。所以是的,这是可能的。

首先,我尝试使用我签署了许可协议的 Ableton 的 ALS-ExportKit ( https://github.com/Ableton/ALSExportKit ),但它基本上是闭源的。即使您签署了它,也只有标题告诉您导出工具包不完整。在发现它无法编写/导出自动化后,我在 github 中打开了问题,回复很友好但毫无意义。基本上告诉他们可能会在未来的版本中考虑自动化。所以这为我指明了正确的方向,停止搜索现成的 API 并开发适合我的解决方案,但我必须自己发现它是如何工作的。

我这样做的方式是慢慢地解构 xml 格式,弄清楚ID方案、pointee方案,然后当然是编写 gzip 的 XML。打开它们并一次又一次地进行加载测试并纠正错误或丢失的东西,直到我做对为止。

我使用的最重要的工具是 File-Merge,您几乎可以在任何系统上找到它,因此您可以比较文件,我使用它一段时间来找出不同的轨道 xml 树并比较我最初保存的不同版本。还要弄清楚 Ableton 9、10 和 11 ALS 格式的差异。您将不得不搜索 ID 和 Pointee 以了解它们如何工作和交互,为什么有些重复以及为什么有些只是增加它们在文件中的索引值。

请注意,ALS 文件被 gzip 压缩是有充分理由的,因为它们可能会变得非常大。因此,请考虑使用一些流机制来写入文件,否则您很可能会遇到内存问题并显着减慢您自己的处理速度。幸运的是,我发现 gzip 是一种压缩机制,可以通过压缩数据块即时写入,而无需重新读取整个数据集。

好吧,当我签订合同时,我不能分享用 C 编写的课程,但我可以鼓励它值得考虑只是去争取它。

于 2021-08-04T21:16:26.397 回答
0

希望这些信息足以回答您的一般问题,即关于解析和理解 Ableton .als 格式的信息。

Jukeblocks.io 可能基于 Mark Mossberg 为他的 python 代码库 'dawtool' https://github.com/offlinemark/dawtool所做的工作(它显然比 Mark 的工具做得更多) ——Mark 对此做了很好的介绍2020 年音频开发者大会上的主题,涵盖 .als 和 .flp 文件的逆向工程方面。他的代码可能会启动你的实验!

请参阅他的演示文稿,主要是了解内部时间码,尤其是对于具有可变 BPM 和速度自动化的集合:

https://www.youtube.com/watch?v=AtLlPQHaxzg

顺便说一下,Ableton .als 文件只是一个压缩的 .xml 文件。

有趣的是,Bitwig 4 还能够在一定程度上将 .als 文件转换为 bitwig 格式。

于 2021-08-02T18:50:22.717 回答