A Windows port of fische — a real-time standalone music visualizer originally built for Linux. This port brings fische to Windows with native WASAPI loopback audio capture, Spout texture sharing for sending the visualization to other apps, OpenGL rendering via GLFW, adjustable audio sensitivity, VSync and FPS control, always-on-top, fullscreen, and a native Win32 settings dialog — all packed into a single portable executable.
fische for Windows — real-time audio visualization

Visual paused — title bar shows "fische - PAUSED"

F1 help screen with keyboard/mouse shortcuts

On-screen display for hotkey feedback

Spout output received in Spout Receiver at 60 FPS

fische for Windows Demo
fischeWindowsDemo.mp4
Watch/Download for high-quality version
fische → NestDrop via Spout
fischeWindowstoNestDrop.mp4
Watch/Download for high-quality version
- 🎵 Real-time audio visualization — reacts to whatever is playing on your speakers, microphone or any virtual cable;
- 🔊 WASAPI loopback capture — captures system audio output directly; supports 44.1 kHz, 48 kHz, 96 kHz, and 192 kHz sample rates
- 🎛️ ASIO support — connect any ASIO-compatible audio interface, DJ controller (e.g., Pioneer DJ/AlphaTheta, Denon DJ, Numark etc.) or virtual ASIO driver (e.g. ASIO4ALL, FlexASIO) for low-latency instrument, microphone or direct output from DJ software (Serato DJ, rekordbox, VirtualDJ) and DAWs; selectable alongside WASAPI devices in the settings dialog
- 🎚️ Adjustable audio sensitivity — boost or reduce the audio input level with Up/Down keys or the settings dialog; ranges from 0 to 15.
- 📡 Spout output — share the visualization as a texture with any Spout-compatible app (OBS via Spout Plug-in, SpoutCam, Resolume, NestDrop, TouchDesigner etc.); sent as a DirectX 11 shared texture via Spout interop
- ⚙️ Settings dialog — configure audio device, detail level, FPS limit, VSync, Spout and more; all saved to
settings.ini - 🖼️ Fullscreen support — toggle at any time with
For withDouble Left Click - 👁️ Window Visibility — hide visual window to taskbar tray by pressing
Sto keep it running smoothly in the background without taking up desktop space. Useful when sharing the visual with Spout with a clutter-free hidden window. - 🧠 Nervous mode — rapid-animation style toggle
- ⏸️ Pause / unpause
- 💾 Vector file persistence — optionally cache computed vector fields to
vectors/for faster startup - 🎒 100% Portable — A bootstrapped .exe with settings UI, settings and vector loading/saving and lots of functionalities
4 years ago (almost the end of August 2022), I've stumbled across FishBMC while playing some tunes on Kodi using my phone (the old phone was Huawei P30 lite for me). A few days ago, I've decided to fully port this standalone visualization by the same name (fische) to Windows, first thing I've tried to port it by using ChatGPT Codex, but this one did a very great job on a first try. I've then refined and added some features using Claude and my own work, idea and inspiration. For me it looks like it's MilkDrop-ish inspired UI in-render + a very much excitement of new additional features, Spout visual sending, functional hotkeys, settings dialog and so on. That's a story.
| Requirement | Minimum |
|---|---|
| OS | Windows 7 or later |
| Runtime | Microsoft Visual C++ Redistributable 2015-2022 (Mirror) or an optional All-In-One package |
| GPU | OpenGL 3.2 Core |
| CPU | Any 32-bit or 64-bit compatible processor |
| Audio | Any WASAPI-compatible output device or ASIO driver |
| RAM | 128 MB |
| Spout | Optional — Spout for sending visual renderer |
- Copy the executable for your PC to any folder you want:
fische-x64.exefor 64-bit Windows, orfische-x86.exefor 32-bit Windows. - Double-click it to run.
On the first run, settings.ini is created next to the executable with default settings. Audio capture starts automatically using the default output device.
| Key | Action |
|---|---|
Esc |
Exit |
F1 |
Show / hide help screen |
U |
Open latest release page (when update is available) |
F (or Double Left Click) |
Toggle fullscreen |
T |
Toggle always on top |
N |
Toggle nervous mode |
S |
Hide visual window |
O (or Right Click) |
Open settings dialog |
P |
Pause / unpause |
Z |
Toggle Spout output |
X |
Toggle fixed Spout resolution |
R |
Reset audio sensitivity |
Up |
Increase audio sensitivity |
Down |
Decrease audio sensitivity |
settings.ini is created beside the executable on first run:
[fische]
Audio=
AudioSensitivity=1
Detail=High
Quality=2
FPSLimit=60
NervousMode=false
UseFilePersistence=false
SpoutSenderEnabled=false
FixedSpoutEnabled=false
FixedSpoutWidth=1080
FixedSpoutHeight=1920
VSync=Off
AlwaysOnTop=false
WindowWidth=1280
WindowHeight=720
HideWindow=false| Key | Type | Description |
|---|---|---|
Audio |
string | Friendly name of the audio device; [ASIO] prefix for ASIO drivers, empty/no name match = system default output |
AudioSensitivity |
0-15 | Multiplier applied to audio input before visualization; 1 = no change |
Detail |
Low / Normal / High / Extreme | Visual detail level (also written as Quality 0-3) |
FPSLimit |
0-240 | Target frame rate; 0 = unlimited |
NervousMode |
true / false | Rapid animation mode |
UseFilePersistence |
true / false | Cache vector fields to vectors/ folder |
SpoutSenderEnabled |
true / false | Enable Spout texture sharing |
FixedSpoutEnabled |
true / false | Render and send Spout output at a fixed resolution independent of the window size |
FixedSpoutWidth / FixedSpoutHeight |
integer | Fixed Spout output resolution; only used when FixedSpoutEnabled is true |
VSync |
Off / On / Adaptive | VSync mode; Adaptive mode uses glfwSwapInterval(-1), which reduces tearing without hard locking the frame rate |
AlwaysOnTop |
true / false | Keep the visual window above all other windows |
WindowWidth / WindowHeight |
integer | Last window size; restored on next launch |
HideWindow |
true / false | Shows/hides the visual render window at startup |
GNU General Public License v2.0 or later.
- Original fische engine: © 2013 Marcel Ebmer (@maysl), © 2005–2026 Team Kodi; The Kodi Foundation
- Spout: © Lynn Jarvis (@leadedge) — BSD-style
- ASIO: © 2026 Steinberg Media Technologies GmbH
- Windows port and integration: see
LICENSE.md
| Project | Author |
|---|---|
| fische | Marcel Ebmer (maysl) |
| visualization.fishbmc (alternative (OLD)) | Team Kodi; The Kodi Foundation |
| GLFW | Camilla Löwy and contributors |
| Spout | Lynn Jarvis (leadedge) |
| BeatDrop loopback capture | Matthew van Eerde & Incubo_ |
| ASIO SDK | Steinberg |
| fische GLFW project inspiration/derived from | proconsule |
| GLAD | David Herberth |
| GLM | G-Truc Creation |
- Original fische website (archived): https://web.archive.org/web/20200801073714/http://26elf.at/musicviz/
- Spout: https://spout.zeal.co/
- Steinberg: https://www.steinberg.net/
- WASAPI loopback capture by Matthew van Eerde: https://matthewvaneerde.wordpress.com/2008/12/16/sample-wasapi-loopback-capture-record-what-you-hear/
- BeatDrop Music Visualizer: a custom MilkDrop2 standalone visualization for Windows: https://github.com/OfficialIncubo/BeatDrop-Music-Visualizer/

