Generator node

Liquid Text

Text as FLUID on the Poster chassis: every page throws a dense cell grid, and each word from the Transcription stream STRETCHES to exactly fill its cell — the width axis first, unbounded quad scale on top; distortion is the aesthetic. Sine, noise or flag WARP waves deform the standing surface (scrub-safe in Timeline). Two-rule pages (grid full or a period), class colors, semantic emphasis, the corrections gate. Fill reports how full the vessel is.

Inputs

PortTypeDefault
EnableOff: the node's texture is cleared and nothing draws. The page state is kept, so re-enabling continues where it was.booltrue
SegmentsThe word stream from a Transcription node's Segments output. Live folds finals immediately and stable guesses early into the confidence ledger; Timeline replays scrub-exact on the audio clock.structure—
ColorBase ink RGBA, applied as a live tint — word textures are white masks, so a color cable animates freely. Also the debug outline and the untagged-word ink in By Class mode.color(1, 1, 1, 1)
Axis FromWhere a word's entrance STARTS along the liquid axis, 0–1 over its range (0 = hairline on a weight axis). Words settle at the font member's resting value, boosted by Emphasis.float0
Appear TimeEntrance duration: the soft per-character typing sweep and the axis morph share it.float0.45
Auto TimingOn (default): live words place on the adaptive ~0.24 s beat. Off: Word Interval rules. Timeline reveals are always the audio clock.booltrue
Word IntervalSeconds between live word placements when Auto Timing is off (clamped 0.05–5). Timeline ignores it.float0.25
CapsOn (default): everything renders in capitals. The original capitalization still decides Emphasis when tags are unavailable.booltrue
Emphasis0–1: MAJOR words rest HEAVIER on the font's weight axis. Emphasis Mode decides who is major. Needs a variable font; 0 turns it off.float1
Emphasis ModeWho gets the emphasis. Caps: capitalized words (every language). Nouns & Names / Names Only use Transcription's lexical tags; untagged languages fall back to Caps.int1
Min SizeThe row ink-height floor in Grafit units — rows never lock below it, so no word can go micro. Width never shrinks a liquid word (the fill absorbs it).float0.06
Max SizeThe row ink-height ceiling in Grafit units. Never drops below Min Size.float0.3
CorrectionsWhat a LIVE finalization may do to standing ink. All: every revision swaps in place (the fill re-stretches it into the same cell). Fitting (default): digit↔spelled-number reshuffles never land. Off: placed ink is final. Future placements always use the corrected text.int1
Color ModeSingle: everything in Color. By Class: each lexical class gets its own ink — the class color ports appear. Late-arriving tags fade in over 0.6 s.int1
Noun ColorBy Class: ink for nouns and numbers — the anchor color.color(1, 1, 1, 1)
Verb ColorBy Class: ink for verbs — the motion words.color(0.55, 0.75, 1, 1)
Adjective ColorBy Class: ink for adjectives and adverbs.color(0.9, 0.62, 0.9, 1)
Name ColorBy Class: ink for names — people, places, organizations. The accent.color(1, 0.84, 0.3, 1)
Function ColorBy Class: ink for function words — the quiet gray.color(0.55, 0.55, 0.6, 1)
FeatureThe bigger row's cut of the remaining column (0.12–0.5). Liquid grids run denser and calmer than Poster's — a woven field, not a headline.float0.22
DetailPlain rows between the bigger ones (1–6). Rows split into 1–3 unequal cells; every cell takes exactly one word.int3
ColumnsNewspaper columns. 0 = auto by aspect; 1–4 forces the count.int1
Warp0–1: the generative wave field deforming every word's 24-segment mesh — the liquid itself. Timeline phase is keyed to word age (scrub-safe); Live rides the wall clock. 0 = flat type.float0.35
Warp TypeThe wave: Sine (classic ripple), Noise (organic drift), Flag (amplitude grows to the right — cloth in wind). Hidden while Warp is 0.int0
Warp SpeedWave cycles per second (0.02–4). Each word's phase is seeded, so the surface shimmers rather than pumps. Hidden while Warp is 0.float0.6
Row PadAir around the ink, as a fraction of the ink height (0–0.6).float0.08
Column PadHorizontal air in Grafit units (0–0.2): between cells and newspaper columns. Gutter stays vertical.float0.03
Breath0–1: settled ink oscillates its weight axis around resting — density pulses, positions frozen. Timeline breath is scrub-safe.float0
Breath RateBreath cycles per second (0.02–4). Hidden while Breath is 0.float0.5
Hold TimeLIVE: the minimum a completed page stands before the next word may replace it (0 = absolute continuity). A completed page otherwise stands as long as the speech pauses.float0
ClearHow the full page leaves. Melt: the ink thins and evaporates in a writing-order wave. Unwrite: the pen re-traces left to right. Together at once; Instant is a hard cut.int0
Clear TimeTotal seconds the clear takes (0.05–10). Hidden on Instant.float1.2
Max WidthThe vessel width in Grafit units (viewport short edge = 2). With Box Height it decides the auto column count.float1.4
Box HeightThe vessel height in Grafit units. The cell grid fills it top-down; a word with no cell left turns the page: melt, new grid.float1.6
GutterVertical spacing between rows, Grafit units (0–0.2).float0.02
Box DebugDraws the outer frame AND the live cell skeleton so the vessel is visible before and while words pour in. Design aid only.boolfalse
XVessel center X in Grafit units (0 = screen center).float0
YVessel center Y in Grafit units (0 = screen center).float0

