2 个不稳定版本
0.2.0 | 2021年3月22日 |
---|---|
0.1.0 | 2021年2月28日 |
#371 in 音频
240KB
4K SLoC
Sorceress
Sorceress 是一个由 SuperCollider 驱动的 Rust 环境,用于声音合成和算法式创作。
概述
Sorceress 是一个 Rust crate,它为以下内容提供了创意编码环境:
-
声音合成 - 通过将 单元发生器 连接到信号图中来构建音频合成器。SuperCollider 提供了 数百个单元发生器 以供选择,包括波形发生器、噪声发生器、滤波器、包络、压缩器、谐振器、物理模拟、傅里叶变换等。
-
算法式创作 - 编写代码来创建音乐,从将代码用作音乐记谱系统到全功能的生成式创作,其中音乐作品的宏大结构由计算算法决定。
为什么选择 SuperCollider?
SuperCollider 是一个功能强大且成熟的音频合成平台,背后有数十年的开发努力。SuperCollider 的 客户端和服务器 架构使我们能够利用 SuperCollider 音频合成服务器提供的所有功能,从 Rust
- 实时音频合成引擎
- 庞大的单元发生器库
- 与操作系统和声卡的音频输入/输出
为什么选择 Rust?
除了 Rust 以外,还有许多其他编程语言的项目可以与 SuperCollider 交互,包括 Overtone、Tidal 和 Sonic Pi。我非常喜欢用 Rust 编程,但我找不到任何使用 Rust 的此类项目,因此我开始构建 Sorceress。
示例
此示例播放 220 Hz 的正弦波 1 秒
use sorceress::{
server::{self, Result, Server},
synthdef::{encoder::encode_synth_defs, SynthDef},
ugen,
};
use std::{thread::sleep, time::Duration};
fn main() -> Result<()> {
let server = Server::connect("127.0.0.1:57110")?;
let sine_wave = SynthDef::new("sine_wave", |_| {
ugen::Out::ar().channels(ugen::Pan2::ar().input(ugen::SinOsc::ar().freq(220)))
});
let encoded_synthdef = encode_synth_defs(vec![sine_wave]);
server.send_sync(server::SynthDefRecv::new(&encoded_synthdef))?;
server.send(server::SynthNew::new("sine_wave", 1))?;
sleep(Duration::from_secs(1));
server.reset()?;
Ok(())
}
设置
安装 cargo-edit 后,运行以下命令:
$ cargo add sorceress
您必须从 sorceress
crate 独立安装 SuperCollider。
注意: Sorceress 目前不会为您运行 SuperCollider,因此您必须自己启动服务器。推荐的方式是通过在 SuperCollider 的内置 IDE scide 中启动服务器来执行此操作。
文档
“女巫”的主要文档来源是 在docs.rs上的crate文档。
贡献
有关创建问题或提交拉取请求的详细信息,请参阅 CONTRIBUTING。
许可
Sorceress 是免费软件,可在 GNU 通用公共许可证第 3 版下使用。有关详细信息,请参阅 COPYING。
依赖项
~0.8–1.7MB
~37K SLoC