roto — frame removal + take builder

source + landmarks

outer lip — · inner lip —

stabilised (head-local)

should sit still except the mouth · grey = held plate outline
dark green ghost = unshifted mouth when lead ≠ 0

flat render — 320×200 indexed

audio drives the clock — dropped frames, never drift
plate representation: B cycles · photo modes are registered into raster space, so tracing them lands on the mouth

frames — green kept (gets its own drawing) · dim held from the last kept frame

← → step · X delete · K keep · B background · [ ] lead · click to select · double-click or shift-click to toggle · the mouth keeps every frame regardless

knobs

mouth lead shifts the performance tracks earlier (positive) against the audio and the head. Averaging has no phase lag but it blurs onsets, so an opening reads later than it is; animators also draw mouths a frame or two ahead of the sound as standard practice. [ ].
contour avg 0 = off, 1 = ±1 frame. Removes per-frame landmark jitter. Push past 2 and it starts eating articulation.
anchor avg smooths the head transform only — never the contour.
teeth contrast gates on how far apart the cavity's dark and bright halves are — Otsu always returns some threshold, so this is what stops it inventing teeth in a dark mouth. cavity erode pulls the sampled region in from the lip edge; blob grow/erode resizes the found blob itself. tongue reject drops pixels that are red relative to their own brightness; prefer upper biases component choice toward the top of the cavity, where teeth are and the tongue is not. dwell is how many frames a presence change must persist.
suggest tolerance only affects the Suggest button: max head movement allowed before a new drawing is required.

teeth measurement

green = kept pixels · amber = extracted contour

palette

Flat indexed fills, no antialiasing — the rasteriser writes palette indices, the way csd_render_poly does.

drawings needed — registered reference per kept frame, with the range it holds