Start analysing audio
Select Microphone or a MP3 File
as input.
Select
the desired speed for the Spectrogram.
Select
the desired FFT frequency count.
Press
Start Visualization to start the analysis.
Use
Save Spectrogram to save a screenshot of the spectrogram to file.
What is a Spectrum Analyzer anyway?
An FFT (Fast Fourier Transform) spectrum analyzer is a tool used to analyze the frequency components of a
signal, such as sound or vibration, in real time. It works by applying the FFT algorithm to convert a
time-domain signal (how it changes over time) into the frequency domain (which frequencies it contains and
their intensities).
The analyzer displays this data as a graph, where the x-axis represents frequency and the y-axis shows
amplitude or power. This visualization helps users understand the characteristics of the signal—identifying
peaks, patterns, or noise at specific frequencies. It's widely used in fields like audio engineering,
vibration analysis, and scientific research to study and manipulate signals.
What is a Spectrogram Analyzer anyway?
An FFT spectrogram analyzer is a powerful tool that combines the principles of Fast Fourier Transform (FFT)
and spectrogram analysis to visualize the frequency content of a signal over time.
Here's how it works:
-
FFT: The analyzer uses the FFT algorithm to break down a time-domain signal (e.g., sound
waves) into
its frequency components, identifying the strength (amplitude) of different frequencies.
-
Time Component: Instead of analyzing a single moment in the signal, it continuously performs
FFT on
overlapping time segments, capturing how frequencies change dynamically.
-
Spectrogram Visualization: The results are displayed as a spectrogram, where:
-
The x-axis represents time.
-
The y-axis represents frequency.
-
The color or intensity indicates the amplitude or power of specific frequencies at each
moment in
time.
This visualization allows users to see the evolving frequency characteristics of a signal, making it
especially useful for applications like audio analysis, speech processing, and studying transient
signals (e.g., bird calls, engine noises). By observing the spectrogram, users can identify
patterns,
anomalies, or trends in the signal's behavior.
How was it built
This software was created using Vibe Coding by a Large Language Model LLM / chatbot
and reworked in look & feel.
Some features had to be implemented manually and
corrections and improvements had to be made.
The following Vibe Coding prompts were used on DeepSeek:
"Create a single page html with javascript in one file. add a load button for mp3 music. upon load play
the music and display a realtime fft chart using chart.js"
"When no file is loaded use the microphone as audio input"
"Could not access microphone. Please ensure you have granted microphone permissions"
"Label the frequency. Also add a canvas and draw a floating spectrogram"
At this point a new DeepSeek session was started with the previous code.
"Get rid of the Load MP3 button. Load the file immediately when the file is loaded with the file select
button. Make sure the animation can restart after stop currently there is a 'createMediaElementSource'
on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode.
Also add labels to the x-axis of the chart."
"fft4.html:131 Uncaught SyntaxError: missing ) after argument list (at fft4.html:131:58)"
"'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a
different MediaElementSourceNode. there is just a 0 frequency label, label the full range."
"The frequency labels range to only 1k but the range is up to 20000 Hz. Compute the labels correct
according to the used fft settings. Also add a number combobox that lets the user specify the FFT size."
"upon restart: chart.js:19 Uncaught Error: Canvas is already in use. Chart with ID '0' must be
destroyed before the canvas with ID 'fftChart' can be reused. With a different fft size you need to
adjust the frequency labels."
At this point a new Gemini session was started with the previous code.
"Adjust the height of the spectrogram canvas according to the fft size. 1024 fft size results in 1024
px height. Add a button to save a spectrogram screenshot to file. Add a speed slider. For highest speed
push one frequency data and shift one pixel. for lowest speed collect and interpolate 50 consecutive
frequency data push it and shift one pixel."