Website · Web App · User Guide · Downloads · Contributing
Contrapunk is a real-time MIDI harmony and arrangement generator. Play a MIDI controller or monophonic guitar line, choose a harmonic approach, and route the generated voices to the built-in sound engine, hardware MIDI, or a DAW instrument.
The same Rust core powers the native app, browser app, and DAW plug-ins. Arrangement presets are technique-named, research-backed configurations; unfinished built-ins stay hidden from production menus.
- Desktop: download the latest published macOS or Windows installer from GitHub Releases.
- Browser: open app.contrapunk.com. Web MIDI requires a compatible browser and permission.
- DAW plug-ins: published releases may include VST3, CLAP, and macOS Audio Unit assets; check the release asset list.
- Full setup guide: contrapunk.com/docs/start/install.
Desktop custom harmony-style presets persist as versioned .cpk files in the app-data directory. They do not yet include synth, plug-in, routing, Slide, or Companion state.
Contrapunk provides two Audio Units under Contrapunk Audio:
- MIDI FX → Contrapunk: harmonizes incoming track MIDI before the instrument.
- Audio FX → Contrapunk Guitar: accepts mono or stereo guitar audio, detects pitch, and publishes generated MIDI through the CoreMIDI source Contrapunk Guitar MIDI Out. Route that source to a separate software-instrument track.
See the Logic routing guide. Logic does not send track audio into MIDI FX, so guitar conversion requires the Audio FX component.
MIDI controller ──────────────────────────────┐
v
Monophonic guitar → pitch/onset detection → HarmonyEngine → Companion lanes
│
└→ generated MIDI
├→ built-in sound/FX
├→ hardware or virtual MIDI
└→ DAW instrument
The harmony core includes diatonic, contrary-motion, species-counterpoint, Barry Harris, functional-harmony, chorale, and explicit-interval strategies. Companion lanes add bounded canon, counterpoint, and pattern timing with exact NoteOn/NoteOff ownership.
The desktop app can host CLAP instruments and effects. Generic VST3 instrument hosting is not part of the current release; Contrapunk's own VST3/CLAP/AU builds are distribution formats, not embedded third-party hosts.
| Surface | Entry point | Notes |
|---|---|---|
| Native CLI | src/main.rs |
Headless development and TCP client/server modes |
| Desktop | src-tauri/ |
Tauri app for macOS, Windows, and Linux builds |
| Browser | wasm/ + ui/ |
WebAssembly core with Web MIDI/Web Audio adapters |
| VST3 / CLAP | plugin/ |
DAW MIDI/audio processing with the production webview UI |
| Audio Unit | au-wrapper/ |
Logic MIDI FX plus mono/stereo Guitar Audio FX |
Prerequisites: Rust, Node.js 22, npm, and the Tauri platform prerequisites.
git clone https://github.com/contrapunk-audio/contrapunk.git
cd contrapunk
npm --prefix ui ci
# Native CLI
cargo build --release
# Desktop development
(cd src-tauri && cargo tauri dev)
# Browser development
npm --prefix ui run build:wasm
npm --prefix ui run devBuild the DAW plug-ins:
npm --prefix ui run build
CONTRAPUNK_PLUGIN_UI_DIR="$PWD/ui/build" \
cargo xtask bundle contrapunk_plugin --release --features embed-ui
# macOS universal VST3/CLAP and Audio Units
CONTRAPUNK_PLUGIN_UI_DIR="$PWD/ui/build" \
cargo xtask bundle-universal contrapunk_plugin --release --features embed-ui
./au-wrapper/build.shcargo check --workspace --message-format=short
cargo test -p contrapunk-harmony --lib
cargo test -p contrapunk-audio --lib
npm --prefix ui run checkSee CONTRIBUTING.md for architecture, focused test commands, and release-surface guidance.
MIT. See LICENSE.