Clip props

Every property a clip can carry and its default. A key a clip leaves out falls back to these.

Transform & compositing all visual kinds#

propdefaultnotes
x, y0px offset from canvas center
scale1
rotation0degrees
opacity10–1
blend"normal"multiply · screen · overlay · lighter · soft-light · hard-light · color-dodge · darken · lighten · difference

Layout video/image/svg#

propdefaultnotes
fit"contain"contain · cover (fill canvas, crop overflow) · stretch · none (native px)
cropL cropR cropT cropB0% of the source trimmed off each edge
cornerRadius0px, rounded corners - the PiP look
flipH, flipVfalsemirror

Filter / color video/image/svg#

propdefaultnotes
filterPreset"none"one of: cinematic · teal-orange · noir · vintage · faded · warm · cold · pop · dreamy · retro · bw-soft · cyberpunk · sunset · midnight. Combines non-destructively with the sliders below.
brightness contrast saturation100% (100 = neutral)
hue0degrees
temperature0−100 (cool blue) … +100 (warm orange)
tint0−100 (magenta) … +100 (green)
blur0px
grayscale sepia invert vignette0%

Motion FX video/image/svg/adjust - all animatable#

propdefaultnotes
shake0camera-shake amplitude in px (deterministic - identical in export)
shakeSpeed8shake frequency
rgbSplit0chromatic aberration / RGB channel split, px
grain0animated film grain, %

Keying / cut-out video/image#

propdefaultnotes
chromaKey""hex key color, e.g. "#00ff00" for green screen ("" = off)
chromaTolerance260–100, how much color distance is keyed out
chromaSoftness120–100, edge feather + spill suppression
bgRemovefalseAI person cut-out (MediaPipe, loads from CDN on first use; needs internet once)

Audio / time video/audio#

propdefaultnotes
volume10–2
pan0−1 (full left) … 0 (center) … +1 (full right). Linked stems default L −1 / R +1 / other 0. Projects saved before pan migrate once on load (panSchema); keep panSchema: 1 (and explicit pan on stems) when rewriting the document so a centered stem is not re-hard-panned.
speed10.25–4× playback rate. Keyframable → speed ramps: with keyframes.speed the engine time-remaps (media time = in + ∫speed dt), in preview and in the export audio mix. Static case: source window consumed = duration × speed, so in + duration×speed ≤ media.duration.

Text clips only#

propdefaultnotes
text"Title"\n for multi-line
fontSize72px
color"#ffffff"fill
color2""if set: vertical gradient fill color→color2
font"Segoe UI"system font, a library/fonts family, or ANY Google Font name - unknown names are fetched from Google Fonts automatically
bold / weighttrue / 0weight (300–900) overrides bold when non-zero
italic uppercasefalse
align"center"left · center · right · justify (inserts spaces between words to fill the text box width, or ~85% of the canvas when no box)
boxW boxH0px text box; 0 = hug content. When both > 0, corner handles resize the box (not scale). Default: fixed fontSize, word-wrap inside the box.
boxFitfalsewhen a box is set: false = wrap at fixed font size; true = scale font down (up to fontSize) so the whole text fits
vAlign"middle"top · middle · bottom - vertical alignment of the text block inside the box
direction"auto"auto · ltr · rtl - auto detects per line (Hebrew/Arabic → RTL); all textAnim modes honor reading direction (wipe, typewriter reveal, word/letter layout)
letterSpacing0px
lineHeight1.2multiplier
textShadow12soft drop shadow amount, 0 = off
glow0neon glow strength (0–100); replaces the drop shadow
glowColor""glow color ("" = use the text color)
strokeWidth strokeColor0, "#000"text outline
bgColor bgOpacity"#000", 0rounded pill behind each line
textAnim"none"typewriter · word-pop · word-slide · karaoke · letter-pop (per-character entrance; Arabic/Indic auto-fallback to per-word clusters so joined letters shape correctly) · wave (looping per-character ride; same shaping fallback) · bounce (looping per-word hop) · shake (looping jitter) · clip-reveal (wipe-mask sweep, per line) · zoom-in (scale + opacity settle) · font-cut (rhythmically swaps typeface, then settles - see fontCutSet) · rise-mask (line rises from behind its baseline, lower-third reveal)
wordRate0.15seconds per word (typewriter: /4, letter-pop: /3 per character); also staggers clip-reveal/zoom-in/rise-mask per line
fontCutSet(curated)array of font family names cycled by font-cut, e.g. ["Anton","Bebas Neue","Archivo Black","Oswald"]; each is auto-loaded

Title styles one-tap cohesive looks#

Text clips created in the UI now rotate through curated styles so titles vary instead of all looking basic (the old flat Segoe UI / no-animation default). Each style bundles a different font, placement and animation. Apply one in the inspector (Title style dropdown + Shuffle), or reproduce it from an agent by writing the same props:

StyleFontLook
impactAntonuppercase, lower third, word-pop, big shadow
elegantPlayfair Displaywhite→gold gradient, centered, clip-reveal
kineticBebas Neuegold, font-cut cycling Anton/Bebas/Archivo/Oswald
neonBebas Neuecyan glow, wave
handwrittenCaveatrotated −4°, lower-left, word-slide
serifDropAbril Fatfacecentered, zoom-in
subtitleRobotosmall, bottom, bg pill, karaoke
boldRiseArchivo Blackuppercase, lower third, rise-mask
luxuryCinzeluppercase, cream→gold gradient, wide letterSpacing, clip-reveal

Rule for agents: vary the font per title - never reuse one font across a whole edit. Any Google Font name auto-loads; the display faces above ship in library/fonts/. Placement props (x/y) are canvas-aware in the styles (lower third ≈ y: height*0.30).

Switching the style on an existing title (inspector dropdown/Shuffle) only restyles the look (font, size, colors, shadow/glow, animation) - the clip's x/y/scale/rotation/align and its text are preserved. The style's canvas-aware placement is applied only when a title is first created.

Adjustment layers kind:"adjust", mediaId:null#

A clip that re-renders everything drawn below it (lower tracks + earlier clips) through its own filter stack - Premiere-style. Supports all Filter/Color props, vignette, grain, rgbSplit, temperature/tint, whole-frame shake, and opacity as the intensity. Keyframe/transition it like any clip. Put it on V2/V3 above the footage. Example: 0.3 s impact shake over everything = {kind:"adjust", track:"V3", duration:0.3, props:{shake:18}}.

Animatable props usable in keyframes#

X, y, scale, rotation, opacity, volume, pan, speed, brightness, contrast, saturation, hue, blur, grayscale, sepia, invert, temperature, tint, vignette, cornerRadius, shake, rgbSplit, grain, fontSize, letterSpacing, glow.

Transition types#

Fade · slide-left/right/up/down · zoom · wipe (=wipe-left) · wipe-right/up/down · iris (circular) · spin · blur · whip (whip-pan) · glitch (RGB split + jitter) · pop (overshoot scale - stickers/captions).