Field Guide · v1.0

SonoSpec — see what you're hearing.

A real-time audio spectrum analyzer with a live RTA, scrolling waterfall, and 1/3-octave bars. Everything is measured on-device from the microphone — nothing is recorded, nothing leaves your phone.

iOS Android 20 Hz – 20 kHz · log
The app in Split mode: live spectrum above a scrolling waterfall spectrogram

01Quick start

Open the app and allow microphone access when asked. That's it — you're live. The trace responds instantly to any sound in the room: speak, clap, or play a tone and watch it land at its frequency.

No mic prompt, or the badge says MIC OFF? iOS: Settings → Privacy & Security → Microphone → SonoSpec. Android: long-press the app icon → App info → Permissions → Microphone. The app re-checks permission every time it returns to the foreground.

02Reading the display

The top bar is your instrument readout; the plot below it is the spectrum itself.

Readout bar: 440 Hz peak, -9.7 dBFS level, LIVE badge
Readout bar — peak frequency · overall level · status
PEAKThe strongest frequency right now, refined below the FFT's raw resolution by peak interpolation — a steady 440 Hz tone reads 440, not the nearest bin.
LEVEL dBFSThe overall level across 20 Hz–20 kHz, in decibels relative to digital full scale (0 dBFS = the loudest the mic path can represent; quieter is more negative). When A or C weighting is on, the label shows it — e.g. dBFS(A).
● LIVE / HOLDLIVE pulses while analyzing. HOLD means you paused — the picture freezes (waterfall included) until you resume.
Main traceThe bright teal edge with the gradient fill is the live spectrum, smoothed with fast attack and slow release so transients register but the trace doesn't shiver.
Amber tracePeak hold — the highest level each frequency has reached recently, decaying slowly. Perfect for catching one-off events you'd otherwise miss.
GridFrequency runs left→right on a log scale (each decade gets equal width — 20→200→2k→20k). Level runs bottom→top, gridded every 10 dB.
Touch the plot (iOS): press and drag anywhere on the spectrum to get a cursor — the readout switches to the exact frequency and level under your finger, and snaps back when you let go.

03The four views

Spectrum

The full-height RTA. Best for tone-by-tone work: tuning, finding hums, watching harmonics.

Split

Spectrum on top, waterfall below — the instrument view. See the now and the last minute at once.

Waterfall

Full-screen spectrogram. Time scrolls downward, newest at the top; color is level, from deep blue-black (quiet) through violet and ember to pale amber (loud). One waterfall row is written per analysis frame, so the time axis is honest.

Octave

31 bars, one per standard 1/3-octave band from 20 Hz to 20 kHz. Band edges follow the exact base-10 IEC 61260 midbands. Bars running hot (above −20 dBFS) tint amber at the top.

04Controls

Control bar: mode picker, pause, Z/A/C weighting, peak hold, settings
Mode picker · pause/hold · weighting · peak hold · settings
❚❚ / ▶Pause and resume. Paused, the mic is fully released (the OS mic indicator goes off) and the whole picture holds for inspection.
Z · A · CZ is flat — raw, unweighted level. A rolls off bass and extreme treble the way human hearing does at moderate levels — use it when "how loud does this sound?" is the question. C is nearly flat with gentle extremes — better for bass-heavy or high-level material. Curves follow the IEC 61672 weighting formulas. Switching weighting clears the peak-hold trace, since old peaks aren't comparable in the new weighting.
Peak holdToggles the amber trace. Turning it off also clears it.
⚙ SettingsAnalysis and display options — see below.

Settings (iOS)

FFT size trades frequency detail against reaction speed. All settings persist between launches.

FFT sizeFrequency resolution*Feel
2,04823.4 HzFastest response, coarse low end
4,09611.7 HzQuick, general-purpose
8,1925.9 HzDefault — resolves bass notes cleanly
16,3842.9 HzFinest detail, slowest to react

*at a 48 kHz input. You can also set the display's dB floor (−60 to −140) and frequency range.

Android v1: the analyzer runs the identical engine with the default configuration (8,192-point FFT, 20 Hz–20 kHz, −110 dB floor); the settings screen and plot cursor are coming to Android in an update. Mode, weighting, and peak hold work on both platforms today.

05Understanding the numbers

dBFS is not dB SPL. This app measures relative to digital full scale, and phone microphones aren't calibrated laboratory sensors — so readings are for comparing frequencies, levels, and moments in time, which is what tuning and troubleshooting actually need. It is not a certified sound-level meter, and 0 dBFS does not correspond to any fixed real-world loudness.

Why a tone's octave bar can differ from its spectrum peak: the octave bars sum all the energy inside each band, while the spectrum shows energy per frequency. For a pure tone they agree; for noise or dense material the bands read higher — both are correct, they answer different questions.

Why the noise floor moves with FFT size: bigger FFTs split the same noise across more bins, so each bin reads lower. Tones stay put — that's the giveaway for telling a real tone from noise.

06Tools — generator, targets, snapshots

The gear menu holds the three tools that complete the workflow: make a test signal, compare against a goal, and document the result.

Signal generator. Pink noise, white noise, a sine, a 20 Hz–20 kHz log sweep, and a warble tone, with an adjustable level in dBFS. For measurements, feed the system under test by cable or USB — the phone's own speaker is not a flat source. The mic keeps analyzing while the generator plays, so one phone can drive and measure at once.

Target curves. Settings → Target curve overlays a dashed reference shape — Flat, a −3 dB/oct tilt, or a bass-lifted Car curve — on the spectrum. It auto-fits its vertical position to the live measurement, so it is always a relative shape, never a calibrated-level claim. Tune until the bars hug the dashes.

Snapshots. The camera button freezes the current spectrum with all its settings. Gear menu → Snapshots lets you recall any saved measurement as a ghost overlay (the before/after line), or share it as a publication-ready image or a CSV. Every export carries a metadata header — FFT size, window, weighting, ENBW correction — so the numbers stay interpretable long after you forget the setup.

Before/after in 10 seconds: snapshot the current state, make your change, then recall the snapshot as an overlay — the gap between the ghost line and the live trace IS your change.

07Field recipes

08Troubleshooting

SymptomWhat it means
MIC OFFMicrophone permission is off — enable it in system settings (paths in §01) and return to the app.
ERROR badgeThe audio input was lost (a call took over, or a device switched). Tap ▶ to restart — the app also recovers automatically from calls and headset changes on iOS.
Everything reads lowCheck the weighting: A-weighting pulls bass readings down by design (−19 dB at 100 Hz). Switch to Z for raw levels.
Waterfall stoppedYou're paused (HOLD) — that's by design; the whole picture freezes together.
Trace feels sluggishLarge FFT sizes react slower — drop to 4,096 or 2,048 in Settings (iOS) for fast transient work.

09Privacy

Audio is analyzed on-device in real time and immediately discarded. The app never records, stores, or transmits audio — it has no network features at all. When paused or backgrounded, the microphone is released entirely.