WatchGrapher Mobile
An iOS timegrapher that measures mechanical watch rate and beat error from contact-mic audio.

Problem
Timegraphers — the instruments watchmakers use to measure mechanical watch accuracy — are dedicated hardware that costs hundreds to thousands of pounds. The actual measurements are well-defined signal-processing problems, and every modern phone already has the compute to do them. The friction is software, and the right pickup.
Approach
A SwiftUI app on iOS 17+, capturing audio through AVAudioEngine. A vDSP-backed DSP chain runs a 1500–15000 Hz IIR biquad bandpass to isolate the escapement impulse, rectifies and smooths with an asymmetric EMA (fast attack, slow release) for envelope detection, and uses autocorrelation plus epoch folding (~+20 dB SNR) over sample-based inter-tick intervals to derive beat rate and beat error. Measurement is done with wired EarPods pressed against the watch case as a contact microphone — Bluetooth audio is blocked because its latency destroys the timing.
Stack
Synopsis
WatchGrapher Mobile covers the full timegrapher loop on iOS — audio capture, the DSP chain that derives rate and beat error, calibration per watch movement, and a per-watch history. The purpose is to put a timegrapher in a watch enthusiast's pocket for the cost of a pair of wired EarPods, rather than the hundreds to thousands of pounds that dedicated hardware runs.
Gallery
The entry surface

Calibration

Live measurement

End of a recording

Persist the run

Per-watch history
