Subsections


Swing

In jazz and swing music there is a convention to apply special timing to eighth notes. Normally, the first of a pair of eights is lengthened and the second is shortened. In the sheet music this can is sometimes notated as sequences of a dotted eighth followed by a sixteenth. But, if you were to foolish enough to play the song with this timing you'd get a funny look from a jazz musician who will tell you to ``swing'' the notes.

The easiest way to think about swing eighths is to mentally convert them to a triplet consisting of a quarter note and and eighth.

Lost Image

In the above music the first shows ``straight eights'', the second ``dotted eight, sixteenths'', and the third a rough indication of how the first line would be played in ``swing''. It all depends on the style of music ... if we are playing a classical piece the first line would have eight notes of the same length, and the second line would have a sixteenth note one third the length of the dotted eights. In contemporary music it might be that way ... or either or both could be played as the third line.

MMA can handle this musical style in a number of ways, the control is though the SWINGMODE command and options.

In default mode MMA assumes that you don't want your song to swing.

To enable automatic conversions, simply set SWINGMODE to ``on'':

SwingMode On

This directive accepts the value ``On'' and ``Off'' or ``1'' and ``0''.

With SWINGMODE enabled MMA takes some extra steps when creating patterns and processing of SOLO and MELODY parts.

Important: when defining patterns and sequences remember that the adjustment is made when the pattern is compiled. With a DEFINE command the arguments are compiled (and swing will be applied). But a SEQUENCE command with an already defined pattern will use the existing pattern values (the swing adjustment may or may not have been done at define time). Finally, if you have a dynamic define in the sequence the adjustment will take place if needed.

Important (again): SWINGMODE is saved and restored when switching GROOVES. This means that the SWINGMODE setting you set in a song file is only valid until the next time you issue a GROOVE command. See the summary below for more details.

Skew

SWINGMODE has an additional option, SKEW. This factor is used to create the ``81'' and ``82'' note lengths (see here). By default the value ``66'' is used. This simply means that the note length ``81'' is assigned 66% of the value of an eight note, and ``82'' is assigned 34%.

You can change this setting at any point in your song or style files. It will take effect immediately on all future patterns and solo lines.

The setting:

SwingMode Skew=60

will set a 60/40 setting.

If you want to experiment, find a GROOVE with note lengths of ``81'' and ``82'' (``swing'' is as good a choice as any). Now, put a SWINGMODE SKEW=VALUE directive at the top of your song file (before selecting any GROOVEs). Compile and play the song with different values to hear the effects.

If you want to play with different effects you could do something like this:

SwingMode On Skew=40
... Set CHORD pattern/groove
SwingMode Skew=30
... Set Drum-1 pattern/groove
SwingMode Skew=whatever
... Set Drum-2

This will give different rates for different tracks. I'll probably not enjoy your results, but I play polkas on the accordion for fun.

Accent

It's natural for musicians to emphasize swing notes by making the first (the longer one) a bit louder than the second. By default MMA uses the internal/default volumes for both notes. However, you can change this with the ACCENT option. The option takes a pair of values joined by a single comma. The first value sets the percentage change for the ``on-the-beat'' notes; the second set the adjustment for the ``off-the-beat'' notes. For example:

Swingmode On Accent=110,80

will apply changes of 110% and 80% to the volumes. Use of this option will create more natural sounding tracks.

Delay

By default, the logic for setting the start positions of each note generated by SWINGMODE is that the first note of the pair doesn't move and the second is set at the duration of a ``81'' note from the first (remember, ``81'' is set by the SKEW value).

However, you can move either or both notes forward to backwards with the DELAY option. This option takes 2 arguments (a comma pair) with the first setting a delay for the first note and the second a delay for the second. The delays can be negative, in which case the note would be sounded early. The values represent MIDI ticks and must be in the range -20 ... +20.

Example:

Swingmode On Delay=5,0

would push the first note of each pair just past the beat.

Notes

So far in this section we have assumed that all swing notes are eight note pairs. But, you can also set the function to work over sixteenth notes as well:

Swingmode On Notes=16

The only permitted values for NOTES are ``8'' (the default) and ``16''. This is, probably, only useful in very slow tempo settings.

Summary

SWINGMODE is a Global setting which functions when patterns and solo note sequences are defined or created. This can be confusing ... you can't take an existing GROOVE and just do a SWINGMODE after calling it up ... the command will have no effect. Instead, you'll have modify the actual library code. Or write your own.

The complete SWINGMODE setting is saved in the current GROOVE and can be accessed via the $_SWINGMODE built-in macro.

The easy (and ugly and unintuitive) way to handle swing is to hard-code the value right into your patterns. For example, you could set a swing chord pattern with:

Chord Define Swing8 1 3+3 80; 1.66 3 80; 2 3+3 80; 2.66 3 80 ...

We really don't recommend this for the simple reason that the swing rate is frozen as quarter/eighth triplets.

If you refer to the table of note lengths (here) you will find the cryptic values of ``81'' and ``82''. These notes are adjusted depending on the SWING SKEW value. So:

Chord Define Swing8 1 81 80; 1+81 82 80; 2 81 80; 2+81 82 80 ...

is a bit better. In this case we have set a chord on beat 1 as the first of an eighth note, and a chord on the off-beat as the second. Note how we specify the off-beats as ``1+81'', etc.

In this example the feel of the swing will vary with the SWING SKEW setting.

But, aren't computers supposed to make life simple? Well, here is our recommended method:

SwingMode On
Chord Define Swing8 1 8 80; 1.5 8 80; 2 8 80; 2.5 8 80 ...

Now, MMA will convert the values for you. Magic, well ... almost.

There are times when you will need to be more explicit, especially in SOLO and MELODY tracks:

Bob van der Poel 2017-03-25