Web Audio measurement suite (POC)

Use Web Audio API input capture + real-time analysis to measure crosstalk, estimate azimuth (crosstalk balance + phase at tone), visualize resonance with a spectrogram, and check platter speed by measuring a 3150 Hz tone.

Privacy/Permissions: Audio is processed locally in your browser. You’ll be prompted for microphone/line‑in permission; nothing is uploaded by this page. If Start doesn’t prompt, open this page via https or localhost (some browsers block getUserMedia on file://).

Getting Started (30-second auto-check)
Setup Wizard

Goal: make sure your input chain is sane before trusting azimuth/crosstalk numbers. This runs best while a 1 kHz test tone is playing (both channels) and your interface is set to true stereo line-in.

  1. Start audio capture
    You should see a browser permission prompt and live meters moving.
  2. Set gain (not clipping, not too low) Target: peak below −6 dBFS, RMS above −45 dBFS
    Adjust your interface/preamp so the Input level card reads OK.
  3. Confirm true stereo (not duplicated mono)
    If your OS/driver duplicates the same samples to both channels, azimuth/crosstalk is unreliable.
  4. Confirm no clipping (hard or soft)
    Hard clipping = flat-tops at 0 dBFS. Soft clipping = “squashed” peaks / rail-hugging.
  5. Confirm channel orientation (no L/R swap)
    We’ll compare which channel is stronger during Left-only and Right-only test tracks.
  6. Noise-floor check for crosstalk reliability
    If surface noise is high, the “leak” channel may sit in the noise floor and crosstalk numbers won’t stabilize.
Quick setup
  1. Connect your phono stage output to a stereo line‑in / audio interface (avoid mic inputs).
  2. Click Start, choose the correct input device, and confirm you see Left/Right meters moving.
  3. Pick a Test record + Track preset (or Custom) and play the matching band/track.
  4. Run Channel Balance first, then measure Left‑only and Right‑only crosstalk and try to match them (small azimuth changes).
  5. For speed/speed, use a 3150 Hz band and keep level below clipping.

Tip: If you feel like you need more than ~1–2° of azimuth tilt, stop and re-check setup/headshell/cartridge mounting.

Calibration caveat

Calibration caveat: Results depend on your A/D converter, gain staging, test record quality/condition, and record wear. Treat readings as relative (match L/R), not absolute lab specifications.

Presets are starting points—verify the tone frequency printed on your record and adjust the Hz fields if needed.
Tip: for best results, use an external audio interface with true stereo line-in and disable OS “enhancements.”

Live meters

Left level
Right level
Crosstalk L→R
Crosstalk R→L

Visual tools

Optional. Turn on only what you need — each tool is off by default to reduce load.
Spectrum — Left + Right
Toggle on to enable this tool (saves CPU when off).
Oscilloscope (triggered)
Toggle on to enable this tool (saves CPU when off).
Lissajous (XY)
Toggle on to enable this tool (saves CPU when off).
Optional: Spectrogram (sum)
Toggle on to enable this tool (saves CPU when off).
Crosstalk Match Azimuth Meter
L C R Scale: 0–40 dB separation

Play a Left-only or Right-only separation track. The needle shows live separation (derived from crosstalk) at the selected Measure tone (Hz): higher = better (less leakage). If the input isn’t a one-channel track (or the tone isn’t present), the meter will hold and show a hint.

Input level (not clipping)

Aim: comfortably below 0 dBFS and not super low. Stable gain helps balance & crosstalk.

Input guardrails
  • Overall
  • Hard clipping
  • Soft clipping (likely)
  • Input looks mono / channels identical
  • Channel swap (L/R)
  • Noise floor (crosstalk reliability)

These checks catch common input-chain issues (clipping, mono capture, swapped channels, and surface-noise limits) so your crosstalk readings stay trustworthy.

Channel balance (at tone)

Step 1: play a 1 kHz (or your selected tone) on both channels. Big imbalance can make azimuth/crosstalk misleading.

Crosstalk summary (match L/R)

/

XT L→R (Left-only track) and XT R→L (Right-only track). Goal: make them as close as possible. Δ: .

Auto-capture

When enabled, the page auto-saves stable (low-variance) readings for Balance and separation tracks (XT L→R / XT R→L) — while live measuring continues.

Azimuth (from crosstalk)

On Left-only / Right-only tracks, aim to minimize crosstalk and make the two crosstalk numbers as equal as possible. Avoid extreme tilt (~1–2° max).

Resonance peek (low freq)

Rough peak estimate between 5–50 Hz (depends heavily on rumble/noise floor and FFT settings).

Speed check (tone)

Best with a steady 3150 Hz test tone. Shows detected peak frequency + % error when a clear tone is present near the target.

Sample rate

Browser audio context sample rate (often 44.1k or 48k). Impacts FFT bin resolution.

Azimuth (phase @ tone)

Inter-channel phase/time offset at the active tone. Uses Measure tone for most modes and Speed target in 3150 Hz mode.

Mono null depth (optional)

For “mono-cancel / azimuth” tracks (equal L/R, opposite polarity). More negative = deeper null.

How to use (practical workflow)
  1. Set gain so Left/Right level meters sit around -20 to -6 dBFS on loud parts and never clip at 0 dBFS.
  2. Play Left-only track. Watch XT L→R (right-channel leakage when left is active). Adjust azimuth to make it as negative as possible.
  3. Play Right-only track. Watch XT R→L (left-channel leakage when right is active).
  4. Your “sweet spot” is usually where both crosstalk readings are close together (balanced) and as low as you can get them.
  5. For speed: play a 3150 Hz tone and select 3150 Hz tone mode. The readout shows % fast/slow.
Browser note: mic/line-in capture requires a secure context (HTTPS) or localhost in most modern browsers.