MixavisdocsHomeCommunityOpen editor
DOCS/Drivers

Oscillate

Behaviors

A sine wave on any property — pendulums, floats, breathing.

Oscillate adds a sine wave to whatever property you point it at. Aim it at rotation and you get a pendulum. Aim it at Y and you get a float. Aim it at scale and the layer breathes.

It runs forever with no keyframes, and it adds to whatever the property already is — so a layer that is keyframed moving across the canvas can bob while it travels.

Try itOscillate
This stage calls the shipping driver — the same `evaluate()` the editor runs each frame.

When to reach for it#

  • Idle motion on anything that should not sit perfectly still.
  • Pendulums, swinging signs, bobbing objects.
  • Waves across an instanced row, using Phase per copy.

How it works#

The output is amplitude × sin(2π × frequency × time + phase). It rests at zero, which is why it adds cleanly — at time zero the layer is exactly where you put it, and the wave grows from there.

On an instanced layer, Phase per copy shifts each clone further along the wave. That single control is the difference between a row of objects pumping in unison and a wave travelling down the row.

Parameters#

Frequencyfreq#

Cycles per second. 0.5 is one full swing every two seconds, which is about right for a pendulum. Above 3 it starts to read as a vibration rather than a motion.

Amountamp#

Peak displacement, in the units of whatever you targeted — degrees for rotation, pixels for position, a fraction for scale and opacity. Because it swings both ways, the total travel is twice this.

Phasephase#

Where in the cycle time zero starts, in degrees. 90 starts at the top of the swing rather than the middle. Use it to offset two layers that would otherwise move identically.

Phase per copyindexPhase#

Extra phase added per clone index on an instanced layer. This is the wave control. Around 20–40° gives a readable travelling wave; 180° makes alternate clones move in opposition.

Target propertytarget#

Which property the wave is added to. One driver drives one property — add a second Oscillate for a second axis, with a different frequency so the two do not trace a circle.

Recipes#

01

A floating object

  1. Add Oscillate, target Position Y.
  2. Frequency 0.35, Amount 18.
  3. Add a second Oscillate, target Rotation, Frequency 0.22, Amount 3.

The two frequencies are deliberately different and not multiples of each other. Matching them makes the object trace the same path every cycle, which the eye picks up as mechanical.

02

A wave across a row

  1. Add an Instancer, layout Linear, Count 20.
  2. Add Oscillate, target Position Y, Frequency 0.7, Amount 30.
  3. Set Phase per copy to about 25°.

Things that catch people out#

Two oscillators at the same frequency draw a circle

X and Y at the same frequency, 90° apart in phase, is the parametric equation of a circle. Sometimes that is what you want. When it is not, detune one of them.

It adds — it does not replace

A layer with rotation keyframes and an Oscillate on rotation does both. If the layer seems to be fighting itself, that is why.

See also#

driversPulse — a throb that rests at zero rather than swinging through it→modifiersPivot Offset — move the point it swings around→

Something here wrong or missing? Tell us in the community.