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: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:- EMA head: Standard exponential smoothing
- Brownian head: Noise-energy contribution
- Adaptive head: Sustained-motion responsiveness boost (15% higher activation threshold)
- Predictive head: One-step-ahead prediction from previous frame
Parameters
Simplified Mode (Recommended)
The default workflow uses simplified controls at the top of the dialog: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
Show detailed per-parameter controls. When off, detailed controls are disabled (greyed out).
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)
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
Rotation Parameters
Rotation Parameters
Minimum alpha for rotations. Higher = less lag at rest but more jitter.
Maximum alpha for rotations. Higher = snappier turns and faster catch-up.
Shape of alpha transition based on motion:
- Higher (>1): keeps heavy smoothing longer, opens up late
- Lower (<1): opens up earlier, more immediate feel
Suppresses tiny rotational deltas before adaptation. Too high makes small movements feel ignored.
Translation Parameters
Translation Parameters
Minimum alpha for X/Y/Z position. Higher = less lag but more shake.
Maximum alpha for X/Y/Z position. Higher = faster positional response.
Shape of alpha transition for translation. Same behavior as rotation curve.
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.
Scales Brownian head drive before alpha synthesis. Controls how much noise-energy contributes to adaptive response.
Raises the activation threshold for the Adaptive head. Higher = Adaptive head engages later during stronger motion.
Scales influence of cached next-frame prediction. Watch Predictive error (rot/pos) status to tune.
Sets minimum shoulder trust level before mode-dependent lift. Controls overall trust in MTM composition.
Controls depth-scale commutator coupling strength. Affects how Z-depth influences translational likelihood.
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:EMA smoothing head
- On: Uses
output += alpha * (input - output) - Off: Pure pass-through (
output = input) while status info still updates
Brownian interface contribution
- On: Brownian term contributes to both adaptive drive and MTM measurement
- Off: Brownian status info computes, but contribution is disabled
Rényi MTM shoulder composition
- On: Mode diffusion + posterior update influence adaptive responsiveness
- Off: MTM influence is fully removed (
mode_edoes not affect response)
Tuning Workflow
Start with Adaptive Mode off
Disable Adaptive Mode initially. Enable it only if you need extra responsiveness during sustained motion.
Observe status info
Watch the status line while moving and while still to understand current behavior.Legend:
Mon: Status activeE/B/A/P/M: EMA, Brownian, Adaptive, Predictive, MTM togglesrE,rP: Rotation mode expectation and peakpE,pP: Translation mode expectation and peakk: Live NGC coupling residual
Tune rotation first, then translation
Adjust one family at a time to avoid chasing parameter interactions.
Two-Column Advanced Tuning
When Advanced Mode is enabled, use this order:- Left Column (Hydra/NGC)
- Right Column (Core EMA)
- Start with defaults
- Tune MTM Shoulder Base for overall trust level
- Tune Brownian Head Gain to balance jitter vs response
- Tune Adaptive Threshold Lift to control adaptive engagement
- Tune Predictive Head Gain while watching predictive error status
- Tune NGC Kappa and NGC Nominal Z last for translational coupling
Recommended Profiles
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:Mon: Monitoring activeE/B/A/P/M: Head toggles (1=enabled, 0=disabled)rE/rP: Rotation mode expectation/peakpE/pP: Translation mode expectation/peakk: NGC coupling residual
raw: Instantaneous noise energyfiltered: Smoothed noise energydelta: Difference (raw - filtered)damped: Damped contribution
Troubleshooting
View jitters while still
View jitters while still
- Increase Min smoothing or deadzone
- Check Brownian damped status info
- Reduce Brownian Head Gain
Feels laggy during turns
Feels laggy during turns
- Raise Max smoothing
- Lower Curve value
- Enable Adaptive Mode
- Increase Adaptive Threshold Lift
Feels too twitchy
Feels too twitchy
- Lower Max smoothing
- Raise Curve value
- Disable Adaptive Mode
Small intentional movement ignored
Small intentional movement ignored
- 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
- 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