Melodica Notes is a CLI tool to assist melodica players with musical scales, chords, and harmonics.
For the best experience, we recommend installing the project's CLI using pipx
:
pipx install melodica-notes
However, this is just a recommendation. You can also install the project using your preferred package manager, such as pip
:
pip install melodica-notes
The core of the application revolves around a command called melodica-notes
.
Melodica Notes offers three subcommands: scale
, chord
, and harmonic
.
The scale
subcommand followed by a musical note, displays the scale for that specific note.
By default, if called without any parameters, it returns the C major scale.
At present, Melodica Notes supports major
and minor
scale modes.
melodica-notes scale C
┏━━━┳━━━━┳━━━━━┳━━━━┳━━━┳━━━━┳━━━━━┓
┃ I ┃ II ┃ III ┃ IV ┃ V ┃ VI ┃ VII ┃
┡━━━╇━━━━╇━━━━━╇━━━━╇━━━╇━━━━╇━━━━━┩
│ C │ D │ E │ F │ G │ A │ B │
└───┴────┴─────┴────┴───┴────┴─────┘
melodica-notes scales F# minor
┏━━━━┳━━━━┳━━━━━┳━━━━┳━━━━┳━━━━┳━━━━━┓
┃ I ┃ II ┃ III ┃ IV ┃ V ┃ VI ┃ VII ┃
┡━━━━╇━━━━╇━━━━━╇━━━━╇━━━━╇━━━━╇━━━━━┩
│ F# │ G# │ A# │ B │ C# │ D │ E │
└────┴────┴─────┴────┴────┴────┴─────┘
The chord
subcommand operates by identifying the degrees associated within the major scale. When you input a chord, it determines the notes comprising that chord and their corresponding degrees within the scale.
Melodica Notes supports the following chord types: major (default), m
(minor), dim
(diminished), +
(augmented) and m+
(minor augmented). For example:
melodica-notes chord A
┏━━━┳━━━━━┳━━━┓
┃ I ┃ III ┃ V ┃
┡━━━╇━━━━━╇━━━┩
│ A │ C# │ E │
└───┴─────┴───┘
melodica-notes chord Em
┏━━━┳━━━━━━┳━━━┓
┃ I ┃ III- ┃ V ┃
┡━━━╇━━━━━━╇━━━┩
│ E │ G │ B │
└───┴──────┴───┘
melodica-notes chord Fdim
┏━━━┳━━━━━━┳━━━━┓
┃ I ┃ III- ┃ V- ┃
┡━━━╇━━━━━━╇━━━━┩
│ F │ G# │ B │
└───┴──────┴────┘
melodica-notes chord Gm+
┏━━━┳━━━━━━┳━━━━┓
┃ I ┃ III- ┃ V+ ┃
┡━━━╇━━━━━━╇━━━━┩
│ G │ A# │ D# │
└───┴──────┴────┘
The -
symbolizes a decrease of one semitone, indicating that to form the major chord, F
would need to be F#
.
The +
symbolizes an increase of one semitone, suggesting that to form the major chord, A#
would need to be A
.
The harmonic represent scales using chords.
You can access the harmonic using the harmonic
subcommand followed by a musical note.
Melodica Notes supports major
(default) and minor
harmonic modes. For example:
melodica-notes harmonic E
┏━━━┳━━━━━┳━━━━━┳━━━━┳━━━┳━━━━━┳━━━━━━━┓
┃ I ┃ ii ┃ iii ┃ IV ┃ V ┃ vi ┃ vii° ┃
┡━━━╇━━━━━╇━━━━━╇━━━━╇━━━╇━━━━━╇━━━━━━━┩
│ E │ F#m │ G#m │ A │ B │ C#m │ D#dim │
└───┴─────┴─────┴────┴───┴─────┴───────┘
melodica-notes harmonic F# minor
┏━━━━━┳━━━━━━━┳━━━━━┳━━━━┳━━━━━┳━━━━┳━━━━━┓
┃ i ┃ ii° ┃ III ┃ iv ┃ v ┃ VI ┃ VII ┃
┡━━━━━╇━━━━━━━╇━━━━━╇━━━━╇━━━━━╇━━━━╇━━━━━┩
│ F#m │ G#dim │ A │ Bm │ C#m │ D │ E │
└─────┴───────┴─────┴────┴─────┴────┴─────┘
For additional options and help, use the --help
flag with any command:
melodica-notes [COMMANDS] --help
╭─ Commands ─────────────────────────────────────────────────────╮
│ chord │
│ harmonic │
│ scale │
╰────────────────────────────────────────────────────────────────╯
This will provide you with detailed information on available commands and options.
Enjoy exploring different musical scales and chords effortlessly with Melodica Notes!
To contribute to the project, follow these steps and create a pull request.
Clone the project repository to your local machine using the following command:
git clone https://github.com/vhsenna/melodica-notes.git
Ensure you have Poetry installed by running the following command:
pipx install poetry
Navigate to the project directory and install the required dependencies with Poetry:
cd melodica-notes
poetry install
Execute the CLI by running the following command, replacing [subcommand]
with the desired subcommand:
melodica-notes [subcommand]
Run the tests to ensure everything is functioning correctly:
task test
Generate the project documentation using the following command:
task docs
- Add support for additional scales
- Develop a feature for harmonic progressions
- Add support for suspended chords
- Implement a feature for tetrads, including:
- 7th chords (dominant, major, minor)
- 9th chords (dominant, major, minor)
- Develop a feature for harmonic functions
- Implement custom error classes for improved error handling and clarity