Character
A face for your voice assistant: its gaze knows whose turn it is, and its mouth follows the voice.
A character is a face for your voice assistant. The gaze knows whose turn it is: it looks at you while you talk, looks up and away while it thinks, and blinks when your turn ends. The mouth follows only how loud the agent's voice is. Give it a voice source or an agent state, like every other object.
Want your own? A character is a recipe, and you can make your own from one of these in a single file.
When to use which pattern
| Pattern | pattern | Who it is | How it shows the voice |
|---|---|---|---|
| Buzzy | buzzy | A small space-hero assistant: a rounded helmet, a glass visor over a face screen, a voice core in the chest. | The mouth is a voice line: two even waves that flow, and the voice's level sets only their height, so it never jitters. While listening, sound arcs light at its ear pods with your voice. |
| Hum | hum | A vintage studio microphone that hosts the show, with its face on the grille. | The grille's slots light with the voice. A tally light is red while listening and blinks amber while thinking. |
| Wisp | wisp | A helpful spirit: a glowing head flowing into a curling smoke tail. | Its sparkles gather in while it listens, circle its head while it thinks and stream out with its voice. |
| Chirp | chirp | A songbird with teal wings and a feather crest. | The beak opens with the voice and little notes rise from it. While thinking, three thought dots light in turn. |
| Cuppa | cuppa | A coffee mug on its saucer. | Steam rises while it listens and thickens with its voice. |
| Bean | bean | A coffee bean on little feet, with aroma sparkles. | Its sparkles gather while it listens, circle while it thinks and stream out with its voice. |
| Beep | beep | A small tin robot with arms. | A hand goes to its ear to listen and to its chin to think, and its arms beat with the voice. arms: false takes them off. |
How it behaves
- The eyes are shapes. No pupils and no brows: the eye's shape is the expression, so it still reads at 20 px.
- It knows whose turn it is. It looks at you while listening, looks up and away while thinking, and blinks once as your turn ends.
- The mouth follows the voice's loudness. Nothing more: no lip-sync, so any voice source works.
- Effects are expressions.
successis^ ^eyes with a grin,errorisx xeyes with a short shake,celebrateis star eyes with a burst. - Muted, it squints and fades. Its colours stay.
- State changes are smooth. The eyes slide up as thinking starts; they don't jump.
Head turn
The head turns like a solid, not a flat sticker: the face slides round its surface and the body shows the turn. At rest it looks from corner to corner, listening it turns to you, thinking it looks up and away, and speaking it nods with the voice.
turn sets how far: the default is about ±25°, 1 is ±35° and 0 draws it flat. At 20 px the head doesn't turn, and with reduced motion only the facing of each state stays. It stays in the light cost class.
Expressions
expression gives the character a mood your app picks. It stays until you change it, and a change eases over 0.6 s.
expression | Eyes | Resting mouth |
|---|---|---|
happy | the happy arc | a smile |
surprised | wider and taller, lids open | a small "O" |
thoughtful | a lid, the left eye shorter, a slight tilt | a smile |
sad | a lid, outer corners dropped | a downturned line |
sleepy | heavy lids, a slow deep breath | a smile |
none | the character's own | its own |
- It sits on top of the voice state. The expression owns the eyes' shape; the state keeps the gaze, the head turn, the blinks and the talking mouth. A sad Bean still turns to you while you talk.
- Chirp and Hum have no resting mouth to change (a beak, a grille), so theirs is in the eyes only.
- Effects still play on top, and an expression is never announced.
- In an FX Spec,
expressioncan go in the file and in each state. The view's prop wins over the file's.
Tap reaction
A tap or a click on a character plays hop: it crouches, hops and lands with a little squash, smiles, and glances toward where you tapped. The voice state carries on underneath.
- It's on by default on
SinuaCharacterand<sinua-character>; the plainSinuaViewleaves it off. - A tap never cuts a running
success,errororcelebrate, and there are at most two hops a second. - With reduced motion it only smiles.
- Inside a tappable button or list row, set
tap: false, so the tap goes to your control and the character doesn't hop as well.
Palette
palette repaints some of a character's colours and leaves the rest as drawn: { body: "#E63946" }. To change only colours, this is all you need; no recipe.
- Slots are named by the part they paint, never by colour:
bodyis every character's main colour, andoutline,cheeksandshinemean the same everywhere. The eyes areeyeson a body face andglowon a screen face. An unknown slot is an error that suggests the closest name. - Tones follow. Given
body, itsbodyLightandbodyDarkmove with it. A tone you give yourself wins. - After
hue.huestill turns the slots it turns; a colour you give is never turned. - The eyes stay readable. When a new colour comes too close to the ink of the eyes and mouth, the ink moves to the far side, unless you set the ink too.
- Labels for a colour picker: every slot has a label and a one-line description in
spec/character-slot-labels.json, with the localization keysinua.slot.<character>.<slot>. - A change applies at once. In an FX Spec,
palettecan go in the file and in each state.
| Character | Slots (a slot marked +Light/Dark brings its tones) |
|---|---|
buzzy | body (+Light/Dark), outline, screen, accent, glow, visor, visorEdge, shine |
hum | body (+Light/Dark), stand (+Dark), grille, glow, outline, tallyListening, tallyThinking, tallyOff, shine |
wisp | body, bodyMid, tail, outline, eyes, sparkles, twinkles, shine |
chirp | body (+Light/Dark), belly, feathers, beak (+Dark), outline, eyes |
cuppa | mug (+Light/Dark), coffee, crema, sleeve (+Dark), heart, shine, cheeks, saucer (+Dark), outline, eyes, steam |
bean | body (+Light/Dark), groove, grooveEdge, shine, cheeks, aroma, foam, outline, eyes |
beep | body (+Light/Dark), arms, screen, glow, accent, tallyOff, tallyListening, tallyThinking, outline, rivets, cheeks |
Roles and the dark variant
A palette can also be written over roles, so one palette fits every character: each character maps primary, secondary and accent to its own slots.
{ primary: "#E63946" }paints by role, without knowing the slot names. Slots you write win over roles.- A role a character doesn't have is read as a slot name, so writing it is an error (Buzzy and Bean have no
secondary). - Dark theme:
{ primary: "#2E87C2", dark: { primary: "#2E6A9E" } }gives your own dark variant. The view picks it when the theme is dark.
| Character | primary | secondary | accent |
|---|---|---|---|
buzzy | body | — | accent |
hum | body | — | tallyListening |
wisp | body | bodyMid | tail |
chirp | body | belly | beak |
cuppa | mug | sleeve | heart |
bean | body | — | aroma |
beep | body | arms | accent |
A character keeps its own colours otherwise: color and gradient don't apply, and in an FX Spec they are an error.
The richer look
Airbrushed shading, rim light and film grain, with no blur: a character's soft shade masses and rim light give it depth, and grain lays a still, fine noise inside its body. The face stays crisp. shading turns the soft layers off and grain sets the amount; under low power both turn off.
The built-in characters are unchanged; a recipe adds the layers.
Options
| Prop | Default | What it does |
|---|---|---|
hue | 232 | Turns the character's main colour. The eyes and the accents stay. |
palette | none | Repaints colours by slot or role, with an optional dark variant (see Palette). |
expression | none | A mood: happy, surprised, thoughtful, sad, sleepy. |
grain | 0 | Film grain inside the body, 0 to 1. |
shading | on | The soft shading and rim light. |
tap | on | A tap plays a hop. Off inside a tappable control. |
mouth | on | Off draws eyes only. |
accessories | on | Off drops the extras: Buzzy's crest and ear arcs, Hum's tally light, Wisp's sparkles, Chirp's notes, Cuppa's steam. |
arms | on | Beep's arms. |
look | 1 | How much the eyes glance around on their own; 0 keeps them on the viewer. |
turn | 0.71 | How far the head turns; 0 is flat. |
seed | 0 | When it blinks and glances, so two characters side by side don't move in step. |
import { SinuaCharacter } from "@sinua/web/components";
import type { VoiceSource } from "@sinua/core";
// A character for your assistant: it looks at you while you talk, looks away while it
// thinks, and its mouth follows the agent's voice.
export function Assistant({ voice }: { voice: VoiceSource }) {
return (
<SinuaCharacter
pattern="buzzy"
voice={voice}
hue={190} // turns the body; the eyes and accents keep their colours
palette={{ accent: "#FFFFFF" }} // repaint a slot outright
expression="happy" // a mood your app picks; the voice state still moves it
label="Buzzy"
labels={{ listening: "Buzzy is listening", speaking: "Buzzy is speaking" }}
style={{ width: 160, height: 160 }}
/>
);
}
On the web it's also a tag: <sinua-character pattern="buzzy" hue="190">, with palette as a property.
Props
Every prop, per pattern. Besides the options above, the pose values the states set (gazeX, lid, eyeSmile, …) are props too, so you can tune how a state looks. Defaults can differ per size (20 · 32 · 64).
The character component is SinuaCharacter. Pick a look with pattern; each pattern reads the props below. Sizes are engine sizes (20, 32, 64): defaults can differ per size.
| Pattern | Mode | Speed | Values (app data) |
|---|---|---|---|
Buzzy (buzzy) | buzzy | 1× | — |
Hum (hum) | hum | 1× | — |
Wisp (wisp) | wisp | 1× | — |
Chirp (chirp) | chirp | 1× | — |
Cuppa (cuppa) | cuppa | 1× | — |
Bean (bean) | bean | 1× | — |
Beep (beep) | beep | 1× | — |
Buzzy
pattern: "buzzy" · mode buzzy · speed 1× · sizes 20, 32, 64
| Prop | Category | Type | Range | Default | Description |
|---|---|---|---|---|---|
accessories | Appearance | boolean | 1 | The character's extras: Buzzy's crest, ear chevrons and listening arcs; Hum's tally light; Wisp's sparkles; Chirp's notes and thought dots. | |
grain | Appearance | number | 0–1 (UI 0–0.2) | 0 | Film grain inside the character's bodies (FX Spec 1.13): a fine, still noise of light and dark specks. 0 = none; a recipe's grain sets its default. Left out at 20 px; an FX Spec resolved under low power turns it off. |
hue | Appearance | number | 0–360 deg | 232 | Turns the shell's colour (and its line and screen tints) in degrees; the eyes and the amber accents stay. |
ink | Appearance | number | 0–1 fraction | 1 | How present the whole visual is: 1 draws it as the pattern defines it, lower fades everything including its halos. A voice assistant rests below 1 when idle and comes to full ink when it listens. |
mouth | Appearance | boolean | 1 | Draw the mouth (Buzzy's voice line, Hum's lit grille, Wisp's opening oval, Chirp's beak); off keeps it at rest. | |
shading | Appearance | boolean | 1 | Whether a recipe's soft layers draw: shade masses (airbrushed shadows, highlights, a blush) and rim light (FX Spec 1.13). An FX Spec resolved under low power turns them off. | |
look | Motion | number | 0–2 | 1 | How much the eyes glance around on their own while idle (0 = always at the viewer). |
seed | Motion | integer | 0–∞ (UI 0–20) | 0 | Changes when it blinks and glances, so two characters side by side don't move in sync. |
turn | Motion | number | 0–1 | 0.71 | How far the head turns like a solid (0 = flat, 1 = ±35°; the default is ±25°). |
Advanced props (23)
| Prop | Category | Type | Range | Default | Description |
|---|---|---|---|---|---|
eyeAsym | Appearance | number | 0–0.6 | 0 | Makes the left eye shorter (a quizzical look). |
eyeH | Appearance | number | 8–40 | 26 | Eye height, in design units. |
eyeR | Appearance | number | 0–20 | 8 | Eye corner radius, in design units. |
eyeSmile | Appearance | number | 0–1 | 0 | The happy arc cut from below the eyes. |
eyeTilt | Appearance | number | -1–1 | 0 | Slope of the lid: positive lowers the outer corners (pensive). |
eyeW | Appearance | number | 8–36 | 20 | Eye width, in the character's 200-unit design box. |
lid | Appearance | number | 0–0.9 | 0 | How far the top lid comes down (a squint), 0 to 0.9 of the eye. |
mouthDots | Appearance | number | 0–1 | 0 | Above 0.5 the mouth is three thinking dots. |
mouthTalk | Appearance | number | 0–1 | 0 | Above 0.5 the mouth is the voice line (speaking). |
gazeX | Motion | number | -14–14 | 0 | Where the eyes look, sideways, in design units (negative = left). |
gazeY | Motion | number | -12–12 | 0 | Where the eyes look, up and down, in design units (negative = up). |
lean | Motion | number | -8–8 | 0 | Leans the whole character toward the viewer (design units). |
tilt | Motion | number | -0.3–0.3 | 0 | Tilts the whole character (radians; positive = clockwise). |
turnBlink | Motion | number | 0–1 | 0 | Blink once as this state starts (the end of the user's turn). |
turnNod | Motion | number | 0–1 | 0 | How much the head nods with the voice level. |
turnPitch | Motion | number | -1–1 | 0 | Where this state faces, up or down (-1..1 of the turn; positive = up). |
turnWander | Motion | number | 0–1 | 0 | How much the head looks from corner to corner on its own, holding each look. |
turnYaw | Motion | number | -1–1 | 0 | Where this state faces, sideways (-1..1 of the turn; negative = the viewer's left). |
bounceGain | Energy | number | 0–8 | 0 | How far the voice lifts the body while speaking (design units). |
breath | Energy | number | 0–2 | 0 | Idle breathing bob. |
earGain | Energy | number | 0–1 | 0 | How strongly the listening sound arcs show with the user's level. |
mouthGain | Energy | number | 0–2 | 0 | How far the voice line swings with the level. |
squashGain | Energy | number | 0–0.12 | 0 | How much the voice squashes the body while speaking. |
Hum
pattern: "hum" · mode hum · speed 1× · sizes 20, 32, 64
| Prop | Category | Type | Range | Default | Description |
|---|---|---|---|---|---|
accessories | Appearance | boolean | 1 | The character's extras: Buzzy's crest, ear chevrons and listening arcs; Hum's tally light; Wisp's sparkles; Chirp's notes and thought dots. | |
grain | Appearance | number | 0–1 (UI 0–0.2) | 0 | Film grain inside the character's bodies (FX Spec 1.13): a fine, still noise of light and dark specks. 0 = none; a recipe's grain sets its default. Left out at 20 px; an FX Spec resolved under low power turns it off. |
hue | Appearance | number | 0–360 deg | 9 | Turns the capsule's colour in degrees; the brass, the grille, the eyes and the tally stay. |
ink | Appearance | number | 0–1 fraction | 1 | How present the whole visual is: 1 draws it as the pattern defines it, lower fades everything including its halos. A voice assistant rests below 1 when idle and comes to full ink when it listens. |
mouth | Appearance | boolean | 1 | Draw the mouth (Buzzy's voice line, Hum's lit grille, Wisp's opening oval, Chirp's beak); off keeps it at rest. | |
shading | Appearance | boolean | 1 | Whether a recipe's soft layers draw: shade masses (airbrushed shadows, highlights, a blush) and rim light (FX Spec 1.13). An FX Spec resolved under low power turns them off. | |
look | Motion | number | 0–2 | 1 | How much the eyes glance around on their own while idle (0 = always at the viewer). |
seed | Motion | integer | 0–∞ (UI 0–20) | 0 | Changes when it blinks and glances, so two characters side by side don't move in sync. |
turn | Motion | number | 0–1 | 0.71 | How far the head turns like a solid (0 = flat, 1 = ±35°; the default is ±25°). |
Advanced props (24)
| Prop | Category | Type | Range | Default | Description |
|---|---|---|---|---|---|
eyeAsym | Appearance | number | 0–0.6 | 0 | Makes the left eye shorter (a quizzical look). |
eyeH | Appearance | number | 8–40 | 26 | Eye height, in design units. |
eyeR | Appearance | number | 0–20 | 8 | Eye corner radius, in design units. |
eyeSmile | Appearance | number | 0–1 | 0 | The happy arc cut from below the eyes. |
eyeTilt | Appearance | number | -1–1 | 0 | Slope of the lid: positive lowers the outer corners (pensive). |
eyeW | Appearance | number | 8–36 | 20 | Eye width, in the character's 200-unit design box. |
lid | Appearance | number | 0–0.9 | 0 | How far the top lid comes down (a squint), 0 to 0.9 of the eye. |
mouthDots | Appearance | number | 0–1 | 0 | Above 0.5 the mouth is three thinking dots. |
mouthTalk | Appearance | number | 0–1 | 0 | Above 0.5 the mouth is the voice line (speaking). |
gazeX | Motion | number | -14–14 | 0 | Where the eyes look, sideways, in design units (negative = left). |
gazeY | Motion | number | -12–12 | 0 | Where the eyes look, up and down, in design units (negative = up). |
lean | Motion | number | -8–8 | 0 | Leans the whole character toward the viewer (design units). |
tilt | Motion | number | -0.3–0.3 | 0 | Tilts the whole character (radians; positive = clockwise). |
turnBlink | Motion | number | 0–1 | 0 | Blink once as this state starts (the end of the user's turn). |
turnNod | Motion | number | 0–1 | 0 | How much the head nods with the voice level. |
turnPitch | Motion | number | -1–1 | 0 | Where this state faces, up or down (-1..1 of the turn; positive = up). |
turnWander | Motion | number | 0–1 | 0 | How much the head looks from corner to corner on its own, holding each look. |
turnYaw | Motion | number | -1–1 | 0 | Where this state faces, sideways (-1..1 of the turn; negative = the viewer's left). |
bounceGain | Energy | number | 0–8 | 0 | How far the voice lifts the body while speaking (design units). |
breath | Energy | number | 0–2 | 0 | Idle breathing bob. |
earGain | Energy | number | 0–1 | 0 | How strongly the listening sound arcs show with the user's level. |
mouthGain | Energy | number | 0–2 | 0 | How far the voice line swings with the level. |
squashGain | Energy | number | 0–0.12 | 0 | How much the voice squashes the body while speaking. |
swayGain | Energy | number | 0–0.15 | 0 | How far the capsule sways on its yoke with the voice while speaking (radians). |
Wisp
pattern: "wisp" · mode wisp · speed 1× · sizes 20, 32, 64
| Prop | Category | Type | Range | Default | Description |
|---|---|---|---|---|---|
accessories | Appearance | boolean | 1 | The character's extras: Buzzy's crest, ear chevrons and listening arcs; Hum's tally light; Wisp's sparkles; Chirp's notes and thought dots. | |
grain | Appearance | number | 0–1 (UI 0–0.2) | 0 | Film grain inside the character's bodies (FX Spec 1.13): a fine, still noise of light and dark specks. 0 = none; a recipe's grain sets its default. Left out at 20 px; an FX Spec resolved under low power turns it off. |
hue | Appearance | number | 0–360 deg | 253 | Turns the spirit's colour (violet and teal together) in degrees; the sparkles and the eyes stay. |
ink | Appearance | number | 0–1 fraction | 1 | How present the whole visual is: 1 draws it as the pattern defines it, lower fades everything including its halos. A voice assistant rests below 1 when idle and comes to full ink when it listens. |
mouth | Appearance | boolean | 1 | Draw the mouth (Buzzy's voice line, Hum's lit grille, Wisp's opening oval, Chirp's beak); off keeps it at rest. | |
shading | Appearance | boolean | 1 | Whether a recipe's soft layers draw: shade masses (airbrushed shadows, highlights, a blush) and rim light (FX Spec 1.13). An FX Spec resolved under low power turns them off. | |
look | Motion | number | 0–2 | 1 | How much the eyes glance around on their own while idle (0 = always at the viewer). |
seed | Motion | integer | 0–∞ (UI 0–20) | 0 | Changes when it blinks and glances, so two characters side by side don't move in sync. |
turn | Motion | number | 0–1 | 0.71 | How far the head turns like a solid (0 = flat, 1 = ±35°; the default is ±25°). |
Advanced props (24)
| Prop | Category | Type | Range | Default | Description |
|---|---|---|---|---|---|
curlGain | Appearance | number | 0–2 | 0.6 | How tightly the smoke tail curls (thinking curls it most). |
eyeAsym | Appearance | number | 0–0.6 | 0 | Makes the left eye shorter (a quizzical look). |
eyeH | Appearance | number | 8–40 | 26 | Eye height, in design units. |
eyeR | Appearance | number | 0–20 | 8 | Eye corner radius, in design units. |
eyeSmile | Appearance | number | 0–1 | 0 | The happy arc cut from below the eyes. |
eyeTilt | Appearance | number | -1–1 | 0 | Slope of the lid: positive lowers the outer corners (pensive). |
eyeW | Appearance | number | 8–36 | 20 | Eye width, in the character's 200-unit design box. |
lid | Appearance | number | 0–0.9 | 0 | How far the top lid comes down (a squint), 0 to 0.9 of the eye. |
mouthDots | Appearance | number | 0–1 | 0 | Above 0.5 the mouth is three thinking dots. |
mouthTalk | Appearance | number | 0–1 | 0 | Above 0.5 the mouth is the voice line (speaking). |
gazeX | Motion | number | -14–14 | 0 | Where the eyes look, sideways, in design units (negative = left). |
gazeY | Motion | number | -12–12 | 0 | Where the eyes look, up and down, in design units (negative = up). |
lean | Motion | number | -8–8 | 0 | Leans the whole character toward the viewer (design units). |
tilt | Motion | number | -0.3–0.3 | 0 | Tilts the whole character (radians; positive = clockwise). |
turnBlink | Motion | number | 0–1 | 0 | Blink once as this state starts (the end of the user's turn). |
turnNod | Motion | number | 0–1 | 0 | How much the head nods with the voice level. |
turnPitch | Motion | number | -1–1 | 0 | Where this state faces, up or down (-1..1 of the turn; positive = up). |
turnWander | Motion | number | 0–1 | 0 | How much the head looks from corner to corner on its own, holding each look. |
turnYaw | Motion | number | -1–1 | 0 | Where this state faces, sideways (-1..1 of the turn; negative = the viewer's left). |
bounceGain | Energy | number | 0–8 | 0 | How far the voice lifts the body while speaking (design units). |
breath | Energy | number | 0–2 | 0 | Idle breathing bob. |
earGain | Energy | number | 0–1 | 0 | How strongly the listening sound arcs show with the user's level. |
mouthGain | Energy | number | 0–2 | 0 | How far the voice line swings with the level. |
squashGain | Energy | number | 0–0.12 | 0 | How much the voice squashes the body while speaking. |
Chirp
pattern: "chirp" · mode chirp · speed 1× · sizes 20, 32, 64
| Prop | Category | Type | Range | Default | Description |
|---|---|---|---|---|---|
accessories | Appearance | boolean | 1 | The character's extras: Buzzy's crest, ear chevrons and listening arcs; Hum's tally light; Wisp's sparkles; Chirp's notes and thought dots. | |
grain | Appearance | number | 0–1 (UI 0–0.2) | 0 | Film grain inside the character's bodies (FX Spec 1.13): a fine, still noise of light and dark specks. 0 = none; a recipe's grain sets its default. Left out at 20 px; an FX Spec resolved under low power turns it off. |
hue | Appearance | number | 0–360 deg | 12 | Turns the bird's coral body in degrees; the crest, wings, beak and eyes stay. |
ink | Appearance | number | 0–1 fraction | 1 | How present the whole visual is: 1 draws it as the pattern defines it, lower fades everything including its halos. A voice assistant rests below 1 when idle and comes to full ink when it listens. |
mouth | Appearance | boolean | 1 | Draw the mouth (Buzzy's voice line, Hum's lit grille, Wisp's opening oval, Chirp's beak); off keeps it at rest. | |
shading | Appearance | boolean | 1 | Whether a recipe's soft layers draw: shade masses (airbrushed shadows, highlights, a blush) and rim light (FX Spec 1.13). An FX Spec resolved under low power turns them off. | |
look | Motion | number | 0–2 | 1 | How much the eyes glance around on their own while idle (0 = always at the viewer). |
seed | Motion | integer | 0–∞ (UI 0–20) | 0 | Changes when it blinks and glances, so two characters side by side don't move in sync. |
turn | Motion | number | 0–1 | 0.71 | How far the head turns like a solid (0 = flat, 1 = ±35°; the default is ±25°). |
Advanced props (24)
| Prop | Category | Type | Range | Default | Description |
|---|---|---|---|---|---|
eyeAsym | Appearance | number | 0–0.6 | 0 | Makes the left eye shorter (a quizzical look). |
eyeH | Appearance | number | 8–40 | 26 | Eye height, in design units. |
eyeR | Appearance | number | 0–20 | 8 | Eye corner radius, in design units. |
eyeSmile | Appearance | number | 0–1 | 0 | The happy arc cut from below the eyes. |
eyeTilt | Appearance | number | -1–1 | 0 | Slope of the lid: positive lowers the outer corners (pensive). |
eyeW | Appearance | number | 8–36 | 20 | Eye width, in the character's 200-unit design box. |
lid | Appearance | number | 0–0.9 | 0 | How far the top lid comes down (a squint), 0 to 0.9 of the eye. |
mouthDots | Appearance | number | 0–1 | 0 | Above 0.5 the mouth is three thinking dots. |
mouthTalk | Appearance | number | 0–1 | 0 | Above 0.5 the mouth is the voice line (speaking). |
gazeX | Motion | number | -14–14 | 0 | Where the eyes look, sideways, in design units (negative = left). |
gazeY | Motion | number | -12–12 | 0 | Where the eyes look, up and down, in design units (negative = up). |
lean | Motion | number | -8–8 | 0 | Leans the whole character toward the viewer (design units). |
tilt | Motion | number | -0.3–0.3 | 0 | Tilts the whole character (radians; positive = clockwise). |
turnBlink | Motion | number | 0–1 | 0 | Blink once as this state starts (the end of the user's turn). |
turnNod | Motion | number | 0–1 | 0 | How much the head nods with the voice level. |
turnPitch | Motion | number | -1–1 | 0 | Where this state faces, up or down (-1..1 of the turn; positive = up). |
turnWander | Motion | number | 0–1 | 0 | How much the head looks from corner to corner on its own, holding each look. |
turnYaw | Motion | number | -1–1 | 0 | Where this state faces, sideways (-1..1 of the turn; negative = the viewer's left). |
bounceGain | Energy | number | 0–8 | 0 | How far the voice lifts the body while speaking (design units). |
breath | Energy | number | 0–2 | 0 | Idle breathing bob. |
earGain | Energy | number | 0–1 | 0 | How strongly the listening sound arcs show with the user's level. |
flutterGain | Energy | number | 0–0.6 | 0 | How much the wings flutter with the voice while speaking (radians). |
mouthGain | Energy | number | 0–2 | 0 | How far the voice line swings with the level. |
squashGain | Energy | number | 0–0.12 | 0 | How much the voice squashes the body while speaking. |
Cuppa
pattern: "cuppa" · mode cuppa · speed 1× · sizes 20, 32, 64
| Prop | Category | Type | Range | Default | Description |
|---|---|---|---|---|---|
accessories | Appearance | boolean | 1 | The character's extras: Buzzy's crest, ear chevrons and listening arcs; Hum's tally light; Wisp's sparkles; Chirp's notes and thought dots. | |
grain | Appearance | number | 0–1 (UI 0–0.2) | 0 | Film grain inside the character's bodies (FX Spec 1.13): a fine, still noise of light and dark specks. 0 = none; a recipe's grain sets its default. Left out at 20 px; an FX Spec resolved under low power turns it off. |
hue | Appearance | number | 0–360 deg | 12 | Turns the mug's colour in degrees; the coffee, the sleeve and the heart stay. |
ink | Appearance | number | 0–1 fraction | 1 | How present the whole visual is: 1 draws it as the pattern defines it, lower fades everything including its halos. A voice assistant rests below 1 when idle and comes to full ink when it listens. |
mouth | Appearance | boolean | 1 | Draw the mouth (Buzzy's voice line, Hum's lit grille, Wisp's opening oval, Chirp's beak); off keeps it at rest. | |
shading | Appearance | boolean | 1 | Whether a recipe's soft layers draw: shade masses (airbrushed shadows, highlights, a blush) and rim light (FX Spec 1.13). An FX Spec resolved under low power turns them off. | |
look | Motion | number | 0–2 | 1 | How much the eyes glance around on their own while idle (0 = always at the viewer). |
seed | Motion | integer | 0–∞ (UI 0–20) | 0 | Changes when it blinks and glances, so two characters side by side don't move in sync. |
turn | Motion | number | 0–1 | 0.71 | How far the head turns like a solid (0 = flat, 1 = ±35°; the default is ±25°). |
Advanced props (23)
| Prop | Category | Type | Range | Default | Description |
|---|---|---|---|---|---|
eyeAsym | Appearance | number | 0–0.6 | 0 | Makes the left eye shorter (a quizzical look). |
eyeH | Appearance | number | 8–40 | 26 | Eye height, in design units. |
eyeR | Appearance | number | 0–20 | 8 | Eye corner radius, in design units. |
eyeSmile | Appearance | number | 0–1 | 0 | The happy arc cut from below the eyes. |
eyeTilt | Appearance | number | -1–1 | 0 | Slope of the lid: positive lowers the outer corners (pensive). |
eyeW | Appearance | number | 8–36 | 20 | Eye width, in the character's 200-unit design box. |
lid | Appearance | number | 0–0.9 | 0 | How far the top lid comes down (a squint), 0 to 0.9 of the eye. |
mouthDots | Appearance | number | 0–1 | 0 | Above 0.5 the mouth is three thinking dots. |
mouthTalk | Appearance | number | 0–1 | 0 | Above 0.5 the mouth is the voice line (speaking). |
gazeX | Motion | number | -14–14 | 0 | Where the eyes look, sideways, in design units (negative = left). |
gazeY | Motion | number | -12–12 | 0 | Where the eyes look, up and down, in design units (negative = up). |
lean | Motion | number | -8–8 | 0 | Leans the whole character toward the viewer (design units). |
tilt | Motion | number | -0.3–0.3 | 0 | Tilts the whole character (radians; positive = clockwise). |
turnBlink | Motion | number | 0–1 | 0 | Blink once as this state starts (the end of the user's turn). |
turnNod | Motion | number | 0–1 | 0 | How much the head nods with the voice level. |
turnPitch | Motion | number | -1–1 | 0 | Where this state faces, up or down (-1..1 of the turn; positive = up). |
turnWander | Motion | number | 0–1 | 0 | How much the head looks from corner to corner on its own, holding each look. |
turnYaw | Motion | number | -1–1 | 0 | Where this state faces, sideways (-1..1 of the turn; negative = the viewer's left). |
bounceGain | Energy | number | 0–8 | 0 | How far the voice lifts the body while speaking (design units). |
breath | Energy | number | 0–2 | 0 | Idle breathing bob. |
earGain | Energy | number | 0–1 | 0 | How strongly the listening sound arcs show with the user's level. |
mouthGain | Energy | number | 0–2 | 0 | How far the voice line swings with the level. |
squashGain | Energy | number | 0–0.12 | 0 | How much the voice squashes the body while speaking. |
Bean
pattern: "bean" · mode bean · speed 1× · sizes 20, 32, 64
| Prop | Category | Type | Range | Default | Description |
|---|---|---|---|---|---|
accessories | Appearance | boolean | 1 | The character's extras: Buzzy's crest, ear chevrons and listening arcs; Hum's tally light; Wisp's sparkles; Chirp's notes and thought dots. | |
grain | Appearance | number | 0–1 (UI 0–0.2) | 0 | Film grain inside the character's bodies (FX Spec 1.13): a fine, still noise of light and dark specks. 0 = none; a recipe's grain sets its default. Left out at 20 px; an FX Spec resolved under low power turns it off. |
hue | Appearance | number | 0–360 deg | 24 | Turns the bean's roast in degrees; the cheeks and the aroma stay. |
ink | Appearance | number | 0–1 fraction | 1 | How present the whole visual is: 1 draws it as the pattern defines it, lower fades everything including its halos. A voice assistant rests below 1 when idle and comes to full ink when it listens. |
mouth | Appearance | boolean | 1 | Draw the mouth (Buzzy's voice line, Hum's lit grille, Wisp's opening oval, Chirp's beak); off keeps it at rest. | |
shading | Appearance | boolean | 1 | Whether a recipe's soft layers draw: shade masses (airbrushed shadows, highlights, a blush) and rim light (FX Spec 1.13). An FX Spec resolved under low power turns them off. | |
look | Motion | number | 0–2 | 1 | How much the eyes glance around on their own while idle (0 = always at the viewer). |
seed | Motion | integer | 0–∞ (UI 0–20) | 0 | Changes when it blinks and glances, so two characters side by side don't move in sync. |
turn | Motion | number | 0–1 | 0.71 | How far the head turns like a solid (0 = flat, 1 = ±35°; the default is ±25°). |
Advanced props (23)
| Prop | Category | Type | Range | Default | Description |
|---|---|---|---|---|---|
eyeAsym | Appearance | number | 0–0.6 | 0 | Makes the left eye shorter (a quizzical look). |
eyeH | Appearance | number | 8–40 | 26 | Eye height, in design units. |
eyeR | Appearance | number | 0–20 | 8 | Eye corner radius, in design units. |
eyeSmile | Appearance | number | 0–1 | 0 | The happy arc cut from below the eyes. |
eyeTilt | Appearance | number | -1–1 | 0 | Slope of the lid: positive lowers the outer corners (pensive). |
eyeW | Appearance | number | 8–36 | 20 | Eye width, in the character's 200-unit design box. |
lid | Appearance | number | 0–0.9 | 0 | How far the top lid comes down (a squint), 0 to 0.9 of the eye. |
mouthDots | Appearance | number | 0–1 | 0 | Above 0.5 the mouth is three thinking dots. |
mouthTalk | Appearance | number | 0–1 | 0 | Above 0.5 the mouth is the voice line (speaking). |
gazeX | Motion | number | -14–14 | 0 | Where the eyes look, sideways, in design units (negative = left). |
gazeY | Motion | number | -12–12 | 0 | Where the eyes look, up and down, in design units (negative = up). |
lean | Motion | number | -8–8 | 0 | Leans the whole character toward the viewer (design units). |
tilt | Motion | number | -0.3–0.3 | 0 | Tilts the whole character (radians; positive = clockwise). |
turnBlink | Motion | number | 0–1 | 0 | Blink once as this state starts (the end of the user's turn). |
turnNod | Motion | number | 0–1 | 0 | How much the head nods with the voice level. |
turnPitch | Motion | number | -1–1 | 0 | Where this state faces, up or down (-1..1 of the turn; positive = up). |
turnWander | Motion | number | 0–1 | 0 | How much the head looks from corner to corner on its own, holding each look. |
turnYaw | Motion | number | -1–1 | 0 | Where this state faces, sideways (-1..1 of the turn; negative = the viewer's left). |
bounceGain | Energy | number | 0–8 | 0 | How far the voice lifts the body while speaking (design units). |
breath | Energy | number | 0–2 | 0 | Idle breathing bob. |
earGain | Energy | number | 0–1 | 0 | How strongly the listening sound arcs show with the user's level. |
mouthGain | Energy | number | 0–2 | 0 | How far the voice line swings with the level. |
squashGain | Energy | number | 0–0.12 | 0 | How much the voice squashes the body while speaking. |
Beep
pattern: "beep" · mode beep · speed 1× · sizes 20, 32, 64
| Prop | Category | Type | Range | Default | Description |
|---|---|---|---|---|---|
accessories | Appearance | boolean | 1 | The character's extras: Buzzy's crest, ear chevrons and listening arcs; Hum's tally light; Wisp's sparkles; Chirp's notes and thought dots. | |
arms | Appearance | boolean | 1 | The character's arms (Beep): a hand to the ear while listening, to the chin while thinking, beats while speaking. Off: no arms. | |
grain | Appearance | number | 0–1 (UI 0–0.2) | 0 | Film grain inside the character's bodies (FX Spec 1.13): a fine, still noise of light and dark specks. 0 = none; a recipe's grain sets its default. Left out at 20 px; an FX Spec resolved under low power turns it off. |
hue | Appearance | number | 0–360 deg | 200 | Turns the robot's steel in degrees; the screen, the orange accents and the antenna light stay. |
ink | Appearance | number | 0–1 fraction | 1 | How present the whole visual is: 1 draws it as the pattern defines it, lower fades everything including its halos. A voice assistant rests below 1 when idle and comes to full ink when it listens. |
mouth | Appearance | boolean | 1 | Draw the mouth (Buzzy's voice line, Hum's lit grille, Wisp's opening oval, Chirp's beak); off keeps it at rest. | |
shading | Appearance | boolean | 1 | Whether a recipe's soft layers draw: shade masses (airbrushed shadows, highlights, a blush) and rim light (FX Spec 1.13). An FX Spec resolved under low power turns them off. | |
look | Motion | number | 0–2 | 1 | How much the eyes glance around on their own while idle (0 = always at the viewer). |
seed | Motion | integer | 0–∞ (UI 0–20) | 0 | Changes when it blinks and glances, so two characters side by side don't move in sync. |
turn | Motion | number | 0–1 | 0.71 | How far the head turns like a solid (0 = flat, 1 = ±35°; the default is ±25°). |
Advanced props (23)
| Prop | Category | Type | Range | Default | Description |
|---|---|---|---|---|---|
eyeAsym | Appearance | number | 0–0.6 | 0 | Makes the left eye shorter (a quizzical look). |
eyeH | Appearance | number | 8–40 | 26 | Eye height, in design units. |
eyeR | Appearance | number | 0–20 | 8 | Eye corner radius, in design units. |
eyeSmile | Appearance | number | 0–1 | 0 | The happy arc cut from below the eyes. |
eyeTilt | Appearance | number | -1–1 | 0 | Slope of the lid: positive lowers the outer corners (pensive). |
eyeW | Appearance | number | 8–36 | 20 | Eye width, in the character's 200-unit design box. |
lid | Appearance | number | 0–0.9 | 0 | How far the top lid comes down (a squint), 0 to 0.9 of the eye. |
mouthDots | Appearance | number | 0–1 | 0 | Above 0.5 the mouth is three thinking dots. |
mouthTalk | Appearance | number | 0–1 | 0 | Above 0.5 the mouth is the voice line (speaking). |
gazeX | Motion | number | -14–14 | 0 | Where the eyes look, sideways, in design units (negative = left). |
gazeY | Motion | number | -12–12 | 0 | Where the eyes look, up and down, in design units (negative = up). |
lean | Motion | number | -8–8 | 0 | Leans the whole character toward the viewer (design units). |
tilt | Motion | number | -0.3–0.3 | 0 | Tilts the whole character (radians; positive = clockwise). |
turnBlink | Motion | number | 0–1 | 0 | Blink once as this state starts (the end of the user's turn). |
turnNod | Motion | number | 0–1 | 0 | How much the head nods with the voice level. |
turnPitch | Motion | number | -1–1 | 0 | Where this state faces, up or down (-1..1 of the turn; positive = up). |
turnWander | Motion | number | 0–1 | 0 | How much the head looks from corner to corner on its own, holding each look. |
turnYaw | Motion | number | -1–1 | 0 | Where this state faces, sideways (-1..1 of the turn; negative = the viewer's left). |
bounceGain | Energy | number | 0–8 | 0 | How far the voice lifts the body while speaking (design units). |
breath | Energy | number | 0–2 | 0 | Idle breathing bob. |
earGain | Energy | number | 0–1 | 0 | How strongly the listening sound arcs show with the user's level. |
mouthGain | Energy | number | 0–2 | 0 | How far the voice line swings with the level. |
squashGain | Energy | number | 0–0.12 | 0 | How much the voice squashes the body while speaking. |