Prototype2026Research, design and development

Spaziotempo relazionale

A 3D harmony explorer. Pick a scale and the geometry of the chords grows out of that choice, to look at and to play.

Six views
to look at the same harmony from different angles
You play it
with the computer keyboard or a MIDI controller, and see it as you go
In three dimensions
chords become places to move through
The Circles view: the chords of C major as coloured planets joined by lines, with the scale selector at the bottom.

The question

I wanted to see and hear harmony as a space. The classic diagrams, like the circle of fifths, show one relationship at a time. The rule I set myself is that a distance on screen must be a musical distance, or the figure must say clearly that it is not.

What it does

You pick a scale, and the geometry of the chords grows out of that choice. You can look at it in six different ways, a network of chords, circles, a doughnut-shaped surface, a map of how far the voices move, a planetary system and a cloud of particles, and move from one to another without a cut.

You move with the computer keyboard and play at the same time: the left hand flies, the right hand plays the degrees of the scale. With a MIDI keyboard the lower notes identify the chord and the higher ones play the melody, while a sustained sound glides from one chord to the next.

It comes from my research on time, which reads the geometry of spacetime and music as the same object. It exists in two versions, a prototype that runs in the browser and a version in Unreal Engine 5, the engine used for video games.

The choices that matter

  • Start from the scale, not the chord. You choose the context, and the geometry of the chords follows from it.
  • Every figure says how faithful it is. Views with different properties are never mixed behind your back, and the interface states the error of each map.
  • Measure before you draw. The main hall is organised by fifths because, counting bass movements across a set of pieces, moves by a fifth make up 53.4%, against 7.2% for single-voice steps.
  • Both versions give the same results. Web and Unreal read the same data, and the component-by-component comparison comes out identical.

Problems solved along the way

  • No layout fully satisfied the ear, except partly the one on the doughnut. Closeness of voices and kinship between keys turned out to be two independent measures. That is why all six views stay, with continuous transitions between them.
  • Stacking fixes on top of each other did not work. I redesigned the scene around a single hall.
  • The move to Unreal brought its own defects, such as mirrored text and choppy audio, to be fixed one by one.

Where it stands

The web prototype is complete and tested. The Unreal version still has some finishing touches open. There is no public version yet.

What I learned

  • Set the criteria before you see the results.
  • When the measurement contradicts intuition, the measurement wins.
  • No values fixed by eye. Every measure has to be derived from the real ones. It was the most expensive lesson.

Try it

For now it runs locally, and I can show it live on a call. The images come from both versions.

How the information moves

The method I use with clients, applied to this project: follow the information from where it starts to how you know everything works.

  1. Where it startsThe structures of Western harmony: scales, chords and tunings.
  2. How it arrivesChoosing a scale, moving with the keyboard, notes played on the keyboard or on a MIDI instrument.
  3. How it is describedChords become points in a space where distances are musical distances.
  4. What happens to itThe scale gives the chords, their similarities give the distances, the distances give the positions in space.
  5. Where it livesThe system knows where you are, which chord is sounding and which key you are in.
  6. Who decidesPrecise rules decide when to change chord and how to move the voices as little as possible.
  7. What happens nextThe scene redraws, the view flies and the sound glides from one chord to the next.
  8. How we know it worksEvery figure states how faithful it is, and the criteria for judging them are set before measuring.
For those who want the technical details

How it is built, for people who work in software or want to know what is underneath. Every number has a source.

  • Dependency-free mathematical core in TypeScript (33 files, about 8,300 lines), run and tested directly with Node.
  • Six scenes in three.js (about 7,300 lines), an additive synthesiser in AudioWorklet with a sample-accurate scheduler, Web MIDI control.
  • Geodesic distances, multidimensional scaling with the error shown on screen, Keplerian orbits and probability sampling: all deterministic maths, no language model in the app.
  • Unreal Engine 5.8 port in C++ (92 files) reading 19 data tables exported from the core; 216 of 216 components identical across the two versions.
  • Built with an AI agent writing code and instructions, while I steered the project and the editor.
Representations
6source: README del progetto
Core dependencies
Nonesource: src/core
Core tests
more than 480source: tests/core, conteggio del 27/09/2026
Web and Unreal agreement
216 of 216 components identicalsource: docs/resoconto_finale.md, sezione 19.2

Tools used: TypeScript, three.js, Web Audio (AudioWorklet), Web MIDI, Node test runner, Python (numpy, scipy, sympy), Unreal Engine 5, C++

Research