Released18 Sep 2026Commit1af5062bLine0.3.x
v0.3.2
Add a four-operator FM voice and the chorus, crush and compressor nodes
Notes
This release gives motif the primitives for a fat, FM-heavy tracker sound: a real multi-operator FM voice instead of the two-operator fosc, and the three effects a demoscene mix is made of. Everything is plain C99, builds for wasm32-wasi as well as native, and renders the same samples on both.
Changes
make-fm4/fm4-computein(sigil dsp osc): four sine operators, an eight-entry DX/OPL-style algorithm table (stack, two-into-one, branch, three-into-one, pairs, stack-plus-one, one-into-three, additive), per-operator ratio, level and ADSR, feedback on operator 4, a modulation index that is a per-sample argument, and a velocity-to-index curve. With index 0 every carrier is a pure sine, so afosc-style patch is a special case.make-chorus/chorus-computein(sigil dsp fx): two LFO-modulated taps on one delay line, with rate, depth and mix as per-sample arguments.make-crush/crush-compute: tanh drive, bit-depth quantisation and sample-and-hold rate reduction in one node; drive 0, 16 bits and rate 1 pass the signal through untouched.make-comp/comp-compute: a feed-forward peak compressor with one-pole attack and release; threshold and ratio are per-sample arguments, attack, release and makeup are set at creation. It is mono; a host that wants linked stereo runs one instance on a shared detector or waits for a stereo variant.- The new declarations carry specs and docstrings, so
sigil exportsand the MCP tools show their signatures. src/cis now an exported include directory, so a consumer that links the static library can#include "fm4.h","fx4.h"or"ks.h"instead of mirroring the structs.
Upgrade notes
No existing binding changed. Consumers that mirror sp_ks in their own C can switch to #include "ks.h" now that the header is on the include path.
Commit
The commit this tag names.
Releases