roto — frame removal + take builder

source + landmarks

outer lip — · inner lip —

stabilised (head-local)

should sit still except the mouth · grey = held plate outline

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 · click to select · double-click or shift-click to toggle · the mouth keeps every frame regardless

knobs

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