map ( ( chord ) => chordScales (chord, scaleModes ( 'major' ) ) ) /* What we want is something like this: const chords = Ĭhords. To get our graph's nodes, we need to find all possible scales for a chord progression. ![]() Generally, a graph consists of nodes and edges, in our domain, those are: Now we arrived at the problem for this post: How do we find the optimal path through a graph of chord scales? Implementing Chord Scale GraphsĪs we have a general idea of the problem, let's implement this!īefore we can do any path finding, we need to generate a scale graph from our chord changes. ![]() Here, the leftmost path is the optimal one, as its sum of values is 0. When only using the 7 modes of the major scale (diatonic scales), there are 3 scales that could be played over the D minor 7 chord: chromatic harmonic Let's dial back a little bit, and start with the "Hello World" of jazz chord progressions, the 251 in C major: Dm7 G7 C^7. You should be playing the scale up and down, it just means those 7 notes fit over the chord. If you would want to express more than 4 notes as chord symbols, it gets ugly.ĭon't take the sentence "scale X can be played over chord Y" too seriously. I still like having scale names as a means to express note material that exceeds 4 notes. One reason is that the original jazz artists most certainly did not think that way. There are some people (including Barry Harris), that do not like the chord / scale approach. So you would prefer phrygian over aeolian or dorian if you want to stay in Ab major. Which is based on the phrygian mode, which has a b9. In other words: As the Cm7 appears as in the context of Ab major, it can be seen as the 3rd step chord, ![]() He says: "When you see a C minor in the key of Ab, it's not necessarily the C minor 7 that's in the key of Bb,
0 Comments
Leave a Reply. |