Skip to content
Docs
Open Promoeyes
Halve

Halve

In one shared kitchen the camera never leaves, a grocery receipt is snapped, split across roommates, and settled in one tap.

A shared apartment kitchen at dusk: a quartz-topped island under three caged pendants, a whitewashed brick wall, a wooden shelf and a window fading to evening, with a grocery bag, lemons, mugs and a paper receipt on the counter. Five even 4 s beats at 120 bpm across 20 s: a dolly past the mugs, a low push, a close hold, a peek from behind a mug, then a pull back and up.

Length
20 s
Scenes
5
Device
iphone
Style
realistic place
Camera
dolly, low angle, push in, pull back

The AI keeps this film's shots, timing and camera, and puts your app in it.

//
    HALVE — 20 s, no voice-over. "Write a 20-second promo for Halve, an app for roommates that
    splits shared bills: snap a receipt, assign items, and settle up in one tap."

    THE WORLD. One shared-apartment kitchen at dusk, and the camera never leaves it. A sage
    island with a warm-white quartz top (top surface y = 920) under a row of three caged
    pendants; behind it a whitewashed-brick back wall with an oak shelf run and a window going
    blue. On the island: tonight's grocery bag, a bowl of lemons, the three roommates' mugs in
    the app's three person colours (Maya violet, Leo amber, you coral), the paper receipt from
    the Green Grocer lying where it was dropped, and the phone on a small oak stand (bottom edge
    at y 934). The receipt on the counter and the receipt in the app are the same five lines.

    PALETTE. ink #17141f · ground #f6efe4 · Halve coral #ff5a3c · settled mint #1fae7a ·
    Maya #7b6cf0 · Leo #f0a01c · sage cabinets #6f8270 · quartz #ece6dc.

    LIGHT. No tone mapping (the app's hexes land on screen unchanged); the chain ends in the
    sRGB-only transform, film_grain output_transform=2. Key: three warm spots in the pendants,
    E = I / d² ≈ 1.4 at the island (d ≈ 1070 mm → 1.6e6). Cool dusk fill from the window
    (area, left), a hemisphere at 0.18 and the cayley interior HDR at 0.35.

    BEATS (cuts on the 120 BPM bar grid, 2 s a bar):
      s1-hook     0–4    dolly past the mugs onto the receipt and "Who owes what?"; the bill lands on the lock screen
      s2-snap     4–8    low behind the receipt, push in to the phone: the five lines light up as they are read
      s3-assign   8–12   close on the glass: a name lands on each item, then your share
      s4-settle   12–16  from behind your mug: Settle up is pressed, Paid, All square
      s5-end      16–20  off the Halve mark on the glass, back and up to the island: Halve / Split it. Settle it.

    SCREENS. projects/templates/halve/halve.screens.html → scripts/html-screens.mts (kind card, 71 × 154
    glass) pasted under ui3d(overlay=screen); the receipt is a scene-level ui3d (76 × 200). The
    tracks are hand-added. Icon sizes are nudged in the HTML so no two glyphs share a size + colour.

    Preview: http://localhost:4444/runtime?project=projects/templates/halve/halve.promo
promo#halve(width=1920 height=1080 fps=30)
  metadata
    audio
      tracks
        // music: 120 BPM F-major bed, 10 bars, every cut on a bar line (4 / 8 / 12 / 16); mastered -16 LUFS
        track#music(asset="music:halve-bed" start=0 volume=0.75)
        // designed sound (procedural-sfx): the paper, the pull-back, the end chime
        track#sfx_1(asset="media:halve-paper" start=0.15 volume=0.5)
        track#sfx_2(asset="media:halve-whoosh" start=16.6 volume=0.4)
        track#sfx_3(asset="media:halve-chime" start=18.2 volume=0.5)
        // UI sounds (engine built-ins), one per on-screen state change
        track#sfx_4(sfx=receive start=1.5 volume=0.5)
        track#sfx_5(sfx=select start=4.7 volume=0.35)
        track#sfx_6(sfx=select start=5.1 volume=0.35)
        track#sfx_7(sfx=select start=5.5 volume=0.35)
        track#sfx_8(sfx=select start=5.9 volume=0.35)
        track#sfx_9(sfx=select start=6.3 volume=0.35)
        track#sfx_10(sfx=complete start=6.8 volume=0.45)
        track#sfx_11(sfx=pop-in start=8.7 volume=0.4)
        track#sfx_12(sfx=pop-in start=9.2 volume=0.4)
        track#sfx_13(sfx=pop-in start=9.7 volume=0.4)
        track#sfx_14(sfx=pop-in start=10.2 volume=0.4)
        track#sfx_15(sfx=pop-in start=10.6 volume=0.4)
        track#sfx_16(sfx=tap start=13.2 volume=0.55)
        track#sfx_17(sfx=success start=13.9 volume=0.5)

  materials
    physical#quartz(color=#141316 roughness=0.2 metalness=0 clearcoat=1 clearcoat-roughness=0.05 envmap-intensity=1.2)
    physical#sage(color=#1b2420 roughness=0.4 metalness=0 clearcoat=0.6 clearcoat-roughness=0.22 envmap-intensity=0.9)
    physical#sage-dark(color=#151c19 roughness=0.38 m