Generator node
Kinetic Text
Kinetic typography for Transcription Segments: every word animates by its OWN age — fade, slide up, scale in or typewriter on arrival; hold, fade or drift away after Decay Time. Volatile words (still being guessed) render as a ghost tail that snaps solid on finalization — the correction is the animation. Ages come from the DATA, so a Timeline scrub replays the choreography deterministically. Greedy word-wrap against Max Width, alignment, per-word draw bounded at 128 words with fingerprint-cached layout.
Inputs
| Port | Type | Default |
|---|---|---|
| EnableOff: the node's texture is cleared and nothing draws. The page/box state is kept, so re-enabling continues where it was. | bool | true |
| SegmentsThe word stream from a Transcription node's Segments output (per-word text, timing, sentence ids). Live streams write through the paced page writer; Timeline files play karaoke-exact on the audio clock — scrub-safe. | structure | — |
| SizeFont size in Grafit units (cap height ≈ this tall on screen). Default 0.08. Not clamped; the Block box auto-shrinks text that cannot fit. | float | 0.08 |
| ColorText RGBA. Alpha multiplies every word on top of its animation; the box outline and caret reuse the RGB. | color | — |
| AppearHow a word enters: Fade, Slide Up, Scale In, or Typewriter (left-to-right reveal). The same animation plays in REVERSE when a full page clears or a Block sentence swaps out. | int | 0 |
| Appear TimeEntrance duration in seconds when Auto Timing is off (and for Live words, which carry no spoken duration). The page-clear animation has its own knobs: Clear and Clear Time. | float | 0.25 |
| Auto TimingOn (default): the node paces itself — Timeline entrances last each word's SPOKEN duration (0.06–0.6 s, karaoke-exact), live words land on an adaptive ~0.24 s beat. Off: you set the pace — Word Interval (live beat) and Appear/Decay Time knobs rule. | bool | true |
| Word IntervalSeconds between word reveals when Auto Timing is off — the writing beat of a LIVE stream (0.25 = four words a second; clamped 0.05–5, compresses temporarily when speech runs ahead). Timeline ignores it: there each word lands at its spoken moment. | float | 0.25 |
| DecayWHEN a word leaves: Hold keeps it until the page clears; Clear Out lets it leave early — after Decay Words (live) or Hold Time (Timeline), over Decay Time. HOW it leaves is always the Clear style — one unified exit language. | int | 0 |
| Decay TimeHow many seconds the LEAVE animation takes once a word's hold is over — the speed of the Fade/Drift itself, on both clocks. Small = words snap away, large = long dissolves. Clamped to at least 0.05. Ignored on Hold. | float | 0.6 |
| Hold TimeTimeline: seconds a word holds before its leave begins. With Auto Timing on, the whole sentence holds until it ENDS and starts leaving this many seconds later; off, each word counts from its own entrance. 0 = leave immediately. Live streams count words instead (Decay Words). | float | 2 |
| Decay WordsLive: how many of the newest words stay — a word starts leaving once this many newer ones are written (the visible tail is a word count, not seconds). 0 = no per-word decay: the page fills the whole area and only a full page clears. Timeline uses Hold Time instead. | int | 8 |
| ClearThe ONE exit style — page clears AND per-word Decay both use it. Unwrite erases along the writing direction (the pen re-tracing); Backspace un-writes from the end; Together fades at once; Instant is a hard cut; Drift floats the words up as they fade. | int | 0 |
| Clear TimeTotal seconds the clear takes, start to finish, whatever the word count (clamped 0.05–10). The live writer waits this long after a page turn before writing on — fresh ink never lands on leaving words. Hidden on Instant. | float | 0.8 |
| LayoutPage: words write onto a fixed page that fills to the brim, then clears by the appear animation reversed — nothing ever moves. Block: one sentence fitted into the Max Width × Box Height box, crossfading at sentence boundaries (a Live stream routes Block through the page writer too). | int | 0 |
| Sentence BreakPage mode: what a sentence end does. Flow (default) keeps filling the area width-first; New Line starts a fresh line; New Page clears the page. With Max Lines 0 + Flow the page never clears — pair with Decay. | int | 0 |
| Max WidthWrap width in Grafit units (viewport short edge = 2). 0 = single line, no wrapping. In Block mode this is the box width; the debug outline shows it. | float | 1.7 |
| Max LinesPage height in lines — a word that would need one more turns the page. 0 = unlimited (the page then only clears on Sentence Break: New Page). Block mode ignores it; Box Height rules there. | int | 6 |
| Box HeightBlock only, Grafit units. 0 = the box grows with the text. >0 = hard frame: text auto-shrinks until it fits Max Width × this height. Also sets the live page frame's line capacity. | float | 0 |
| Box DebugDraws the Max Width × Box Height outline at 40% alpha so the frame can be composed before any words exist. Design aid only — not part of the output look. | bool | false |
| CaretLive only: a blinking write caret at the page cursor — the 'someone is writing this down' feedback that bridges the recognizer's latency. | bool | true |
| SpeakingLive only: cable Transcription's Speaking output here — the caret turns solid while speech is actually heard, blinks while idle. | bool | false |
| Line GapSpace between lines in Grafit units, added to the measured glyph height. Negative tightens — the measured height carries font padding, so go below 0 for truly dense lines; the pitch is floored at 25% of the glyph height. Default 0.02. | float | 0.02 |
| H AlignBlock/Timeline: Left, Center or Right inside the box (or the tight text block when no box is set). Hidden in Page mode and Live — the page writer owns positions there. | int | 1 |
| V AlignBlock/Timeline: Top, Middle or Bottom inside the box; without a box it anchors the block above/on/below Y. Hidden in Page mode and Live. | int | 1 |
| CorrectionsWhat a LIVE finalization may do to standing ink. All: every revision swaps in place. Fitting (default): digit↔spelled-number reshuffles (5 vs five) never land, other swaps only when the new text fits the frozen slot. Off: written ink is final. Future pages always use the corrected text. | int | 1 |
| Color ModeSingle: everything in Color. By Class: each lexical class gets its own ink (the class color ports appear) — a live shader tint; late-arriving tags fade in over 0.6 s. Untagged words keep the base Color. | int | 0 |
| Noun ColorBy Class: ink for nouns and numbers — the anchor color. | color | — |
| Verb ColorBy Class: ink for verbs — the motion words. | color | — |
| Adjective ColorBy Class: ink for adjectives and adverbs. | color | — |
| Name ColorBy Class: ink for names — people, places, organizations. The accent. | color | — |
| Function ColorBy Class: ink for function words — the quiet gray. | color | — |
| XHorizontal anchor of the page/box center, Grafit units (0 = screen center). Not clamped. | float | 0 |
| YVertical anchor of the page/box center, Grafit units (0 = screen center). Not clamped. | float | 0 |
Outputs
| Port | Type |
|---|---|
| Image | image |
| Width | float |
| Height | float |
| Active Count | int |
How It Works
Each incoming segment word gets its own quad (word textures cached by the font atlas — spoken language repeats words constantly). The word's age drives its life: Appear (Fade / Slide Up / Scale In / Typewriter) eased over Appear Time, a hold, then Decay (Hold = stay until the window drops the word; Fade; Drift = fade while rising) after Decay Time. Words with final:false multiply by Ghost Opacity — the live guess shimmers, the finalized word lands. Negative age (Timeline mode future words) stays invisible until its moment.
Layout has two modes. Roll (default — built for LIVE captions): a word's line and x-position FREEZE the moment it is finalized; only the ghost tail re-flows, and new lines scroll the block upward with an eased roll — live text never dances. Block: a wrapped, aligned block re-laid on content change — right for Timeline poetry and static texts. Both are cache-disciplined: ages tick every frame, geometry does not rebuild. Output is a standard generator Image for Canvas / Composite.
Live-mode ages survive finalization (the engine keeps each word's first-seen timestamp), so a word animates ONCE when the ghost shows it — the finalization is only the alpha snap.
Use Cases
- Kinetic captions — Transcription Segments → Kinetic Text → Canvas: speech becomes choreography (ships as the Kinetic Captions example).
- Timeline poetry — Timeline-mode Segments: scrub the player and watch the text choreography run backwards.
- Ghost emphasis — Ghost Opacity 0.15 + Appear Typewriter: the guess types itself faintly, the truth stamps in.
- Active Count → particle emission: busier speech, busier screen.
Open Kinetic Text in the interactive catalog →
Kinetic Text is one of 381 nodes in Grafit Pro.
Free download. Every feature for 7 days, no card. Then €99.99 once — or keep playing your projects as a Player.