In music, a chord is simply defined as two more notes played simultaneously. Now, this doesn't mean that you can play just any two or three notes and get a chord which sounds nice--but whatever you do get will be a chord of some type. And, to further confuse the unwary, different arrangements of the same notes sound better (or worse) in different musical situations.
As a simple example, consider a C major chord. Built on the first, third and fifth notes of a C major scale it can be manipulated into a variety of sounds:
These are all C major chords ...but they all have a different sound or color. The different forms a chord can take are called ``voicings''. Again, this manual is not intended to be a primer on musical theory--that's a subject way beyond our abilities, and (again) we really recommend your favorite music teacher and the study of basic music theory if you want to understand how and why MMA creates its tracks.
The different options in this chapter effect not only the way chords are constructed, but also the way bass lines and other tracks are formed.
There are generally two ways in MMA to take care of voicings.
The commands Limit and DupRoot may be used independently for both variants.
The easiest way to deal with chord voicings is to use MMA's VoicingMode command.
When choosing the inversion of a chord to play an accompanist will take into consideration the style of the piece and the chord sequences. In a general sense, this is referred to as ``voicing''.
A large number of the library files have been written to take advantage of the following voicing commands. However, not all styles of music take well to the concept. And, don't forget about the other commands since they are useful in manipulating bass lines, as well as other chord tracks (eg. sustained strings).
MMA has a variety of sophisticated, intelligent algorithms10.1to deal with voicing.
As a general rule you should not use the Invert and Compress commands in conjunction with the VoicingMode command. If you do, you may create beautiful sounds. But, the results are more likely to be less-than-pleasing. Use of voicing and other combinations will display various warning messages.
The main command to enable voicings is:
VoicingMode <option> |
As mentioned above, this command only effects Chord tracks. Also note that this effects all bars in the sequence ...you cannot have different voicings for different bars in the sequence (doing so really makes no sense).
The following options are available:
The idea behind this algorithm is to keep voicings in a sequence close together. A pianist leaves his or her fingers where they are, if they still fit the next chord. Then, the notes closest to the fingers are selected for the next chord. This way characteristic notes are emphasized.
The following commands enhance the voicing options:
To get wider or closer voicings, you may define a range for the voicings. This can be adjusted with the VoicingRange command:
VoicingRange 12 |
In most cases the default value of 12 should work just fine. But, you may want to fine tune ...it's all up to you. This command only effects chords created with VoicingMode set to Optimal.
Just minimizing the Euclidean distance between chords doesn't do the trick as there could be runaway progressions that let the voicings drift up or down infinitely.
When a chord is ``voiced'' or moved to a new position, a ``center point'' must be used as a base. By default, the fourth degree of the scale corresponding to the chord is a reasonable choice. However, you can change this with:
VoicingCenter <value> |
The value in this command can be any number in the range 0 to 12. Try different values. The color of your whole song might change.
Note that the value is the note in the scale, not a chord-note position.
This command only effects chords created with VoicingMode set to Optimal.
To intensify a chord progression you may want to have ascending or descending movement of voicings.
This option sets the direction (up or down) a chord moves between bars. It can be set to move in a single direction or in a random manner.
In the first form:
VoicingMove <BarCount> <direction> |
the direction of the movement is set to either -1, 0 or 1 for the specified number of bars. These values force the chord to move down (-1), up (1) or not at all (0). If you do this, be careful that you don't force the chord too high or low on the scale. Use of this command in a Repeat section can cause unexpected results. For this reason we suggest that you include an Seq command at the beginning of repeated sections of your songs.
Alternately:
VoicingMove Random <percentage> |
will cause the chord to move up or down in the specified (random) percentage of the bars. For example:
VoicingMove Random 20 |
would cause a movement (randomly up or down) in 20% of the bars. As noted earlier, using explicit movement instructions can move the chord into an undesirable range or even ``off the keyboard''; however, the algorithm used in RANDOM has a sanity check to ensure that the chord center position remains, approximately, in a two octave range.
Use of the Random form is probably more useful in a library file. Specifying a barcount and direction is suitable to emphasize a section of a song.
When MMA grabs the notes for a chord, the notes are spread out from the root position. This means that if you specify a ``C13'' you will have an ``A'' nearly 2 octaves above the root note as part of the chord. Depending on your instrumentation, pattern, and the chord structure of your piece, notes outside of the ``normal'' single octave range for a chord may sound strange.
Chord Compress 1 |
Forces MMA to put all chord notes in a single octave range.
The effects vary from track to track:
Drum and Walking: No effect.
Chord, Arpeggio and Bass: High notes in the chord are reduced by one octave (this means that the complete range of a chord will be limited to one octave).
Scale: Scale tracks, by default, create three octave scales. The compress value will modify this to the number of octaves specified. For example:
Scale Compress 1
will force the scales to one octave. A value of 4 would create 4 octave scales, etc.
Notes: Compress takes any value between 1 and 5 as arguments (however, some values will have no effect as detailed above). You can specify a different Compress for each bar in a sequence. Repeated values can be represented with a ``/'':
Chord Compress 1 / 0 / |
To restore to its default (off) setting, use a ``0'' as the argument.
For a similar command, with different results, see the Limit command
().
To add a bit of fullness to chords, it is quite common of keyboard players to duplicate the root tone of a chord into a lower (or higher) octave. This is accomplished in MMA with the command:
DupRoot -1 1 -1 1 |
The command determines whether or not the root tone of a chord is duplicated in another octave. By default notes are not added. A value of -1 will add a note one octave lower than the root note, -2 will add the tone 2 octaves lower, etc. Similarly, the value of 1 will add a note one octave higher than the root tone, etc.
Only the values -9 to 9 are permitted.
Different values can be used in each bar of the sequence.
The option is reset to 0 after all Sequence or SeqClear commands.
The DupRoot command is only valid in Chord tracks. A similar
command is Duplicate ().
By default MMA uses chords in the root position. By example, the notes of a C major chord are C, E and G. Chords can be inverted (something musicians do all the time). Sticking with our C major chord, the first inversion shifts the root note up an octave and the chord becomes E, G and C. The second inversion is G, C and E.
MMA extends the concept of inversion a bit by permitting the shift to be to the left or right, and the number of shifts is not limited. So, you could shift a chord up several octaves by using large invert values.10.2
Inversions apply to each bar of a sequence. So, the following is a good example:
SeqSize 4 |
Here we set the sequence pattern size to 4 bars and set the pattern for each bar in the Chord1 track to ``STR1''. Without the next line, this would result it a rather boring, repeating pattern. But, the Invert command forces the chord to be in the root position for the first bar, the first inversion for the second, etc.
You can use a negative Invert value:
Chord1 Invert -1 |
In this case the C major chord becomes G, C and E.
Note that using fewer Invert arguments than the current sequence size is permitted. MMA simply expands the number of arguments to the current sequence size. You may use a ``/'' for a repeated value.
A Sequence or ClearSeq command resets Invert to 0.
Invert can be used in any track context, however, it does not effect Drum or Walk tracks.
Let's see what happens with a Bass track that's been inverted. First off the pattern and sequence definitions:
Bass define X1 0 4 0 60; 25 4 2 60; 50 4 0 60; 75 4 2 60 |
The define says to play quarter notes on each beat. On beats 1 and 3 we play the root (0 is the first note in the chord); on beats 2 and 4 we play the fifth (2 is the 2nd note in the chord and is the fifth of the scale). If you are expecting different notes to be played on the second and fourth bars you'll be (somewhat) disappointed. No matter what inversion is used the first note of the chord remains the root--only the octave of the note will be changed.
Frankly, Arpeggios sound a bit odd with inversions.
If you use a large value for Invert you can force the notes out of the normal MIDI range. In this case the lowest or highest possible MIDI note value will be used.
If you use ``jazz'' chords in your piece, some people might not like the results. To some folks, chords like 11th, 13th, and variations have a dissonant sound. And, sometimes they are in a chart, but don't really make sense. The Limit command can be used to set the number of notes of a chord used.
For example:
Chord Limit 4 |
will limit any chords used in the Chord track to the first 4 notes
of a chord. So, if you have a C11 chord which is C, E, G, B, D, and F, the
chord will be truncated to C, E, G and B
.
This command only applies to Bass, Chord and Arpeggio tracks. It can be set for other tracks, but the setting will have no effect.
Notes: Limit takes any value between 0 and 8 as an argument. The ``0'' argument will disable the command. This command applies to all chords in the sequence--only one value can be given in the command.
To restore to its default (off) setting, use a ``0'' as the argument.
For a similar command, with different results, see the Compress command
().