Outputs

PortType
Imageimage
Widthfloat
Heightfloat
Active Countint
Fillfloat

How It Works

Liquid Text is variable-font ink poured into a box. Every page throws a dense cell grid, and each word from the Transcription stream is stretched to fill its cell exactly — the font's own visible width axis first, then unbounded quad scale on top, because the distortion is the aesthetic.

On top of the fill sits the warp. Every word is drawn as a 24-segment mesh displaced by a Sine, Noise or Flag field, phase-seeded per word, running on the audio clock in Timeline and the wall clock live — so a page of text breathes and ripples like cloth without a single word losing its place. That is the family's hard law: placed ink never moves.

Pages follow two rules and no others: the grid is full, or a sentence ended. A page fills, holds for a reading beat, melts, and the next page waits for a clean frame before it begins. Fill reports how full the vessel is, as data.

It shares the display family's machinery with Kinetic Text and Poster Text: the eager confidence ledger, the corrections gate (a numeric reshuffle never rewrites a word already placed), class-coloured ink, and clocks that agree between live microphone and Timeline scrub.

Use Cases

  • Live captions as design — A microphone through Transcription into Liquid Text: speech becomes a rippling typographic surface.
  • Music video typography — Warp on Flag with Warp Speed from a beat: the lyrics move like cloth in time.
  • Installation text — A long-running page that breathes; Breath and Hold Time set the pace of the room.
  • Timeline-exact replay — Pre-transcribe a file and scrub: the ripple replays deterministically.
  • Colour by meaning — Color Mode: By Class paints nouns, verbs, names and function words differently, free in the shader.

Tips

  • Turn on Box Debug to see the cell grid before the words land — it explains every layout decision at a glance.
  • Min Size and Max Size keep a word from going micro or swallowing the page; the stretch respects them.
  • Warp is a surface deformation, not a layout change. Push it hard; nothing will lose its place.
  • Auto Timing (on by default) makes each word's entrance exactly as long as it was spoken — leave it on for speech.
  • Feed Corrections on the Transcription node, not here; the display picks the fix up through Segments.
  • Columns and Detail change the density of the grid, which is the real control over how much text a page holds.

Open Liquid Text in the interactive catalog →

Liquid 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.

More Generator nodes