Skip to main content
The Alpha Spectrum filter is OpenTrack’s most sophisticated filtering algorithm. It adapts smoothing strength from recent motion energy per axis and includes multiple “heads” (EMA, Brownian, Adaptive, Predictive) composed using a Rényi-Tsallis probability framework.
This filter is designed for advanced users who want maximum control and are willing to tune parameters. For most users, the Simplified Mode with default settings provides excellent results.

How It Works

The Alpha Spectrum filter uses an adaptive EMA (Exponentially Weighted Moving Average) update:
Where motion is a normalized innovation-energy estimate in [0, 1]:
  • Low motion → alpha stays near Min (more smoothing, less jitter)
  • High motion → alpha moves toward Max (faster response)

Multi-Head Composition

The filter implements a Hydra-style 4-head architecture:
  1. EMA head: Standard exponential smoothing
  2. Brownian head: Noise-energy contribution
  3. Adaptive head: Sustained-motion responsiveness boost (15% higher activation threshold)
  4. Predictive head: One-step-ahead prediction from previous frame
These heads are scored by generalized likelihood using Rényi/Tsallis neck scoring, then composed using MTM (Multiple Model) shoulder weighting.
The filter is currently in Phase A implementation. Full transition-matrix MTM with explicit regime semantics is not yet implemented.

Parameters

The default workflow uses simplified controls at the top of the dialog:
boolean
default:"false"
Enable motion-history responsiveness boost during sustained movement.
  • Enabled: Adds adaptive boosting for fast gameplay
  • Disabled: Uses only base Min/Max/Curve mapping for predictable feel
boolean
default:"false"
Show detailed per-parameter controls. When off, detailed controls are disabled (greyed out).
slider
default:"[0.085, 0.218]"
Controls both rotation and translation Min/Max together.
  • Min range: 0.5% to 40% (0.005 to 0.4)
  • Max range: 2% to 100% (0.02 to 1.0)
slider
default:"[4.26, 0.156, 1.041]"
Controls all four curve/deadzone parameters together:
  • Rotation Curve (0.2 to 8.0)
  • Translation Curve (0.2 to 8.0)
  • Rotation Deadzone (0.0° to 0.3°)
  • Translation Deadzone (0.0 to 2.0 mm)

Core EMA Controls

float
default:"0.085"
Minimum alpha for rotations. Higher = less lag at rest but more jitter.
float
default:"0.218"
Maximum alpha for rotations. Higher = snappier turns and faster catch-up.
float
default:"4.26"
Shape of alpha transition based on motion:
  • Higher (>1): keeps heavy smoothing longer, opens up late
  • Lower (<1): opens up earlier, more immediate feel
float
default:"0.156"
Suppresses tiny rotational deltas before adaptation. Too high makes small movements feel ignored.
float
default:"0.085"
Minimum alpha for X/Y/Z position. Higher = less lag but more shake.
float
default:"0.218"
Maximum alpha for X/Y/Z position. Higher = faster positional response.
float
default:"4.26"
Shape of alpha transition for translation. Same behavior as rotation curve.
float
default:"1.041"
Suppresses tiny translational jitter. Too high creates a sticky center feel.

Advanced Hydra/NGC Controls

These controls appear in the left column when Advanced Mode is enabled. Start with defaults and tune only if needed.
float
Scales Brownian head drive before alpha synthesis. Controls how much noise-energy contributes to adaptive response.
float
Raises the activation threshold for the Adaptive head. Higher = Adaptive head engages later during stronger motion.
float
Scales influence of cached next-frame prediction. Watch Predictive error (rot/pos) status to tune.
float
Sets minimum shoulder trust level before mode-dependent lift. Controls overall trust in MTM composition.
float
Controls depth-scale commutator coupling strength. Affects how Z-depth influences translational likelihood.
float
Reference distance used by NGC coupling term. Nominal Z-depth for depth-scale normalization.

Component Toggles

In Advanced Mode, you can enable/disable individual filter components:
boolean
default:"true"
EMA smoothing head
  • On: Uses output += alpha * (input - output)
  • Off: Pure pass-through (output = input) while status info still updates
