A dynamics scope's chrome: a bars-across grid with bar lines heavier than beats and an optional sixteenth grid, a dB gutter reading downward from 0, a dashed hard-ceiling line with its own label (dashed because a budget is a limit, not a measurement), a playhead, and beneath the plot a strip of event lanes drawn as onset ticks at their exact beat β so a swung event visibly sits off its gridline β sharing the plot's own xForBeat, with the playhead continuing through them. It draws no signal itself: `children` is a render function handed the resolved layout, so a prediction envelope, a measured overlay and a waveform all live in the SAME coordinate space as the grid and cannot disagree about where a beat is. The playhead is either given as a phase (null draws none, which is the right picture for a stopped transport) or derived from a host transport through useBeatClock, whose source is reported back so the caption can distinguish host-locked from free-running. SVG, no measurement, renders on the server.
pnpm dlx shadcn@latest add "https://pluginui.com/r/core-beat-grid-scope.json"