# Oscilloscope2 Plugin Configuration Values

Configuration file:

```text
~/.hyprtile/gl/oscilloscope2.json
```

The file and every individual value are optional. Missing values keep the built-in defaults. Invalid or out-of-range values are ignored.

## Audio response

| Value | Default | Valid range / values | Purpose |
|---|---:|---|---|
| `emphasis_mode` | `"analog_scope"` | `"flat"`, `"balanced"`, `"analog_scope"`, `"treble_lift"` | Selects how the 32 FFT bands are weighted before rendering. |
| `audio_attack` | `0.72` | `0.0`–`1.0` | How quickly FFT bands react when energy rises. |
| `audio_release` | `0.17` | `0.0`–`1.0` | How quickly FFT bands fall back when energy drops. |
| `peak_decay` | `0.38` | `0.0`–`5.0` | Decay speed of the stored FFT peak values. |

## Waveform normalization

| Value | Default | Valid range | Purpose |
|---|---:|---:|---|
| `waveform_level_attack` | `0.34` | `0.0`–`1.0` | Rise speed of the detected live waveform level. |
| `waveform_level_release` | `0.10` | `0.0`–`1.0` | Fall speed of the detected live waveform level. |
| `waveform_target` | `0.80` | `0.05`–`2.0` | Target normalized waveform amplitude. |
| `waveform_gain_min` | `0.85` | `0.05`–`50.0` | Minimum automatic waveform gain. |
| `waveform_gain_max` | `12.0` | `0.05`–`100.0` | Maximum automatic waveform gain. Values below `waveform_gain_min` are raised to the minimum. |
| `waveform_gain_attack` | `0.045` | `0.0`–`1.0` | Speed at which automatic gain increases. |
| `waveform_gain_release` | `0.120` | `0.0`–`1.0` | Speed at which automatic gain decreases. |

## Mouse tilt and waveform geometry

| Value | Default | Valid range | Purpose |
|---|---:|---:|---|
| `mouse_tilt_x` | `0.080` | `-0.5`–`0.5` | Horizontal scene shift caused by mouse position. Negative values reverse the direction. |
| `mouse_tilt_y` | `-0.055` | `-0.5`–`0.5` | Vertical scene shift caused by mouse position. Negative values reverse the direction. |
| `scope_base_scale` | `0.245` | `0.0`–`1.0` | Base vertical size of the main waveform. |
| `scope_energy_scale` | `0.185` | `0.0`–`1.0` | Extra waveform size added by overall live energy. |
| `scope_bass_scale` | `0.040` | `0.0`–`0.5` | Extra waveform size added by bass energy. |
| `wobble_strength` | `0.006` | `0.0`–`0.1` | Strength of the bass-driven horizontal waveform wobble. |
| `wobble_speed` | `0.60` | `-20.0`–`20.0` | Wobble animation speed. Negative values reverse direction. |
| `wobble_frequency` | `1.7` | `0.0`–`20.0` | Number/tightness of wobble cycles across the screen. |

## Secondary waveform layers

| Value | Default | Valid range | Purpose |
|---|---:|---:|---|
| `ghost_strength` | `1.0` | `0.0`–`4.0` | Strength of the cyan and magenta ghost waveforms. `0.0` disables them. |
| `subwave_strength` | `1.0` | `0.0`–`4.0` | Strength of the green/acid sub-wave. `0.0` disables it. |
| `trail_strength` | `1.0` | `0.0`–`4.0` | Strength of the trailing waveform echoes behind the main line. |

## Background and CRT texture

| Value | Default | Valid range | Purpose |
|---|---:|---:|---|
| `vignette_strength` | `1.0` | `0.0`–`4.0` | Strength of the dark/bright radial edge falloff. `0.0` removes the vignette. |
| `scan_strength` | `0.022` | `0.0`–`0.5` | Strength of the animated horizontal scan wave. `0.0` disables it. |
| `scan_speed` | `64.0` | `-1000.0`–`1000.0` | Scan-wave movement speed. Negative values reverse direction. |
| `scan_frequency` | `0.108` | `0.0`–`2.0` | Spatial frequency/tightness of the scan wave. |
| `noise_strength` | `0.025` | `0.0`–`0.5` | Strength of the animated grain/noise. `0.0` disables it. |
| `noise_speed` | `28.0` | `0.0`–`500.0` | How quickly the noise pattern changes. |
| `noise_scale` | `0.72` | `0.01`–`10.0` | Spatial scale of the noise pattern. |
| `skyline_strength` | `1.0` | `0.0`–`4.0` | Strength of the animated horizon/skyline background layer. |
| `skyline_speed` | `0.8` | `-20.0`–`20.0` | Skyline animation speed. Negative values reverse direction. |

## Grid and scene layers

| Value | Default | Valid range | Purpose |
|---|---:|---:|---|
| `major_grid_strength` | `1.0` | `0.0`–`4.0` | Strength of the large horizontal/vertical grid. |
| `fine_grid_strength` | `1.0` | `0.0`–`4.0` | Strength of the fine grid. |
| `diagonal_grid_strength` | `1.0` | `0.0`–`4.0` | Strength of the diagonal grid lines. |
| `lanes_strength` | `1.0` | `0.0`–`4.0` | Strength of the two moving diagonal light lanes. |
| `pillars_strength` | `1.0` | `0.0`–`4.0` | Strength of the FFT-driven vertical pillar field. |
| `hud_edge_strength` | `1.0` | `0.0`–`4.0` | Strength of the glowing HUD border around the screen edges. |
| `rails_strength` | `1.0` | `0.0`–`4.0` | Strength of the animated top and bottom rails. |

## Main waveform and animated details

| Value | Default | Valid range | Purpose |
|---|---:|---:|---|
| `main_line_strength` | `1.0` | `0.0`–`4.0` | Strength of the bright white main waveform core. |
| `main_glow_strength` | `1.0` | `0.0`–`4.0` | Strength of the wide cyan/magenta glow around the main waveform. |
| `ghost_lines_strength` | `1.0` | `0.0`–`4.0` | Master strength for the colored ghost/sub-wave line rendering. |
| `playhead_strength` | `1.0` | `0.0`–`4.0` | Strength of the moving vertical playhead and dot. |
| `sparks_strength` | `1.0` | `0.0`–`4.0` | Strength of the small bright sparks near the waveform. |
| `data_rain_strength` | `1.0` | `0.0`–`4.0` | Strength of the animated digital rain particles. |
| `center_line_strength` | `1.0` | `0.0`–`4.0` | Strength of the horizontal center reference line. |

## Final image processing

| Value | Default | Valid range / values | Purpose |
|---|---:|---|---|
| `brightness` | `1.0` | `0.0`–`4.0` | Final brightness multiplier before gamma and tint. |
| `gamma` | `0.86` | `0.1`–`3.0` | Final gamma curve. Lower values generally brighten mid-tones; higher values darken them. |
| `tint_enabled` | `false` | `true`, `false` | Enables the optional global theme tint. |
| `tint` | `"255,255,255"` | each RGB component `0`–`255` | Global tint color in `"R,G,B"` format. |
| `tint_strength` | `1.0` | `0.0`–`1.0` | Blend amount between the original colors and the luminance-based tint. |

## Notes

- Set any visual `*_strength` value to `0.0` to effectively disable that layer.
- The configuration is loaded when the plugin is initialized. Switching away from `oscilloscope2` and back reloads the file.
- The built-in defaults reproduce the original `oscilloscope2` appearance.
