Published: May 24, 2026 by mewlist
MML 連載シリーズ の 7 回目です。本シリーズで扱う MML 記法は MewMMLPad(VST3 / スタンドアローン / ブラウザ版) のものです。記事内の例はすべて MewMMLPad の Web プレイヤー上で動かしながら確認できます(PMD / FMP など他環境の MML とは方言が異なる箇所があります)。
今回は フレーズに名前を付けて再利用する 仕組みを扱います。% Name(マクロ)と !X{...}(変数)です。前回 の繰り返し [...]N が「その場で連続反復」だったのに対し、マクロと変数は 離れた場所でも同じフレーズを呼び出せる のが違いです。
マクロ % Name の基本
マクロ(エイリアス)は、MML の断片に名前を付けて、あとから名前で呼び出す 仕組みです。% 名前 内容 で定義し、%名前 で展開します。
% Riff c d e g
A T120 o4 L8 Q4
A %Riff %Riff
% Riff c d e g で「c d e g」というフレーズに Riff という名前を付け、A チャンネルの %Riff %Riff で 2 回呼び出しています。展開すると次のようになります。
%Riff %Riff → c d e g c d e g
定義行はチャンネル行より前に、% で始まる行として書きます。名前は英数字で付けられます。同じフレーズを何度も打ち込む代わりに、定義をひとつ直せば呼び出し先がすべて変わるのが利点です。
なお、マクロ展開中の演奏位置カーソルは %Riff を呼び出した位置に固定されます(展開後の音を 1 音ずつ追いかける表示にはなりません)。
任意の MML をマクロにできる
マクロの中身は音符だけではありません。音量やオクターブなどのコマンドを含めて、任意の MML をまとめられます。
% Lead V100 o5 c d e f
A T120 L8 Q4
A %Lead %Lead
% Lead V100 o5 c d e f は、音量 V100・オクターブ o5 の設定ごとフレーズに名前を付けたものです。%Lead を呼ぶたびに設定とフレーズがまとめて展開されます。
%Lead %Lead → V100 o5 c d e f V100 o5 c d e f
リフレインや決まり文句のフレーズ、音色の設定セットなどを 1 か所にまとめておけます。
変数 !X{...}
変数はマクロに似ていますが、1 文字の名前で、チャンネルごとに独立 している点が違います。!X{値} で定義し、!X で展開します。
A T120 o4 L8 Q4
A !X{c e g} !X !X
!X{c e g} で変数 X に「c e g」を代入し、続く !X !X で 2 回展開します。インライン(同じ行)で定義してそのまま使えます。
!X{c e g} !X !X → c e g c e g
変数は チャンネルごとに別物 です。A で !X{c e g}、B で !X{e g b} と定義すれば、同じ !X という記述でもチャンネルごとに違う中身が展開されます。
組み合わせて短い演奏にしてみる
マクロの中に変数を仕込んでおくと、同じマクロを、チャンネルごとに中身を変えて使い回せます。これが 2 つを組み合わせる一番の旨味です。マクロ・変数に、これまでの繰り返しも組み合わせた実演を見てみます。
% Arp Q2 L16 !X8. ^ !Xr > !Xr < !X8. ^ !Xr > !X < !X8.
A T120 o4 V80
A !X{e} [%Arp]4
B o3 V120
B !X{a} %Arp !X{g} %Arp !X{f} %Arp !X{d} %Arp
マクロ Arp は、変数 !X の音を軸にした 1 小節ぶんのリズムパターンです。Q2(短めのゲート)でスタッカート気味にし、付点 8 分・16 分・休符・オクターブの上下(> <)・スラー(^)を組み合わせています。可変なのは !X の部分だけで、リズムの形は固定です。!X{e} を入れると次のように展開されます。
%Arp (X=e) → Q2 L16 e8. ^ e r > e r < e8. ^ e r > e < e8.
Aチャンネルは!X{e} [%Arp]4。eを軸にした同じパターンを 4 小節繰り返します。Bチャンネルは!Xをa→g→f→dと 1 小節ごとに差し替えながら%Arpを 4 回。上声部が同じ音型で回り続ける下を、ベースが下降していきます。
パターンの形はマクロ 1 行ぶんだけ。あとは変数を差し替えるだけで、固定の上声部と動くベースが同じ定義から組み上がります。
% Name は どのチャンネルからでも呼べる共通フレーズ、!X は チャンネルごとに中身を差し替えられるプレースホルダ です。マクロ本体に変数を仕込めば、1 つのパターン定義から各チャンネルで少しずつ違う演奏を展開できます。打ち込みの重複を減らし、あとからまとめて直せるのが利点です。
次回
次の #8「パンとプログラムチェンジ」 では、P / PL / PR / PC(定位)と @n / @bank:slot(音色切替)を扱います。
連載全体の目次は シリーズ一覧 からどうぞ。