← Dev log

Frogs, a smith and a truck

There is now a background under the narration: swamp, forest, cave, rain. Five short loops, a couple of hundred kilobytes each, chosen by where the hero is standing. Sound is off by default — this game is played on a phone, often around other people, and sound that turns itself on is worse than no sound at all.

The most interesting part of this work turned out not to be about sound.

The author gave fair warning

We took the forest background from Freesound — a field recording, CC0, all clean. In the description the author noted that he had left a faint reversing alarm from some piece of construction machinery in the recording: quiet, unlikely to bother anyone.

For a thirty-second loop running for an hour straight, that is not “unlikely to bother anyone”. It is a beep once a second that you cannot stop hearing after ten minutes.

It was exactly where promised: a 1078 Hz tone, repeating about 1.4 times a second, in three groups — at the start, in the middle, and towards the end. Between them a clean window survived from second 18 to second 46, and that is where the loop was cut from.

Turning that into a tool seemed like the logical next step. The machinery is easy to search for: a narrow band around a kilohertz that pulses rhythmically. In the forest, that band scored 6.5 against the recording’s general noise. In clean rain, 2.1. An obvious difference.

The cave scored 28

The next recording was a cave. The same detector returned 28.35 — four times more than the real reversing alarm.

There is no construction machinery in any cave. In a cave, water drips. Drips are a narrow band that pulses rhythmically, which is precisely what the detector looks for. It worked flawlessly, and found exactly the thing the recording had been taken for.

From there it got worse. Village — 4.11: a smith striking a hammer. Swamp — 4.07: frogs. Tavern — 4.25: glasses knocking together. Not one foreign sound, four detections.

I tried to separate them automatically. Twice.

First by regularity: a truck beeps like a metronome, frogs croak out of step. It did not work — clean rain also came out “regular”, because what I was measuring was not the signal but my own analysis window. Then by the shape of the strike: a horn has a flat plateau, a drip and a hammer have a sharp attack and decay. That did not work either — everything landed near the same value, including the glasses, which are unambiguously percussive.

The conclusion had to be written into the tool itself, so as not to rewrite it a third time: the detector shows you where to listen. What is actually audible, it cannot tell you. The number says “something periodic is here”, and in an ambient recording something periodic is usually the very thing you came for.

“Probably fine” is not “checked”

The second half of the work was licences, and there was exactly one problem there.

The tavern recording is marked CC0. In the description the author mentions using someone else’s file of clinking glass in it. He released his own work into the public domain, but that only holds if the source was CC0 too — and the source is not named: no number, no link, no attribution note, just a sentence in the text.

Probably everything there is fine. But “probably” and “checked” are different things, and the whole undertaking rests on the library being checkable. The recording was rejected and left in the list marked as such: if you simply delete it, in six months somebody finds the same file again and decides differently. The reason for a refusal outlives the refusal.

No sound now reaches the game without a provenance record — and that is enforced by tests, not by a promise.

Swamp instead of village

The very first pairing of place and sound turned out to be an exception.

Rotten Ford is a village by terrain type, and we have a village background. Except that it has cattle lowing and a forge working, and Rotten Ford has been dying of plague for three weeks. A living village underneath a dying one sounds like mockery.

It got the swamp background — “a village on the edge of a marsh”, and frogs and standing water convey that far more accurately. From which it follows that terrain type is a default, not a rule: a story must have the right to name its own sound. It also emerged that the healer’s hut gets no background at all, and that is correct: step inside and the swamp goes quiet. Here, silence is the shelter.

What stays silent

The Pit is silent entirely. There is no suitable crowd recording yet, and substituting the forest is worse than nothing: a wrong sound is not merely out of place, it lies to the player about where they are. An uncovered place stays silent.

And that is perhaps the main thing left over from all of this: deciding what the game would not have turned out to matter more than adding one more file.