;(セミコロン):トラック区切りcdefg;
上記では、ドレミファソを演奏するだけのトラックを定義しています。
セミコロンは、次の用途で使用します。
この場合のセミコロンは、複数トラックを定義したい場合の区切りです。
トラック終端にセミコロンを設けると、それまでのMML記述が1つのトラックとして認識され、以降を次のトラックの先頭として扱います。
(トラックとトラックが区切られます)
最終トラックには、セミコロンはあってもなくても構いませんが、トラックがいつでも追加できるよう準備する観点から、全てのトラックの終端にはセミコロンを記述しておくことをお勧めします。
最終トラックを記述後、セミコロン無しでテキストが終わった場合は、テキスト終端がトラック終端として扱われます。
最終トラック記述後、セミコロン有りでテキストが終わった場合、テキスト終端にMMLイベントの無いトラックが存在する扱いになりますが、MMLイベントの無いトラックは定義されずに破棄されます。
セミコロンを連続記述するなどして、空のトラックを定義しても、空のトラックは全て破棄されます。
この場合のセミコロンは、マクロ定義の終端記述です。
マクロ定義は、トラック先頭(MMLコマンドがまだ記述され始めていないトラック)で行われます。
例えば、次のような記述です。
$...=.....;