-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Labels
help wantedExtra attention is neededExtra attention is needed
Description
We want to have some kind of harmonic logic in the app so that you can get chords that fit together harmonically.
In the harmonic style of 18th century european musicians, chords are grouped into their harmonic functions with a number from 1 to 7.
| Function | Extension | Notes |
|---|---|---|
I |
The root (tonic) | |
II |
||
III |
||
IV |
Subdominant | |
V |
Dominant | |
VI |
||
VII |
In the C major scale, these chords are
I: C majorII: D minorIII: E minorIV: F majorV: G majorVI: A minorVII: B dim
We want to write a function that will take some numbers and translate them into actual chords
const fourChords = {
chords: [1, 5, 6, 4],
mode: "major"
}
const keyCenter = "C";
writeChordProgression(fourChords, keyCenter); // returns [ "C", "G", "Am", "F"]We can use this function alongside a large catalogue of chord progressions to get a random chord progression from the selection. If you grab two progressions you now have an A and B part you can alternate between.
getRandomProgression("C", "major"); // returns [ "C", "G", "Am", "F"]
getRandomProgression("C", "major"); // returns [ "C", "F", "G", "F"]Metadata
Metadata
Assignees
Labels
help wantedExtra attention is neededExtra attention is needed