lush garden

lushgarden · sources

LUSH GARDEN — generative layered-garden video SOURCE. Assembles a dense 2D English-garden bed from a bank of plant cutouts (flowers/bushes/small trees, ~70/20/10 spawn mix) on a ground plane running from the bottom edge up to an INVISIBLE horizon (the HORIZON knob moves placement geometry only — no line is ever drawn at it). Plants spawn continuously at RATE spawns/sec, grow in from their ground anchor (~350 ms ease-out), scale down with depth (perspective) on top of the tree > bush > flower kind scale, and composite back-to-front; VIEW pans a viewport across a ~2.5-frame-wide world with depth-proportional 2D parallax (near sweeps, far crawls). At the 350-plant cap each spawn replaces the OLDEST plant so the bed keeps evolving. Patch a gate into GROW and continuous spawning stops — exactly ONE plant grows per rising edge ([GATED] badge); a RESET edge clears the bed. FOUR simultaneous outputs render the same scene: CLEAN (plain composite, the card preview), MONO (white silhouette outlines via an alpha-Sobel baked per cutout), WATERCOLOR (colours bled strictly inside each silhouette), PSYCHEDELIC (animated hue-cycled colours, per-plant phase). An optional BACKGROUND video passes through unprocessed behind the plants on all four outputs. Cutouts load lazily from static/lushgarden (manifest-driven; outline+watercolor baked once per cutout at load so the 4 outputs stay cheap; unconnected outputs are skipped). All ports live on the yellow drill-down PATCH PANEL (no raw side jacks, #767).

lush garden is a generative video source that grows a dense, layered 2D English-garden bed out of a bank of ~75 real plant cutouts (flowers, bushes, small trees), each background-keyed to a clean silhouette. Plants spawn continuously at the RATE knob's spawns-per-second onto a virtual ground plane that runs from the bottom edge up to an INVISIBLE horizon: each plant lands at a random (x, depth), where depth places its ground anchor between the bottom edge (near) and the horizon (far) and scales it down with distance on top of the natural kind scale (FOV sets how steep that shrink is; trees > bushes > flowers; the spawn mix is roughly 70% flowers / 20% bushes / 10% trees). New plants grow in from their ground anchor with a quick ~350 ms ease-out. The scene composites back-to-front (painter's algorithm), and VIEW pans a viewport across a world ~2.5 frames wide with depth-proportional parallax — near plants sweep past while the far rank barely moves, a deliberately flat, theatre-flat parallax. At the 350-plant cap each new spawn replaces the OLDEST plant, so a full bed keeps slowly turning over instead of freezing. Patch a gate into GROW to take manual control: continuous spawning stops entirely and exactly one plant grows per rising edge (the card shows [GATED]); pulse RESET to clear the bed. The same scene renders through four simultaneous outputs — clean (the plain composite, also the card preview), mono (white silhouette outlines), watercolor (colours bled inside each plant's boundary), and psychedelic (animated hue-cycled colours, phase-offset per plant) — and an optional background video passes through unprocessed behind the plants on all four. Usage: run it bare as an evolving backdrop; clock GROW from a sequencer so the garden grows on the beat; sweep VIEW with a slow LFO for a drifting parallax pan; or feed a camera into background and outlines into a mixer for a garden-stencil overlay.

the faceplate

lush gardenbackgroundvideoratecvhorizoncvviewcvmonovideowatercolorvideopsychedelicvideocleanvideoaudiocvgatepitch
4 inputs · 4 outputs · 5 params

inputs

idcablewhat it does
backgroundvideoOptional backdrop video. When patched, the upstream frame renders UNPROCESSED behind the plants on ALL FOUR outputs (the per-plant styling stays strictly inside plant silhouettes; on mono the white outlines draw over it too). Unpatched: black backdrop.
RGB video stream
ratecvCV over RATE (log scale): modulates the continuous spawn rate between 0.5 and 10 plants per second. Ignored while a cable is patched into GROW (gated mode spawns only on edges).
control voltage (CV); modulates rate (multiplicative ≈ octaves — ±1 CV spans the param’s log range)
horizoncvCV over HORIZON: moves the invisible placement ceiling that far plants anchor against — see the HORIZON control. No line or seam is ever drawn at it.
control voltage (CV); modulates horizon (additive offset — ±1 CV sweeps the full range, centered on the knob)
viewcvCV over VIEW: pans the parallax viewport across the wide garden world. A slow LFO here gives the signature drifting near-fast/far-slow pan.
control voltage (CV); modulates view (additive offset — ±1 CV sweeps the full range, centered on the knob)

outputs

idcablewhat it does
monovideoOUTLINES ONLY: crisp white plant-silhouette edges (a Sobel over each cutout's alpha channel, baked per cutout) on black — or drawn over the background video when one is patched.
RGB video stream
watercolorvideoSoft watercolour composite: each plant's own colours heavily bled/blurred WITHIN its silhouette (never outside it), with slight darkening along the silhouette edge. Backdrop passes through untouched.
RGB video stream
psychedelicvideoTrippy composite: each plant's colours hue-rotate continuously over time with a per-plant phase offset plus saturation/value warping, strictly inside its silhouette. Backdrop passes through untouched.
RGB video stream
cleanvideoThe plain composite — every cutout with its normal image data over the backdrop. This is the canonical output and what the on-card preview shows.
RGB video stream

params

idlabelrangedefaultcurve
rateRate?..?log
horizonHorizon0..1linear
viewView0..1linear
fovFov0..1linear
freezeFreeze0..10linear

controls

controlwhat it does
Cv growHidden synthetic gate param backing the GROW jack (not a knob). The engine CV-bridge writes the gate sample here; a rising edge (0.6/0.4 hysteresis) spawns exactly one plant, and the first write latches gated mode.
Cv resetHidden synthetic gate param backing the RESET jack (not a knob). A rising edge clears all plants.
FovFOV (0–1, default 0.7): perspective strength — how much plants shrink with distance. The default reproduces the original look (far plants at 22% of near size); higher values shrink the far rank further so close plants dominate, lower values flatten the scene toward a uniform-scale collage (far plants at up to 50%). Placement, horizon and parallax are unaffected — only the depth-size gradient changes.
FreezeFreeze (0 to 1, hidden): a determinism toggle for deterministic capture — at >=0.5 the renderer holds the last frame and stops drawing; no card control.
HorizonHORIZON (0–1, default 0.65): the height of the INVISIBLE horizon — a placement control only. It caps how high far plants anchor and sets the perspective scale gradient; no output ever draws a line, gradient or ground fill at it (its existence is only inferable from where plants stop appearing).
RateRATE (0.5–10 spawns/sec, log, default 2): how fast new plants appear in continuous mode. Has no effect while GROW is patched (gated mode).
ViewVIEW (0–1, default 0.5): pans the virtual viewport across the ~2.5-frame-wide garden. Near plants shift proportionally more than far ones (2D parallax), revealing/hiding plants at the edges.

source

lushgarden.ts on GitHub.

Generated from packages/web/src/lib/{audio,video}/module-registry.ts · repo