sndkit is a sonic toolkit for computer music composition.

It aims to bring a collection of useful audio DSP algorithms together in one ecosystem, and document how they work.

Each algorithm in the sndkit collection is written using literate programming, a paradigm that aims to present computer structure using natural language. This means that each algorithm has both an implementation (in ANSI C) as well as a brief explanation for how the implementation works.

Sndkit provides a core C api that allows the algorithms to be connected together to created patches. Patches can be conveniently built up using the LIL scripting language, included with the sndkit distribution.

Code and Installation

The source code for this wiki can be found on SourceHut and github.

A standard POSIX C compilation environment is required (clang/gcc, Make, etc). There are no external third party libraries. Everything required is included inside the codebase, including a version of the tangler program required to convert literate programs to C code.

To compile, run:


This will produce an executable called sndkit, which is really a LIL interpreter fortified with sndkit functions.

You can test it with:

./sndkit examples/synthbass.lil

Which should produce a WAV file in the current directory called synthbass.wav.

sndkit can be installed with:

sudo make install

Realtime Support?

It is possible to run sndkit in realtime. However...

To keep things reasonably portable and manageable, realtime audio support is left as an exercise to the reader ;)

The only thing sndkit supports is offline rendering WAV files.

Available DSP Algorithms

The HTMLized version of the algorithms can be browsed here.


The text in this wiki is licensed under the Creative Commons Zero license, otherwise known as "CC0".

All tangled output is dual-licensed under MIT or the Unlicense.

Non-tangled code (such as those found in the extras folder) may have their own permissive license.