PerceptoMap
From frequencies to feeling
Install / Use
/learn @hqrrr/PerceptoMapREADME
PerceptoMap
Visualizing how we hear — from spectrograms to perception
PerceptoMap is an open-source audio plugin (VST3) that visualizes psychoacoustic features of audio signals in real time. Built with JUCE, it's designed to help you see how we perceive sound — not just how it looks on a frequency plot.
Unlike typical spectrum or spectrogram analyzers, it supports perceptual visualizations such as Mel spectrograms, Mel-frequency cepstral coefficients (MFCCs), Chromagram, and Tempogram etc., offering insight into how humans perceive sound.
🎧 If you're the kind of creator who trusts your ears above all — you might not need this.
But if you're curious about how your audio measures up to what humans actually hear… welcome aboard.
Quick Navigation
- Key Features
- Screenshots
- Roadmap
- Why develop this plugin?
- How to install?
- Build Instructions for Developers
- License & Cost
- How to cite
Key Features
-
Real-time Mel Spectrogram display with perceptual frequency scaling
-
Real-time Mel-frequency cepstral coefficients (MFCCs) representing timbral texture and spectral envelope
-
Real-time Spectral Centroid tracking to visualize spectral brightness (center of mass of STFT spectrum)
-
Real-time Chromagram showing the energy distribution across the 12 pitch classes (C to B), regardless of octave. <span style="color: gray;">[added in v0.5]</span>
-
Time-Frequency Reassignment mode (Linear+) for enhanced STFT resolution, based on the paper [hal-00414583: Time-Frequency reassignment: from principles to algorithms]. This mode sharpens the localization of spectral peaks by reassigning energy to more accurate time-frequency coordinates, making harmonic structures and transient details clearer compared to the standard STFT. <span style="color: gray;">[added in v0.6]</span>
-
Time-Frequency Reassigned Mel Spectrogram mode (Mel+) - Mel-scaled display using the same time-frequency reassignment principle as Linear+. It computes the reassigned frequency from the complex STFT and then projects energy onto the Mel axis, yielding sharper harmonic ridges and crisper transients than a standard Mel spectrogram. <span style="color: gray;">[added in v0.7]</span>
-
Real-time Fourier Tempogram (with Tempo Line) - Rhythm/tempo map in the BPM (frequency) domain with a dynamic tempo track, based on [10.1109/ICASSP.2010.5495219]. <span style="color: gray;">[added in v0.10]</span>
-
Visual analysis of Autocorrelation Tempogram and other psychoacoustic features (planned)
-
Configurable color maps
-
Adjustable brightness gain and enhanced colormap modes to improve visibility of fine details in the spectrogram <span style="color: gray;">[added in v0.4]</span>
-
Optional dB scaling, log or linear frequency axis for classic linear STFT spectrogram
-
Freeze frame mode and interactive mouse hover to inspect frequency and loudness at any point
-
Configurable FFT size for balancing time resolution and frequency resolution.<span style="color: gray;">[added in v0.6]</span>
-
Independent scroll speed control, allowing smooth visualization at different FFT sizes and overlap settings without distorting the spectral data. <span style="color: gray;">[added in v0.6]</span>
-
Adjustable y-axis frequency range. <span style="color: gray;">[added in v0.8]</span>
-
Global preset slots for quickly recalling frequently used visualization configurations. Presets are shared across projects and DAWs and can be overwritten via the Save button. Preset data is stored in a human-readable XML file on disk, allowing inspection or manual editing of preset values and names if needed. <span style="color: gray;">[added in v0.13]</span>
- Windows:
C:\Users\<username>\AppData\Roaming\PerceptoMap\PerceptoMapPresets.xml - macOS:
~/Library/Application Support/PerceptoMap/PerceptoMapPresets.xml - Linux:
~/.config/PerceptoMap/PerceptoMapPresets.xml
Note: Editing the XML file while the plugin or DAW is running is not recommended. Changes should be made while the plugin is closed.
- Windows:
Screenshots
<!-- <p align="center"> <img src="_pics/gui_ableton_live_12.png" width="100%" alt="GUI" /> <sub>Plugin User Interface in Ableton Live 12</sub> </p> --- --> <table style="table-layout: fixed; width: 100%;"> <tr> <td align="center" valign="top"> <img src="_pics/gui_resize_window_2.png" width="100%" alt="Resizable GUI Small" /> <br/> <sub><strong>Resizable GUI</strong><br/>Window can shrink to fit minimal layout</sub> </td> <td align="center" valign="top"> <img src="_pics/gui_resize_window_1.png" width="100%" alt="Resizable GUI Large" /> <br/> <sub><strong>Resizable GUI</strong><br/>Window expands for detailed viewing</sub> </td> </tr> </table><table> <tr> <td align="center" valign="top"> <img src="_pics/gui_color_classic.png" width="100%" alt="Classic Colormap" /> <br/> <sub><strong>Classic</strong><br/>Default high-contrast mapping</sub> </td> <td align="center" valign="top"> <img src="_pics/gui_color_gray.png" width="100%" alt="Grayscale Colormap" /> <br/> <sub><strong>Grayscale</strong><br/>Neutral luminance-based display</sub> </td> <td align="center" valign="top"> <img src="_pics/gui_color_magma.png" width="100%" alt="Grayscale Colormap" /> <br/> <sub><strong>Magma</strong><br/>Perceptually uniform, dark background</sub> </td> </tr> </table>
<table style="table-layout: fixed; width: 100%;"> <tr> <td align="center" valign="top"> <img src="_pics/gui_mouse_info.png" width="100%" alt="Hover Frequency Readout" /> <sub><strong>Hover Readout</strong><br/>Displays precise frequency, dB level, and corresponding MIDI note (C4 = Middle C) <span style="color: gray;">[added in v0.3]</span> under the mouse pointer.</sub> </td> <td align="center" valign="top"> <img src="_pics/gui_color_scheme_floor_value.png" width="100%" alt="Hover Frequency Readout" /> <sub><strong>Adjustable dB Floor Slider</strong><br/>Controls the minimum dB threshold for color brightness, helping visualize low-level signals. <span style="color: gray;">[added in v0.3]</span></sub> </td> </tr> </table>
<table style="table-layout: fixed; width: 100%;"> <tr> <td align="center" valign="top"> <img src="_pics/gui_enhanced_resolution.png" width="100%" alt="Hover Frequency Readout" /> <sub><strong>Adjustable Brightness Gain</strong><br/>The Norm Factor slider allows manual control over spectrogram brightness, helping to adapt the display to signals with different loudness levels. <span style="color: gray;">[added in v0.4]</span></sub> </td> <td align="center" valign="top"> <img src="_pics/gui_enhanced_color.png" width="100%" alt="Hover Frequency Readout" /> <sub><strong>Fine Detail with Enhanced Colormap Modes</strong><br/>With non-linear color legend to enhance contrast, making subtle details more visible: <i>Magma+ & Grayscale+</i>. <span style="color: gray;">[added in v0.4]</span></sub> </td> <td align="center" valign="top"> <img src="_pics/gui_enhanced_STFT_time_frequency_reassignment.png" width="100%" alt="Time–Frequency Reassignment Mode" /> <sub><strong>Linear+/Mel+: Time–Frequency Reassignment Mode</strong><br/> Sharpens the time–frequency localization of spectral peaks by reassigning energy to more accurate coordinates. Harmonic structures and transients become more clearly defined, compared to standard STFT. <span style="color: gray;">[added in v0.6/v0.7]</span></sub> </td> </tr> </table>
<table style="table-layout: fixed; width: 100%;"> <tr> <td align="center" valign="top"> <img src="_pics/gui_freq_axis_linear_scale.png" width="100%" alt="Linear STFT spectrogram with linear frequency axis" /> <br/> <sub> <strong>Linear STFT spectrogram with linear frequency axis:</strong> <i> Displays physical frequency content directly. </i> </sub> </td> <td align="center" valign="top"> <img src="_pics/gui_color_magma.png" width="100%" alt="Linear STFT spectrogram with log frequency axis" /> <br/> <sub> <strong>Linear STFT spectrogram with log frequency axis:</strong> <i> Approximates human pitch perception. Emphasizes low-frequency resolution and compresses high-frequency bands. </i> </sub> </td> <td align="center" valign="top"> <img src="_pics/gui_melspectrogram.png" width="100%" alt="Mel-scaled STFT spectrogram" /> <br/> <sub> <strong>Mel-scaled STFT spectrogram:</strong> <i> Reflects the nonlinear frequency resolution of human hearing. Provides a more perceptually accurate representation than simple log-scalin
