Why this lab
The question on 2026-09-28 was where three.js would actually earn its place in the game. The answer was hands that move with the music: a small 3D object whose pose comes from live data and has to answer the player. Everything that is flat and fast is better as Canvas 2D, everything with a fixed set of views is better rendered once in Blender, and the 3D worlds belong to Babylon or Unreal.
The first place for it is the Scales & Arpeggios drill. With ☝ fingerings on, the drill already shows the reviewed fingering from app.scale_fingerings as numbers: a digit over the next key and one under each pip. A learning plan's split card turns them on because the card "is ABOUT a thumb crossing". A number can say 1; it cannot show a thumb travelling under the hand to get there.
What is on the bench
- The same run, three ways, flipped with keys 1 to 3 at the same moment: A the numbers as the drill draws them now, B the hand alone, C the hand with the numbers.
- The hand plays the drill's own fingering, read from the table the game ships (C major right hand: 1 2 3 · 1 2 3 4 5 up, 5 4 3 2 1 · 3 2 1 down). Nothing is typed in for the lab, and all twelve major scales are on the picker.
- 🎹 I play holds the clock at every note until your key goes down, with the finger waiting just above it. A video could not wait for you; this is why the hand is drawn live.
- Four cameras, and the thumb seen through the hand in blue while the palm hides it. Beside you, where a teacher would stand, shows the thumb going under best.
Played with a MIDI keyboard, or the pointer on the keys. Nothing here reaches the network: no analytics, no database. A test (tools/scale_hand_test.mjs) plays all twelve majors, one and two octaves, through the real hand: no bone stretches, a pressed fingertip stays within a millimetre of its key, fingers 2 to 5 never pass each other, and every crossing goes under or over.