任何人都知道 Jukeblocks.io 如何能够读取 Ableton ALS 文件内容以编写具有新安排的版本?
Anybody know how Jukeblocks.io was able to read an Ableton ALS file contents in order to write a version with new arrangement?
JukeBlocks.io 是一个令人难以置信的工具——我希望自己使用我自己的算法来完成它所做的事情,但对我自己来说有所不同。诀窍当然是能够进入 Ableton.als 文件并对其进行更改。它是否需要反编译,或者有什么方法可以查看内部并知道发生了什么?谢谢!
希望这些信息足以回答您的一般问题,即关于解析和理解 Ableton .als 格式的问题。
Jukeblocks.io 可能基于(它显然比 Mark 的工具做得更多)Mark Mossberg 为他的 python 代码库所做的工作 'dawtool' https://github.com/offlinemark/dawtool -- Mark 在 2020 年音频开发者大会上就此主题做了精彩的演讲,涵盖了 .als 和 .flp 文件的逆向工程方面。他的代码可能会启动您对此的实验!
在这里查看他的演示主要关注理解内部时间码,尤其是对于具有可变 BPM 和速度自动化的集合:
https://www.youtube.com/watch?v=AtLlPQHaxzg
Ableton .als 文件只是一个压缩的 .xml 文件,顺便说一下。
有趣的是,Bitwig 4 还能够在一定程度上将 .als 文件转换为 bitwig 格式。
如果您想开发可以re-write 或解码 ALS 文件的东西,请先帮自己一个忙。
首先从 Ableton 编写基本文件,其中包含 Midi、音频和 Return 音轨,当然还有主音轨。
然后把那些写好的文件重命名为gzip,解压整理一下里面的样子。你会发现经常提到的XML。
但是仅仅说它“只是”XML 是不够的,因为在某些方案中到处都有 pointee
s 和 ID
s,你必须弄清楚这个方案是如何工作的。自动化也没有像您从 Midi 规范中了解到的那样编写。 ID 和参数命名并不是直接按逻辑顺序排列的。
然后从 Ableton 内部更改,再次保存并比较更改的内容。这是分解哪些信息属于 XML 树的哪个部分的最简单方法。
就我所做的研究而言,没有完整的规格,所有 Github 资源都缺乏启动项目的基本信息。因此,再次将 XML 分支写入并复制到完整的树中很可能会导致文件损坏,这将迫使您的 Ableton 实例终止其自身进程或放弃您尝试打开的文件。
只需阅读 un-gzipped ALS 文件以及解析包含的 XML 树即可。
编写 ALS 文件是一项完全不同的任务。
我写了一个 ALS 编写器 class,它从 Elektron Machines 数据库构建了一个完整的 Ableton 集(v10 和 v11),包括使用过的笔记、示例、参数自动化以及 return 轨道根据数据制作外汇链。所以是的,这是可能的。
首先,我尝试使用Ableton的ALS-ExportKit (https://github.com/Ableton/ALSExportKit),我为其签署了许可协议,但它基本上是闭源的。就算你签了,也只有headers告诉你导出包不完整。 发现它不能 write/export 自动化后 我在 github 中打开了问题,回复很友好但毫无意义。基本上告诉他们可能会在未来的某个时间考虑在未来的版本中实现自动化。所以这为我指明了正确的方向,停止搜索现成的 API 并开发适合我的解决方案,但我必须自己发现它是如何工作的。
我的方法是慢慢地 de-constructing xml 格式,弄清楚 ID
方案,pointee
方案,然后写 gzip'ed XML当然。打开它们并一次又一次地进行加载测试并纠正错误或遗漏的东西,直到我做对为止。
我使用的最重要的工具是 File-Merge,您几乎可以在任何系统上找到它,因此您可以比较文件,我用它一段时间来找出不同的轨道 xml树并比较我最初保存的不同版本。还要找出 Ableton 9、10 和 11 ALS 格式的差异。您将不得不搜索 ID 和 Pointee 以查看它们如何工作和交互,为什么有些重复以及为什么有些只是增加它们在文件中的索引值。
请注意,ALS 文件被 gzip 压缩是有充分理由的,因为它们可能会变得非常大。因此,请考虑使用一些流机制来写入文件,否则您很可能会遇到内存问题并显着降低您自己的处理速度。幸运的是,我发现 gzip 是一种压缩机制,可以通过压缩数据块来即时编写,而无需 re-reading 整个数据集。
好吧,因为我签了合同,所以我不能分享用 C 编写的 class,但我可以鼓励值得考虑去争取它。
JukeBlocks.io 是一个令人难以置信的工具——我希望自己使用我自己的算法来完成它所做的事情,但对我自己来说有所不同。诀窍当然是能够进入 Ableton.als 文件并对其进行更改。它是否需要反编译,或者有什么方法可以查看内部并知道发生了什么?谢谢!
希望这些信息足以回答您的一般问题,即关于解析和理解 Ableton .als 格式的问题。
Jukeblocks.io 可能基于(它显然比 Mark 的工具做得更多)Mark Mossberg 为他的 python 代码库所做的工作 'dawtool' https://github.com/offlinemark/dawtool -- Mark 在 2020 年音频开发者大会上就此主题做了精彩的演讲,涵盖了 .als 和 .flp 文件的逆向工程方面。他的代码可能会启动您对此的实验!
在这里查看他的演示主要关注理解内部时间码,尤其是对于具有可变 BPM 和速度自动化的集合:
https://www.youtube.com/watch?v=AtLlPQHaxzg
Ableton .als 文件只是一个压缩的 .xml 文件,顺便说一下。
有趣的是,Bitwig 4 还能够在一定程度上将 .als 文件转换为 bitwig 格式。
如果您想开发可以re-write 或解码 ALS 文件的东西,请先帮自己一个忙。
首先从 Ableton 编写基本文件,其中包含 Midi、音频和 Return 音轨,当然还有主音轨。
然后把那些写好的文件重命名为gzip,解压整理一下里面的样子。你会发现经常提到的XML。
但是仅仅说它“只是”XML 是不够的,因为在某些方案中到处都有 pointee
s 和 ID
s,你必须弄清楚这个方案是如何工作的。自动化也没有像您从 Midi 规范中了解到的那样编写。 ID 和参数命名并不是直接按逻辑顺序排列的。
然后从 Ableton 内部更改,再次保存并比较更改的内容。这是分解哪些信息属于 XML 树的哪个部分的最简单方法。
就我所做的研究而言,没有完整的规格,所有 Github 资源都缺乏启动项目的基本信息。因此,再次将 XML 分支写入并复制到完整的树中很可能会导致文件损坏,这将迫使您的 Ableton 实例终止其自身进程或放弃您尝试打开的文件。
只需阅读 un-gzipped ALS 文件以及解析包含的 XML 树即可。
编写 ALS 文件是一项完全不同的任务。
我写了一个 ALS 编写器 class,它从 Elektron Machines 数据库构建了一个完整的 Ableton 集(v10 和 v11),包括使用过的笔记、示例、参数自动化以及 return 轨道根据数据制作外汇链。所以是的,这是可能的。
首先,我尝试使用Ableton的ALS-ExportKit (https://github.com/Ableton/ALSExportKit),我为其签署了许可协议,但它基本上是闭源的。就算你签了,也只有headers告诉你导出包不完整。 发现它不能 write/export 自动化后 我在 github 中打开了问题,回复很友好但毫无意义。基本上告诉他们可能会在未来的某个时间考虑在未来的版本中实现自动化。所以这为我指明了正确的方向,停止搜索现成的 API 并开发适合我的解决方案,但我必须自己发现它是如何工作的。
我的方法是慢慢地 de-constructing xml 格式,弄清楚 ID
方案,pointee
方案,然后写 gzip'ed XML当然。打开它们并一次又一次地进行加载测试并纠正错误或遗漏的东西,直到我做对为止。
我使用的最重要的工具是 File-Merge,您几乎可以在任何系统上找到它,因此您可以比较文件,我用它一段时间来找出不同的轨道 xml树并比较我最初保存的不同版本。还要找出 Ableton 9、10 和 11 ALS 格式的差异。您将不得不搜索 ID 和 Pointee 以查看它们如何工作和交互,为什么有些重复以及为什么有些只是增加它们在文件中的索引值。
请注意,ALS 文件被 gzip 压缩是有充分理由的,因为它们可能会变得非常大。因此,请考虑使用一些流机制来写入文件,否则您很可能会遇到内存问题并显着降低您自己的处理速度。幸运的是,我发现 gzip 是一种压缩机制,可以通过压缩数据块来即时编写,而无需 re-reading 整个数据集。
好吧,因为我签了合同,所以我不能分享用 C 编写的 class,但我可以鼓励值得考虑去争取它。