boolean
default:"true"
Brownian interface contribution
  • On: Brownian term contributes to both adaptive drive and MTM measurement
  • Off: Brownian status info computes, but contribution is disabled
boolean
default:"true"
Rényi MTM shoulder composition
  • On: Mode diffusion + posterior update influence adaptive responsiveness
  • Off: MTM influence is fully removed (mode_e does not affect response)

Tuning Workflow

1

Start with Adaptive Mode off

Disable Adaptive Mode initially. Enable it only if you need extra responsiveness during sustained motion.
2

Observe status info

Watch the status line while moving and while still to understand current behavior.
Legend:
  • Mon: Status active
  • E/B/A/P/M: EMA, Brownian, Adaptive, Predictive, MTM toggles
  • rE, rP: Rotation mode expectation and peak
  • pE, pP: Translation mode expectation and peak
  • k: Live NGC coupling residual
3

Tune rotation first, then translation

Adjust one family at a time to avoid chasing parameter interactions.
4

Fine-tune specific parameters

Make small moves (~5-10% of slider range) and test with:
  • Still head pose (jitter check)
  • Slow pan
  • Fast snap turn
  • Lean in/out

Two-Column Advanced Tuning

When Advanced Mode is enabled, use this order:
  1. Start with defaults
  2. Tune MTM Shoulder Base for overall trust level
  3. Tune Brownian Head Gain to balance jitter vs response
  4. Tune Adaptive Threshold Lift to control adaptive engagement
  5. Tune Predictive Head Gain while watching predictive error status
  6. Tune NGC Kappa and NGC Nominal Z last for translational coupling
If tuning regresses performance, use Reset sliders to defaults and repeat the process. The reset button writes default values to the active profile immediately.

Stable / Simulator Focus

Maximum smoothness for precision work:

Balanced (Factory Default)

General purpose balanced settings:

Responsive / Fast Action

Minimal lag for competitive gaming:

Status Information

The status line uses a compact fixed-width format to avoid UI resizing:
Status fields:
  • Mon: Monitoring active
  • E/B/A/P/M: Head toggles (1=enabled, 0=disabled)
  • rE/rP: Rotation mode expectation/peak
  • pE/pP: Translation mode expectation/peak
  • k: NGC coupling residual
Brownian status:
  • raw: Instantaneous noise energy
  • filtered: Smoothed noise energy
  • delta: Difference (raw - filtered)
  • damped: Damped contribution

Troubleshooting

  • Increase Min smoothing or deadzone
  • Check Brownian damped status info
  • Reduce Brownian Head Gain
  • Raise Max smoothing
  • Lower Curve value
  • Enable Adaptive Mode
  • Increase Adaptive Threshold Lift
  • Lower Max smoothing
  • Raise Curve value
  • Disable Adaptive Mode
  • Reduce deadzone values
  • Check that motion exceeds deadzone threshold

Implementation Notes

Rotation wrap-around is handled automatically. Angles crossing ±180° are properly unwrapped.Recenter resets internal state on the next frame, clearing history and mode probabilities.

Code References

Relevant source files in the OpenTrack codebase:
  • Core filter/update: filter-alpha-spectrum/ftnoir_filter_alpha_spectrum.cpp
  • State definitions: filter-alpha-spectrum/ftnoir_filter_alpha_spectrum.h
  • Dialog UI: filter-alpha-spectrum/ftnoir_filter_alpha_spectrum_dialog.cpp

Implementation Status

Currently implemented:
  • Per-axis adaptive EMA smoothing
  • Hydra-style four-head composition (EMA + Brownian + Adaptive + Predictive)
  • True Rényi/Tsallis neck scoring across enabled heads
  • MTM shoulder composition over neck-normalized head candidates
  • NGC depth-scale commutator coupling term
  • Alpha-spectrum mode probability vector (7 bins) with per-frame diffusion
  • Measurement-driven mode likelihood updates and normalized posterior
  • Runtime status info in settings dialog
Not yet implemented:
  • Full transition-matrix MTM with explicit regime semantics
  • Rényi-distance likelihood over expanded head sets
  • IMM-style mode mixing across explicit motion regimes

Further Reading

Author Discussion

Technical deep-dive and research background for the Alpha Spectrum filter implementation