→ Start by clicking Init Audio above to enable microphone access and the audio engine.
Run on https (or localhost). Keep volume moderate to avoid feedback. On iPhone, tap buttons to start/resume audio.
Quick setup
Presets set speaker spacing and mic position for known devices. Your selection is remembered across sessions.
Scan parameters
Listen: 73 ms | Min range: 0.30 m
Scan controls: angular resolution, dwell time, and post-processing quality.
Scan dwell: 73 ms
Probe parameters
Tune probe parameters only when you need higher quality or speed.
About Chirp mode
Linear FM sweep — transmits a sinusoidal tone that sweeps from frequency f1 up to f2 over duration T.
Cross-correlation with the reference produces a sharp peak at each echo delay.
Best for: quick single-ping measurements, short-range detection, and real-time interactive use.
Lowest latency of all modes (single short burst). Good default for getting started.
Trade-offs: moderate sidelobe level in the correlation (can show ghost peaks near strong echoes).
SNR scales with bandwidth (f2 − f1) and duration T. Narrower bandwidth = worse range resolution.
Settings:
f1 — start frequency (Hz). Lower values penetrate obstacles better but may be audible. Default 2000 Hz.
f2 — end frequency (Hz). Higher values give finer range resolution. Default 9000 Hz. Bandwidth = f2 − f1.
T — chirp duration (ms). Longer = higher SNR but slower ping cycle. Default 7 ms.
About MLS (PRBS) mode
Maximum Length Sequence — transmits a pseudo-random binary sequence (PRBS) generated by a linear-feedback shift register (LFSR).
Each chip is held for 1/chipRate seconds, producing a wideband noise-like signal.
The circular auto-correlation of an MLS is a near-perfect impulse (flat sidelobes at −1/L).
Best for: high-SNR room impulse response measurements. Excellent for scanning and heatmap generation
where you need reliable echo detection across the full range.
Good noise rejection thanks to the spread-spectrum nature of the signal.
Trade-offs: longer signal than chirp (higher latency per ping). Single-ping only (no sidelobe cancellation like Golay).
Sensitive to Doppler shift from fast-moving targets (correlation peak broadens).
Settings:
Order (m) — LFSR register size. Sequence length = 2^m − 1 chips. Higher m = longer signal = better SNR but more compute and latency. Range 2–16, default 12 (4095 chips).
Chip rate — chips per second (Hz). Higher = wider bandwidth = finer range resolution, but requires higher sample rate headroom. Default 4000 Hz.
About Golay pair (A+B) mode
Complementary Golay sequences — transmits two binary sequences (A then B) separated by a short gap.
Their individual auto-correlations have sidelobes of opposite sign, so summing corr(A) + corr(B)
produces a perfect impulse with zero sidelobes. This is the cleanest impulse response achievable.
Best for: calibration, high-accuracy scanning, and environments with strong multipath.
The zero-sidelobe property eliminates ghost peaks, giving the most reliable range and angle estimates.
Recommended for laptop preset scan mode and whenever measurement quality matters most.
Trade-offs: requires two transmissions per ping (A + gap + B), so each measurement takes roughly 2× longer than chirp or MLS.
The sidelobe cancellation assumes the scene is static between A and B; fast-moving targets may degrade cancellation.
Settings:
Order (n) — sequence length = 2^n chips per half (A and B each). Higher n = longer signal = better SNR. Range 1–14, default 10 (1024 chips).
Chip rate — chips per second (Hz). Controls bandwidth and range resolution, same as MLS. Default 5000 Hz.
Gap A→B — pause between transmitting A and B (ms). Must be long enough for reverb from A to decay before B starts, but short enough to assume static scene. Default 12 ms.
Min gap: — ms
About Multiplex (multi-carrier) mode
Frequency-division probing — transmits several orthogonal tones in one symbol and demultiplexes them with FFT/correlation.
This reduces sweep time by evaluating multiple spectral channels in parallel.
Best for: faster scan loops and adaptive per-device carrier masking after calibration.
Trade-offs: requires careful carrier spacing and quality weighting to avoid leakage and noisy subcarriers.
Advanced
c = 346.5 m/s
Expert scan & trackingMicrophone spectrogram
Advanced scan settings
Virtual array (SAFT/DAS)
Best: —
Direction: —
Use Horizontal (L/R) for left/right and Vertical (T/B) when your speaker axis is rotated 90°. Detection works best on hard, flat surfaces (walls, furniture) within 0.3–5 m. Soft materials (curtains, pillows) absorb sound and produce weak echoes.
Calibration measures speaker-to-mic distances to lock direct-path timing and improve range accuracy. Keep the room quiet and don't move the device during calibration. A quality score above 0.5 is good; above 0.8 is excellent.
Advanced calibration settings
DiagnosticsCalibration sanity view
Shows early (60ms) Golay-summed correlations for L-only and R-only, with peak markers and mono decision breakdown.
Device Info
(Device labels appear after mic permission.)
Network / Peers
Connect two devices via WebRTC. One creates an offer, the other accepts.
Calibration is local-only per device. Run calibration on each device if needed.
Status: idle
Scanning...
Angle x Range heatmap
Main scan view. Horizontal axis = steering angle (degrees), vertical axis = distance (meters). Brighter colors = stronger echo reflections. Look for bright spots to locate objects.
Range profile
Correlation strength vs distance (meters) for the latest ping. Peaks indicate detected objects; taller peaks = stronger reflections. Hover to read exact range values.
Microphone spectrogram
Real-time STFT waterfall of microphone input. After successful calibration it shows filtered (noise-floor suppressed) spectrum.
Mode: RAW
Geometry view
Top-down view showing speaker positions (L/R), microphone, and estimated target locations. Tracked targets show trails indicating movement history.
Enable wizard to drag speakers/mic on geometry view.
If audio goes silent after switching apps/locking screen: tap Init Audio to resume.
Keyboard shortcuts: I Init Audio, P / Space Ping, S Scan, Esc Stop, C Calibrate. Click ? in the header for the full guide.
Welcome to Echoscope
Browser-based active sonar echolocation. Transmit acoustic signals through your speakers, capture echoes with your microphone, and visualize your surroundings in real time.
🔊 This app emits audible sound through your speakers and requires microphone permission to capture echoes. Use headphones-free and keep volume moderate.
Select your device — pick your laptop or tablet from the Device preset dropdown so speaker/mic geometry is correct.
Init Audio — click the button (or press I) to grant microphone access and start the audio engine. Your browser will ask for mic permission.
Calibrate — click Calibrate (or press C) to measure speaker-to-mic timing in your room. Stay still and keep the room quiet.
Scan — click Scan (or press S) to start echolocation and build a heatmap of nearby objects.
Typical detection range is 0.3 – 5 m indoors. Hard, flat surfaces (walls, furniture, monitors) reflect best. A quiet room with minimal background noise gives the best results.