The goal is for this to be a declarative, text-based synthesizer/audio workstation. At the moment, it is very much work in progress. See the roadmap for a rough outline of what is planned for the near future.
However, there is already a working prototype that includes
- a simple textual format for writing melodies
- a small embedded DSL for constructing simple songs
- a synthesizer with multiple oscillators, several waveforms, and simple filters
- a convenient function providing the main function for an executable generating the song (see
examples/demo.rs
)
Eventually, the idea is that song descriptions get a serialization format, making it possible to generate them from other programming languages as well.
The project is written in rust and all tooling is pulled in via nix.
With Nix
There is a shell.nix
file declaring all necessary dependencies.
Simply run nix-shell
in the repository root to drop into a shell where all dependencies are avaiable.
Then, the normal cargo
workflow applies.
Without Nix
Ensure that you have a working install of
rustc
version 1.43 (although other versions might also work) andcargo
(e.g. using rustup)sox
Currently, one example song is included and expanded when new features are added to the core. It is written using the Rust EDSL:
# Play the included example melody
cargo run --example demo
Sound is generated by spawning a sox subprocess and piping the audio data to it. If everything worked, it should produce something similar to this audio snippet.
The project is free software licensed under the GNU Affero General Public License Version 3.