Expressive Accompanist

An online-DTW score follower that couples to the soloist in three dimensions: tempo, dynamics, and articulation — so it feels like a real duet partner. Play the Pachelbel Canon melody; the machine plays bass & chords matching your loudness and legato/staccato phrase-by-phrase.

↑ your performance timereference score time →
ribbon width = dynamicsribbon dash = staccato
Mode
Idle
Position
1 / 16
Tempo
—
Harmony
—
Soloist dynamics
50%
Accompaniment dynamics
50%
Articulation
—seeking…

Play it yourself

Home-row keys play the Pachelbel Canon melody in D major. Hold keys longer for legato phrasing, tap quickly for staccato — the accompaniment will follow your articulation. Use MIDI for full velocity-driven dynamics.

aD
sE
dF#
fG
gA
hB
jC#'
kD'

MIDI: not requested

How the coupling works

1. Tempo
Online DTW (Dixon's MATCH, 2005): bounded search window grows the path one note at a time. Slope of the path = local tempo. Steeper than 45° → rushing; shallower → dragging. Chord placement locks to your position.
2. Dynamics
Your note velocity is EMA-smoothed and maps directly to accompaniment gain. Soft playing → quiet chords; loud swell → the chords swell with you. The ribbon's thickness encodes this live.
3. Articulation
Duration ÷ inter-onset-interval = articulation ratio. Legato (high ratio) → long chord decays. Staccato (low) → detached chords. The ribbon dashes when you go staccato.

The baked demo has a deliberate expressive arc: steady intro → accelerando → ritardando; crescendo → diminuendo; legato first half → staccato second half. Watch the ribbon change as each phase passes. Full references and design notes: src/app/dream/380-expressive-accompanist/README.md

The dream lab — Karel Barnoski