Tutorial
Basic chord progressions are represented as a list of numbers for the degree of the scale.
Eg 1,4,6,5
is a classic 1-4-6-5 four chord loop.
It's important to note we always interpret this in the context where the key is set. We tell GoldenPond if we're in C-Major or A-flat Minor etc. And the chords are calculated based on that key signature.
Extended chords can be created by adding the digits 6, 7 or 9 to the front. So 74
is the seventh built on the 4th degree. 92
is the ninth built on the 2nd degree.
Chord Inversions are added with a number of i suffixes. Eg. 6ii
is the second inversion of the 6 chord. The extension and inversion notation is composable. 73i
is the first inversion of the 7th built on the 3rd degree.
Secondary Chords We can temporarily "tonicize" ie. treat as tonic, one of the other degrees of our scale. And then borrow a chord from that key. (5/3)
is the secondary dominant, ie the 5 chord of the key where our current 3 chord is the tonic or 1 chord. This is typically used because the dominant of any key is a great chord to lead to the tonic of that key. So (5/3),3
is a really strong way to get to the 3 chord. But we can also try more exotic combinations. (2/4),4
will give us the 2 chord of the key where our current 4 chord is the tonic.
Again, secondary chord notation composes with everything else : 7(6/3)i
is the seventh chord on the 6th degree of the scale where our 3 is tonic, in the first inversion. See how we can get some quite complex chords, expressed in a very concise (but not too obscure) way.
Modal Interchange ie. borrowing from a parallel mode is done with the !. So (n!m)
means take the n chord from the m-th mode. Eg. if we are currently in a Major mode, then (3!4) means take the 3 chord from the 4th mode (ie. lydian) of major. (2!3) is the 2 chord from the parallel 3rd mode (phrygian). If we were in a melodic minor scale then we'd be taking the modes from that. Eg. (2!7) would be the 2 chord from the seventh mode of melodic minor, aka Altered Scale.
Again modal interchange is composable. In C-major 9(3/6)iii
is the third inversion of the ninth built on the 3rd degree of the 6th mode, C natural minor.
Transposition uses a special notation in place of a chord. We use >n
and <n
to tell the chord sequence to transpose up or down n semi-tones from here on out.
For example if we interpret the progression 1,4,3,>1,6,4,5
in C-major, we'll play the 1, 4 and 3 chords, then set the default key to 1 semitone higher, ie. C#-major, and play the following 6,4,5 sequence in that key.
Note if you are looping, it's most like that the chord sequence is generated once, and looped by the hosting environment. So when you return to the beginning of the loop you will be back in C-major again. There is (currently) no looping notation within GoldenPond.
"Lines"
Once we have our chord progression, we want to generate some instrumental lines from it.
By "lines" we mean sequences of specific notes which play the chord patterns. These can be as simple as playing the full chord on the first note of a bar. Or playing a bassline using the root note of each chord. Or playing a rhythmic arpeggio. Or just the top notes, or even random notes from the chord.
We derive lines from the chord progression, with a second DSL, the "line DSL" which represents a rhythmic pattern of notes chosen from a chord.
The simplest canonical version of the line DSL looks like this
c... 2
This has two parts. The first part defines the pattern of notes drawn from a chord. While the second, in this case, the number 2, is the density. Density means how many times the pattern is repeated throughout the duration of a single chord.
Say we have the following 4 chord sequence.
71,73,76,74
And we apply the pattern c... 2
to it. The density tells us that for each chord in the chord progression, we repeat the rhythmic pattern twice.
The rhythmic pattern here consists of four characters, c
representing "the full chord". And .
representing a rest or space. In other words this rhythmic pattern is 4 steps long. And plays the chord on the first. It's repeated two times for each of the chords in the chord progression.
There are more ways we can pull notes from the chord
1.>.=.>.r. 2
Here 1
represents the first (root) note of the chord. the >
says go up one note from the previous one. So in the chord of C major without inversion, 1 represents the note C, the > will step up to represent the note E. The =
means repeat the previous note again, so E again. Then > takes us up to the G. Finally r
means choose a random note from the chord. The whole rhythmic patterns has a density of 2, again, so this "riff" is repeated twice per chord in the progression.
There are no restrictions on how many steps you can have in a pattern or the density. Though a lot of steps will mean the notes play very fast.
There is also an alternative "Euclidean" short-hand which generates patterns.
3/8 1 2
The first part, 3/8, means pick the Euclidean rhythm where 3 strikes are distributed across 8 steps. The next isolated number, 1, is which type of note we are playing on this step. And the last number is, again, the density.
While describing this as a "Euclidean" algorithm, it's NOT, strictly THE Euclidean algorithm, but an approximation which distributes hits over steps. So it may not always give you the expected pattern you wanted. It's possible to fix / supplement this with an offset. So
3/8+2 1 2
gives you the calculated rhythmic pattern offset by 2.
The "Euclidean" notation is a convenient shorthand for making more exotic rhythmic patterns which have already been given a Euclidean analysis. But the canonical rhythmic pattern notation is far more flexible as you can place hits exactly where you want, and choose any note. In most cases you'll find yourself largely using these.