Tuning Hall

A piano tuner's dawn in an empty concert hall, and a verb this lab had never built: LISTEN. Strike a string and it sounds against a reference a few cents off; the two waves beat together at exactly the frequency difference, and you lean on the tuning lever until the pulse stills. The beating is genuine interference between two sampled piano notes played at once — nothing simulates a wobble, and the needle on the dial swings at precisely the measured beat rate, its throw falling as the string comes true. Six strings, then the hall answers with a recital. AI agents authored the piece end to end: the concept painting, seven code-modelled Blender units — the grand, its exposed harp, the tools, the bench, the seat row, the brass floor lamp and the arched windows — the Unity 6 scene, and an A-aeolian score for piano, celesta, oboe, bassoon, french horn and tubular bells, every sound a real sampled note.

Play it now

SPACE strikes · HOLD LEFT/RIGHT to lean the lever · TAB picks the next string · P pauses, R restarts · 36 MB of code-modelled hall

▶  Play

The concept is the contract

The piece was concepted first — an AI key-art painting — and every element in it was then code-modelled in headless Blender and audited against that painting before a line of gameplay was written. The pair below is the contract and the live build.

AI concept painting of a piano tuner's dawn in a concert hall
Concept key art — the contract the piece is audited against
the tuning hall live in the Unity engine
The same hall, live in the engine

Code-modeled in Blender

Six asset kits, written as Blender Python against the platform sculpt kit — no downloaded models anywhere — and audited render by render before entering the engine. Fifteen judged unit rounds in total; the defects each round fixed are named in the captions.

the grand piano
U1 · The grand — case, raised lid, keybed and 36 naturals with sharps in the real 5-per-octave pattern (a uniform run of black keys is the giveaway of a fake keyboard)
the exposed harp
U2 · The harp — plate, strings as real cylinders, felt strips over the dampers; the strings the lever actually reads
tuner's tools
U3 · The tools — lever, mutes and fork on the case rim, seated on the measured casting (not the raised lid)
the bench
U4 · The bench, with the tuner's coat thrown over it
seat row
U5 · The seat row — the empty audience the dawn falls across
brass floor lamp
U6 · The brass floor lamp — swan neck, downward shade, the scene's one warm light; re-aimed at the piano in the 2026-08-27 operator pass (it shipped facing the seats)
arched window
U7 · The arched window — jambs, voussoir arch, and the muntin grid now SANDWICHED on both faces of the pane, because the emissive glass hid a single-sided grid from the room (operator finding)

Measured, honestly

MeasureValueConditions
The beat is realtwo samples, one detunedthe reference and the string are the same recorded piano note sounded together, one shifted by the string's cents error — the audible wobble is what physics does with them
Needleswings at the measured beat ratethrow clamps at 34° and falls with the beat, so "nearly true" reads as a slow small sway; the felt dampers over an out-of-tune string tremble with it
The lever is analogheld, not clickeda tuning lever is leaned on; since the 2026-08-27 pass leaning also SOUNDS a soft note pair every half second and visibly sweeps the lever, so the pin answers ear and eye while you turn
Strings6 — A3 C4 E4 A4 C5 E5each strike also dips the matching piano key on the keyboard
Unity build≈36 MB WebGLUnity 6, scene built entirely in code, URP
Operator retrofit 2026-08-275 findings fixed by handambient noise beds removed (the score carries the hall alone); lever/key feedback added; the lamp re-aimed at the piano; the window muntins made two-sided; a goal line added to the menu

Made by AI, compiled by the real Unity 6 engine

The piece reads its own sound: the self-test strikes each string and asserts the measured beat frequency against the closed form |Δf| computed from the cents error, so the tuning puzzle is verified physics, not vibes. The 2026-08-27 operator audit then fixed what only a human ear and eye catch: holding the lever changed a number but nothing you could hear until the next strike (now it sounds and sweeps as you lean), the recorded night-ambience bed violated the composed-score decree (removed — the A-aeolian score carries the hall), the one warm lamp faced the seats instead of the instrument, and the window's wood grid vanished behind its own glowing pane.

What this piece earned

Sound as the puzzle
The game state you are reading is a beat frequency. The needle and the trembling dampers visualise it, but the ear solves it — the piece is playable with your eyes closed.
Interference, not simulation
Two real samples of the same note, one detuned by the string's error, played together. The wobble you hear is physics; the self-test asserts its rate against the closed form.
Every control answers
Strike dips the key; leaning the lever sweeps it on the pin and sounds the pair; TAB walks the untuned strings. Feedback on every verb — the operator lesson this piece paid for.
The score IS the atmosphere
No recorded noise beds. Piano, celesta, oboe, bassoon, french horn and tubular bells in A aeolian carry the dawn — and the recital that answers a finished tuning is the reward.
A stage lit like the concept
Cold dawn through two arched windows with real muntin grids, one warm brass lamp aimed at the work — the hall's light tells you where to look.
Camera serves the verb
It sits low over the strings while you work and eases back into the hall as the job comes right, so progress is something the room shows you.
beat = |Δf|6 stringsA aeolian @ 72piano 16 notescelesta 7oboe 7bassoon 4french horn 5tubular bells 4needle throw ≤34°lever ±80 centsno noise beds