The web version, a few seconds after throwing peas.
Press Listen and you are standing on the bank of a small pond. Twelve mallards go about their day, and not one sound is a recording.
Three hens (Mabel, Clover, Hazel), two drakes (Rufus, Bramble) and seven ducklings in two broods follow a simulated routine: mostly feeding, then resting, then preening. Hens call their young together before moving off. A duckling that strays more than 4 m peeps until its mother answers. The list beside the map shows who is where, how far, and what they are saying.
The calls are built, not played. The README describes a source-filter model of the syrinx and vocal tract: Gaussian-derivative pulses with jitter, shimmer and period doubling (which supplies the quack’s rasp), shaped by formants that move as the bill opens and closes. Hens have a repertoire: a single quack, the falling “QUACK quack quack”, quiet wak-wak-wak while feeding, and kwek-kwek to gather the brood. Drakes make a soft, raspy rhaeb. That split is real: the University of Michigan’s Animal Diversity Web says the familiar quack is the female’s.
Then the placement. Each sound is delayed by travel time, quietened with distance, dulled by air absorption, and given a wetter reverb the farther the duck is. Speakers get panning; the headphones toggle (h) switches to a spherical-head binaural model with a separate delay for each ear. Rings on the map mark 5, 10, 20 and 40 m.
Throw peas (p) tosses 12 to 20 a few meters ahead of you, and the nearest ducks call and race for them.
The limits are small ones. The maker says on the Hacker News thread that the project was built with significant LLM help, tuning synthesis parameters against spectrograms of real recordings, and calls audio outside their own expertise. Commenters noted that ducks linger near the listener after peas, that none of them tips tail-up, and that Merlin Bird ID was not fooled. The pond holds at most 120 peas at a time. Phones need HTTPS for the audio engine, which the hosted page provides.
It is MIT-licensed Rust, compiled to WebAssembly for the browser. The same pond runs in a terminal as a text map with --visualize. A couple of commenters found it relaxing as background sound.