Skip to content

Latest commit

 

History

History
55 lines (38 loc) · 2.21 KB

README.md

File metadata and controls

55 lines (38 loc) · 2.21 KB

syn.txt

Build Status

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.

Building

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) and cargo (e.g. using rustup)
  • sox

Demo

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.

License

The project is free software licensed under the GNU Affero General Public License Version 3.