Tutorial
Chord Language
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.
Alternative Scales and Modes. We can start GoldenPond in one of four scales : Major, (Natural Minor), Harmonic Minor and Melodic Minor. The chords will be adjusted to fit whichever scale we are in. We can switch between these scales during the progression using one of !M
, !m
, !hm
or !mm
. Eg 1,3,!hm,2,5
would switch to harmonic minor for the last two chords in the sequence.
Modal Interchange We can also borrow chords from other modes of the current scale, with the ! operator. We write (d!m)
to mean the chord on degree d, from mode m of the current scale. For example, if we are in major, then (2!3)
means we switch to the 3rd mode of the major scale, ie phrygian, and play the chord on the second degree of that scale. (6!5)
means the 6 chord from the 5th, mixolydian, mode. Modal chords compose with the other modifiers so we can write 7(4!4)i
to get the first inversion of the seventh chord built on the fourth degree of the fourth mode (lydian). Etc.
Note that these are the modes of the current scale we are in. So if we are in Major, these modes will be ionian, dorian, phrygian etc. If we are in Melodic Minor they will be the equivalent modes of melodic minor.
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 other modifiers : 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.
Unfortunately, so far, secondary chords don't compose with modal interchange chords. Maybe in a future version they will.
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 that in some environments you might be playing the chord progression in a repeating loop. It's most likely 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 itself.
Rhythm Language
The Rhythm Language is a simple way to extract notes from chords.
It consists of a pattern of Note Selectors and rests, followed by a space, and then a "density".
For example : 1.1. 2
is a pattern of 4 steps. On the 1 and 3 of these steps we take the first note (the root note) of the current chord. This pattern repeats twice over the chord duration. So, for a four chord progression, we repeat this pattern of 4 steps 8 times altogether. And play the root of the current chord on the 1 and 3 of the pattern.
Patterns don't have to be regular multiples of 2 or 3, of course.
We could define an arpeggio in a 7 step pattern using 1.2..3. 1
Because we don't know the exact number of notes in a chord, when writing these patterns, we can also represent arpeggios with > and <, meaning "up" and "down". A simple upward arpeggio might be >.>.>.>.
If the chord is a seventh, with four notes, this will play all of them. If it's only a triad, the last > will wrap around to the first note again. We can combine ups and downs with explicit note selections : 2.>.<...
plays the second note in the chord, then the third, then the second again.
Some other note selectors
t
: selects the top note of the chord
r
: selects a random note from the chord
=
: repeats the last note that was selected.
with patterns made of explicit numbers, >, <, =, r and t we have a rich vocabularly for defining our riffs.
We can also use the Euclidean rhythm algorithm as a short-hand for generating these patterns. We write this with just two numbers, k and n, separated by a slash. Then this is followed by a space, a note-selector, another space and the density.
For example :
3/8 < 2
means the Eucldidean rhythm of 8 steps (n=8), on which 3 (k=3) notes are played. The notes are all < which is the downward arpeggio selector. So it's a downward arpeggio in the tresillo or son clave rhythm which Euclidean k=3, n=8 corresponds to.
Because density is here set to 2, it means we play this whole 8 step pattern twice, in the period of each chord in the pattern. Adjust this density value to find the speed and rhythm that makes sense.
Sometimes our algorithm doesn't give you the spread starting exactly where you want it, so we can also offset the step within the pattern which we start from. 3/8+2 1
Each line in our music can be defined with a separate rhythm pattern like this.