← Back to Portfolio
JUCE · C++ · Psychoacoustic Analysis Beta

Acoustic
Analyzer

A perception-first analysis plugin that goes beyond raw frequency readouts. It models how the ear hears (24 Bark bands, loudness, sharpness and roughness) and combines brightness, harshness, dynamic variability and temporal unpredictability into an Acoustic Activation Index (0–100, high = calming). You can record sessions, rate how calming the sound feels, and export the data for research. The audio passes through unchanged.

Experimental research tool. Not a medical or clinical device, and not a substitute for listening tests. See accuracy & limits.

🎛️ VST3 🍎 AU 🖥️ Standalone ⚡ 64-bit 💾 CSV · JSON Export 🎚️ Tested in Ableton Live 12
RoleSolo: concept, design direction, testing and integration. Code written with AI assistance.
TimelineStarted Oct 2025
Active work4 days with commits (8 commits)
01 · Demo
02 · Interface
01Main interface
Acoustic Analyzer psychoacoustic plugin main interface with the activation index gauge, perceptual metric bars, 60-second history graph and Bark band loudness spectrum
Main interface: Main interface in Ableton Live 12: activation gauge, perceptual metrics, 60-second history and Bark spectrum
02History graph
Acoustic Analyzer history graph with a hover tooltip listing index, brightness, harshness, dynamics, unpredictability and rating at one moment
History graph: Hover any moment to read all six series at once, with the recording span shaded
03Recording and ratings
Acoustic Analyzer recording a session with a listener rating of 5 out of 7 shown as a yellow line on the history graph
Recording and ratings: Recording with a 1 to 7 listener rating logged on the timeline
04Finished session
Acoustic Analyzer after a recording, showing the shaded recording span and the Export CSV button enabled with 1432 points ready
Finished session: Export CSV unlocks once a recording is captured
05Calming zone
Acoustic Analyzer activation index gauge in cyan reading 73.1 with the label low activation, calming
Calming zone: The gauge turns cyan and reads calming above 70
06Table view
Acoustic Analyzer history in table view with index, brightness, harshness, dynamics and unpredictability columns
Table view: The same history as numbers, one row every 0.1 s
07Settings
Acoustic Analyzer settings panel with weight presets, index weights, gauge zones, calibration and smoothing controls
Settings: Presets, index weights, gauge zones, calibration and smoothing
01 / 07

📊 Analysis Metrics

  • Brightness: sharpness in acum (von Bismarck / Zwicker), computed from specific loudness on 24 Bark bands
  • Harshness: roughness (simplified Daniel & Weber) combined with loudness in the 2–5.3 kHz presence region
  • Dynamic Variability: spread of 50 ms RMS levels over the last 5 seconds
  • Temporal Unpredictability: size of the jumps between successive 50 ms levels
  • Also shown, not in the index: loudness (sone), RMS level (dBFS) and stereo width

💾 Research & Export

01

Recording and ratings

Start and stop a session with timestamped frames, logged through a lock-free buffer so recording never touches the audio thread. Press 1–7 to rate how calming the sound feels right now.

02

CSV, JSON and label-track export

Exports carry the settings and calibration in a metadata header, all component metrics, the index and your ratings. CSV and JSON load straight into R, Python or Excel; an Audacity label track marks each rating on the waveform.

03

Analysis script

A Python script reports how each metric correlates with the ratings and suggests weights with bootstrap intervals. It refuses to fit with fewer than 10 ratings.

04 · Acoustic Activation Index

Four perceptual dimensions combine into a single 0–100 score. High = calming: 70 and above reads Calm (cyan), 40–69 Neutral (violet), below 40 Stimulating (pink), each with its own icon and label. The weights below are adjustable starting values, not coefficients fitted to listener data.

Harshness 35%

Roughness plus presence-region loudness. Given the largest starting weight because harsh sound is the most common cause of listener discomfort.

Brightness 25%

Sharpness of the spectrum. Brighter sounds pull the index toward stimulating.

Dynamic Variability 20%

How much the level moves over the last five seconds. A steadier signal scores as calmer.

Temporal Unpredictability 20%

How abrupt the level changes are. Sudden jumps pull the index toward stimulating, whatever the overall loudness.

05 · Accuracy & Limits

The three underlying measures were checked against MoSQITo 1.2.1 (ISO 532-1 loudness, DIN 45692 sharpness, Daniel & Weber roughness) on 57 calibrated test signals at 48 kHz. Rank correlation shows how well the plugin orders sounds the same way the reference does.

Sharpness · ρ 0.97
100% within 20% of reference
Loudness · ρ 0.99
64% within 20%, 86% within 35%
Roughness · ρ 0.96
58% within 20%, 67% within 35%

⚠️ What this is not

Acoustic Analyzer is an experimental research tool, not a medical or clinical device, and it does not measure the brain. The Activation Index has not yet been validated against listener outcomes; only the underlying measures have been checked against reference software. The plugin ranks sounds well but absolute values are approximate: loudness reads about 1.5–2× high on broadband noise, and roughness about 3× high on broadband noise modulated at 70 Hz. Validation used synthetic signals only, and the model assumes 100 dB SPL at 0 dBFS unless you change the calibration setting.

06 · Download

Beta builds are coming soon. The Windows build will be unsigned, so Windows SmartScreen may show a warning. The macOS builds will be signed and notarised. Contact for early access or research partnerships.

🪟
VST3, Windows
64-bit Windows build
Coming soon
🍎
VST3, macOS
Universal (Intel + Apple Silicon)
Coming soon
🎵
AU, macOS
Logic / GarageBand
Coming soon
🖥️
Standalone
No DAW required
Coming soon
07 · Technical Specs
C++ / JUCE 8
Core engine
2048-pt Hann FFT
50% overlap, 24 Bark bands
Lock-free logging
No locks on the audio thread
44.1–96 kHz
Sample rates checked with pluginval
Resizable UI
100/125/150% scale, 30 Hz refresh
CSV · JSON · labels
Settings stored in each export

🔬 Planned Work

Testing with real music and game audio, a listening study to check whether the index tracks how people actually feel, reducing the broadband-noise bias in loudness and roughness, and signed Windows and macOS beta builds.

Interested in Collaboration?

Open to beta testers, listening-study partners, and research partnerships involving acoustic perception measurement.