A compositional library for musical composition.
If you want to see pointillism
in action and what it's capable of, run the
examples in the examples
folder.
Note: Some examples may be loud, dissonant, and/or jarring. Hearing discretion is advised.
The way in which pointillism
outputs audio is by writing sample by sample into
a 32-bit floating point .wav
file. Internal calculations use 64-bit floating
points.
For convenience, the Signal
trait is provided. Structs implementing this trait
generate sample data frame by frame, which can be advanced or retriggered.
Signals may be composed to create more complex signals, using for instance the
MapSgn
and MutSgn
structs. Moreover, you can implement the Signal
trait
for your own structs, giving you vast control over the samples you're producing.
Signals that generate audio on their own are called generators. Their names
are suffixed by Gen
. Signals that modify the output from another signal are
called effects.
You can think of pointillism as a compile-time modular synthesizer, where every new struct is its own module.
The following versions of pointillism
exist:
crates
.Once the basic structure of pointillism
stabilizes, the version will advance
to 0.3.0, and a changelog will be made.