Rationale behind sndc
sndc
aims at being:
- Text-based. No (mandatory) fancy GUI, a hand written text file should be able to use all of its features.
- Tiny, in terms of codebase and memory footprint.
- Fast.
- Compatible with the UNIX philosophy, in particular by not handling audio formats and audio replay. It takes float buffers in and spits float buffers out.
- Modular.
sndc
files are designed to be turned into modules that can be recursively imported into other files. - Node based.
sndc
files are composed of nodes whose outputs are the inputs of other nodes. - Extensible.
sndc
’s code is meant to be tweaked and built-in modules easily written in C. - Replicable.
sndc
is non real time which means that it is oblivious to the performance of the machine it is being run on. The samesndc
file should produce the same audio output bit for bit on any machine. For instance, RNGs are seeded with a hardcoded constant by default to always output the same sequence.
sndc
is for you if:
- You really don’t want to bother with GUIs and want a text-based audio synthesis system you can integrate to a Git repo and incrementally improve upon like source code.
- You don’t mind spending some time switching between your text editor and CLI to tweak parameters.
- You like node-oriented workflows.