🍿 Popcorn Tracker

idle
Press Listen, put the phone near the pan
Pops
0
Rate (5s)
0.0/s
Current gap
—
Fastest gap
—
Peak (μ)
—
Spread (σ)
—
Est. kernels
—
Unpopped
—
Popped
—
Pull window
—

How the estimate works

Each pop is one kernel reaching its burst point. Those burst times across a batch are approximately normal, so the stream of pops is a sample from a bell curve and the gaps between pops are the inverse of its height: tiny gaps mean you are at the peak, widening gaps mean the tail.

Only the pops that already happened are observable, so the app fits a right-censored normal by maximum likelihood over μ and σ — the sufficient statistics are n, Σt and Σt², which makes a refining grid search cheap enough to redo every frame. Pull time is μ + 2.33σ, where 99% of the fitted mass is behind you. A stall rule (gap > 12× the fastest gap of this batch) fires early if the batch dies before the fit says so, because burning is worse than leaving a few kernels.

Pop log