← All posts

Winamp for Your Terminal — Audio Visualizers Meet AI Coding

Winamp was the first app people skinned. MOLTamp brings audio-reactive visualizers to your AI terminal.

In 1997, Winamp shipped with a built-in audio visualizer. A little rectangle at the top of the player that pulsed and swirled with whatever music you were playing. It was mesmerizing. It was pointless. It was the reason half a generation learned what "spectrum analyzer" meant.

Twenty-nine years later, I built one into a terminal emulator. And it's not pointless at all.

The Winamp Effect

Winamp didn't invent audio visualization. But it democratized it. Before Winamp, visualizers were standalone screensavers or expensive studio software. Winamp put one in the hands of every kid with a Pentium II and a pirated MP3 collection.

But the visualizer wasn't really about the visualization. It was about the feeling. Music playing. Colors moving. Your computer felt alive. It wasn't just executing instructions — it was responding to something human.

That feeling is what made Winamp the most customized application in history. Over 30,000 skins were created for it. People spent hours — days — crafting pixel-perfect interfaces for a media player. Not because they needed a better way to press Play. Because they wanted their software to feel like theirs.

Winamp died (mostly). The feeling didn't.

Why a Visualizer in a Terminal?

When I tell people MOLTamp has audio-reactive visualizers, the first question is always: why?

Fair question. Here's the honest answer.

Developers code with music. This isn't controversial. Lo-fi hip hop streams have millions of concurrent viewers. Spotify's "coding" playlists have hundreds of thousands of followers. Music is part of the workflow for most developers.

AI terminal sessions are long. A Claude Code session isn't a quick ls -la. It's a 2-hour collaboration. You're reading, thinking, approving, watching the AI work. The tempo of the session ebbs and flows. Having ambient visual feedback that matches the audio environment makes the workspace feel cohesive rather than sterile.

Peripheral stimulation aids focus. This is backed by research, but you don't need a study to know it — ambient motion in your peripheral vision (a fireplace, rain on a window, a visualizer) keeps your brain in a low-level engaged state that prevents drift. It's the same reason lo-fi streams always have an animation loop.

It feels good. That's the real answer. Code streaming in the terminal while bass-reactive colors pulse along the bottom edge of your screen — it feels like the future we were promised in the 90s. It feels like your computer is alive.

How MOLTamp's Visualizer Works

The visualizer in MOLTamp is a real-time audio-reactive panel that renders alongside your terminal. Here's the technical architecture:

Audio Capture

MOLTamp captures system audio (whatever's playing through your speakers or headphones) using the Web Audio API's analyser node. No special audio routing needed — if you can hear it, MOLTamp can see it.

The analyser provides two data streams:

  • Frequency data — A spectrum breakdown (bass, mids, highs) as an array of intensity values
  • Waveform data — The raw audio waveform shape

Beat Detection

A simple but effective beat detector runs on every frame. It tracks energy levels in the bass frequency range, maintains a running peak, and fires a "beat" event when energy exceeds the peak by a threshold (1.4x). The beat state includes:

  • energy — Current bass energy level
  • peak — Running peak (decays at 0.97x per frame)
  • isBeat — Whether this frame is a beat hit
  • decay — Beat intensity that fades between hits (0.92x per frame)

This gives visualizer presets everything they need to react to rhythm.

Renderer Presets

The actual visual rendering is handled by preset files — standalone JavaScript modules that live in ~/Moltamp/visualizers/. Each preset gets a canvas context and per-frame data:

{
  frequency: Uint8Array,    // 0-255 per frequency bin
  waveform: Uint8Array,     // 0-255 waveform samples
  beat: { energy, peak, isBeat, decay },
  colors: { bg, fg, accent, ... },  // from active skin
  width: number,
  height: number,
  time: number
}

The preset draws whatever it wants on the canvas. Bars, waves, particles, geometric shapes, abstract art. The system is completely open — write a JS file, drop it in the folder, and it appears in the preset picker.

Sandboxed Execution

Each preset runs inside a sandboxed Web Worker. It can't access the DOM, the filesystem, IPC, or React state. It gets frame data in, draws pixels out. This means community-shared presets are safe to run — they literally cannot do anything except draw on a canvas.

The Built-In Presets

MOLTamp ships with a default spectrum analyzer preset. It renders frequency bars that respond to music — tall bars for bass hits, rippling highs for cymbals and hi-hats. The bars inherit colors from your active skin, so the Blade Runner preset renders in amber and teal, while Neon Horizon renders in hot pink and cyan.

The preset system is designed to grow. Community members can build and share visualizer presets through the same gallery that handles skins and widgets.

What It Actually Feels Like

Screenshots don't capture this. You need to experience it.

Picture this: You're working on a complex refactor with Claude Code. The AI is streaming a response — rewriting a function, explaining its reasoning. Your music is playing. The visualizer at the bottom of your terminal pulses with the bass line. The skin's ambient glow shifts subtly. Your Pomodoro timer counts down in the side panel.

It's not a terminal. It's a cockpit.

And when the music drops and the visualizer erupts while Claude Code completes a multi-file edit — that synchronicity between audio, visual, and work output creates a moment. It sounds dramatic. It is. That's the point.

This is what vibe coding actually means. Not just "vibes" as an aesthetic label. An actual vibe — a resonance between your environment, your tools, and your focus state.

Setting Up the Visualizer

  1. Open MOLTamp
  2. Go to Settings → Layout
  3. Enable the Visualizer panel (drag it to your preferred position — bottom, side, or floating)
  4. Play music through your system audio
  5. The visualizer starts automatically when it detects audio

Adjust the height by dragging the panel border. Switch presets from the visualizer's settings gear. Control effect intensity from 0 (minimal) to 2 (maximum).

If the visualizer isn't detecting audio, check your system audio permissions — MOLTamp needs permission to capture system audio output.

Building Your Own Preset

For the adventurous: creating a visualizer preset is straightforward.

  1. Navigate to ~/Moltamp/visualizers/
  2. Copy an existing preset as a starting point
  3. Edit the render function — you get canvas context + frame data
  4. Save — MOLTamp hot-reloads preset changes

The render function runs at 60fps. You have full Canvas 2D API access. The colors object gives you the active skin's palette, so your visualizer automatically matches whatever skin is applied.

The Nostalgia Loop

There's a reason Winamp skins are having a cultural moment. Retro computing aesthetics are everywhere — pixel art, CRT effects, vaporwave gradients. But it's not really about nostalgia. It's about a time when software had personality. When your media player didn't look like every other media player. When customization was a feature, not a premium upsell.

MOLTamp's visualizer is a direct descendant of that energy. It exists because software should be expressive, not just functional. Because your AI terminal — the tool you spend more time with than any other — should feel like something you chose, not something you endured.

Plug in your headphones. Pick a skin. Play your favorite album. Launch Claude Code.

Tell me that doesn't feel different.