Score

cue:scale — Scaling Animation

scale() adjusts the size of SVG objects using sequences, patterns, continuous pulsing, or independent X/Y scaling.

demo-scale — sizes from a shuffled pattern (Pshuf), and a bounded Pseq that stops by itself
demo-scale — sizes from a shuffled pattern (Pshuf), and a bounded Pseq that stops by itself

BASIC FORMS

To a size, and stay

scale(1.5)            at once
scale(0.5, dur:2)     gliding there over 2 beats, from the size it has
scale(2, 0.5)         width and height

From the live console: s3 > scale(1.5). A scale with a rotate on the same shape: they compose.

Uniform scaling

scale(values:[1,1.5,1], dur:2)

Non-uniform (XY)

scaleXY([1,1.3],[1,0.6], dur:1)
scale(x:[1,1.3], y:[1,0.6], dur:1)
scaleXY(Prand([0.5,1.5],inf), Prand([0.5,1.5],inf), dur:0.3, interp:step)

The first list (or pattern) is the width, the second the height; each steps on its own.

Continuous pulse

scale(min:1, max:1.3, dur:2)

TRIGGERING


TRIGGER DELAY

tdelay:<beats>

Delays scaling start.

scale(values:[1,1.4,1], tdelay:3)

INITIAL VISIBILITY

init:

Controls how the element appears before the animation begins.

Value Effect
show Visible immediately (default)
hide Hidden until triggered
ghost Semi-transparent (30% opacity), no interaction
fadein(beats) Fade in over that many beats
armed Ghost opacity (0.7), click to start animation
armed(opacity) Custom ghost opacity, click to start
armed(opacity, fade) Custom opacity and fade duration, click to start

Initial scale is applied immediately regardless of init state.

scale([1,1.5,1], tdelay:4, init:ghost)
scale([1,2,1], dur:3, init:fadein(1))
scale([1,1.4,1], dur:2, init:armed)
scale([1,1.4,1], dur:2, init:armed(0.3), trig:playhead)

SEQUENCES

Key Meaning
values uniform scale list
x, y independent XY sequences
dur duration per step
mode loop / once / alternate
interp smooth / step
hold pause (smooth only)

Pattern forms (Pseq, Prand, etc.) supported for all parameters.


CONTINUOUS SCALING

scale(min:1, max:1.4, dur:1.5, loop:0)

UID — Live Updates

scale(values:[1,1.2,1], uid:s1)
scale(uid:s1, dur:0.5)

NETWORK SYNCHRONIZATION

By default, scale animations are synchronized across all connected clients. The first client to start an animation becomes the leader and broadcasts positions every 10 seconds. Late-joining clients sync to the leader's position.

sync: — Enable/Disable Sync

Value Effect
sync:1 Enable network sync (default)
sync:0 Disable sync — animation runs independently per client

Use sync:0 for animations that should vary between performers:

scale(values:[1,1.5,1], dur:2, sync:0)

SIGNAL-BOUND PARAMETERS

Animation speed, duration, and scale values can be controlled in real-time by binding to fader signals from the control plane.

Signal Reference Syntax

scale(min:1, max: follow(scaleFader.t, 1, 2), dur: follow(speedFader.t, 4, 0.5), uid:pulse)

The signal reference format is:

follow(source.channel, min, max[, default][, curve])
Component Description
source UID of the controlling fader/o2p
channel Signal channel (t, x, y, angle)
min-max Output range (maps 0-1 input to this range)
default Optional starting value
curve Optional curve: lin, exp2, exp3, log, sqrt

Examples

// Duration controlled by fader: 4 beats (slow) to 0.5 beats (fast)
scale(min:1, max:1.5, dur: follow(speedFader.t, 4, 0.5), uid:pulse)

// Scale max controlled by fader: 1x to 2x
scale(min:1, max: follow(sizeFader.t, 1, 2), dur:1, uid:growPulse)

// Independent X/Y scale bound to different faders
scaleXY(sx: follow(xFader.t, 1, 2), sy: follow(yFader.t, 1, 1.5), dur:2, uid:xyScale)

// With exponential curve for finer control
scale(min:1, max:1.5, dur: follow(speedFader.t, 4, 0.5, exp3), uid:smoothPulse)

How It Works

  1. The fader publishes its position (0-1) to the control plane
  2. The value is mapped through the specified range and curve
  3. The animation's parameter updates in real-time

See Control Plane documentation for full signal reference syntax.


FULL PARAMETER LIST

Key Description
values scalar sequence
x, y axis-specific sequences
sx, sy signal-bound X/Y scale values
min, max continuous scale range (supports signal refs)
dur step duration (supports signal refs)
hold pause
ease tween curve
mode loop logic
interp smooth/step
uid animation identity
trig trigger
tdelay delay after trigger
init initial visibility state
sync network sync (0/1, default 1)

EXAMPLES

scale([1,2,1], dur:2, tdelay:3)
scaleXY([1,1.4],[1,0.6], dur:1)
scale(Pseq([1,1.5,1],inf), dur:Prand([0.5,1],inf))

Stopping: off:1

scale(off:1) on the same element stops it at the size it has reached. Run the scale again to start it from there. In the live console Ctrl+Shift+. on the line does this.

What a scale publishes

Channel Meaning
sx x scale factor
sy y scale factor
uniform the mean of the two
t where it is between the smallest and the largest size it has been sent to, 0..1 (a values: list)

uniform is the one to reach for when a shape scales evenly and you want one number out of it rather than picking sx arbitrarily.

follow(name.channel, lo, hi) reads its channel as 0..1, and the factors are not: uniform going 0.1 → 3 would send a 200..4000 range up to 11 600. t is already 0..1 across the scale's own range, so it sweeps exactly lo to hi:

synth(uid:bass, wave:saw, filter:{type:lp, freq:follow(bsc.t, 200, 4000), q:1})
bass > scale(uid:bsc, values:[0.1, 3], dur:1)

Give the scale a uid: to follow it by: without one it is named at random.

A scale can follow a signal too. Its size follows, as its sizes are given otherwise -- first, or as values: -- both axes at once; sx: and sy: follow one axis each (a lone sx: stretches the width only):

bass > scale(follow(bass.t, 0.2, 1.5))                  the synth's pitch sets the size
bass > scale(follow(bass.t, 0.2, 1.5), uid:bsc)         ... named, to follow in turn
bass > scale(uid:bsc, values:follow(bass.t, 0.2, 1.5))  the same
bass > scale(sx:follow(bass.t, 1, 3))                   only wider

Following, it publishes t as well: where it is in the follow() range.

scale(uid:pulse, values:[1, 1.8, 1], dur:2, loop:0)
rotate(uid:r1, dir:1, dur: follow(pulse.uniform, 6, 0.5))

sx, sy and dur are also inlets — see the connections view.

Demo

See demo-scale — uniform and per-axis scaling, value lists, and signal-bound sx/sy.

http://localhost:8001/?project=demo-scale

Tip: use ← → or ↑ ↓ to navigate the docs