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 ``{ }''. The complete
format and use is detailed in the Solo and Melody Tracks chapter
().
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.
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 |
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 be specified as ``* NN'' or ``*NN'' (the space between the ``*'' and the factor is optional). If the factor is present, that number of bars will be included in the song. 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.)
The most important part of a musical data line is, 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 ``/''. This simply means to repeat the last chord. 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.
MMA recognizes a wide variety of chords in standard notation.
Refer to the complete table in the appendix for details ().
To disable a voice for a beat you can use a ``z'' for a chord name. If used by itself a ``z'' will disable all but the drum tracks for the given beat. However, you can disable ``Chord'', ``Arpeggio'', ``Scale'', ``Walk'' or ``Bass'' tracks as well by appending a track specifier to the ``z''. Track specifiers are the single letters ``C'', ``A'', ``S'', ``W'', ``B'' or `D'' and ``!''. Track specifiers are only valid if you also specify a chord. The track specifiers are:
Assuming the ``C'' is the chord and ``AB'' are the track specifiers:
Assuming that you have a drum, chord and bass pattern defined:
Fm z G7zC CmzD |
would generate the following beats:
In addition, there is a super-z notation. ``z!'' forces all instruments to be silent for the given beats. ``z!'' is the same as ``zABCDW'', except that the later is not valid since it needs a prefixed chord.
The ``z'' notation is 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.
In direct conflict with the rest of the rules for input files, all chord names are case sensitive. This means that you can not use notations like ``cm''--use ``Cm'' instead.
The ``z'' and the associated track specifiers are also case sensitive. For example, the form ``Zc'' will not work!
MIDI files can include song lyrics. And some MIDI players or sequencers can display them as a file is played. Some, but not all.
I have not seen any keyboards which display lyrics. And most players I have used under Linux do not display them. Exceptions to the rule are the programs Kmid which displays and highlights lyrics almost in a Karaoke manner, xplaymidi and timidity which display the lyrics in a secondary panel.
With this qualifier out of the way, there really is no reason for lyrics NOT to be useful in a program like MMA. Singers do not want a melody playing while they are vocalizing (really, they are no different in this than any other instrumentalist). And, it is my understanding that some platforms8.1other than Linux support lyric display in a more useful format.
The ``Standard MIDI File'' document describes a Lyric Meta-event:
FF 05 len text Lyric. A lyric to be sung. Generally, each syllable will be a separate lyric event which begins at the event's time.8.2
Unfortunately, not all players and creators follow the specification--the most notable exception are ``.kar'' files. These files eschew the Lyric event and place their lyrics as a Text Event. There are programs strewn on the net which convert between the two formats, and this author doesn't really know if conversion is needed.
Just to be on the safe side, MMA supports both formats. The Lyric command is used to select the desired mode.
Lyric LYRIC |
selects the default Lyric Event mode.
Lyric TEXT |
selects the Text Event mode. Use of this option also prints a warning message.
One further option controlled by the Lyric command is to determine the method used to split words. As mentioned earlier (and in various MIDI documents), the lyrics should be split into syllables. MMA does this by taking each word (ie. anything with whitespace surrounding it) and setting a MIDI event for that. However, depending on your player, you might want only one event per bar. You might even want to put the lyrics for several bars into one event. In this case simply set the ``bar at a time'' flag:
Lyric BAR |
You can return to normal (syllable/word) mode at anytime with:
Lyric NORMAL |
Adding a lyric to your song is a simple matter. Just place the text for the lyric for a bar in-between a pair of []s somewhere in a data bar.8.3For example:
z [ Pardon ] |
The lyrics for each bar are separated into individual events, one for each word.
Note the difference in this example:
Lyric Bar |
MMA recognizes two special characters in a Lyric:
When a multi-verse section is created using a Repeat or Goto, different lyrics can be specified for different passes. In this case you simply specify two more more sets of lyrics:
A / Am / [First verse] [Second Verse] |
However, for this work properly you must set the internal counter LyricVerse for any verse other than 1. This counter is set with the command:
LyricVerse <Value> | INC | DEC |
This means that you can directly set the value (the default value is 1) with a command like:
LyricVerse 2 |
And you can increment or decrement the value with the INC and DEC options. This is handy at to use in repeat sections.
You cannot set the value to a value less than 1.
There are a couple of special cases:
|
Example 8.1 8.4 shows a complete song with lyrics.