ONE RUST CORE.
THREE SURFACES.
The same solver runs in the desktop app, the browser, and hosts CLAP plugins inside itself. No AI. No network. Just the code in /src/harmony.
2.7MS TO KNOW WHAT YOU PLAYED
128-sample buffer at 48kHz. Autocorrelation with the McLeod variant picks the period; single-cycle refinement locks the pitch.
THE RULES, AS NUMBERS
Contrapunk's solver is a cartesian-product enumerator over legal voices, pruned by hard rules, scored by a weighted sum. Swap presets to change the aesthetic.
PALESTRINA
16th-century strict species
| Hard reject parallel 5ths | ✓ |
| Hard reject parallel 8ves | ✓ |
| Max leap (semitones) | 5 (P4) |
| Stepwise bonus | +60 |
| Common-tone bonus | +45 |
| Leap penalty / semitone | −15 |
| Voice-cross penalty | −150 |
| Spread preference | −4 (tight) |
| Contrary motion bonus | +40 |
WHERE EACH VOICE LIVES
Every candidate note is clamped to its voice's register before scoring. Centering bias picks the opening chord.
HOST YOUR OWN INSTRUMENT
The app links clack-host, a safe Rust wrapper over the CLAP ABI. Load a .clap synth; Contrapunk routes the generated MIDI straight into it and mixes the audio out.
THREE WAYS IN.
ALL FREE.
Browser at app.contrapunk.com. macOS DMG from GitHub Releases. Build from source with cargo tauri dev.