Writing on chords, harmony, and how WhatChord works.

Guides for musicians on naming, writing, and identifying chords, plus technical deep-dives and research notes behind the analysis engine.

For Musicians

Why Chord Naming Is Harder Than It Looks

The inversions, extensions, altered tones, and enharmonic ambiguities behind real chord recognition, and how WhatChord handles them.

Read the article →

Chord Naming Guide

How to move from notes to a chord name using default interval qualities, degree formulas, spelling, and candidate roots.

Read the guide →

Chord Symbol Guide

How WhatChord formats chord symbols: extensions, added tones, alterations, parentheses, and slash bass, with the reasoning behind each choice.

Read the guide →

Scale Degree Guide

How notes are numbered from the tonic, what each degree is called, and how scales produce chords and Roman numerals.

Read the guide →

Technical Deep-Dives

Building a Real-Time Chord Recognizer

The bitmasks, chord-quality templates, explanation costs and ranking heuristics, and LRU cache behind real-time chord recognition.

Read the article →

Turning Live MIDI Into Chord Events

How WhatChord turns note-by-note MIDI input into stable chord events, and the measurements behind its 200 ms stability window.

Read the article →

Building a Streaming Key Detector

The 24-state hidden Markov model, fading musical evidence, and abstention rule behind live key detection.

Read the article →

Optimizing an Algorithm That’s Quadratic by Design

Why the chord comparator is non-transitive, why that forces an O(n²) Copeland linearization, and how we cut its cost by an order of magnitude without changing what a musician sees.

Read the article →

Benchmarking on Hardware You Don’t Control

Reference-normalized time, deterministic operation counters, and a calibrated noise model: how we measured engine changes reproducibly on shared CI runners.

Read the article →

What We Learned From 1 Million Chord Annotations

How a large public chord corpus helped validate WhatChord’s chord vocabulary and guide future recognition priorities.

Read the article →

We Can Measure Exactly How Wrong We Are

A tour of WhatChord’s well-measured bad ideas, and why reproducible negative results are as valuable as the experiments that become features.

Read the article →

Research Projects

The open, reproducible investigations behind the app’s features, developed and versioned in the source repository.

WhatKey

Naming the key while the music is still playing, from the chord recognizer’s output rather than a finished score, and staying quiet when the evidence is too thin to call.

Read the research notes

WhatKey Local

How closely that detector should follow the brief key changes inside a piece, and what chasing them costs in the steadiness a glanceable indicator needs.

Read the research notes

Chord Context

Whether recently played chords, and the key they imply, sharpen live chord naming, tested against a strong baseline on two annotated classical corpora.

Read the research notes

Ensemble Mode

A comping mode for the voicings a pianist plays over a bass player, where the root is deliberately absent and the engine previously had no name for the chord at all.

Read the research notes

Ensemble Tiebreak

Closing the naming errors that survive when the key is already correct, measured on a jazz comping benchmark built from the Weimar Jazz Database.

Read the research notes

Performed Input

Scoring chord identity on real recorded performances through the app’s own input path, where every earlier accuracy number had rested on clean synthesized voicings.

Read the research notes

Tone Pricing

What a chord name should pay for a tone it cannot explain, and what discount an honest incomplete reading deserves: one cost dial viewed from both sides.

Read the research notes

Bring it to your own keyboard.

Available for iOS and Android, with no subscription, no ads, and every analysis running on-device.

Download on the App StoreGet it on Google Play

Prefer not to install? Try identifying chords in your browser →