Tapestry scale: seconds per pixel
How dense a slice can get before each lane stops reading, measured against how often real transcripts change speaker, change topic and produce a quote. The sessions below are synthetic, sampled from the measured distributions.
Measured on real test recordings
| Quantity | p10 | p25 | median | p75 | p90 | n |
|---|---|---|---|---|---|---|
| Speaker turn length | 2 s | 5 s | 10 s | 26 s | 46 s | 1,854 |
| Topic segment length (s08) | 48 s | 86 s | 181 s | 266 s | 362 s | 194 |
| Gap between quotes (s09) | 30 s | 45 s | 64 s | 92 s | 128 s | 397 |
| Theme span in one session, share of session | 0% | 0% | 10% | 40% | 60% | 70 |
36 sessions of at least 10 minutes with at least two speakers, drawn from 9 trial-run projects; 16 of them fully analysed. Rates over the analysed sessions: 3.1 topics and 6.6 quotes per 10 minutes, and about 4–5 themes per session. Turn lengths are dominated by the conversational usability sessions. The oral histories (fossda) show 4–24 turns an hour, which is long-monologue behaviour and probably also under-split diarisation. Half the theme–session pairs are one or two quotes, so a theme usually lands as a point or a short span, not a band across the session.
What each lane needs
| Lane | Legibility floor | Event it must survive | Needs at least |
|---|---|---|---|
| Speaker clips, rounded with a gap | 4 px per clip | median turn, 10 s | ≤ 2.5 s/px |
| Speaker clips, as slivers (no rounding) | 2 px | p25 turn, 5 s | ≤ 2.5 s/px |
| Topic flag with a few letters of label | 50 px | median segment, 181 s | ≤ 3.6 s/px |
| Topic flag, pennant only | 14 px | p10 segment, 48 s | ≤ 3.4 s/px |
| Sentiment bar, 4 px plus a gap | 8 px | p10 quote gap, 30 s | ≤ 3.75 s/px |
The speaker lane is the binding constraint. Every other lane survives at about 4 s/px, but the turns stop being individual clips beyond about 2.5 s/px. Long monologues (p90, 46 s) still show as clips at 4 s/px (11 px).
- Upper clamp, 1 s/px: beyond this a short project would be blown up to fill the width, with nothing gained. Every topic label already fits at the median, and every turn is a clip.
- Lower clamp, 4 s/px: a 60-minute session is then 900 px, which fits the Sessions grid on a laptop. Topics and sentiment still read. The speaker lane switches to slivers (no rounding, no gap, no code) beyond 2.5 s/px. It becomes a talk-pattern texture in which monologues stand out, the way clips do in Final Cut zoomed out.
- Longer than about 60 minutes (2 of the 36 measured sessions are over 90 minutes): the slice scrolls horizontally at 4 s/px rather than compressing further. Every lane stays legible, at the cost of one scrolling row.
experiments/session-tapestry/README.md.session-tapestry.htmlcan come back as an option for speaker-view recordings.experiments/session-tapestry/colour-lab.html) and computed bybristlenose/utils/scene_colour.py. The real-data build (experiments/session-tapestry/build.py) draws it inside the actual Sessions grid.