Skip to content

Add Intensity plugin: Audio dynamics classification#12

Open
Sangarshanan wants to merge 1 commit into
MTG:masterfrom
Sangarshanan:master
Open

Add Intensity plugin: Audio dynamics classification#12
Sangarshanan wants to merge 1 commit into
MTG:masterfrom
Sangarshanan:master

Conversation

@Sangarshanan

Copy link
Copy Markdown

Summary

Adds a new Intensity_projucer plugin that uses Essentia's Intensity algorithm to perform real-time audio dynamics classification on an incoming signal.

The plugin follows the same structure and visual style as the existing RMS_projucer template

What it does

  • Classifies the audio signal into one of three dynamic states: Relaxed (-1), Moderate (0), or Aggressive (1)
  • Uses Essentia's Intensity algorithm internally.
  • Displays the current classification as a labelled text state and colour-coded bar meter in a live UI.

Key design decisions

Accumulation buffer: Intensity is a composite temporal algorithm that runs PoolAggregator statistics (mean, dmean, dmean2) across multiple frames internally. Unlike RMS, it cannot be called on per-block DAW micro-frames. The plugin accumulates 4096 samples (~92 ms at 44.1 kHz) before triggering each classification.

reset() before compute() the algorithm's internal FrameCutter retains a read cursor between calls. Without an explicit reset, it stops reading audio after the first window. This is called on every processing cycle.

Discrete UI because the output is an integer with only three possible values, the continuous float display from the RMS template was replaced with a bold text label (RELAXED / MODERATE / AGGRESSIVE) that changes colour dynamically.

Tested on

  • macOS (VST3 format, REAPER)
  • Essentia built from source (build_external/)
  • JUCE via Projucer (Xcode export)

UI

image

@Sangarshanan Sangarshanan changed the title Add Intensity plugin Add Intensity plugin: Audio dynamics classification Jun 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants