Main Window Visualization
SkillDev toolsThe main window's built-in 76×16 (Winamp coordinates) visualization area — twelve display modes, mode switching, persistence, per-mode settings, and embedded renderer lifecycles. Use when modifying the in-skin visualizer area or its menu.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Main Window Visualization skill
What this skill tells your AI
The instructions your AI receives, as published by ad-repo/nullplayer in skills/main-window-visualization/SKILL.md and read by ahel’s review.
The main window's built-in visualization area (76×16 pixels in Winamp coordinates) supports twelve display modes. For per-mode shader/algorithm internals see gpu-vis-modes.
Modes
| Mode | Description |
|---|---|
| Off | No main-window visualization; leaves the skin's prepared display artwork visible |
| Classic | Low-fi 19-bar spectrum analyzer with skin colors and cropped analyzer sub curve (default; persisted internally as Spectrum) |
| Cava | Mono vDSP/Cava bar analyzer drawn with CoreGraphics; colors follow a visible mid→bright range of the active skin palette until overridden |
| Enhanced | Compact professional LED analyzer with cropped sub range, clean peak caps, and restrained meter colors |
| Ultra | Dense professional spectrum analyzer with cropped sub range, fast decay, clean peak caps, and restrained meter colors |
| Fire | GPU flame simulation using Metal compute shaders |
| JWST | Deep space flythrough with 3D star field and JWST diffraction flares |
| Lightning | GPU lightning storm with fractal bolts mapped to spectrum peaks |
| Matrix | Falling digital rain with procedural glyphs mapped to spectrum bands |
| Snow | Audio-reactive snowfall with flurry-to-blizzard intensity and bass-driven wind gusts |
| EKG | Oscilloscope-style ECG monitor; each detected audio peak fires one QRS, height scales with peak prominence (no BPM clock) |
| vis_classic | Exact-port vis_classic analyzer core with profile-compatible rendering (see vis-classic-guide) |
Switching Modes
- Double-click the visualization area to cycle through modes
- Visuals → Main Window → Mode selects a specific mode, including Off
- Persisted as
mainWindowVisMode(UserDefaults)
Settings
All non-vis_classic GPU modes share:
- Responsiveness — bar decay (Instant/Snappy/Balanced/Smooth) —
mainWindowDecayMode - Normalization — level scaling (Accurate/Adaptive/Dynamic) —
mainWindowNormalizationMode
Mode-specific:
- Cava — Color Preset, Bars, Smoothing, and Bass Tilt. Uses
cava.mainWindow.*keys, independent from the standalone Cava window. - Fire — Flame Style + Fire Intensity —
mainWindowFlameStyle,mainWindowFlameIntensity - Lightning — Lightning Style —
mainWindowLightningStyle - Matrix — Matrix Color + Matrix Intensity —
mainWindowMatrixColorScheme,mainWindowMatrixIntensity - vis_classic — Profile + Fit to Width (window-scoped UserDefaults keys; see vis-classic-guide)
Implementation
- GPU overlay:
SpectrumAnalyzerViewwithisEmbedded = trueas a subview of the main window - Cava CPU path: a lazily-created
CavaPresenter(scope: .mainWindow)feedsCavaDrawingin the normal AppKit coordinate space. Classic draws after restoring its flipped skin transform; modern draws inside the scaled spectrum panel. - Embedded EKG sharpness: EKG history scrolling accumulates fractional motion and shifts the persistent trace texture by whole physical pixels when
isEmbedded = true. This prevents repeated bilinear resampling from blurring the tiny 76×16 in-skin trace while keeping average scan speed and beat timing unchanged. - vis_classic core: CPU frame generation via
VisClassicBridge+CVisClassicCore, uploaded to a Metal texture - Positioning: Winamp coordinates → macOS view coordinates
- Lifecycle: GPU overlay and Cava presenter are created lazily on first activation
- CPU efficiency: The Metal display link and Cava timer/audio consumer pause when the main window is minimized, hidden, or occluded. Cava uses a scope-distinct full-stereo consumer ID.
- vis_classic state is window-scoped — main window and spectrum window keep independent profile/fit/transparent-bg. Use
VisClassicBridge.PreferenceScopeand*.mainWindowkeys
Key Files
Windows/MainWindow/MainWindowView.swift— mode switching, overlay (classic UI)Windows/ModernMainWindow/ModernMainWindowView.swift— mode switching, overlay (modern UI)Visualization/SpectrumAnalyzerView.swift— shared Metal renderingCava/CavaSettings.swift/Cava/CavaPresenter.swift— scoped inline Cava preferences and runtimeApp/ContextMenuBuilder.swift— mode selection and mode-specific settingsVisualization/VisualizationPreferences.swift— centralized main-window reset coverage
Signals
- GitHub stars
- 118
- Forks
- 9
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
main-window-visualization- Source
- github.com/ad-repo/nullplayer