Skip to content
Back to projects

Frequency Visualizer

A real-time waveform renderer: nine signal shapes (sine, square, triangle, sawtooth, pulse, noise, and more) drawn live, each with adjustable amplitude, period, sampling, and colour. Built on my own C++ application framework.

May 10, 2025
C++OpenGLImGuiGraphics
Frequency Visualizer

Frequency Visualizer is a small real-time tool for drawing and playing with signal shapes. It came out of two things at once: I like signals and waveforms, and I wanted another focused piece to build on my own C++ application framework. The appeal is immediacy, move a slider and the wave redraws under your hand.

What it does

Nine waveform types, all rendered live:

Each is driven by parameters you adjust on the fly: amplitude, speed, period, line thickness, sample count, and colour, plus a waveform inversion toggle. Nothing waits for a re-render, so the effect of every parameter is visible the instant you touch it.

SineSine

SquareSquare

TriangleTriangle

SawtoothSawtooth

Pulse, with duty-cycle controlPulse, with duty-cycle control

NoiseNoise

Exponential decayExponential decay

Built on my framework

The whole thing runs on Lumina, my C++ application framework, which wraps OpenGL and an immediate-mode UI into a simple application shell. That's what keeps a tool like this small: the framework owns the window, the render loop, and the panels, so the project itself is almost entirely the waveform math and how it's drawn.

Where it's going

Frequency Visualizer is due for a major overhaul like the rest, so this is its current form, not the finished one.

Tech stack

LayerTechnologyRole
LanguageC++The waveform generation and rendering
GraphicsOpenGLThe real-time line rendering
UIDear ImGuiThe parameter panels
FrameworkLumina, my C++ application frameworkWindowing, the render loop, and the UI shell
BuildVisual Studio (Windows)Where it compiles and runs