1作者: lukeweston1234大约 1 个月前原帖
我一直在构建 Legato,这是一个用于 Rust 的实时音频图形框架。这个想法是介于 PureData/MaxMSP(基于图形的可视化路由)和 JUCE 之间。 它的核心是一个最小化的运行时和图形定义的领域特定语言(DSL)。没有循环、分支或评估。它纯粹用于将节点连接在一起。如果你想要真正的逻辑,你可以在 Rust 中编写一个自定义节点,注册它,然后将其放入图形中。 通过这种方式,你可以轻松地用 Rust 扩展框架,而不必学习 SuperCollider 或 CSound。 除了在 Rust 中添加节点外,你还可以组合节点的宏/模板/补丁(我仍不确定哪个名称最好),然后像常规节点一样调用它们: ```plaintext patch voice(attack = 200.0) { in freq gate audio { sine: mod, sine: carrier, adsr { attack: $attack, ... } } freq >> mod.freq mod >> carrier.freq gate >> adsr.gate carrier >> adsr[1] { adsr } } ``` 补丁内联到同一平面分配中,因此生成 voice * 5 以实现多音色在内存布局上并不太困难。 在链接的代码库中有更好的示例。它们也可以“组合”,因此你可以在补丁 b 中使用补丁 a,等等。 目前的主要目标是硬件——这个想法是你可以构建一个 VST、软件合成器或节奏盒,并使用我正在开发的 NixOS 镜像在嵌入式 Linux(如 Raspberry Pi 等)上部署它(尽管这不是必需的)。 目前我正在使用 CPAL 来处理跨平台音频 API。 我正在开发几个我将开源的节奏盒,可能会在追踪器领域发布。 许可证是 AGPLv3,并附带一个额外的权限文件,免除大多数创意项目(VST、合成器、节奏盒)在没有 DAW/AI 功能的情况下的源代码披露。 仍然处于早期阶段(还没有 0.1.0),但 DSL 解析器、图形执行器、MIDI 工具和一些节点已经在工作,对我来说,我已经发现它非常高效。 我在寻找反馈、贡献者以及希望尝试该项目的人。 我可能会在接下来的几周内在各种平台上发布一些视频演示,因为它已经到了一个可以非常有趣地进行表演的阶段。 代码库: [https://github.com/legato-dsp/legato](https://github.com/legato-dsp/legato) 文档: [https://legato.gg](https://legato.gg)