要はMコマンドなのですが、細かい仕様は「みんな知っている」(ただし知っている人に限る)みたいな状態。「他のMMLプレイヤーと同じ」という話もあるけれど、違うところもあるぞ。
Mコマンドは4つ(または5つ※)の数値パラメータをとる。既に設定してあって1つだけ変えたい場合はMW, MC, ML, MDコマンドが使える。
第1パラメータ (MW) MMLリファレンスではディレイ (delay) とされているが W なのは wait かな?音程が変化しない時間をクロック数で指定する。
クロック数は C コマンドや % コマンドで使っているのと同じ。C96で4分音符の長さを指定したければ 96/4=24。
第2パラメータ (MC) クロック単位とされている。意図的に変化をカクカクにしたいとかでなければ常に 1 で良いと思う。
第3パラメータ (ML) 変化量なんだけど、各音源の音程に関わる内部パラメータに直接加算されるので、指定すべき値が音源ごとに違う。FM音源なら50前後で半音、SSGなら160前後で半音。音の高い方と低い方で倍くらい差があるので、最終的には聞いて調整するしかないと思う。最初に音程を下げる場合は負の数。(LFO全体での変化量は第4パラメータも関係する。)
この辺の音程変化は D コマンドと共通。SSGの内部の音程パラメータは(FMと逆で)大きくすると低い音になるけれど、MUCOM88がSSGのときは正負を逆にしてくれているので、常に「大きいほど高くなる」と考えて良い。
第4パラメータ (MD) 変化の回数なんだけど、MUCOM88での動作を正しく説明しているものが見つからなかった。普通は偶数かな。(そうでもなかった)
耳で聞いて確認するためにこんなMMLを書いてみる (SSG):
#title Test of M-command
#composer Est Suzumenomiya
#author Est Suzumenomiya
#date 2025/1/27
D t198 C60 @0v15l1o5 M240,60,160,9 [f&]90
「常に1」と書いた第2パラメータを大きくしたり、「普通は偶数」と書いた第4パラメータを奇数にしたりは意図的です。
テンポ t198 だと1クロックがだいたい 1/60 なので、C60で全音符がだいたい1秒(厳密には♩=240にはならずに239ちょいくらい)。これを鳴らすと、5秒くらい変化がなくて、その後、1秒ごとに160(SSGなので半音くらい)ずつ変化するのが聞こえると思う。
図示するとこんな感じ:

第1パラメータは240クロック≒4秒なのだけれど、変化開始の最初(第2パラメータの60≒1秒)も元の音程を維持するので変化が始まるまで計約5秒。
その後、約1秒ごとに第3パラメータの160(約半音)ずつ音程が高くなるのを繰り返すのだけれど、これが第4パラメータの回数ではなくMUCOM88の場合はその半分(端数切捨て)。その数をカウンタの初期値にして、後は「カウントダウンして0になったら元の第4パラメータに初期化。そのときに第3パラメータを符号反転」……を繰り返すという動作です。なので、別のMMLプレイヤーには第4パラメータの4倍で1周期のものがあるようですが、MUCOM88の場合は第4パラメータの2倍(に第2パラメータを掛けたクロック数)で1周期です。
お題「C96の曲で、FM音源のパートで、2分音符の長さのディレイの後、8分音符の長さが1周期の速さで上下に半音くらいずつ変化させたい」

決定例
第2パラメータは1(決め打ち)。
C96なので全音符が96クロック。
第1パラメータのディレイは96/2=48。
1周期が8分音符なので96/8=12。第4パラメータはその半分で6。
6の変化なので±3がそれぞれ半音になるようにする。FM音源の半音は(まんなかのf~f+の音程だと)49なので第3パラメータは49÷3≒16あたり。
よって、M48,1,16,6……としてから、後は聞いて調整。
以上。
※第5パラメータ 効果音モードでLFOをかけるオペレータを指定するものだったのだと思う。古代先生のMMLでは「15」と書かれていることがあって、たぶん2進法だと1111(各ビットがオペレータに対応)で「全オペレータ」という意味じゃないかと。実際はコンパイラが無視して捨てる(MUBファイルには入ってない)ので書いても書かなくても同じですけどね。