<< All versions
Skill v1.0.1
currentAutomated scan100/100ad-repo/nullplayer/main-window-visualization
+3 new
──Details
PublishedJuly 29, 2026 at 08:17 AM
Content Hashsha256:06e7fcf3af2000b8...
Git SHA83208cef5436
Bump Typepatch
──Files
Files (1 file, 4.7 KB)
SKILL.md4.7 KBactive
SKILL.md · 66 lines · 4.7 KB
version: "1.0.1" name: main-window-visualization description: 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.
Main Window Visualization
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