Koji Kondo
Mario, Zelda
let harmony = Engine.new(Palestrina); fn detect_pitch(buf) -> Note
const MAX_VOICES: usize = 4;
voice_leading.reject_parallels() struct GuitarInput { onset }
engine.harmonize(note, scale) fn detect_pitch( buf: &[f32] ) -> Option<Note>
let voices =
counterpoint::
generate(line, mode); if interval == Fifth
&& motion == Parallel
{ reject() } #[inline(always)] fn onset( frame: &Frame ) -> bool
block_size: 128 sample_rate: 48_000 latency_ms: 7.2
// Palestrina // counterpoint // rules.rs
9 weeks. 9 video-game composers. 9 new Contrapunk features.
Improvise live with real-time counterpoint. One take. No edits. 60 seconds. Live finale every Sunday on the Contrapunk Discord stage.
Each week ships a new Contrapunk feature timed to enable the composer's style. Improvise. Submit. Vote. Sunday finale on Discord.
Mario, Zelda
Final Fantasy
Hyper Light Drifter, Fez
Silent Hill
Chrono Trigger, Xenogears
Undertale, Deltarune
Kingdom Hearts, Street Fighter II
DOOM 2016/Eternal
Celeste, Minecraft
That's the whole game.
Open Contrapunk in the browser. Pick a mode (Bach Chorale, Strict Counterpoint, Free, etc.) and a scale that fits the week's composer. Use the recommended pairing on each week's card above.
Plug in a guitar, MIDI controller, or play with the virtual keyboard. Hit record. Improvise for 60 seconds or less. No edits, no overdubs, no comping. Imperfect is the point — improv lives in what happens once.
Drop your take in the Discord or on the week's itch.io page. Sunday 7pm PT, top submissions improvise live on the Contrapunk Discord stage. Audience reacts in chat. Host's pick + community vote crowns the week's winner.
Points stack across all 9 weeks. Submitting to 6+ weeks earns the Veteran role. All 9 = Composer-In-Residence.
Empty until Wk 1 finale (Sun May 3, 7pm PT). Be the first name on this board.
Every external link drives here. Jam submissions, voting, and the Sunday live finale all happen on Discord.