RemotionUI

VU Meter

Segmented level meter with peak hold. Install with npx remotion-ui@latest add vu-meter.

PrimitiveData & media

vu-meter30fps Β· 960Γ—540
Install
$ npx remotion-ui@latest add vu-meter

A segmented level meter with peak hold.

import { VuMeter } from "@/remotion/primitives/vu-meter";

<VuMeter src={audioSrc} orientation="vertical" labels={["L", "R"]} />

Level, not spectrum

audiogram-bars and waveform-bars-radial show what the frequencies are doing. This shows only how loud it is β€” the reading an engineer actually watches, and the one that still works at 40px wide in the corner of a frame.

Peak hold

At 30fps a transient that lights the top segment for one frame is invisible. The marker comes from the decaying peaks the audio library already tracks, so it is reconstructed from the waveform on every frame rather than held in component state: a render is stateless and may start on any frame, and a ref-held marker would differ between a preview scrub and a full render.

peakFallPerFrame sets how fast the marker drops back.

Two channels

The second channel is weighted toward the upper half of the spectrum. It is not a real stereo split β€” the analysis is mono β€” but it is what stops a pair from looking like one meter drawn twice. Pass channels={1} when honesty matters more than the look.

The top eighth of the scale takes peakColor, the third below it warnColor; a partly lit top segment reads as a level sitting between two steps rather than snapping down to the lower one.

Level rather than spectrum β€” the reading that still works at 40px wide. The peak marker is reconstructed from the library's decaying peaks on every frame instead of being held in state: a render is stateless and may start on any frame, so a ref-held marker would differ between a preview scrub and a full render.

Agent notes

Install first, then import the copied source component locally. AI guide β†’

Import
@/remotion/primitives/vu-meter
  • Use when: frame-level motion primitives and reusable animation wrappers.
  • Customize: src, orientation, segments, channels, plus copied source for timing, layout, colors, and typography.
  • Rule: do not import this component from the remotion-ui npm package; it is copied into your project.

Usage

Example
import { VuMeter } from "@/remotion/primitives/vu-meter"; <VuMeter src={audioSrc} orientation="vertical" labels={["L", "R"]} />

API Reference

PropTypeDescription
srcstringAudio source. `.wav` only.
orientation"vertical" | "horizontal"Which way the segments stack.
segmentsnumberSegments in one channel.
channels1 | 2Second channel is weighted toward the upper spectrum.
thicknessnumberSegment size across the short axis.
lengthnumberMeter length along its own axis.
colorstringSegments below the warm zone.
warnColorstringSegments in the top third.
peakColorstringSegments in the top eighth.
showPeakHoldbooleanPeak marker that falls back slowly.
peakFallPerFramenumberHow fast the peak marker drops.
labels[string, string]Channel captions, e.g. `["L", "R"]`.
sensitivitynumberLifts or lowers the reading before it hits the segments.
framenumberFrame override β€” pass the parent frame inside a `<Sequence>`.

Related

On this page