Tuning Hall

A piano tuner's dawn in an empty provincial concert hall, and a puzzle you solve with your ears instead of your eyes. Strike a string and it sounds against a reference a few cents away; the two tones interfere and beat — a slow wow that quickens when you turn the pin the wrong way and stills when you come right. There is no meter to match, only a pulse to null, which is what tuning actually is. The beating is real acoustics: two sampled piano notes of the same pitch are sounded together with one detuned, and the interference is whatever physics makes of them — nothing anywhere simulates a wobble. Concepted, modelled, composed and coded end to end by AI agents.

Play it now

SPACE strikes · hold LEFT/RIGHT to turn the pin · TAB picks the next string · P pauses, R restarts — 4.98 MB, playing in about 17 seconds

▶  Play

The concept is the contract

The piece was concepted first — an AI key-art painting — and its hero assets were then code-modeled in headless Blender and audited against that concept. The pair below is the contract and the build.

AI concept painting of a tuner's dawn in an empty concert hall
1 · AI concept
the same hall live in the Unity engine
The same scene, live in the engine
Concept prompt

A piano tuner's dawn in an empty provincial concert hall: a black grand piano centre stage with its lid raised and its action exposed, showing the copper-wound bass strings and the bright steel treble strings stretched over a gilded cast-iron frame; a tuning lever standing on a pin, felt temperament strips woven between the strings, a steel tuning fork and a small leather tool roll on the closed keyboard lid; rows of empty red velvet seats under white dust sheets receding into shadow, a scuffed parquet stage floor, tall arched windows down one wall throwing long cold shafts of early light across the boards with dust turning in them, a brass floor lamp beside the piano giving the only warm light, dark panelled walls and a shallow balcony rail above; cool blue-grey dawn against warm amber lamplight, high-end stylized 3D game render, no text, no watermark, no UI

Code-modeled in Blender

Every element the concept painting contains got its own modelled unit — seven of them, written as Blender code against the platform sculpt kit rather than downloaded, and rendered by the studio harness for audit before entering the engine scene. Nineteen judged rounds across the seven.

grand piano, code-modeled
The grand piano — lid raised, action exposed
harp and cast-iron frame, code-modeled
The harp — copper-wound bass and steel treble over a gilded frame
tuning lever, fork and tool roll, code-modeled
The tuner's kit — lever, fork and leather roll
piano bench, code-modeled
The bench
velvet seats under dust sheets, code-modeled
Velvet seat rows under their dust sheets
arched hall window, code-modeled
The arched windows that carry the dawn light
brass floor lamp, code-modeled
The brass floor lamp — the only warm source in the room

Hearing the beat, then killing it

The whole piece lives in one number you never have to read. Every string starts 5.00 beats per second out and counts as true below 0.40 — a twelve-fold sweep of the perceived quantity on every one — with the cents that produce those rates derived per note, because a fixed cent error is a different sound at each end of the keyboard.

a string sounding badly out of tune
Out — the pulse is fast and countable
the same string nulled
In — the same string, nulled to a stillness

Measured

The lab's signature numbers for this piece, including the ones that are not flattering.

MeasurementValueCondition
Beat rate at the start of a string5.00 Hzevery one of the six, derived per note
Beat rate that counts as in tune0.40 Hza 12× sweep of the audible quantity
Best tuning reached in the audited playthrough0.041 Hzall six strings
Beat-model self-test error0.000000 Hz440 Hz at +20 cents → 5.1125 Hz, against the closed form
Worst detune applied to any sample0.389 semitonesagainst the lab's ±2.0 semitone sampling law
Framing self-test7 / 7every hero unit inside frame at boot
Sampled note files shipped43piano, celesta, oboe, bassoon, french horn, tubular bells
Ambience beds2night room tone and wind against the windows
Blender units modelled / judged rounds7 / 19one unit per element in the concept
Payload total / largest single asset4.98 MB / 1.40 MBboth under the lab gates, with headroom
Time to first frame~17 sURP under SwiftShader on the audit host — slower than a GPU client
Console errors across the audited run0boot, six tunings, pause, restart

What the piece earned

Engine and craft features this piece genuinely used, with the constants it settled on.

Beat-frequency acoustics

Two sampled notes of one pitch sounded together, one detuned by a derived number of cents, left to interfere. The model is closed-form and assertable in both directions, and the boot self-test round-trips it.

f(c) = f0·2^(c/1200)start 5.00 Hztol 0.40 Hz

Sound as input, not output

Every other piece in this family uses audio as the reply to an action. Here the audio is the thing you read to act at all — the visual needle is a companion to the ear, never a substitute for it.

6 stringslever 7.5 cents/s

Composed from sampled instruments

Forty-three real note files across six instruments, with two ambience beds under them and per-event sampled SFX — no synthesis anywhere, and two out-of-range notes swapped for ones the instruments actually ship rather than pitch-shifted past the law.

43 notes6 instrumentsmax detune 0.389 st

Concept-audited modelling

Seven units, one per element the concept painting contains, each judged in its own render rounds against that painting before the engine scene was allowed to use it.

7 units19 roundsframing 7/7

Made by AI, compiled by the real Unity 6 engine

The hall, the piano and its harp, the tuner's kit, the seat rows, the windows and the lamp are seven code-modeled Blender exports lit in a URP scene; the piece's own code drives the strike, the pin, the beating and the dawn. Concept, models, composition, engine code and audit were authored end to end by AI agents, then compiled by Unity 6 to WebGL — the same engine and the same build path a shipping game would use.