Overview
Music Chord Finder is a small Python command-line project that takes musical notes as input and identifies whether they form a major, minor, diminished, or augmented chord.
The project currently lives in one main file, chord_finder.py. The goal is not to make a complete music theory tool yet. Version 1 is complete and focuses on clean function design, user input handling, chord logic, and a simple command-line experience.
Why I Built It
I wanted to connect programming with music theory. While learning how chords work, especially intervals and inversions, I used this project to turn that understanding into code.
Instead of only memorizing chord names, I wanted to model the logic behind them: notes become numbers, intervals become patterns, and those patterns can be checked by a program.
I also wanted to spend some evenings away from AI-assisted coding and work through the problem manually. Part of the point was to keep the basic muscle active: thinking through the logic myself, typing the code by hand, making mistakes, and understanding why each piece belongs there.
What Version 1 Does
- Accept notes from the terminal.
- Normalize user input.
- Work with sharp notes.
- Convert notes into numbers.
- Calculate intervals from possible roots.
- Match interval patterns against basic chord types.
- Recognize inversions.
- Handle invalid notes gracefully.
Example
If the user enters:
C E G
the program can identify the result as:
C major
It also supports inversions. For example, E G C can still be recognized as C major, because the program tests each note as a possible root.
Core Logic
A chord is identified not just by note names, but by the distances between notes. For example, C E G becomes 0, 4, 7, which matches the major chord pattern.
To support inversions, the program tests each note as a possible root. That way, notes like E G C can still be understood as a C major chord, even though C is not the first note entered.
Version 2 Focus
Version 2 is about improving the command-line experience without changing the core chord logic too much.
- Cleaner welcome screen.
- Clearer input instructions.
- Example inputs before the user types.
- Better formatting for successful chord results.
- Better formatting for invalid notes and no-match cases.
- Optional repeated input loop.
- Optional exit commands such as
qorquit. - Optional help command and supported chord type display.
Current Limitations
- Flats are not supported yet.
- Seventh, ninth, eleventh, and thirteenth chords are not supported yet.
- The project is CLI-only.
- There is no Django or web interface yet.
- It is still intentionally small and educational.
Roadmap
- v1.0: Basic chord finder with major, minor, diminished, augmented, inversions, sharp notes, and invalid note handling. Completed.
- v2.0: Better CLI experience with clearer instructions, repeated input, exit/help commands, and better result formatting. In progress.
- v3.0: Flats support, including notes such as
Bb,Eb, andAb. - v4.0: Extended chords such as sevenths, ninths, elevenths, and possibly thirteenths.
- Future: A simple web app, possibly with Django, for a more user-friendly interface.
Project Status
Status: Version 1 complete. Version 2 is in progress.
This is a small but meaningful learning project. It is intentionally limited, but it already captures the core idea: basic chord recognition can be expressed clearly through intervals, patterns, and careful input handling.