Subsections


Musical Data Format

Compared to patterns, sequences, grooves and the various directives used in MMA , the actual bar by bar chord notations are surprisingly simple.

Any line in your input file which is not a directive or comment is assumed to be a bar of chord data.

A line for chord data consists of the following parts:

Formally, this becomes:

[num] Chord [Chord ...] [lyric] [solo] [* Factor]

As you can see, all that is really needed is a single chord. So, the line:

Cm

is completely valid. As is:

10 Cm Dm Em Fm * 4

The optional solo or melody data is enclosed in “{ }”s. The complete format and use is detailed in the Solo and Melody Tracks.

Optional lyrics are enclosed in ”[ ]” brackets. See the Lyrics section.


Bar Numbers

The optional leading bar number is silently discarded by MMA . It is really just a specialized comment which helps you debug your music. Note that only a numeric item is permitted here.

Get in the habit of using bar numbers. You'll thank yourself when a song seems to be missing a bar, or appears to have an extra one. Without the leading bar numbers it can be quite frustrating to match your input file to a piece of sheet music.8.1

One important use of the leading bar number is for the -b command line option detailed here.

You should note that it is perfectly acceptable to have only a bar number on a line. This is common when you are using bar repeat, for example:

1 Cm * 4
2
3
4
5 A

In the above example bars 2, 3 and 4 are comment bars.

The command line option -L , detailed here, can be used to display your line numbers at the end of a run.

Bar Repeat

Quite often music has several sequential identical bars. Instead of typing these bars over and over again, MMA has an optional multiplier which can be placed at the end of a line of music data. The multiplier or factor can is specified as “* NN” This will cause the current bar to repeated the specified number of times. For example:

Cm / Dm / * 4

produces 4 bars of output with each the first 2 beats of each bar a Cm chord and the last 2 a Dm. (The “/” is explained below.)

Chords

The most important part of a musical data line are, of course, the chords. You can specify a different chord for each beat in your music. For example:

Cm Dm Em Fm

specifies four different chords in a bar. It should be obvious by now that in a piece in 4/4 you'll end up with a “Cm” chord on beat 1, “Dm” on 2, etc.

If you have fewer chord names than beats, the bar will be filled automatically with the last chord name on the line. In other words:

Cm

and

Cm Cm Cm Cm

are equivalent (assuming 4 beats per bar). There must be one (or more) spaces between each chord.

One further shorthand is the “/” or “-”. This simply means to repeat the last chord (in the following discussion we use “/”, but it all applies to “-” as well). So:

Cm / Dm /

is the same as

Cm Cm Dm Dm

It is perfectly okay to start a line with a “/”. In this case the last chord from the previous line is used. If the first line of music data begins with a “/” you'll get an error— MMA tries to be smart, but it doesn't read minds. Having “/” at the end of the bar is a tad silly since MMA just ends up throwing these away, but it does no harm.

MMA recognizes a wide variety of chords in standard and Roman numeral notation. In addition, you can specify slash chords, inversions, barre offsets, and shift the octave up or down. Refer to the complete table in the appendix for details.


Rests (Muting)

When a track is created it can have periods of silence in it. For example, in a WALK track we probably don't want the tone to drone on for an entire bar: we may sound a tone on beats one and three and mute it on beats two and four. So far, so good.

However, what happens if we are using a track and want everything to progress, but we don't want a WALK tone on beat three? Simple, we mute beat three for the WALK track for a single beat.

To mute a track (or all tracks) for a beat (or a series of beats) you can use a special chord name, “z”. When you just use the “z” by itself it will mute all tracks except for the DRUM tracks. However, you can disable “Chord”, “Arpeggio”, “Scale”, “Walk”, “Aria”, or “Bass” tracks as well by appending a track specifier to the “z”. Track specifiers are the single letters “C”, “A”, “S”, “W”, “B”, “R”, “P” or “D” and “!”. If you do not specify a chord name immediately before the 'z' and optional track specifiers, the previous chord will be used. You cannot use a chord name with the “!” specifier. The track specifiers are:

 
D
All drum tracks,

W
All walking bass tracks,

B
All bass tracks,

C
All chord tracks,

A
All arpeggio tracks,

S
All scale tracks,

R
All aria tracks,

P
All plectrum tracks,

!
Silence.

Assuming that you have a drum, chord, and walk sequences defined the following chord/mute combinations:

Fm z G7zC CmzD zW Em / z!

will generate the following beats:

 
1 - Fm
Fm chord, walk and drum,

2 - z
Drum only,

3 - G7zC
G7 walk and drum, no chord,

4 - CmzD
Cm chord and walk, no drum.

