midiviz: the whole surface has a resting position, and the rain says what to type
Two things PLN asked for, and one correction to how step 3 was planned. State covers all 48 cells now, not just the three family filters -- but only where the event layer cannot speak: a cell whose last event value equals the surface value is skipped entirely, track included. That keeps one fact to one picture, and what is left is exactly the gap an edge-triggered stream leaves behind -- a control untouched since launch, and a control the surface moved while this window was not listening. The family filters stay exempt, since a left-anchored bar lies about a centre detent whoever draws it. E needed nothing: the driver already owns the latch, because v3 DAW buttons are momentary, so it publishes 127 until the next press. This just draws it, which is why it cannot drift out of step with the board. The dirty-cell repaint the design doc was waiting on was the wrong screw. The widget repaints whole frames and its budget is made of drawText calls, not fillRects; the layer needed a rule about when NOT to draw, not a cheaper way to draw. And the gutter rains corpus tokens now -- ^42, the exact string a .tidal file types -- for controls the grid owns, where before only un-gridded CCs rained at all. Rate-gated per control, because the relative rows send a message per encoder click and an ungated sweep fills all 32 heads with one repeated word. The lanes are computed from the text width, so a three-glyph token in a five-glyph gutter cannot be drawn off the edge.
Showing
Please
register
or
sign in
to comment