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.

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. The generator opens as a compact panel docked below the plots — the display compresses above it, so you watch the spectrum respond while you adjust. For the tonal signals (sine, sweep, warble) a dashed cursor marks the output frequency live on the plot, riding along as a sweep runs. 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.

Loudness: 0 dB on the level slider is digital full scale — there is nothing above it. Speaker loudness beyond that is set by the device volume buttons, and while the microphone is live iOS runs the speaker on its duplex measurement route, which is quieter than normal media playback. For the loudest output, pause the analyzer — HOLD releases the microphone and moves the tone to the full media route — or feed the signal out by cable, where 0 dBFS is simply line level.

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.

SPL estimate (Android). On Android devices that certify the platform's unprocessed-microphone sensitivity spec, Settings → Level readout can convert the level display from dBFS to an estimated sound pressure level. The basis is the Android Compatibility Definition's required mapping (94 dB SPL at 1 kHz → −36 dBFS on the unprocessed source), which compliant devices meet within ±3 dB — so treat readings as an estimate of that grade, not a certified measurement. It applies to the built-in microphone only (the toggle disables itself when a USB input is attached or the device doesn't qualify), and per-band values carry more uncertainty than the overall level. iPhones expose no equivalent spec or data, so iOS keeps the honest dBFS scale until a calibration option ships.

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) — enabling one returns you straight to the plot with the ghost showing — 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.