6个版本
0.0.6 | 2024年3月31日 |
---|---|
0.0.5 | 2024年3月28日 |
0.0.1 | 2024年2月26日 |
#180 在 音频
每月301次下载
30KB
200 行
opensound
英语 | 简体中文
这是OpenSound项目的单一代码库。
原作者:@czy-29
最新版本:v0.0.6
是什么
OpenSound是一个(目前处于WIP和早期开发阶段)用Rust编写的开源一站式多级声音系统抽象层,适合作为专业音频应用(例如DAW)或其他声音相关应用的坚实基础。
1.0将是我们的MVP版本,它将包括
- 核心Rust API
- Web API服务器
- 捆绑的Web GUI游乐场
Web GUI游乐场主要用于探索、测试和实时编码(它的形式将与JUCE的DemoRunner和AudioPluginHost的组合以及该项目的一些独特功能相似),当然,您也可以用它来进行音乐编排/制作,只是如果您仅使用游乐场前端(例如,这个游乐场可能没有完整的钢琴卷),那么工作流程可能会相当繁琐。
但到目前为止,我们目前正专注于0.1版本,这是一个PoC版本。PoC版本与MVP版本的主要区别在于,在PoC版本中,将没有Web GUI游乐场。相反,将有一个用于测试和实时编码演示的命令行“REPL脚本控制台”。
在未来(MVP之后),我们的路线图将是
- 封装C API并为各种语言创建绑定(如C++/Python/C#...)
- 移动支持(1.0将仅支持桌面平台)
- WASM支持
- OpenSound本地游乐场(使用Flutter和opensound的C API)
- 游戏音频功能与游戏引擎(如Unity/Unreal/Godot)集成
安装
您可以
cargo install opensound
如果您只是想尝试这个项目,或者想直接使用预构建的Web API服务器。
或者您可以选择
cargo add opensound
如果您更愿意使用底层的Rust API。
为什么
- 正如您所看到的,在C++生态系统中,有一个一站式音频开发框架,例如JUCE,以及一个DAW音频引擎,例如tracktion_engine,但它们都存在各种缺陷(至少我使用它们时的体验在很多地方都很糟糕),而且它们都是C++(🤮)。但在Rust生态系统中,音频crates的分布高度碎片化,缺乏统一的解决方案,许多crates缺乏良好的维护,所以我计划自己写一个。您可以将这个项目视为JUCE + tracktion_engine(RIIR)的版本(但并不完全相同,因为这个项目的API将与它们非常不同,将更加优雅。同时,这个项目的API将不包含GUI模块,迫使您使用前端和后端解耦和严格隔离的更现代的架构)。
- 我正在开发自己的DAW(但DAW本身将是一个商业闭源项目)。我知道在2024年从头开始开发新的DAW听起来像是个笑话,所以我计划毫无保留地将音频后端(即本项目)完全开源,引入社区力量,共同努力开源和创建。同时,闭源的DAW前端可以保留商业空间,使这个项目能够获得资金以实现可持续发展。因此,总体来说,这个项目的完整形式实际上是一个"OpenCore"项目。这个项目是开源的"核心",而DAW(暂命名为OpenSound Studio)是闭源部分。
- 为了最大限度地提高这个项目的采用率,我们将在最早阶段包装一个Web API服务器,允许任何不使用Rust的开发者在使用C API之前就使用自己的语言调用这个项目——只要您的语言可以发送HTTP/WebSocket请求。这也形成了一个前端/后端"进程隔离"架构,使任何人都可以使用任何框架开发自己的前端,便于开发自定义前端。
- 我自己也是一名半专业音乐家。在安排自己的音乐的过程中,我发现了很多我希望拥有的功能,但在当前的DAW中都没有。这也是我最终决定写自己的DAW的原因。许多功能将在这个开源核心上实现,这意味着这个项目将具有许多创新音频功能。所以请保持关注!
许可证
本项目的许可证为以下之一:
- Apache License, Version 2.0, (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您选择。
贡献
GitLab 是我们的单源事实,而Github版本是只读镜像,因此请勿在Github版本上发起任何pull请求。
我们欢迎在我们的GitLab版本上提出合并请求!
除非您明确说明,否则您提交给 opensound 的任何有意包含的贡献,如 Apache-2.0 许可证中定义,应双授权如上,无需附加条款或条件。
依赖项
~3–9.5MB
~81K SLoC