A stage in your browser. An actor (a persona from the cast) stands on a 3D set. You can make it speak, show it your face, give it lines from the console, hand its ear a recording or a text, and record a clip. You are both the director and a participant at once. That is why the HUD says you are irecto · and · articipan.
Nothing on the set is a stand-in. The camera picture is your camera's. A face on the set is your captured face. Every trace is drawn from real audio, and every measure comes from the code that computes it. When something has no real signal, it shows nothing and says so.
The set is drawn by three.js, served from this host. Behind it, a DeltaVerse substrate (the
voice-scope field) draws the sound actually playing:
With no audio, the ground is not shown.
| ovie | movie: the experience you are in (the set plus any clip you record) |
| irecto | director: you, directing the set. The console is the irecto console. |
| articipan | participant: also you, inside the scene |
| akeu | makeup: skin and hair for the actor (/akeu) |
| ode | model: the trained weights behind an actor. A browser cannot make one, so a forged .persona marks its ode as pending imprint. |
| romp | prompt: the actor's instruction (/prompt). Your scene direction is
layered on top of it and is never written back into the persona. |
Click the actor's eye (or 👁 eye, or /eye) for camera settings:
Click its ear (or 👂 ear, or /ear) for mic settings:
Opening either panel starts nothing; the camera and the mic start only from their own buttons. Changing a device restarts only that device.
The eye and the ear are found on the head actually drawn:
The stock 3D head (gltf) has no ears, so use the 👂 button there.
Pressing ◉ mic asks your browser for the microphone. Once allowed, it does three things.
/listen off. The mic keeps
working without it.Drop a file on the actor's ear, or on the 👂 button, or choose one with /drop.
Audio (anything your browser can decode: WAV, MP3, OGG, WebM, M4A):
A .txt (up to 64 KB, read as plain text, never run) is read aloud the way the playdocs page reads a document:
/docsplayer/render, along with this page's address,
and is rendered in one voice./voicey in your clone instead, sentence by
sentence, within /voicey's limits: 240 characters per request and 20 requests a minute. A sentence the
host refuses is struck through and named, not skipped silently.Pressing ▢ cam asks for the camera. Your actual camera picture goes into the monitor, onto a screen on the set, and into the eye settings. The page also measures what the camera delivers, from its own frames:
/picture shows the numbers. The camera picker is in the eye settings.
Face tracking (MediaPipe FaceLandmarker) runs in your browser. Its model is about 13 MB and is
downloaded from this host's /vendor/mediapipe. While a face is seen, the head on the set
is your face:
No stock head is bent to look like you. When no face is seen, the actor's own head returns. No camera frame is sent anywhere.
◉ capture face (fCLONE) does three things, and keeps no image:
/fclone.The capture stays in the page until you forge, and forging saves files to your own downloads.
The standalone faicey service on mindx.pythai.net is not publicly serving. Faces on this set run in the set, on your machine.
Drop a portrait on the actor's eye, choose one with /image, or analyse a still of your
camera with /still. /image monalisa loads Leonardo's Mona Lisa (public domain,
Wikimedia Commons) as a reference reading. Everything is computed in this browser from the 478 points MediaPipe
finds; nothing is uploaded.
How a face is compared.
10 152 234 454 33 133 362 263 70 105 107 336 334 300 168 6 1 2 98 327 61 291 0 17 172 397 136 365.The threshold (0.04) is not calibrated on any population; no error rate is claimed. On six public-domain portraits:
That shows how weak 28 points of geometry are as identity evidence.
Recognition happens only between faces enrolled in this browser. Enrolling takes your explicit consent,
and is wallet-signed when a wallet is present. Enrolled faces can be listed, exported and deleted
(/recognize). Nobody who is not enrolled is recognised.
Symmetry (/symmetry): each left landmark is reflected across the fitted midline and
compared with its right partner. It is reported per region as a percentage of the eye distance.
Beauty (φ) (/phi): by this set's definition, beauty is closeness to the golden ratio
φ = 1.618033988749894848. φ is computed with integers, and F(91)/F(90) agrees with it to 18 places. The four
ratios are:
Each ratio is computed exactly from whole-pixel positions and printed to 18 places. Beside it are its
uncertainty (±1 px per point), the number of digits that actually mean something (usually 1 or 2), and its
nearest Fibonacci ratio. The score is beauty (φ) = 1 − ¼·Σ|rᵢ − φ|/φ.
One sentence on evidence: perceptual studies do not find φ in attractive faces. Pallett, Link & Lee, New "golden" ratios for facial beauty, Vision Research 50:149–154 (2010), doi:10.1016/j.visres.2009.11.003, found attractiveness peaked at the average face's proportions instead.
.depth is relative depth, extrapolated from contrast. A camera here has no depth sensor:
/depth sensor checks for one, and the set says if it finds none.
.color uses the actual pixels of the cheeks and forehead, lips, irises, brows, hair and background. Each is the median in OKLab, shown at each palette size:
Each comes with its distance (ΔE). /wheel opens the picker: a hexagon colour map, plus RGB, RYB,
CMY and OKLCh wheels. The golden angle 360°/φ² = 137.507764050037854646° is computed from the same integer φ.
Lighting changes every colour.
.frequency (/freq actor | ear | mic | clone): pitch (F0), the strongest peaks and rough
formant estimates of the actual audio. Each is computed exactly and printed to 18 places, and each shows its
real accuracy beside it. Pitch varies frame to frame, peak frequencies are good to about a tenth of an FFT bin,
and formants to ±150 Hz. So usually only a few of the 18 digits mean anything, and the page says how many.
Every input is one record in a hash-chained log (ollywoo-event/1, the forge log's
convention):
Every response from the actor is one too. A response points to the input it answers.
Each record holds measures only:
Use /events verify to check the chain, /events download for the .event
file, and /events jsonld for the provenance version (PROV-O). The chain stays in this page until you
download it.
These are working concept prototypes.
.gesture (/gesture): with your camera on, MediaPipe's hand model (in this browser) finds 21
points on your hand. Simple stated rules name what the hand does: pinch, point, open, fist, and a swipe in four
directions. Each gesture goes into DeltaVerse's own gesture channel and into the event chain, with the
measurements it was decided from.
.airtype (/airtype): an on-screen keyboard.
/airtype dwell
700./airtype touch lets you touch-type in the air instead. It follows DeltaVerse's finger map
(engine/ngn/keyboard.gesture, which the page reads):
$), and Enter runs it. That is the
vterm, and /vterm shows it on the set..recognition (/recognition) shows what each sense last recognised: hand, air-typing,
speech and face. Every recognition is also an input in the event chain.
These only use your camera if you turned it on, and send nothing anywhere. They still need checking with a real hand in front of a real camera.
◉ capture opens the booth. It works the way GNOME Cheese does (photo, burst and video modes, a big shutter, a countdown and flash, a gallery along the bottom), but it is built here.
The source is your camera, the set itself (a screenshot of the 3D set, its background and the readings), or both side by side.
The modes:
/takeapic): uses the camera's own still where the browser offers one;
otherwise it saves what the preview shows. It records which way it used, and the camera's actual
resolution./burst 4 500): several stills at a fixed interval./record, /stop): records what the preview shows. Your mic and the
actor's voice are added only if you tick them.The gallery keeps this session's captures in the browser; save or delete each one. Every capture joins the event chain, with its size, kind, duration and hash, but never its pixels. If the camera picture is unusable (infrared or black), the booth asks before shooting, and labels the result.
Effects (/effects, ✦ in the booth) are simple filters that change how the picture
looks. None of them is an analysis:
Each actor in the cast has a default set of effects (ollywoo/effects/<actor>.effects). You
can change them and save your own to the playdocs wardrobe, in this browser. Captures record which effects they
went through.
Each browser capability the set uses is listed against its specification, with the maturity checked on w3.org, in STANDARDS.md.
The mouths are an oscilloscope over a scrolling spectrogram of the actual audio. There are two:
A voice the page cannot hear (your system's built-in speech voice) draws nothing.
vCLONE (/vclone) works like this:
/voicey/measure).Both recordings leave the browser for that measurement, and only when you ask for it.
fCLONE (/fclone) draws your captured face as its own triangles, with the measures the
capture produced:
Only these, and only when you act:
/voicey (plus your clone
reference id, if you made one);/docsplayer/render (or its
sentences to /voicey, when you read it in your cloned voice);/voicey/measure;/vclone file: a WAV goes to /voicey/ref;/vclone: your reference WAV and the clone's line go to /voicey/measure;Camera frames, face landmarks, dropped images and audio, enrolled faceprints (this browser's storage), colour picks, the forge log and the event chain all stay in the page. Forging and clips download to your machine.
Yes. ⦿ both turns both on: the set listens and sees at once. Press it again to stop both. The HUD line under the actor's name always shows what is on:
Stopping a sense releases the device, so your browser's recording light goes off.
Nothing on this page mints anything. The consent buttons record your word in a forge log (a hash-chained list of events, kept in the page). They then report whether a face or voice would be mintable under the rule.
A face is mintable only when all of these hold:
With a wallet in the browser, consent is signed (EIP-191 personal_sign). Without one, it is
recorded as an unsigned claim, not proof. ⊘ revoke records the withdrawal in the same log. A
cloned voice is not mintable yet, because the cloning engine's licence is not recorded as cleared.
The actor's voice comes from one of four tiers, and the HUD names which one spoke:
/voicey on this host. The actor's own lines are pre-rendered. Free text
is capped at 240 characters and rate-limited./ollywoo/personas.json;/voicey, with lip-sync from measured visemes when the
server has them;/mind probes whether a reasoning endpoint is reachable and reports the
answer. A trained ode is made by mindXtrain on a node, not in a browser.Press ⌨ console (or the ` key). The console has two modes:
/ to run a
command.Useful commands:
/help: every command./cast, /persona <id>: list the actors, or pick one./speak [line]: the actor speaks./mic, /cam, /both, /listen on|off|direct: the
senses./eye, /ear: the settings./drop [docs|actor]: give the ear a file./vclone [file|measure], /fclone: the clone checks./mouth on|off, /picture, /look: the mouths, and what the camera
delivers and sees./theme, /akeu: the actor's own head, and makeup./wardrobe, /studio: personas and voices from the playdocs studio./forge: make a .persona from what you captured./substrate on|off: the ground./faq: this page.When the mic is listening, what you say lands in the console input as a draft. Press 🔊 to have the
actor say it, or Enter to send it. With /listen direct, each phrase is sent straight away.
Say "irecto" and then a command (for example "irecto cam" or "irecto theme") to
run it by voice. While the actor is speaking, listening pauses, so the set does not hear itself.