Chord Transposer


I’m learning music theory in public — this is me working through ideas, not teaching them. For rigorous treatments, see Dmitri Tymoczko’s A Geometry of Music or David Lewin’s Generalized Musical Intervals and Transformations.

In the previous post, I was exploring the idea that melody acts like a discrete derivative in log-frequency space — transposing a song adds +log(k)+\log(k) to every note, and the constant cancels when you take differences. If that framing is right, intervals are preserved, which is why you can sing “Happy Birthday” in any key and it’s still “Happy Birthday.”

The tool below shifts each root name by the same number of semitones. The suffix (m, 7, sus4, etc.) passes through untouched because it encodes intervals above the root, and those intervals are exactly what transposition preserves. Type in a progression, pick a shift, and see for yourself. The chromatic circle shows the shape of your progression — notice it rotates under transposition but never deforms.

0

How it works

Each root maps to a position in the chromatic scale (C = 0, C# = 1, …, B = 11). To transpose by nn semitones, compute (i+n)mod12(i + n) \bmod 12 for each root. Slash chord bass notes get the same shift applied independently.

If you want to go deeper on why transposition works this way — and how chord progressions relate to geometric structures — Tymoczko’s work on voice-leading geometry is a great starting point. The Open Music Theory textbook is also a solid free resource for the fundamentals.