Main Window Visualization

SkillDev tools

The 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.

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

ModeDescription
OffNo main-window visualization; leaves the skin's prepared display artwork visible
ClassicLow-fi 19-bar spectrum analyzer with skin colors and cropped analyzer sub curve (default; persisted internally as Spectrum)
CavaMono vDSP/Cava bar analyzer drawn with CoreGraphics; colors follow a visible mid→bright range of the active skin palette until overridden
EnhancedCompact professional LED analyzer with cropped sub range, clean peak caps, and restrained meter colors
UltraDense professional spectrum analyzer with cropped sub range, fast decay, clean peak caps, and restrained meter colors
FireGPU flame simulation using Metal compute shaders
JWSTDeep space flythrough with 3D star field and JWST diffraction flares
LightningGPU lightning storm with fractal bolts mapped to spectrum peaks
MatrixFalling digital rain with procedural glyphs mapped to spectrum bands
SnowAudio-reactive snowfall with flurry-to-blizzard intensity and bass-driven wind gusts
EKGOscilloscope-style ECG monitor; each detected audio peak fires one QRS, height scales with peak prominence (no BPM clock)
vis_classicExact-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: SpectrumAnalyzerView with isEmbedded = true as a subview of the main window
  • Cava CPU path: a lazily-created CavaPresenter(scope: .mainWindow) feeds CavaDrawing in 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.PreferenceScope and *.mainWindow keys

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 rendering
  • Cava/CavaSettings.swift / Cava/CavaPresenter.swift — scoped inline Cava preferences and runtime
  • App/ContextMenuBuilder.swift — mode selection and mode-specific settings
  • Visualization/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