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 q or quit.
  • 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, and Ab.
  • 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.