Nebula

Patches

A cable takes something the music is doing (the bass, the beat, a build, a slow clock, even another layer) and uses it to turn one knob. Patches is where you connect them. Pro

Making a cable

The window has sources on the left, a lane in the middle, and every knob of every layer on the right (plus the scene's colors). Each source and each knob has a small circle, its port.

  1. Drag from a source's circle to a knob's circle. A cable appears between them, in the source's color.
  2. Tap the cable (or tap a row's name) to open its settings: how much it moves the knob, how smoothly, and how it is shaped.
  3. Drag a cable's end to another circle to move it.
  4. To remove a cable, open it and tap the trash, then tap again to confirm. On a Mac, select it and press Backspace.

A knob can take several cables; their effects add up. Press and hold (or hover over) any name for a short help text. Only knobs marked "Cable: yes" on the Elements page can be targets.

Tip. Elements already react to the music on their own, so you rarely need a cable on every knob. One or two purposeful cables per layer beat ten.

What a cable does

Tap a cable to see its small graph (the source in faint, the result in bright, the last 3 seconds) and these settings:

SettingWhat it does
AmountHow far the cable moves the knob, as a share of the knob's whole range, from -1 to 1. Negative moves it down. The knob's own slider is the starting point; the cable adds to it. (Not shown for Numbers and Time sources, which set the knob directly.)
SmoothHow slowly the knob follows, in seconds (0 to 3). 0 follows every jump. About 0.05 to 0.15 suits hits, 0.2 to 0.6 suits bass and pulses, 1 to 3 suits slow drifts.
CurveReshapes the 0-to-1 signal before it reaches the knob. See below.
In from, In toThe part of the source that counts. Values at or below In from become 0; values at or above In to become 1. Raise In from to ignore quiet passages.
ThresholdAppears for the Threshold and Gate curves: the level (0 to 1) the signal has to pass.

Curves

CurveShape
LinearThe signal as it is.
InvertFlipped (1 minus the signal): loud becomes quiet.
EaseA soft S; gentler at the ends.
ExpQuiet parts get quieter: waits, then leaps.
LogQuiet parts get louder: leaps, then settles.
ThresholdA soft step: off below the level, on above it.
Gate0 below the level; above it, the signal itself.

A color knob works a little differently. A number source moves it along a list of colors: the layer's own palette, else the scene colors, else round the color wheel. Amount 1 at full signal travels the list once round; 0.25 moves a quarter of the way. A color source (see Colors) blends the knob toward that color by Amount. A switch is on while the cable's signal is above one half.

All the sources

Sources come in groups, in this order in the window. Every value runs from 0 to 1 unless noted.

GroupWhat is in it
MusicBass, mid, treble, level, energy, onset, beat, beat phase, bar phase, transition, thin.
BandsSlices of the spectrum, from deep bass to the highest treble.
Song structureSection, build, drop, downbeat, progress, harmony, tension, chord root, melody.
RandomSmooth or stepped random values.
ColorsThe moving palette color, a scene color, the color under a layer.
Layer outputsSignals other layers publish, such as a burst.
Layers belowHow bright, colorful or busy the layers underneath look.
NumbersSteps on the beat or bar, in the knob's own units. You type these.
TimeGates, ramps, saws, triangles and sines over seconds of the song. You type these.

Music, live

These work with everything: songs, radio, the microphone and This Mac.

SourceValue
bassHow loud the low end is (kick drum, bass). Fast.
midHow loud the middle is (voices, guitars, keys).
trebleHow loud the top end is (cymbals, hi-hats, air).
levelOverall loudness right now, smoothed over about a tenth of a second.
energySlow loudness over about 3 seconds: high in choruses and drops, low in quiet parts. The best source for big, gentle changes.
onsetSpikes on sudden hits (drums, plucks, attacks). For flashes and kicks.
beat1 at the moment a beat lands, else 0. Give the cable some Smooth (0.1 to 0.3) to make a pulse instead of a click.
beatPhaseRamps from 0 to 1 over each beat, then starts again. Steady pulsing.
barPhaseRamps from 0 to 1 over each bar of four beats. Slow, locked turns.
transitionRises from 0 to 1 while one song crossfades into the next.
thin0 for the full mix, up to 1 when the music thins out: the drums or bass drop away, a break, or just a voice and a pad. Slow and smooth. Use it to open a scene up when the song gets sparse. It reads the whole song once analyzed (it can see a quiet part coming); until then, and on radio before the analysis catches up, it works from the last half minute of sound and reacts only after the music thins. It sees the low end, the loudness and how many bands are lit, so it does not notice a lone kick being removed while a sustained bass stays.

Bands

The spectrum is split into 64 bands: band 0 is the deepest bass (about 30 Hz) and band 63 the highest treble (about 16 kHz). A bands source averages a run of them, each scaled to its own recent range so quiet bands still move. The window offers 12 ready ones; to use another run, ask for it in a scene file (bands:A-B).

SourceCovers
bands:0-7Deep bass
bands:0-3, bands:0-15The deepest four bands, and the lowest quarter of the spectrum
bands:16-39The mids
bands:40-63The highs
bands:8-15, 16-23, 24-31, 32-39, 40-47, 48-55, 56-63Eight even slices, low to high

Song structure

These need Nebula to know how the song is built: your own songs once Nebula has analyzed them (see How Nebula hears a song), and radio songs it has heard ahead of or remembers. They stay at 0 until then, and with the microphone.

SourceValue
sectionHow intense the current part of the song is, easing toward the next part as it nears. Changes when the song moves to a verse, chorus or bridge.
buildRises as the music builds toward a big moment.
dropJumps when a build releases into a drop or big chorus, then fades.
downbeat1 on the first beat of each bar.
sectionProgress0 to 1 through the current part.
songProgress0 at the start of the song, 1 at the end.
harmonyBrighter, major-sounding chords read high; darker, minor ones low.
tensionHigh when the chord is far from the song's home key: the music feels unresolved.
chordRootWhich chord is playing, as its root note, 0 to 1 round the twelve notes.
melodyHow high the sung or lead melody is, 0 low to 1 high.
melodyConfidenceHow sure the analysis is that someone is singing or a lead is playing.

Random

SourceValue
random:smoothA value that glides to a new random one every beat, never jumping. The same song gives the same values.
random:smooth/barThe same, one new value every bar.
random:smooth:7The same with seed 7. Another number gives another pattern. Seed 1 is the default.
randomJumps to a random value in the knob's range on every beat. Use Smooth to soften the jumps.
random/barThe same, every bar.

With no tempo (for example the microphone) random:smooth keeps going at two values a second.

Numbers (steps on the beat)

A Numbers source counts through numbers you choose, one per beat, and sets the knob to that number directly, in the knob's own units. Amount is not used. Type the source into the Numbers box in the window (for example 1-5:1) and it appears as a row you can wire.

Syntax

You typeWhat it does
1-5:1Steps 1, 2, 3, 4, 5, then back to 1, one per beat.
0-1:0.250, 0.25, 0.5, 0.75, 1, then again.
1-5:1/barThe same, one step per bar (four beats) instead of per beat.
0-1:randomA random value between 0 and 1 each beat (any value in between).
1-5:1:randomA random step each beat: only 1, 2, 3, 4 or 5.
0-1:random:7, 1-5:1:random:7, random:7The same with seed 7: another seed, another pattern. The same seed always repeats.
randomA random value across the knob's whole range each beat.
0-1:random/barA random value each bar. Add /bar to any of them.

Details: the form is low-high:step, optionally followed by :random (random steps), :seed (a whole number) and /bar or /beat. If you write the range backwards (5-1:1) Nebula flips it. The step must be above 0 and give no more than 1000 values. A source can be at most 64 characters, and spaces are ignored.

In the window, Numbers you made show an Edit and a ×. Edit changes the source and keeps its cables on their knobs; the delete removes the source and its cables.

Tip. Numbers are great for knobs that take whole steps, such as the number of emitters, and for switching a look every bar.

Time (seconds of the song)

Time sources change over seconds of song time, not beats. They also set the knob directly (Amount is not used). Type them into the Time box. The window starts you off with 0-1:gate/4s,4s, 0-1:tri/30s and 0-1:ramp/30s.

ShapeYou typeWhat it does
Gategate/3s,7sOn for 3 seconds, off for 7, repeating. Two lengths: on, then off.
Rampramp/20sGlides from the low value to the high one over 20 seconds, then holds there. ramp/0s is an instant jump.
Sawsaw/20sClimbs from low to high over 20 seconds, snaps back and repeats.
Triangletri/30sUp and back down once every 30 seconds, in straight lines.
Sinesine/45sThe same up-and-back cycle, smooth at both ends.

Options

How the clock runs

Song time stands still when the music is paused, follows you when you jump around the song, and starts again from 0 with each new song. A scene change does not restart it.

Tip. Time sources are good for slow scenes: fade a layer in over a minute with ramp/60s, let a color drift with tri/90s, or flash a layer for a few seconds every half minute with a gate.

Colors

SourceValue
colour:sceneThe moving palette color: the color every palette-mode visual is at right now.
colour:scene:3Scene color 3 (the numbering starts at 1, up to 12), including any cable on it.
below:2:rgbThe average color of everything under layer 2.

Into a color knob, a color source blends the knob toward that color by Amount. Into any other knob it gives the color's lightness.

Layer outputs and layers below

Layer outputs. Some Elements publish a signal, such as Fireflies' burst. It is listed under the Element on the Elements page. In a scene file it is layer:<number>:<output>, counting layers from the top, starting at 0. Wire layer:1:burst into another layer's brightness and it flashes with the swarm.

Layers below. These look at what the layers beneath a layer produce:

SourceValue
below:<n>:brightnessHow bright the layers beneath layer n look.
below:<n>:colourHow colorful they are.
below:<n>:motionHow much they are changing.
below:<n>:0.5,0.5The brightness at one point of the picture (x then y, 0 to 1; 0,0 is the top left). The window offers the center.

The bottom layer has nothing beneath it, so it has no Layers below sources.

The math

For a number knob:

knob = base + amount × shaped value × (knob max − knob min)

The result is kept inside the knob's range. Base is where you set the knob's own slider, and shaped value is the source after In from / In to and the curve. So a knob that should rise with the music needs a base low enough to leave room: Pin height runs from 0 to 2, so a base of 0.6 and an amount of 0.4 can rise to 1.4. Several cables on one knob add up.

Numbers and Time sources skip this: they put the knob at their value directly.

Recipes

Starting points; adjust to taste. "Wire" means drag from the source to the knob.

GoalSource → knobSettings
Bass swellbass → a size or height knobAmount 0.15 to 0.3, Smooth 0.25
Flash on hitsonset → glow or brightnessAmount 0.2, Smooth 0.1, Curve Gate, Threshold 0.3
Chorus liftenergy (or section) → brightness or densityAmount 0.3, Smooth 2, In from 0.3, In to 0.9
Build-up and dropbuild → a speed or swirl knob; drop → a burst or ripple knobBuild: Amount 0.4, Smooth 0.5. Drop: Amount 0.5, Smooth 0.2
Mood colorharmony → the scene's Color shiftAmount 0.3, Smooth 3. Minor chords slide the palette one way, major the other.
Slow life in quiet songsrandom:smooth/bar → a drift or swirl knobAmount 0.15, Smooth 2
Change a look every bar1-4:1/bar → a knob with whole stepsAmount does not apply
Fade a layer in over a minute0-1:ramp/60s → a layer's opacity-like knob such as brightnessAmount does not apply
A glow for 3 seconds every 300-1:gate/3s,27s → glowSmooth 0.5 to soften the edges

In a scene file

Scenes are saved as .nebula files, and cables are written in them as text. This is useful if you let an AI assistant write a scene for you, or edit one by hand. A cable looks like this:

{ "source": "bass", "target": { "layer": 0, "key": "height" },
  "amount": 0.25, "smooth": 0.2, "curve": "ease", "range": [0.1, 0.8], "threshold": 0.5 }

target.layer counts layers from the top (0 is the top layer), or is "scene" for the scene colors (shift, speed, colour1 and so on). range is the same as In from and In to. Source names are the ones on this page. A cable whose source can't be read, or whose layer or knob doesn't exist, is skipped without a message. See Scenes › The .nebula file.