Log in

View Full Version : Spectre - audio spectrum visualizer


Kurt.noise
7th March 2026, 08:49
Spectre (https://github.com/Kurtnoise-zeus/spectre) is an AviSynth+ plugin that renders a real-time audio spectrum visualizer as an overlay or standalone clip. It uses a pure C++ Cooley-Tukey FFT with seven window functions, six color themes, logarithmic/linear frequency axis, peak hold, and dB grid.

What does it looks like, for instance :
https://github.com/Kurtnoise-zeus/spectre/raw/main/img/overview.png

https://rehost.diberie.com/Picture/Get/r/495517

Requirements

AviSynth+ 3.7 or newer (64-bit recommended)
Probably latest VC++ runtime dlls (https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170#latest-supported-redistributable-version) if you dont have them installed on your machine.
A CPU with at least SSE2 (x64 Release); AVX2 recommended (Haswell / Ryzen or newer)



Examples Usage

LoadPlugin("Spectre.dll")
LoadPlugin("ffms2.dll")

video = FFVideoSource("movie.mkv")
audio = FFAudioSource("movie.mkv", track=1)
src = AudioDubEx(video, audio)

Spectre(src, fft_size=4096, num_bars=160, overlay=true, theme=2)


LoadPlugin("Spectre.dll")
LoadPlugin("ffms2.dll")

audio = FFAudioSource("Input.m4a")

# Create a blank video clip matching the audio duration
# BlankClip needs a frame count - calculate from audio length
fps_num = 25
fps_den = 1
frame_count = int(AudioLengthF(audio) / AudioRate(audio) * fps_num / fps_den) + 1

blank = BlankClip(length=frame_count, width=1280, height=360, fps=fps_num, pixel_type="RGB24")
src = AudioDubEx(blank, audio)


Spectre(src, fft_size=4096, num_bars=160, width=1280,
\ height=360, window=1, theme=2, log_scale=true, show_peaks=true, overlay=true)


Parameters

| Parameter | Default | Description |
| fft_size | 2048 | FFT size — power of 2, range 64–65536. Larger = better frequency resolution, higher CPU cost. |
| num_bars | 128 | Number of spectrum bars (4–1024) |
| width | source | Output width (defaults to source clip width) |
| height | source | Output height (defaults to source clip height) |
| window | 1 | Window function: 0=Rectangular, 1=Hann, 2=Hamming, 3=Blackman, 4=Blackman-Harris, 5=Flat-Top, 6=Kaiser |
| floor_db | -90.0 | Minimum dB level (bottom of the display) |
| ceil_db | 0.0 | Maximum dB level (top of the display) |
| theme | 0 | Color theme: 0=Classic, 1=Fire, 2=Ice, 3=Neon, 4=Monochrome, 5=Rainbow |
| log_scale | true | Logarithmic frequency axis (matches human hearing) |
| show_peaks | true | Show peak hold markers |
| peak_hold | 40 | Peak hold duration in frames before decay |
| show_grid | true | Show dB grid lines and frequency labels |
| overlay | false | Blend spectrum over the source video |
| opacity | 0.75 | Overlay opacity — 0.0 (invisible) to 1.0 (opaque) |
| pixel_type | "" | Output pixel format: `RGB24`, `YV12`, `YV16`, `YV24`, `YUY2`, `Y8`, or `""` for auto (mirrors source format in overlay mode, RGB24 in standalone) |


Current Release - 1.0.0
https://github.com/Kurtnoise-zeus/spectre/releases/tag/1.0.0

Reel.Deel
7th March 2026, 21:48
Thank you. It's always nice to see another audio visualization plugin. I tried the x64 version and it seems AVX2 is a hard requirement. VDub crashes with: An instruction not supported by the CPU was executed in module 'VirtualDub2'.

Emulgator
8th March 2026, 00:39
Beautiful, Kurt.noise ! No more without.
Many thanks from a sound engineer.

Kurt.noise
8th March 2026, 17:33
Thank you. It's always nice to see another audio visualization plugin. I tried the x64 version and it seems AVX2 is a hard requirement. VDub crashes with: An instruction not supported by the CPU was executed in module 'VirtualDub2'.
Try the sse2 library (https://github.com/Kurtnoise-zeus/spectre/releases/download/1.0.0/Spectre-1.0.0_x64_sse2.zip)

Reel.Deel
8th March 2026, 21:01
Try the sse2 library (https://github.com/Kurtnoise-zeus/spectre/releases/download/1.0.0/Spectre-1.0.0_x64_sse2.zip)

This works, thank you :)