A practical guide to the Wave effect on Crystal Focus X, including waveform shapes, scrolling motion, speed, frequency, direction, percentage-based modulation, audio overlay, and ready-to-use recipes for sine waves, stripes, ripples, and sawtooth ratchets.
lcoolsparkd, sparkf, driftmapb, mapc, ecolor, mapping_unstableThe Wave effect (unstable=8) is a signal generator. It creates a scrolling waveform that continuously moves along the blade, blending between the blade color and the effect color. If Gradient is a still image, Wave is the moving version of that idea.
Wave shares a lot of DNA with Chainsaw. Both are scrolling waveform effects with the same family of shapes and the same built-in clash and lockup speed boosts. But Wave is the cleaner, more direct version. It is especially good when you want smooth flowing energy instead of harsh teeth or mechanical patterns.
| Feature | Gradient (7) | Wave (8) | Chainsaw (4) |
|---|---|---|---|
| Animation | Static | Scrolling | Scrolling |
| Position basis | Normalized pattern space | Raw pixel position | Raw pixel position |
sparkd role | Offset | Speed | Speed |
sparkf role | Frequency, very dense range | Frequency, moderate range | Frequency, moderate range |
drift role | Inversion | Direction | Direction |
mapb / mapc scaling | Percentage-based | Percentage-based | Different scaling behavior |
| Lockup / Clash | None | ×3 / ×2 speed | ×3 / ×2 speed |
In your blade profile section, set:
unstable=8
Each frame, Wave advances a waveform pattern and redraws it across the blade.
sparkd.sparkf.lcool is applied.mapb and lifted by mapc.ecolor.lcool — Waveform ShapeDefault: 20
This selects the wave shape.
lcool Range | Waveform | Visual Character |
|---|---|---|
0–39 | Sawtooth | Sharp ramp with sudden drop, ratcheting look |
40–79 | Triangle | Smooth rise and fall, rolling peaks |
80–119 | Sine | Soft curved wave, organic movement |
120–159 | Square | Hard alternating bands |
160–200 | Drunk / Random | Animated noise texture |
hcool — Not Usedhcool has no visible role in Wave.
sparkd — Scroll SpeedDefault: 10
This controls how fast the pattern moves along the blade.
| Value | Speed | Visual Result |
|---|---|---|
0 | Frozen | No movement, effectively static |
5 | Very slow | Gentle drift |
10 | Default | Balanced scrolling |
25 | Moderate | Clearly moving |
50 | Fast | Energetic travel |
100 | Maximum | Very rapid movement |
Important: During clash the speed doubles. During lockup it triples.
sparkf — Frequency MultiplierDefault: 120
This controls how many wave cycles fit across the blade.
| Value | Approx. Multiplier | Visual Result |
|---|---|---|
0 | 1× | One very wide wave cycle |
40 | ~5× | A few large wave periods |
80 | ~10× | Moderate density |
120 | ~15× | Dense default pattern |
200 | 25× | Maximum density |
drift — Scroll DirectionDefault: 0
This controls which way the wave travels.
drift=0 One direction
drift=1 Opposite direction
Unlike Gradient, drift does not flip the pattern shape. It changes the direction of travel.
Wave uses direct color blending with percentage-based modulation, just like Gradient.
ecolor — Effect ColorThis is the color the wave peaks blend toward.
ecolor=1023,1023,1023,0 # white
ecolor=0,800,1023,0 # cyan
ecolor=1023,400,0,0 # orange
On CFX, color channel values can go up to 1023.
mapb — Amplitude / Modulation DepthDefault: 50
This controls how strongly the wave swings between blade color and effect color.
| Value | Effect |
|---|---|
0 | No visible waveform, only the offset remains |
50 | Half-strength default wave |
100 | Full natural amplitude |
150+ | Overdriven peaks, some clipping |
mapc — Offset / Baseline BlendDefault: 50
This lifts the whole waveform upward toward ecolor.
| Value | Offset Added | Visual Result |
|---|---|---|
0 | 0 | Troughs stay at blade color |
50 | ~128 | Default, strong baseline blend |
100 | 255 | Blade stays fully effect-colored |
Important: Just like Gradient, the defaultmapc=50already adds a strong baseline shift. Setmapc=0if you want the wave to drop back fully to the blade base color.
mapb and mapc Work Togethermapb controls wave height. mapc controls where that wave sits. High mapb with low mapc gives strong moving contrast. Lower mapb with higher mapc gives a softer wave on top of an already effect-colored blade.
mapping_unstable — Reactivity SourceDefault: 1
mapping_unstable=0 — NoneThe scrolling pattern is fixed except for its normal motion. No audio changes are applied.
mapping_unstable=1 — AudioAudio adds two kinds of response:
ecolorThis makes the blade feel more alive during hum peaks, swings, clashes, and lockups.
refreshfx — Effect Refresh IntervalDefault: 12 ms
This strongly affects the perceived motion speed because Wave advances by a set amount each frame. Lower values feel faster and smoother. Higher values feel slower and heavier.
| Value | Character |
|---|---|
8 | Fast, fluid scrolling |
12 | Balanced default motion |
20 | Slower, more deliberate wave travel |
30+ | Heavy, measured motion |
Gradient is the static version. It gives you a color structure without movement.
Wave is Gradient with motion. It is great for clean, smooth scrolling energy.
Chainsaw is the rougher cousin. It is better when you want harsher teeth, more mechanical banding, or a more aggressive feel.
The clean signature Wave look.
unstable=8
lcool=90
sparkd=15
sparkf=60
drift=0
mapb=100
mapc=0
mapping_unstable=1
ecolor=1023,1023,1023,0
Gentle rolling triangle waves for a soft rhythmic blade.
unstable=8
lcool=50
sparkd=5
sparkf=20
drift=0
mapb=80
mapc=20
mapping_unstable=1
ecolor=800,600,1023,0
refreshfx=18
Square wave for bold marching bands.
unstable=8
lcool=140
sparkd=20
sparkf=40
drift=0
mapb=100
mapc=0
mapping_unstable=0
ecolor=1023,0,0,0
A fast, dense ripple with lots of energy.
unstable=8
lcool=95
sparkd=30
sparkf=150
drift=0
mapb=120
mapc=10
mapping_unstable=1
ecolor=0,800,1023,0
refreshfx=10
Run opposite directions on dual-strip blades for a richer layered effect.
Main strip:
unstable=8
lcool=90
sparkd=12
sparkf=50
drift=0
mapb=100
mapc=0
ecolor=400,600,1023,0
Aux strip:
unstable=8
lcool=90
sparkd=12
sparkf=50
drift=1
mapb=100
mapc=0
ecolor=400,600,1023,0
A mostly effect-colored blade with a gentle moving oscillation underneath.
unstable=8
lcool=85
sparkd=8
sparkf=30
drift=0
mapb=30
mapc=70
mapping_unstable=1
ecolor=1023,800,600,0
refreshfx=20
An asymmetric wave that feels like pulses being ratcheted along the blade.
unstable=8
lcool=10
sparkd=18
sparkf=70
drift=0
mapb=100
mapc=0
mapping_unstable=1
ecolor=1023,1023,1023,0
| Key | Wave Role | Default | Range / Notes |
|---|---|---|---|
unstable | Effect mode | 0 | 0–18 |
lcool | Waveform shape | 20 | 0–39 Saw, 40–79 Triangle, 80–119 Sine, 120–159 Square, 160–200 Drunk |
hcool | Not used | 70 | — |
sparkd | Scroll speed | 10 | 0–100; clash ×2, lockup ×3 |
sparkf | Frequency multiplier | 120 | 0–200; up to 25× density |
drift | Scroll direction | 0 | 0 = one way, 1 = opposite |
mapb | Amplitude, percentage-based | 50 | 0–255; values above 100 overdrive |
mapc | Offset, percentage-based | 50 | 0–255 |
ecolor | Target blend color | — | 0–1023 per channel |
mapping_unstable | Audio reactivity | 1 | 0 or 1 |
refreshfx | Refresh interval in ms | 12 | 1–255 |
sparkd for scrolling.mapc=50. It already adds a strong baseline blend.sparkd=0 freezes the pattern. That is useful when you want to audition the static pattern before adding movement.mapb=100 and mapc=0 is the cleanest starting point.drift values.sparkf makes the wave denser, but also less readable as a large visible pattern.