Editing with DaVinci Resolve
Documentation preview. Resolve application verification is incomplete.
This download is a preparation kit, not a Resolve project. It contains
original layered stills, reproducible asset code, recipe specifications and
offline timing helpers. It does not contain a .drp, a .dra, application-exported
Fusion setups, or Resolve-rendered examples. Do not infer those deliverables
from the existence of this ZIP.
The accompanying website supplies bounded official-source evidence. This kit contains no source-film pixels, OpenAI branding, copied demonstration data, private application code or talking-head recordings. A neutral fixture is not proof of a real product capability.
Environment gate
The research workstation is Ubuntu 24.04.4 LTS, Linux x86_64, with no Resolve
installation, no attached desktop session and no verified GPU render environment.
No accessible remote Resolve installation was found. Tested Resolve version,
edition, operating system and output codecs: none. ACCEPTANCE.json records
each missing application check separately.
The construction reference is Blackmagic Design's Resolve 21 Reference Manual, published July 10, 2026. The official software catalog inspected September 5 lists 21.0.4 Free and Studio updates dated August 5, 2026. This is a documentation/release observation, not an installed-version claim or a request to upgrade an existing project library. Before executing, record Help/About (or the application About menu on macOS), edition, OS, GPU, driver, attached display and the manual supplied with that installation. Reconcile any different controls before continuing.
Needed access: an authorized interactive GPU workstation with Resolve, a disposable local project library, permission to export and render the neutral fixtures, and a desktop-control channel or a human editor. Use Free where possible. No recipe deliberately selects Studio effects, third-party plugins, Magic Mask, Speed Warp, AI tools or external-script access. Free compatibility and actual codec availability still require testing. Do not purchase Studio just to complete this guide without separate authorization.
First ten minutes in the UI
These are manual-checked construction instructions, not an executed test. Names and values must be confirmed in the chosen application.
- Unzip into a short neutral folder such as
ResolveStudies. Install the two bundled DejaVu fonts using the OS font manager, then reopen Resolve. If font installation is unavailable, document an installed sans-serif substitute and re-check every title's line break, baseline and width. The fixture PNG text is already rasterized; only native Text titles need installed fonts. - In Project Manager, show Project Libraries. Add Project Library → Create and
create a new Local library, not a production library. Create a project
named
ResolveStudies_DocumentationPreview. No supplied.drpis available to import in this release. - Before importing media, open File → Project Settings. Master Settings: 1920×1080, square pixels, timeline and playback rate 30, progressive. Color Management: DaVinci YRGB, not color-managed; Timeline color space Rec.709 Gamma 2.4. Do not apply grades, LUTs, output transforms, HDR or automatic color management. These are chosen baseline settings, not source production settings. Record what the actual UI permits.
- Media page: import the complete
media/directory. PNGs are 1920×1080; preserve their raster and alpha. Clip Attributes → Data Levels: Full for these RGB fixtures. Inspect transparent overlays overshell.png; do not mistake a black viewer background for opaque black pixels. Any alpha correction must be recorded and checked at the edge, not guessed from the file extension. - Create bins
01_OriginalMedia,02_Recipes,03_Sequence. Edit page → Media Pool right-click → Create New Timeline. Name each timeline exactly as listed inrecipes.json; set start timecode 01:00:00:00. Use the project frame rate and raster. The twelve recipe timelines andS01_Original_Study_52sare specifications to construct, not timelines already present in this kit. - Follow the selected recipe's track table. Intervals are half-open. Set clip durations numerically with Change Clip Duration; enable snapping and ensure adjacent endpoints have no one-frame gap or overlap. Native stills and generators have no temporal handle requirement. Real captures need actual recorded handles, not repeated frames masquerading as source footage.
- Scrub each listed boundary, then play at normal speed. Wait for cache if necessary. A cached or proxy preview does not prove final export fidelity. Make the first test at full raster before using reduced preview resolution.
Source, timeline and local frame coordinates
- Source-video time: the delivered original's PTS in seconds and zero-based
decoded frame index. Source rates include 24000/1001, 30 and 60. Use the
source evidence ledger's actual PTS, not an assumed
frame / 30conversion. - Timeline timecode: this kit proposes 30/1 fps, non-drop-frame,
HH:MM:SS:FF, starting at01:00:00:00. Frame 90 is01:00:03:00. - Recipe-local frames: zero-based; a 150-frame recipe occupies
[0,150)and its last visible frame is 149. A keyframe at 30 and another at 60 span 30 frame intervals, not 31. Track and control tables use this recipe clock. - Clip-local frames: subtract that clip's recipe In from the recipe frame.
For example, the title-cut context clip begins at recipe frame 90: recipe
frame 100 is clip-local frame 10 and timeline
01:00:03:10. Add the clip's timeline start to a clip-local frame to find its timeline position. Do not keyframe a short overlay at an impossible clip-local frame 100.
For Fusion, establish a new Fusion Composition with local range 0 through
duration−1. Confirm the current-time field. If the actual comp begins at a
different frame number, add that offset to every listed key. Timeline
timecode, MediaIn source time and Fusion current time are different controls.
Do not reset a source clip's frame range blindly.
For stills dragged from the Media Pool into a Fusion Composition, inspect
MediaIn's Global In/Out. Set them to the composition's first and last included
frame (normally 0 and duration−1). The manual explains that extending this
range adjusts Hold First/Last Frame. Holding an original still is appropriate;
holding a real application capture or presenter can misrepresent events and is
not authorized by these fixture instructions. Check the final comp frame for
missing media after every duration change. Reference: manual PDF p. 1386.
Geometry and spline contract
All stills are 1920×1080, square pixels, even when most of the image is
transparent. Asset design coordinates are top-left pixels, x right and y
down. The outer window is [192,108,1536,864]. The scroll viewport is
[336,210,1248,620]. Do not crop the transparent canvas during asset replacement.
Fusion normalized image coordinates use x right, y up, with (0.5,0.5) at the
center. A pixel rectangle [left,top,width,height] becomes:
Center.X = (left + width/2) / 1920
Center.Y = 1 - (top + height/2) / 1080
Width = width / 1920
Height = height / 1080
The fixed viewport therefore uses Center (.5,.518518519), Width .65,
Height .574074074. Rectangle Soft Edge and Corner Radius are zero; Solid on,
Invert off. Transform Pivot is (.5,.5), Size 1 and Angle 0 unless stated.
Leave Reference Size normalized. A 240-pixel upward content move adds
240/1080 to Transform Center.Y. The effect mask belongs on the Merge after
the content transform; the shell is the stationary background. The blue
Transform mask is an effect mask, not a replacement for this compositing order.
Edit Transform uses linked Zoom and pixel translations around the centered
anchor. With source/timeline raster matched, bring source focus (x,y) to the
output center using Position.X = zoom*(960-x) and
Position.Y = zoom*(y-540). Anchor Point remains 0,0; positive translation Y
is upward. The text generator's layout Position is a different control from
the clip's Video → Transform Position. Do not enter text-layout coordinates
into Transform.
For basic Text generators, explicitly set both Alignment and Anchor; a centered
paragraph does not by itself define the anchor of its bounding box. This kit
keeps Title-panel Position at (960,540) and uses Settings → Transform for
offset placement. With a Left/Center anchor, Transform (-576,-60) places the
block's left center at top-left output pixel (384,600). A Center/Center anchor
with Transform (0,0) centers a title. Set Drop Shadow Opacity 0, Stroke Size 0
and Background Opacity 0; leave text Zoom 1 and Rotation 0. Reference: manual
PDF pp. 1220–1222. Four successive input states use duplicates of the same
native title, avoiding a switch from native font metrics to a raster text plate.
For a different focus, rectangle or frame, use the offline helper rather than rounding by eye (all examples assume the full 1920×1080 canvas):
python3 tools.py focus --x 1180 --y 600 --zoom 1.8
python3 tools.py rectangle --left 336 --top 210 --width 1248 --height 620
python3 tools.py timecode --frame 100
The focus command returns a coverage check and exits nonzero when centering
the target would uncover an edge. For a fully opaque full-frame source at
zoom ≥1, legal translations satisfy abs(Position.X) <= (zoom−1)*960 and
abs(Position.Y) <= (zoom−1)*540. This check does not inspect transparent
content, product chrome or text sharpness. A focus at (1700,900) with zoom
1.8 would uncover 564 pixels on the right and 216 below. Do not apply it as a
safe crop. Choose a legal translation and accept an off-center target, choose
a different crop/technique, or recapture with more surrounding content. If
changing zoom, recompute both translations and verify readability. Do not
auto-clamp silently while continuing to claim the target is centered.
Continuous animations use explicitly selected Linear interpolation as a simple unfitted default; hard cuts are adjacent clips, not splines. In Edit, show the Keyframe/Curves Editor and the exact parameter channels. In Fusion, show Spline, select the animated channel and its endpoint keys, then choose Linear. Center animation may expose a Path modifier and displacement spline: check the spatial path as well as its timing. No overshoot, extra path points, looping, motion blur or default auto-easing is intended. A later fidelity pass may choose a different curve and must record the deliberate change.
The inspected manual's Text+ Write On paragraph has direction wording that needs an application check. This release does not guess that API/control's behavior. The input recipe uses discrete editable word states instead.
Assemble the 52-second study
sequence.json specifies 1560 frames and the exact portion of each recipe used.
This is a silent original editing study, not a product demo or an approved
all-hands presentation. Build the sequence by copying the underlying clips
and Fusion compositions from recipe timelines, not their flattened renders.
Place each group at its listed start frame. Preserve local keyframe timing
when copying; recheck all trimmed excerpts. Recipe markers are not guaranteed
to copy with clips. Add sequence markers independently.
The sequence moves through premise, context, focus, input, a new chapter, selection, navigation, result arrival, reading, a request recap in a new container, a label and a quiet end. The result reveal's final state continues unchanged into the reading hold. Other context changes are intentional cuts, not falsely advertised geometric handoffs.
Generate a marker reference with:
python3 tools.py self-test
python3 tools.py verify-kit
python3 tools.py markers --output marker-reference.csv
The CSV is not an assumed Resolve import format. In the Edit page, deselect
all clips, move the playhead to the listed timeline timecode and press M to
add a timeline marker, then M again to edit its name, color, duration and note.
With a clip selected you can create a clip marker instead; confirm placement.
Use Blue for chapters, Yellow for actions, Green for reading, Red for the
playback cue and Purple for the ending. Colors are chosen semantics, not
source conventions. Markers are editorial notes and should not be burned in.
Choose Edit for sequencing, hard cuts, simple transform keys, titles, independent overlay tracks and holds. Choose Fusion for a fixed viewport around moving content, selection/content registration under an outer transform, or layered result masks. Do not create a Fusion composition merely to make a hard cut.
Adapt without destroying the edit
Replace Media Pool assets or the specific MediaIn nodes while preserving the full-frame canvas, pixel aspect, alpha and known landmark. MediaIn names are labels, not guaranteed asset bindings. Check each node's actual input image. Change the last static interval when changing shot duration. Do not apply Change Clip Speed to an entire title/action/hold sequence: that changes typing, travel and reading time together. If a shorter shot cannot fit its action and complete-result hold, change the editorial choice or source selection.
For real captures: verify the actual interaction, retain an uncut capture, record its source-time In/Out and any omitted interval, and preserve state order. A jump in footage alone does not tell you the application's original wait duration. Compressed waits are a coverage gap in this chapter, not a validated recipe. Do not infer a speed factor or put a fake spinner into the fixture to suggest a performance measurement.
Pair with an actual recording later
The recording—not script length—supplies speech anchors, pauses and ending performance. Obtain a transcript with timestamps derived from that recording. This kit has no paired recording, so all actual speech-anchor, manual-delay, wave and pause fields remain unset.
Keep two files: the supplied talking head plays through OBS, with its audio routed through the virtual microphone; the separate silent presentation plays through Google Slides. Do not composite the talking head into these studies, duplicate narration, or add music. Future real product demos require inspecting the product's current local instructions, exports and runtime before planning or capturing the demo. A historical catalog is not runtime verification.
Let the presentation start at shared time 0. Its recognizable content cue is
C; measured reaction plus startup delay is R; the recording starts at
S = C+R. Recording timestamp h belongs at presentation time S+h.
Record C, rehearsed R, and intended S explicitly. Never assume R=0.
Let H be actual recording duration, T the onset of its recorded ending
wave/pause, E<=H the observed end of usable performance, Q its last required
speech anchor (OBS calls it L), P presentation end, and B>0 the required
operator buffer. Reuse the OBS worksheet and its observed reaction range:
C + Rmax + max(T,Q) <= P <= C + Rmin + E - B
presentation: [0, P)
talking head: [S, S+H)
Use the actual final visual proof completion as an additional lower bound if
it occurs after S+Q. Opening lead-in and ending buffer are separate. File
duration alone cannot decide which playback ends first.
The helper can check known values, but cannot derive them from nonexistent
footage. Unknown reaction/usable-tail values block readiness; file duration is
not usable performance. For an invented arithmetic example only, C=3, R=.7, H=E=60,
T=57, Q=56, B=2 permits presentation end from 60.7 through 61.7 seconds:
python3 tools.py playback --cue 3 --delay .7 --head-duration 60 \
--tail-start 57 --tail-end 60 --proof-end 56 --presentation-end 61 --buffer 2 \
--reaction-samples .7 .7 .7
If the recorded tail is absent or the interval is empty, raise it in the single consolidated storyboard/demo review. Do not invent a wave, freeze a face or cut speech to fit. Review also establishes the actual export format and Slides, OBS and meeting playback behavior. Get approval before final presentation production; these research fixtures do not grant that approval.
The three identical example delays are invented. Actual cold/warm starts and
attendee-side lip-sync/presentation checks follow the OBS runbook; three trials
are a proposed practice, not a guaranteed bound. --post-wave-start and
--post-wave-end add a whole-wave-after-presentation requirement when needed.
H=786.133333, T=773.7, E=780.6, Q=773.14, B=2 rejects a source-equivalent
end at 784; an end at 774 retains 6.6 usable seconds, not 12.13.
Export the editable work from Resolve
These steps are pending, not evidence that exports already exist.
- Save the project. File → Export Project creates a
.drpwith project data; it is not a media bundle. Name itResolveStudies.drp. - Project Manager: right-click the project → Export Project Archive. Include
Media Files; exclude Proxy Media and Render Cache for this fixture
archive. The
.drais a directory, not merely a file extension to attach to a ZIP. Preserve its directory structure when compressing for transport. - In each reusable Fusion graph, save appropriate selected-node settings via
Settings → Save As, and use File → Export Fusion Composition for the whole
graph. The manual describes
.compexport converting MediaIn/MediaOut to Loader/Saver; that can carry filesystem paths. Inspect every export and rebind media in the clean test. Never assume a.compis a portable.drp. - Use only a neutral staging root and original assets. Scan project data,
settings, LUT/still references, metadata, archive contents and filenames for
personal directories, identities, private hosts and credentials before
publishing. A public PNG-only kit does not prove a future binary project is
clean. Do not edit binary
.drpcontents to sanitize them: rebuild/export from the neutral library, then inspect again.
Import, relink, preview and test a clean library
Once actual exports exist, switch to a second disposable Local library.
Project Manager → Import imports ResolveStudies.drp; the media may need
relinking. Alternatively right-click an empty Project Manager area → Restore
Project Archive and select the .dra. Keep this test separate from the
authoring library. Temporarily make the authoring media location unavailable
to expose accidental absolute-path dependencies; do not delete the originals.
For offline media, select the relevant Media Pool clips and use Relink Selected
Clips to point to the restored media root. Inspect matching filename, raster,
frame rate and duration. Do not accept a similarly named wrong file. Confirm
all twelve editable timelines and the assembly, named nodes, text fonts,
transparent overlays, clip lengths, keyframes and timeline markers. Preview
each recipe at 1× and inspect the exact key boundaries.
Deliver-page export contract
Choose the actual environment first. The official July 2025 Resolve 20 codec table is an older OS/edition reference, not proof of Resolve 21 capability. It lists H.264/H.265 restrictions on Linux; do not assume a Free Linux MP4 path. Record the codec options in the installed Deliver page before selecting them.
For an environment that actually offers MP4/H.264: Deliver → Custom Export, Single Clip, Export Video on, format MP4, codec H.264, 1920×1080, 30 fps, progressive, automatic keyframes, profile High if available, quality restricted to 20,000 Kb/s as a chosen starting value. Export Audio off, not merely a muted track. Advanced: no proxy, optimized-media or render-cache substitution; Data Levels Auto with verified output; Color Space Tag Rec.709 and Gamma Tag Gamma 2.4 if available. Record the exact encoder and options actually used.
If that codec is unavailable, use a supported native intermediate such as QuickTime DNxHR HQ, if offered, with the same raster/rate and no audio. Keep the Resolve-exported master. A separately documented FFmpeg transcode of that master for web playback is acceptable as a derivative, never as a substitute for a Resolve render. No codec or export is yet tested here.
For each recipe select its timeline, choose Entire Timeline and confirm the
duration equals the recipe frame count. For the assembly confirm 1560 frames,
52 seconds, last visible frame 01:00:51:29. Add to Render Queue, then Render
All. Queue submission is not completion: check every job and open the actual
output. Render every recipe, not only the assembly. An export success does not
prove visual fidelity.
Required acceptance before calling this complete
VERIFICATION.md separates preparation checks from missing application tests.
The final release needs clean-library imports, non-flattened editable timelines,
portable media and fonts, reusable exported/imported Fusion setups, twelve
Resolve-rendered recipe examples and the silent 52-second assembly.
Compare exported playback and adjacent boundary frames with the cited source moments. Log source-measured values, implementation defaults, actual exported values, deliberate fixture differences and defects separately. Check no black frames, frame-count errors, content/mask drift, moving chrome, text changes, cropped evidence, duplicated pointers or audio streams. Fix defects and rerender.
Give a fresh-context editor/agent only this guide, the resulting exports and the documented workstation. Have them adapt context-detail to a new original 1920×1080 image with a different focus point, then masked-scroll to a new document and a 180-pixel scroll. They must retain at least 60 complete-result reading frames in each adapted recipe's final settled state—not in every transitional/context state—render a new 10–15-second sequence from Resolve, and record every human intervention. If they need missing context, fix the guide and repeat. That exercise is not run while Resolve access is absent.
Official documentation map
Links below use one-based PDF page numbers, matching the printed numbering in the inspected Resolve 21 manual. No claim is made about OpenAI's editing tool.
- Project import/export, pp. 78–79
- Local project libraries, pp. 84–87
- Project settings, pp. 144–154
- Media archives, p. 220
- Relinking, pp. 505–506
- Timeline creation, pp. 860–863
- Clip duration, p. 967
- Markers, pp. 1037–1040
- Titles, pp. 1212–1227
- Edit transforms, pp. 1246–1247
- Edit keyframes and curves, pp. 1291–1303
- Fusion composition interchange, p. 1390
- Node settings, pp. 1470–1471
- Fusion splines, pp. 1604–1610
- Merge connections, p. 2264
- Rectangle masks, pp. 2540–2542
- Fusion transforms, pp. 2929–2930
- Deliver, pp. 4174–4223
- Older OS/edition codec table, July 2025
Helpers and dependencies
tools.py uses Python 3.11+ standard library only. Run it in a normal terminal,
not the Resolve console. It checks frame math, marker references, file hashes
and supplied playback numbers. It calls zero Resolve/Fusion APIs and does
not control the application. build_assets.py optionally regenerates the PNGs
with the bundled fonts and pinned Pillow version; it produces stills, not
reference animations. Install its dependency in a virtual environment:
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
.venv/bin/python build_assets.py
No external Python/Lua Resolve helper is promised until every API is checked against Developer/Scripting documentation shipped with the tested version. Do not substitute a web gist, assume Free accepts external scripting, or assume unattended rendering. Core construction remains UI-driven.
dependency-manifest.json inventories the download with hashes, licensing and
explicit missing deliverables. Verify the supplied kit before editing it;
changed assets should produce expected hash differences. No fonts or media
are fetched at runtime. See LICENSE.txt and fonts/LICENSE.txt.