docs: record the millisecond floor as located and closed, and split what stayed open
The retired custom-bounds premise is corrected wherever it was encoded: the tail bit is the time selection's, not custom bounds'.
This commit is contained in:
@@ -942,3 +942,42 @@ own output, the three folder cases, collapsed-mono placement and summing, both m
|
||||
transitions waited out past a panel timer tick, undo, name/colour clone, and
|
||||
`GetProjectPathEx` against a non-default recording path — none of it is unit-testable
|
||||
and none has been run.
|
||||
|
||||
### The offline-render millisecond floor — located and closed (ad-hoc)
|
||||
|
||||
Closes the `docs/TODO.md` entry of the same name. REAPER's offline render was
|
||||
intermittently refusing an otherwise-valid capture whenever the requested window's end
|
||||
carried a sub-millisecond remainder — breaking root `CLAUDE.md`'s "exact bounds — no
|
||||
rounding of the requested range" precision invariant.
|
||||
|
||||
**Located, not inferred: the floor lives in the `RENDER_BOUNDSFLAG=0` custom-time-bounds
|
||||
field, not in REAPER's render engine.** Switching the offline render to
|
||||
`RENDER_BOUNDSFLAG=2` (the project's own time selection, driven through
|
||||
`GetSet_LoopTimeRange`) escapes it entirely. Confirmed by two live 48 kHz
|
||||
`TailMode::None` DAW renders, both landing exactly 97627 frames against the window's own
|
||||
count: the first started at the on-grid `0s` and tested only the END edge (a floored end
|
||||
would have printed 97584 — 43 frames short); the second, the decisive run, started at
|
||||
`2.0338983050847457s` and ended at `4.0677966101694913s`, both edges off the
|
||||
millisecond grid, and no millisecond-floored model of either edge alone or both together
|
||||
reproduces 97627. No compensation, trimming, or extraction was needed.
|
||||
`src/core/capture/render_settings.h`'s `kRenderBoundsTimeSelection` is now the one
|
||||
narrative home for the mechanism and the measurement; time selection is the only bounds
|
||||
mode the offline render reaches.
|
||||
|
||||
**Two hypotheses this track's originating entry previously carried are disproven, not
|
||||
merely superseded** — both predicted a shortfall tracking the render's CONTENT: that the
|
||||
render bounds itself to the media it can see, and that a trailing-silence trim fires
|
||||
despite `RENDER_NORMALIZE`. The measured cause tracks the WINDOW instead — the exact
|
||||
millisecond-floored count, independent of what the material does. Recorded so neither is
|
||||
re-proposed without a fresh observation.
|
||||
|
||||
**Scaffolding removed.** The experiment's apparatus — a two-position
|
||||
`RenderBoundsChannel` type, a console verdict line, and a three-checkpoint
|
||||
`RENDER_STARTPOS`/`RENDER_ENDPOS` read-back probe — is deleted now that the mechanism is
|
||||
settled.
|
||||
|
||||
**Left open, filed to `docs/TODO.md`:** `renderHonoredBounds`'s one-frame tolerance
|
||||
remains empirical, not proven; and `TailMode::Auto`/`Manual` have no automatic bounds
|
||||
observation at all — `render_bounds_gate` judges `TailMode::None` only, so both modes are
|
||||
fixed by inference (same bounds path, same floor) rather than by measurement, and only
|
||||
the 0-byte gate covers them until a DAW check closes it.
|
||||
|
||||
Reference in New Issue
Block a user