ttesselate.EXPERIMENTS / DOPPLER LABHow it works ↗
FIELD NOTES   /   ACOUSTICS SERIES   /   01

Doppler Lab

Listen for a flyover. Trace the falling pitch.
Compare what you heard with the flight path.

FIG. 01 THE LISTENING POST
FIELD SKETCH   /   EVENING WIND
Runs on your device. Recordings and flight files stay in this tab. Export your work before leaving.
START HERE / REAL RECORDING

Two flyovers. One location.

PRECOMPUTED EXAMPLE

Explore CST1219 and EGE93 passing over Long Island. Compare their predicted Doppler curves with the recording, then zoom in on the receiver estimate.

Refining an already identified flight pair reduced this sample’s location error from 193 m to approximately 103 m. The known answer was used to identify the pair and evaluate the result. This is not a blind nationwide search or an accuracy guarantee for other recordings.

Example method & data sources

This saved result uses direct spectrogram scoring, reported aircraft velocity, one shared recording clock, a constant source tone for each event, and externally estimated receiver height. Candidate methods were compared on held-out audio blocks. Sound speed is fixed at 343 m/s; wind and atmospheric refraction are not modelled. A position-and-velocity-consistent alternative gave roughly 110 m error, illustrating remaining model sensitivity.

Aircraft data: ADSB.lol daily archive (ODbL). Streets and coastline: © OpenStreetMap contributors; regional geometry: US Atlas / Census. Heights: USGS EPQS and NOAA GEOID18. No recording upload is needed to view this precomputed example.

Choose a recording to start an automatic full-length scan.
WATCH & LISTEN / REAL RECORDING

Watch the sound move.

FLIGHT MATCHES UNVERIFIED

Explore a four-minute floatplane recording with synchronized source video, a spectrogram cursor, and measured tonal curves. Related harmonics are grouped as one source hypothesis. No location estimate is claimed.

Open synchronized demo ↗ Browse all detections ↗
01 / LISTEN CLOSER

Your recording

↥Choose a recording
MOV/MP4 with AAC: up to 2 GB / 2 hours in newer browsers. Older Safari fallback: up to 15 minutes. MP3: 200 MB. Other audio: 100 MB. Audio extraction stays on your device.No recording selected
REAL AUDIO / TRY THE DETECTOR

Choose a short aircraft recording

12 real recordings, 41–92 seconds each. Load one to run a fresh automatic scan. Only audio is supplied—no flight identities, tracks, guide points or reference curves.

Each WAV downloads only when selected (about 4–9 MB). Loading a sample replaces the current analysis. Some recordings may yield no candidates.

Recording credits

Audio by Praveen Pathak, Aeroplane data full analysis and raw files (2026), CC BY 4.0. Twelve original recordings selected; audio unchanged and filenames anonymized. The source dataset contains published answers; these are not loaded into this analysis.

One upload. The whole recording.Scans 40–1,000 Hz in overlapping windows, rejects stationary tones, and groups repeated harmonic traces.
Advanced: inspect a crop or change spectrogram settings
Spectrogram settings

Long windows resolve nearby frequencies but blur rapid changes. The FFT uses a power-of-two window; actual resolution is shown after analysis. Audio is resampled to 4 kHz.

02 / FOLLOW THE SIGNAL

Your Doppler curves

AWAITING AUDIO

Automatic detections will appear here with start/end timestamps and measured-versus-fitted curves.

RECEIVER / STANDBY Open a recording ↑
Hover to inspect time and frequency.
Advanced: refine a trace manually

Choose a time/frequency rectangle around one tonal curve. Guide points help the extractor stay on the intended trace. A trace alone does not identify an aircraft.

Guide points & manual editing

Click the spectrum or enter points directly. All times are measured from the original recording start.

Curves prepared for flight matching

Saved events

Detected curves are saved here automatically.
03 / COMPARE WITH THE SKY

Flight-track matching

LOCAL SEARCH

Import candidate flight tracks and compare their predicted curves with your saved events. Every event shares the same recording clock; each can have its own source frequency.

Use historical ADS-B archives ↗ or your own normalized data. This page accepts selected tracks, not an entire continental archive. File formats & units →

No flight tracks imported.

Height is constant across the grid; terrain is not loaded automatically. Flight and receiver heights must use compatible datums. This is a bounded matching experiment, not the video’s full countrywide search pipeline.

04 / FOLLOW THE EVIDENCE

Historical matching workflow

LOCAL COMPANION

Take your measured curves through historical flight retrieval and location fitting on your computer. The companion previews archive sizes, caches verified downloads, fits one shared recording clock, and produces a report with curve overlays and alternative matches.

The job contains the saved events and current flight-matching settings. Unknown recording time and search bounds stay unset. A whole-day flight archive can be several GB; downloading is a separate, budgeted step. The companion also supports date-known, unknown-clock flight-pair searches. Browser matching uses bounded areas and imported tracks; unknown-date countrywide search is not implemented.

Export curves first, or use the companion’s synthetic demo to test the complete matching path.

WHAT THE MODEL DOES

From sound to a candidate place.

01

Measure

The full recording is scanned for moving tonal peaks. Stationary background tones are suppressed, supported traces are joined, and curved Doppler models are fitted automatically.

02

Predict

For each candidate receiver, flight positions become a three-dimensional trajectory. Sound is shifted according to radial velocity at emission, then placed at its arrival time.

03

Compare

Fit an emitted tone to each event, preserve their shared clock, and rank locations by frequency error. Compare the fitted curves, not just the winning coordinate.

Open-source algorithms worth exploring

librosa piptrack (ISC) refines spectral peak frequencies; its reassigned spectrogram can sharpen time/frequency localization. ssqueezepy ridge extraction follows continuous ridges using dynamic programming; inspect its component license notices before reusing the whole package. aubio (GPL) offers several pitch trackers.

This page uses an independent browser implementation: Hann-window FFT, background suppression, continuous peak tracking, sub-bin peak interpolation, and nonlinear Doppler-shape fitting. Manual refinement is optional. It does not bundle those Python/C libraries. Tracking frequency is the measurement step; the flight model tests its Doppler explanation.

Scope of this first version

Supported: local MOV/MP4 AAC audio extraction, incremental MP3 decoding, automatic full-recording candidate detection, observed and fitted curve inspection, guided ridge refinement, curve import/export, CSV/JSON/readsb tracks, automatic choice among imported aircraft, shared time-offset search, and evidence export. Assumes a stationary receiver, constant sound speed, constant source pitch within each event, and piecewise-linear flight segments.

The Python companion provides archive retrieval and bounded date-wide indexing. Not yet implemented: verified aircraft classification, terrain grids, or weather/refraction correction. Automatic detections are candidates, not verified aircraft identities. Synthetic tests and sample-recording checks do not establish a general detection or location accuracy rate.

Inspired by Colsto’s aircraft Doppler investigation. Original independent implementation; not affiliated with the creator.