Keyframes and Effect Parameters
A keyframe is a mark on the timeline where an effect parameter has a specified value. As long as there are no keyframes, the parameter holds the same value for the entire length of the effect: the speed is always the same, the brightness is always the same. Set two keyframes with different values, and Light Stream will automatically calculate the values in between, so the parameter changes smoothly over time.
Keyframes can animate the effect's opacity and any of its slider parameters: speed, size, number of elements, and the color components R, G, B. This is how you create smooth fade-ins and fade-outs, acceleration and stopping, and color changes at exactly the right second.
Where the Effect Parameters Are
Select the effect — click its bar on the Timeline or the row with its name. The parameters appear in two places at once.
Properties window — the full set of the effect's parameters: sliders, numeric fields, checkboxes, lists, color pickers. This is where it's convenient to fine-tune values by eye. The parameter's name sits above its row, and the row itself looks like this: a numeric field, a slider, and to the right of it — the L button and the stopwatch icon.
Timeline window — effects are listed to the left of the time scale. Besides the enable checkbox and the name, an effect's row has a blend mode list and an Opacity value with ◀ ◆ ▶ buttons. The triangle to the left of the name expands the effect's parameter list — but not all of it: only parameters with keyframe mode enabled are shown under the effect, as a plain list without groups. While there is no such parameter yet, the triangle is inactive. Opposite each row, on the time scale itself, runs that parameter's own track — this is where its keyframes live.
This is the same set of values shown in two different ways: a value changed in one window changes in the other immediately too. It's more convenient to fine-tune values in Properties, and to place them in time on the Timeline.
Three States of a Parameter
At any moment, every effect parameter is in one of three states, and only one of them is ever active.
| State | How it works |
|---|---|
| Constant value | The value is set with a slider or a field and does not change over time. This is how all parameters work by default |
| Keyframes | The value is set by keys on the parameter's track and changes over time. Between keys, the program calculates intermediate values |
| Function | The value is calculated from a formula — sine, linear, pulses, or noise — and repeats indefinitely for as long as the effect plays |
Enabling Keyframes
The keyframe mode toggle is the stopwatch icon at the end of the parameter's row, to the right of the L button. It exists only in the Properties window — there is no stopwatch on the Timeline. A disabled stopwatch is grey, an enabled one is blue.
- Select the effect and find the parameter you need in the Properties window.
- Click the stopwatch — the parameter switches to keyframe mode.
As soon as it's enabled, the program places the first keyframe at the start of the effect, with the value the parameter had before. The picture doesn't change: a single key is still a constant value. However, the parameter now appears under the effect on the Timeline (if the effect was collapsed, it expands automatically), and it gets its own track.
The stopwatch is available for the effect's opacity and for all slider parameters. Color is animated by its components: it has three sliders — R, G and B — and each has its own stopwatch. Checkboxes, lists, and text fields cannot be animated with keyframes.
Placing Keyframes
The shortest way is simply to set the parameter's value at different points in time.
- Place the playback cursor on the Timeline where the first value should be.
- Set the parameter's value — with the slider or the numeric field. A key appears on the parameter's track at the cursor position.
- Move the cursor further and set another value — a second key appears.
- Done: between the two keys the parameter smoothly transitions from the first value to the second.
This also explains the main feature of keyframe mode: the slider and the field no longer set the parameter's “overall” value — they edit the value at the cursor position. If there's no key on that frame, one is created; if there is, its value is changed.
You can place a key without touching the value using a button. The parameter's row on the Timeline has three small buttons — ◀ ◆ ▶ — followed by a value field and a trash-can button. The middle diamond button places a key on the current frame with the value the parameter currently has; if a key is already on that frame, pressing it again removes it. The same buttons appear in the effect's own row and work with its opacity: Opacity keys land directly on the effect's bar.
The third way is to work directly on the track. Double-click the parameter's track: it highlights, and diamond-shaped keys appear on it — this is edit mode. Each further double-click on the track creates a key at that point: the horizontal position sets the time, the vertical position sets the value — the bottom of the track corresponds to the parameter's minimum, the top to its maximum.
The line connecting the keys is always visible on the track, but the diamonds themselves are visible only in edit mode.
Keys belong to the effect, not to the composition: a key's time is counted from the start of the effect. If you move the effect along the timeline, its entire animation moves together with it.
Editing Keyframes
To work with existing keys, enter the track's edit mode — double-click it. To exit edit mode, press Enter or Esc.
| Action | How to do it |
|---|---|
| Select a key | Click the diamond on the track. The selected key turns red, and the key under the cursor turns white |
| Select several keys | Click the keys while holding Ctrl or Shift |
| Deselect | Click an empty spot on the track |
| Move a key | Drag it: horizontally changes the time, vertically changes the value. Selected keys move as a group |
| Delete a key | Delete or Backspace; or right-click the key → Delete |
| Undo a mistake | Ctrl+Z, redo with Ctrl+Shift+Z |
Keys snap exactly onto the composition's frames, so two keys of the same parameter can never end up at the same point. Neighboring keys act as boundaries for each other: you can't drag a key past its neighbor and swap their places. A key also can't go beyond the effect's bounds — near its edges, dragging snaps to the start and end of the bar.
Before the First and After the Last Key
Beyond the outermost keys the value doesn't change: before the first key the parameter holds the first key's value, after the last key it holds the last key's value. The animation doesn't return to its initial state on its own. If the effect should end the same way it started, place one more key with the needed value at the end.
The arrow buttons ◀ and ▶ on either side of the diamond move the playback cursor to the previous and next key of this parameter, select it, and open the track for editing.
This is a convenient way to land exactly on a key: jump to it with the arrow and adjust its value with the slider, without risking accidentally creating an extra key nearby. If there are no more keys in the given direction, the button does nothing.
Disabling the Animation
Click the stopwatch again — it turns off, and the parameter reverts to the constant value it had before keyframes were enabled. The parameter's row disappears from the list under the effect on the Timeline: only parameters in keyframe mode are shown there.
The trash-can button at the end of the parameter's row on the Timeline does the same thing — it removes the parameter from the timeline and returns it to a constant value.
In both cases the keys you placed aren't lost: turn the stopwatch back on, and the animation returns exactly as it was. To get rid of the animation for good, delete the keys from the track.
Functions Instead of Keyframes
If you don't need precisely plotted movement through points but an endless, even oscillation — blinking, a smooth pulse, random flicker — it's easier to assign a function to the parameter instead of keys. A function calculates itself, needs no keys, and doesn't end for as long as the effect is playing.
Next to the parameter's slider in the Properties window there's an L button. Click it and choose Functions, then the function you need.
| Function | What it does |
|---|---|
| Sine | Smoothly drives the value from minimum to maximum and back. Good for “breathing,” a smooth pulsing of brightness or size |
| Linear | Evenly drives the value from minimum to maximum and starts over. The Back and Forth checkbox makes the value return instead of jumping back |
| Pulses | Rectangular on/off switching: the value sits at the minimum, then jumps to the maximum. This is a strobe and blinking |
| Noise | Random smooth changes — flicker, “living” fire, chaotic shimmer |
The Settings item in the same menu opens the parameter window of the selected function. The set of fields depends on the function; the window closes with Enter or Esc.
| Parameter | What it sets |
|---|---|
| Function duration, sec | The length of one cycle for the Sine and Linear functions |
| Interval, sec | The length of one cycle for the Pulses function |
| Pulse distribution, % | The ratio between the off and on parts of the interval for the Pulses function |
| Frequency | How fast the value changes for the Noise function |
| Seed value | The seed of the Noise random sequence. The New button picks a different seed, and the flicker pattern changes |
| Minimum value, % and Maximum value, % | The bounds the value moves between. Set as a fraction from 0 to 1 of the parameter's full range |
| Time offset, % | Shifts the function's phase. Useful when several effects share the same function and need to be spread out in time |
| Back and Forth | Linear only: the value goes there and back, without jumping to the start |
While a function is driving the parameter, the slider no longer changes it, and the button's label changes from L to F and lights up orange. To return to manual control, go to F → Functions → Clear.
External Control of a Parameter
The same L button links the parameter to an external source, so it can be controlled live during a show instead of being set in advance.
- OSC, MIDI, DMX — the parameter starts listening for an incoming command: a message, a note, a channel. The program opens a window where you specify that command, or you can simply send it from a console.
- Virtual Controller — the parameter is bound to a slider or palette from the Virtual Controller window (Settings menu → Virtual Controller; you can also open it directly from this submenu via Open Virtual Controller). Sliders and palettes are added in that window itself, and a single slider can drive several parameters of different effects at once — handy when the same brightness or color needs to change across the whole project with one move.
The button lights up orange if the parameter has at least one binding; hover over it to see a tooltip listing the bindings. The Clear item at the end of the menu removes all of them and also clears the function. It doesn't touch keyframes.
If Something Goes Wrong
The slider doesn't change the parameter. The parameter has keyframe mode enabled or a function assigned. In keyframe mode the value is edited at the cursor position and written into a key; with a function it can't be edited at all. Turn off the stopwatch or clear the function to restore normal behavior.
The parameter I need isn't shown under the effect on the timeline. Only parameters with keyframe mode enabled are shown there. Find the parameter in the Properties window and click its stopwatch.
The effect doesn't return to its initial state. After the last key the value simply holds. Place a final key where the animation should reach its end state.
The program lags on animations with a large number of keys. Updating values in real time noticeably loads the computer. Turn off the Update Keyframe Data During Playback setting — Settings menu → Properties (Ctrl+P), General tab, Other group. The animation is still calculated as before, only the numeric fields stop updating on the fly.