5 - zW
Cm (from previous chord) chord and drum, no walk,

6 - Em
Em chord with chord, walk and drum,

7 - /
Em chord as per previous,

9 - z!
No chord, walk or drums.

As you can see from the above example, there is a super-z notation. “z!” which forces all instruments to be silent for the given beats. “z!” is the same as “zABCDWR”.

The “z” notation is quite often used when you have a “tacet” beat or beats. The alternate notations can be used to silence specific tracks for a beat or two, but this is used less frequently.

One problem with the notation (and remember, it is a shortcut) is that you cannot specify which drum, chord, etc. track you wish to mute. To do that you should adjust the defined sequence.


Positioning

In earlier versions of MMA all chords (and rests) were positioned on the beat, and one could only specify a limited number of chord changes per bar. Using the enhanced positioning syntax an unlimited number of chord changes per bar can be specified. But, please note the changes you hear in your song depend on the specific pattern you are using! You might specify a chord at, for example, beat 2.25, but if the pattern doesn't sound a chord at that position it's a bit silly.

As discussed above, a normal set of chord changes is entered like:

Cm / Dm

which sets a “Cm” for beats 1 and 2, and “Dm” for beats 3 to the bar end.

To modify this, you can use the “@” symbol along with an offset to indicate other changes. So, the above example could also be written as:

Cm Dm@3

Changing on the “off beat” is simple as well. Consider,

C D@3.5 F

In this case the “C” chord is in effect from the first beat until beat 3.5, a “D” chord is set for 3.5 until 4, and an “F” from 4 to the end of bar.

In parsing, when MMA finds a chord name without the “@” it assumes that the position is the next full beat after the previous chord ... which means that in the above example “F” and “F@4” are equivalent.

Case Sensitivity

In direct conflict with the rest of the rules for MMA input files, all chord names (and modifiers) are case sensitive. This means that you can not use notations like “cm”—use “Cm” instead.

For consistency, MMA considers “z” and the associated track specifiers to be part of a chord name: they are also case sensitive. For example, the forms “Z” and “zc” will not work!


Track Chords

In most cases you want to have the same chords applied to all the different tracks in your song. However, certain styles of music prove the “exception to the rule.” Certain hip-hop and rap styles use a repetitive bass line or a melody snippet which doesn't change—regardless of the underlying chord structure of the piece.

In these cases, you can create a SEQUENCE and have it play using the same notes without having the chords affect it.

A track specific chord is set just like the data described above. However, you cannot include a label, lyric, repeat, or other modifier. Assuming a defined BASS and CHORD GROOVE, a simple example would be:

// set the bass line to use C on beats 1/2 and G on 3/4
Bass Chords C / G
1 C // set the main chord to C
2 G
3 C

In the above example the track-specific chords for the BASS are applied to all the subsequent bars in the song.

To end the track-specific chords, use an empty argument or an empty { }:

Bass Chords

or

Bass Chords { }

You can set different chords in each bar of the sequence. In this case use curly brackets “{ }” around each bar. So, assuming you have a 4 bar sequence:

Bass Chords {C} {G / B7} {Dm} {C G A B}

will give you a different set of chords for each bar in the sequence.

You can easily repeat chord patterns for a subset of bars using a single “/” (in this case the curly brackets “{ }” are optional).

Chord Chords {I / III} / / {V7}

or

Chord Chords {I / III} { / } { / } {V7}

In the above example we tried to trick you a little by using ROMAN NUMERALS ... keep reading!

You can disable a track completely using the special rest notation “z”. If you have a empty setting for some bars in the sequence, using an empty set of curly brackets “{ }', that bar will use the chord set for the rest of the song.

If using this for a DRUM track, remember that to mute a drum you will need to the the “z!” rest notation.

Since harmonies, here, also depend on chords you can create interesting effects by setting a track specific chord in a SOLO or even SCALE track.

CHORDS set in this manner are saved in GROOVES, so they can be used to write interesting styles.

In most cases, you will be better off using ROMAN NUMERAL chords, details. Since the chord data is stored as unmodified text, key changes will modify the chord (which is probably what you want).

This option can also come in handy when you have a bass line set via slash chord names and the bass notes are not part of the underlying chord. For example, you might have the chords snippet “Db/Eb Eb/Db” which will generate MMA warnings. Since the “Eb” and “Db” are only needed for the bass line, something like this will work nicely:

Bass Chords Eb Db
Db Eb
Bass Chords

Don't forget to turn off the track specific chords!



Footnotes

... music.8.1
If your line numbers get out of order you can use the supplied utility mma-renum to renumber the comment lines. This utility is installed in your default path or in the root MMA directory, depending on the distribution.