Adaptive Mosaic
A node that tiles multiple video inputs into a single mosaic and rearranges the layout and the hero on Shuffle or on beats. The layout is generated on the spot every time. First the hero rectangle is chosen from five presets, then the four strips left around it are allocated by area ratio, and the rectangles are split recursively starting from the largest. From the previous layout to the new one, both the rectangles and the displayed sources morph smoothly.
Source inputs
Use - / + on Sources in the node UI to add or remove Source input ports (1-12, 6 when newly created; it cannot go below 1). The port names are Source 1, Source 2, … (PortIDs are source_0, source_1, …), one connection per port.
Only the sources that are actually connected are assigned to tiles. Each tile is laid out with the Fill method (crop while preserving aspect ratio).
Performance controls
- Shuffle — rearranges the layout only (it does not change the hero)
- NextFocus — moves the hero to the next connected source, then rearranges the layout
- Beat — a beat pulse input. Every
currentBeatIntervaltimes (1-16, default 4), a rearrangement equivalent to NextFocus happens - Auto BPM — when ON, it counts the beats of the global tempo by itself. Default ON (
AutoBeatinput /autoBeatInput/currentAutoBeat)
Parameters
- TileCount — the number of tiles. Clamped to 1-32, default 18 (
TileCountinput /tileCountInput/currentTileCount) - FocusSource — the slot number of the hero (1-based). Clamped to 1-12, default 1 (
FocusSourceinput /focusSourceInput/currentFocusSource) - FocusAmount — the size of the hero tile. 0-1, default 0.72 (
FocusAmountinput /focusAmountInput/currentFocusAmount) - Transition — the morphing duration in seconds. Clamped to 0-4 (the UI slider is 0-2), default 0.45 (
Transitioninput /transitionInput/currentTransitionSeconds) - Pause — when ON, the drift animation stops. Default OFF (
Pauseinput /pauseInput/currentPauseMotion) - FocusOutline — when ON, the outline of the hero tile is tinted with the accent color (light blue). Default OFF (
FocusOutlineinput /focusOutlineInput/currentFocusOutline) - currentRandomness — the randomness of the layout splitting. 0-1, default 0.78. The UI slider is named “Random”
- currentGap — the gap between tiles. Clamped to 0-0.04 (the UI slider is 0-0.025), default 0.006
- currentDrift — how much the UVs inside a tile slowly drift. 0-1, default 0.18
- currentRoundness — the roundness of the tile corners. Clamped to 0-0.3, default 0.09. There is no slider in the node UI (set it from a script or a control)
- currentAccent — the strength of the hero outline. 0-1, default 0.75. It has no effect when FocusOutline is OFF. This one has no slider in the node UI either
When FocusAmount is 0.05 or below, no hero tile is created. The layout becomes an even split with no hero, and FocusOutline has no effect either.
While Pause is ON, rearrangement by beat stops as well (not only the drift, but layout updates are suppressed too).
The Beat input takes effect regardless of whether Auto BPM is ON or OFF. Auto BPM only controls the automatic counting of the global tempo. Using both counts the beats twice.
If FocusSource specifies an unconnected slot, it is automatically snapped to the first connected slot (the FocusSource value itself is rewritten too).
The output resolution is the global resolution. While no layout has been generated, it outputs black.
Input ports
| Port ID | Type |
|---|---|
Shuffle | trigger |
NextFocus | trigger |
Beat | trigger |
FocusSource | int |
TileCount | int |
FocusAmount | float |
Transition | float |
AutoBeat | bool |
Pause | bool |
FocusOutline | bool |
Output ports
| Port ID | Type |
|---|---|
Out | RenderTexture |
Scriptable members
| Path | Type |
|---|---|
focusSourceInput | int |
tileCountInput | int |
focusAmountInput | float |
transitionInput | float |
autoBeatInput | bool |
pauseInput | bool |
focusOutlineInput | bool |
currentTileCount | int |
currentFocusSource | int |
currentBeatInterval | int |
currentFocusAmount | float |
currentTransitionSeconds | float |
currentRandomness | float |
currentGap | float |
currentRoundness | float |
currentDrift | float |
currentAccent | float |
currentAutoBeat | bool |
currentPauseMotion | bool |
currentFocusOutline | bool |
Synapse Apps (scripting)
await synapse.modules.create({ type: "AdaptiveMosaic" }) 

