ReMapping — implementation requests
Three independent improvements to ReMapping. They apply to the system generally;
productions/reference appears only as a concrete example. Each request states the goal, the
current problem, what is required, and the acceptance criteria that decide whether it is
done — the acceptance criteria are live tick boxes.
In one line. One new feature (a guided voice-recording studio), one bug with a known cause (diagnostic overlays lost between
RenderSettingsandSceneSettings), and one systematic gap (no documented high-frame-rate profile family).
| # | Request | Kind | State |
|---|---|---|---|
| 1 | Guided voice-recording studio | new feature | requested |
| 2 | Diagnostic overlays in stills | bug — cause known | open |
| 3 | High-frame-rate output profiles | new feature | requested |
Guided voice-recording studio
requested
Goal. Let a narrator record every script line through one simple local interface, without opening source code, managing files by hand, or typing a separate terminal import command for each take.
The current problem
remapping voice record imports a pre-recorded audio file but cannot capture microphone
audio interactively. Today the narrator has to find the script, record in another app, export
a WAV, find the line ID, import the file, and then check it separately — six context switches
per line.
The required workflow
Show readable script and line ID
→ Record
→ Stop
→ Replay
→ Re-record if needed
→ Run checks
→ Accept
→ Save and move to the next line
Required features
- Start from any production and list lines as
missing,current, orstale. - Display the exact script text prominently; keep the canonical address visible but secondary.
- Capture microphone audio directly.
- Produce the production's required take format — mono, 48 kHz, 24-bit PCM WAV by default.
- Replay, re-record and accept a take without any file management.
- On acceptance, save/seal the take exactly as
voice record --audiodoes today. - Continue automatically to the next missing/stale line, and allow going back to previous lines.
- Preview the relevant video section with the candidate narration synchronized to picture.
- Support voice-only playback, synchronized video playback, looping, and short before/after context.
Per-take checks
Before acceptance, show clear pass / warning / fail results for each of these:
| Check | What it reports |
|---|---|
| Script match | Omissions, additions, substitutions, repetitions. |
| Pronunciation | Terms defined in the production lexicon, and terms requiring review. |
| Audio quality | Required format, clipping, levels, noise floor, hum, dropouts, DC offset, signal-to-noise ratio, excessive silence. |
| Consistency | Level, background noise, tone and pacing compared with nearby accepted takes. |
| Timing and beats | Measured duration, proposed timing markers, and any marker requiring human approval. |
The interface must not silently change the script, the line ID, pronunciation choices, timing markers, or approvals. It reports; the human decides.
Helpful enhancements
- Progress counter, e.g.
3 of 8 lines complete. - Countdown, live input meter, waveform, and clipping warning.
- Playback-speed controls and keyboard shortcuts.
- Text-size controls and dark mode.
- A review mode that plays accepted takes in sequence.
- Resume a recording session later.
Safety rules
- A new take stays a draft until the user selects Accept.
- An accepted take is never replaced without explicit confirmation.
- Delete actions are deliberate and confirmed.
- Acceptance seals/imports a take only — it must not silently grant QC, text, pronunciation, marker, or mix approvals.
Suggested entry point
remapping voice studio productions/reference
Acceptance criteria
- A non-technical narrator completes a whole recording session in one interface: read each
displayed line, record, replay, review the checks, accept — and see its status become
current— without naming WAV files, locating full IDs, or running an import command per line.
Diagnostic overlays in remapping still
open cause confirmed
The problem. The command accepts the diagnostic flags but draws neither the safe-area guides nor the anchor markers:
uv run remapping still productions/reference \
--frame 600 \
--show-safe-area \
--show-anchors
Expected behaviour. --show-safe-area draws title-safe and action-safe guides on the
still; --show-anchors draws anchor markers. Both must work for every production with
--frame, --time, and --scene ID --time:
uv run remapping still productions/reference \
--time 8 \
--show-safe-area \
--show-anchors
Confirmed cause
The flags are parsed and stored in RenderSettings, but they are lost when plan_film()
constructs SceneSettings. The drawing logic already exists in remapping/scene/scene.py —
this is a settings-propagation bug, not a rendering one.
File to inspect:
remapping/film/plan.py
The SceneSettings(...) construction needs to preserve:
show_safe_area=settings.show_safe_area,
show_anchors=settings.show_anchors,
Required fix
- Forward both diagnostic flags into scene settings during planning.
- Preserve them in scene reconstruction / worker paths, including
remapping/output/parallel.py. - Keep preview, draft and final renders clean unless a diagnostic option is explicitly requested.
- Ensure a CLI diagnostic request is not accidentally disabled by scene setup.
Acceptance criteria
- No flags → no overlays.
-
--show-safe-area→ guides visible. -
--show-anchors→ anchors visible. - Both flags → both visible.
- Verified at
--frame 600,--time 8, and--scene mixed --time 1.
Existing workaround
uv run remapping anchors sample productions/reference \
--scene mixed \
--output mixed-anchors.png
This draws labelled anchors and safe-area guides only at scene time 0. It is not a
replacement for arbitrary-time still overlays.
High-frame-rate output profiles
requested
Goal. A systematic, documented high-frame-rate profile family available to any compatible production and supported resolution — instead of isolated one-off profile definitions.
Requested coverage
- One predictable naming scheme for high-frame-rate profiles.
- Documented 120 fps options for 1080p, 1440p and 2160p, wherever the selected encoder supports them.
- 90 fps and 100 fps variants derived through the same rules where appropriate.
- Existing standard profile defaults unchanged unless a production explicitly selects a high-frame-rate profile.
Implementation requirements
- Add built-in profiles, or documented templates usable from any production's
production.toml. - Make them discoverable through
remapping profile listand fully inspectable throughremapping profile show. - Scale bitrate targets systematically by resolution, frame rate, codec, chroma format and bit depth — do not reuse one 4K bitrate for every output.
- Validate each profile against the available encoder, and document unavailable combinations clearly.
- Verify delivered files against their selected profile.
The bitrate rule is the part that is easy to get wrong. Doubling the frame rate does not double the required bitrate, and a 1080p120 file does not want a 2160p bitrate. The profile family has to derive its targets, not copy them.
A production-local template
If a local high-frame-rate profile is needed, name it clearly — delivery-2160p120:
[output_profiles.delivery-2160p120]
size = [3840, 2160]
fps_num = 120
fps_den = 1
container = "mp4"
codec = "h264"
codec_profile = "high"
pixel_format = "yuv420p"
colour_primaries = "bt709"
transfer = "bt709"
matrix = "bt709"
range = "limited"
purpose = "2160p 120 fps delivery"
[output_profiles.delivery-2160p120.rate_control]
mode = "vbr"
target_bps = 80000000
max_bps = 120000000
This is one example only — the system should provide equivalent options across every supported resolution.
Expected use:
uv run remapping render productions/reference \
--profile <high-frame-rate-profile-id> \
--draft-timing \
--workers auto
Acceptance criteria
-
profile listpresents high-frame-rate profiles in a predictable naming scheme. -
profile showreports correct resolution, exact frame rate, codec, pixel format, colour metadata and rate-control settings for each profile. - Compatible productions render successfully with the selected high-frame-rate profiles.
- Each delivered file verifies against its selected profile.
- Existing standard outputs remain unchanged unless a high-frame-rate profile is selected.