Skip to content

Demo

This demo uses examples/melodies/bach_wtc1_c_major_prelude_upper.musicxml, a two-measure monophonic incipit derived from the public-domain BWV 846 entry shipped in the music21 corpus.

Run the same example locally:

uv run canonize generate examples/melodies/bach_wtc1_c_major_prelude_upper.musicxml \
  --out tmp/demo \
  --engine repair \
  --top-k 12

The selected preview is the rank 1 repair candidate from this run: repaired inversion, delay 4, score 86.0. In a listening pass over the retained demo candidates, it was the most pleasant clip even though a stricter transposition candidate scored higher under Kithairon's rule penalties.

Input

Input score: Bach BWV 846 upper-voice incipit

Selected Repair Candidate

Generated relaxed canon score: repaired inversion

The score breakdown shows why this relaxed candidate still pays weak-beat dissonance penalties under the current scoring model.

Score breakdown with weak-beat dissonance penalties

Strict Comparison

The best strict fallback keeps the follower as an exact transposition transform with delay 4.

Generated strict canon score: transposition delay 4

The second retained strict candidate uses a wider delay.

Generated strict canon score: transposition delay 8

Web View

Start the visualization API and frontend as described in Visualization, then upload examples/melodies/bach_wtc1_c_major_prelude_upper.musicxml.

Kithairon web UI showing the selected repair candidate