#music #creative #creative-coding #bindings #fft #supercollider

sorceress

一个使用 SuperCollider 制作音乐和声音的 Rust 环境

2 个不稳定版本

0.2.0 2021年3月22日
0.1.0 2021年2月28日

#371 in 音频

GPL-3.0-or-later

240KB
4K SLoC

Sorceress

built with nix Build Status Crates.io docs.rs docs Gitter

Sorceress 是一个由 SuperCollider 驱动的 Rust 环境,用于声音合成和算法式创作。

Sorceress

概述

Sorceress 是一个 Rust crate,它为以下内容提供了创意编码环境:

  • 声音合成 - 通过将 单元发生器 连接到信号图中来构建音频合成器。SuperCollider 提供了 数百个单元发生器 以供选择,包括波形发生器、噪声发生器、滤波器、包络、压缩器、谐振器、物理模拟、傅里叶变换等。

  • 算法式创作 - 编写代码来创建音乐,从将代码用作音乐记谱系统到全功能的生成式创作,其中音乐作品的宏大结构由计算算法决定。

为什么选择 SuperCollider?

SuperCollider 是一个功能强大且成熟的音频合成平台,背后有数十年的开发努力。SuperCollider 的 客户端和服务器 架构使我们能够利用 SuperCollider 音频合成服务器提供的所有功能,从 Rust

  • 实时音频合成引擎
  • 庞大的单元发生器库
  • 与操作系统和声卡的音频输入/输出

为什么选择 Rust?

除了 Rust 以外,还有许多其他编程语言的项目可以与 SuperCollider 交互,包括 OvertoneTidalSonic 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