All Projects → ooesili → sorceress

ooesili / sorceress

Licence: GPL-3.0 License
A Rust environment for sound synthesis and algorithmic composition.

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to sorceress

Fsynth
Web-based and pixels-based collaborative synthesizer
Stars: ✭ 146 (+128.13%)
Mutual labels:  synthesizer, supercollider
Dx7 Supercollider
My accurate Yamaha DX-7 clone. Programmed in Supercollider.
Stars: ✭ 395 (+517.19%)
Mutual labels:  synthesizer, supercollider
Supriya
A Python API for SuperCollider
Stars: ✭ 167 (+160.94%)
Mutual labels:  synthesizer, supercollider
Synthdefs
Synthdef Pool
Stars: ✭ 54 (-15.62%)
Mutual labels:  synthesizer, supercollider
Main-Supercollider-Files
my supercollider codes, version history is at the branches
Stars: ✭ 21 (-67.19%)
Mutual labels:  synthesizer, supercollider
OpenWare
Firmware for OWL devices
Stars: ✭ 23 (-64.06%)
Mutual labels:  synthesizer
tracker-mode
a music tracker/sequencer for emacs
Stars: ✭ 25 (-60.94%)
Mutual labels:  supercollider
faustgen-supercollider
Livecode Faust in SuperCollider using an embedded Faust compiler.
Stars: ✭ 25 (-60.94%)
Mutual labels:  supercollider
AriaModules
Aria Salvatrice's Signature Series - Cool and Nice virtual synthesizer modules
Stars: ✭ 51 (-20.31%)
Mutual labels:  synthesizer
eurorack-cpu
A CPU implemented in a modular synthesizer
Stars: ✭ 253 (+295.31%)
Mutual labels:  synthesizer
prototracker-modular
A modular synth tracker
Stars: ✭ 44 (-31.25%)
Mutual labels:  synthesizer
awesome-open-source-synths
Awesome Open Source Synths List!
Stars: ✭ 64 (+0%)
Mutual labels:  synthesizer
ahx-web-player
AHX player web interface
Stars: ✭ 24 (-62.5%)
Mutual labels:  synthesizer
udk16-Immersive Technologies
UdK audiovisual programming course resources 2016-2017_WS
Stars: ✭ 15 (-76.56%)
Mutual labels:  supercollider
rev2
dave smith instruments prophet rev2 presets book
Stars: ✭ 21 (-67.19%)
Mutual labels:  supercollider
geonkick
A free software percussion synthesizer for GNU/Linux
Stars: ✭ 238 (+271.88%)
Mutual labels:  synthesizer
Arduino Pitch-Detector
Pitch Detection on Arduino using Autocorrelation
Stars: ✭ 21 (-67.19%)
Mutual labels:  synthesizer
ffizer
ffizer is a files and folders initializer / generator. Create any kind (or part) of project from template.
Stars: ✭ 57 (-10.94%)
Mutual labels:  crates
MicroDexed
Dexed port for Teensy (3.5/3.6 with audio shield)
Stars: ✭ 20 (-68.75%)
Mutual labels:  synthesizer
tsunami
A simple but powerful audio editor
Stars: ✭ 41 (-35.94%)
Mutual labels:  synthesizer

Sorceress

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

A Rust environment for sound synthesis and algorithmic composition, powered by SuperCollider.

Sorceress

Overview

Sorceress is a Rust crate that provides a creative coding environment for:

  • Sound synthesis - build audio synthesizers by connecting unit generators together into signal graphs. SuperCollider provides hundreds of unit generators to choose from including things like wave generators, noise generators, filters, envelopes, compressors, resonators, physical simulations, Fourier transforms, and much more.

  • Algorithmic composition - write code to create music, anywhere from using code as a musical notation system to full-fledged generative composition where large scale structures of a music piece are determined by computational algorithms.

Why SuperCollider?

SuperCollider is a powerful and mature platform for audio synthesis with decades of development effort behind it. SuperCollider's Client and Server architecture lets us to leverage all of the features offered by SuperCollider's audio synthesis server, from Rust:

  • A real-time audio synthesis engine
  • A massive library of unit generators
  • Audio I/O with your operation system and sound card

Why Rust?

There are projects in many other programming languages for interacting with SuperCollider including Overtone, Tidal, and Sonic Pi. I really like programming in Rust and I could not find any such project using Rust so I started building Sorceress.

Example

This example plays a sine wave at 220 Hz for 1 second:

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(())
}

Setup

With cargo-edit installed run:

$ cargo add sorceress

You must install SuperCollider separately from the sorceress crate.

Note: Sorceress does not run SuperCollider for you at this time, so you must boot a server yourself. The recommended way to do this by starting the server in scide, SuperCollider's built in IDE.

Documentation

The primary source of documentation for Sorceress is the crate documentation on docs.rs.

Contributing

See CONTRIBUTING for details on creating issues or making pull requests.

License

Sorceress is free software available under Version 3 the GNU General Public License. See COPYING for details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].