Audio-Visual Source Distance Analysis — State of Utah v. Tyler Robinson
Source videos, analysis code, and full methodology. Verify the results yourself.
pip install numpy scipy opencv-python matplotlib python3 epicenter_pipeline.py --batch --video-dir . --validate --muzzle-blast
Count the video frames between the shirt expansion (light, instant) and the audio impulse (sound, 343 m/s). The FBI says 142 yards. That requires 11 frames of delay. We measured 0–2 frames.
| File | Description | Size |
|---|---|---|
| epicenter_pipeline.py | Complete analysis pipeline (Python 3) | 19 KB |
| README.md | Full documentation and methodology | 4 KB |
| File | Event Frame | FPS | Duration | Size |
|---|---|---|---|---|
| 2.MOV | F507 | 59.95 | 36.78s | 70 MB |
| IMG_6368.MOV | F55 | 29.99 | 7.36s | 9.2 MB |
| 7.mp4 | F759 | 29.99 | 39.22s | 46 MB |
| 1.mp4 | F52 | 30.0 | 4.44s | 2.1 MB |
| 13.mp4 | F247 | 30.0 | 11.38s | 2.9 MB |
| Video2_1.mp4 | F68 | 30.36 | 3.05s | 3.2 MB |
Open any video in VLC. Press E to step one frame at a time. Find the frame where the white shirt begins to expand. Find where the audio spike hits. Count the frames between them.
If the shot came from 142 yards, you should count 11 frames. You won't.
| Recording | Frames Apart | ΔT | Result |
|---|---|---|---|
| IMG_6368.MOV | 0.2 | 7.5ms | Essentially simultaneous |
| 2.MOV (60fps) | 1.1 | 18.3ms | Best precision measurement |
| 1.mp4 | 2.1 | 70.6ms | Within quantization error |
| 7.mp4 | 2.2 | 74.5ms | Within quantization error |
— Jon Bray — followtheepicenter.com