Published: May 23, 2026 by mewlist
MML 連載シリーズ の 5 回目です。本シリーズで扱う MML 記法は MewMMLPad(VST3 / スタンドアローン / ブラウザ版) のものです。記事内の例はすべて MewMMLPad の Web プレイヤー上で動かしながら確認できます(PMD / FMP など他環境の MML とは方言が異なる箇所があります)。
今回は 音程を連続的に動かす 表現を扱います。_(ピッチベンド)と ~(グリッサンド)、それぞれの挙動を制御する $BendRange / $PitchBendOrigin / $Glissando を整理します。
なお、各サンプル MML の下にピッチ推移のグラフを併記しています。横軸が時間、縦軸が音程(そのグラフの最低音〜最高音をプロット高さに正規化)です。
ピッチベンド _ の基本構文
ピッチベンドは 2 つの音を滑らかにつないで音程を連続的に動かす記法です。書式は次のとおり。
起点音(遅延) _ (遷移時間) 目標音(全体長)
カッコ内は省略可能で、省略時には次のデフォルトが適用されます。
| 省略箇所 | デフォルト |
|---|---|
| 遅延 | ゼロ(即ベンド開始) |
| 遷移時間 | 全体長 − 遅延 の残り時間でベンド |
| 全体長 | L の長さ |
全体長を L にまかせる
最小の書き方は a_b。
A T120 o4 L4 Q8
A c_d r8 d_c
c_d は L=4 分音符の時間で c から d まで全音ベンド、d_c は逆方向です。$BendRange の既定は 2 半音なので、この範囲に収まるなら設定なしでそのまま鳴らせます。ベンドの動きを最後まで聞かせたいので、サンプルでは Q8(100% ゲート)にしています。
遷移時間を絞ると、ベンドにかける時間を短くできます。
A T120 o4 L4 Q8
A c_16d r8 d_16c
c_16d は 1/16 の時間で d に到達し、残りは d を保持。アタック直後にしゃくり上げる動きになります。
全体長を明示する
目標音のあとに数字を書くと、その音の長さが「全体長」になります。
A T120 o4 L4 Q8
A c_d4 r8 c_d2
両方とも c から d へベンドしますが、全体長が 4 分音符と 2 分音符で異なります。
遅延と遷移時間を組み合わせると、より細かい制御ができます。
A T120 o4 L4 Q8
A c8_d4 r8 c8_16d4
c8_d4:8 分音符ぶん c を保持 → 残り 8 分音符の時間で d に到達c8_16d4:8 分音符ぶん c を保持 → 1/16 で d へ移動 → 残りは d を保持
タメてから一気に上げる、といった表現に使えます。
$BendRange でベンド幅を広げる
$BendRange は ピッチベンドの最大半音差 を決める設定です。デフォルトは 2 半音(長 2 度)。
A T120 o4 L4 Q8
A c_d r8 c_e r8 c_g
デフォルトでも c_d(2 半音)は c→d まで普通にベンドします。一方 c_e(4 半音)や c_g(7 半音)はベンド幅の上限に引っかかります。既定の Target モードでは 目標音でノートオンする ため、目標音は固定されたまま、起点側が $BendRange ぶん(=2 半音)手前まで引き上げられて そこから目標音に向かう動きになります。グラフの黄色破線は $BendRange が広ければ通る本来の軌道、シアン実線が実際に鳴る軌道です。
A T120 o4 L4 Q8 $BendRange=12
A c_d r8 c_e r8 c_g
$BendRange=12 に広げると最大 1 オクターブまでベンド可能になり、c_g も狙いどおり 7 半音上昇します。
外部音源を鳴らすときは、音源側のピッチベンドレンジ設定と $BendRange を一致させる 必要があります。たとえば音源側が 12 半音に設定されていれば $BendRange=12、24 半音設定なら $BendRange=24 というように、MML と音源で値を揃えます。ずれていると同じ MML でも鳴る音程が変わってしまいます。内蔵シンセは MML 側の $BendRange に自動で追従するので、内蔵だけで完結するなら一致を気にする必要はありません。
$BendRange の値は 異音程タイ($TieMode=Bend)にも共通で適用されます。
$PitchBendOrigin — どちらの音でノートオンするか
ピッチベンドには「起点音と目標音、どちらでノートオンするか」という選択があります。$PitchBendOrigin で切り替えます。
| 設定 | 挙動 |
|---|---|
$PitchBendOrigin=Default(=Target、既定) |
目標音でノートオン、起点音は中間ベンドで提示 |
$PitchBendOrigin=Source |
起点音でノートオン、目標音方向にベンド |
A T120 o4 L4 Q8 $BendRange=12
A c_g r8 c_g
既定(Target)では、g でノートオンした上で初期ベンド値を c に下げた状態から開始し、目標音 g に向かって上昇します。ピッチベンドが「目標音にたどり着く」イメージです。
A T120 o4 L4 Q8 $BendRange=12 $PitchBendOrigin=Source
A c_g r8 c_g
Source モードでは c でノートオンし、ベンドで g に持ち上げる挙動になります。アタックが起点側に出るので、しゃくりの始まりをはっきり聞かせたい場面で使い分けます。ピッチ推移そのものは Target モードと同じですが、ノートオンが発生する音程が違います(グラフの ● 印の位置)。
グリッサンド ~ の基本
~ は 半音単位の階段で 2 音をつなぐ 表現です。ピッチベンドが連続的な滑らかさなのに対し、グリッサンドはクロマティックな階段になります。
A T120 o4 L1 Q4
A c~>c
c から 1 オクターブ上の c まで、半音ずつ階段状に音が上がります。~ の 起点音そのものは独立して発音されません(目標音の入り口として扱われます)。
ステップサイズはデフォルトで 32 分音符。荒くしたい場合は数字を入れます。
A T120 o4 L1 Q4
A c~16>c
c~16>c は ステップサイズを 1/16 にした版。1 音ぶんの長さが広がるため、より段差のはっきりした上昇になります。
$Glissando でデフォルト値を変える
毎回ステップを書くのが面倒な場合は $Glissando でデフォルトを変えられます。
A T120 o4 L1 Q4 $Glissando=8
A c~>c
$Glissando=8 以降の ~ は 1/8 ステップ が既定になります。ただし c~>c(起点 c は無音なので c# 〜 c’ の 12 段)を L=1(全音符)の中で再生するには、ステップ幅 1/8 では時間が足りません。MewMMLPad は 時間内に目標音 c' まで到達するよう、グリッサンドの途中(= f の段)から開始 します。グラフ下半分の空き(c 〜 f より下の範囲)が、省略された 4 段ぶん(c#〜e)に相当します。
組み合わせて短い演奏にしてみる
ピッチベンドとグリッサンドを 1 フレーズに混ぜてみます。
A T100 o4 L8 Q8 $BendRange=12
A r2 c_g4 r4 g~>c2
B o3 L4 V70
B c1 c1
A チャンネルは、休符のあと c から g へ 4 分音符かけてベンド、休符をはさんでから g からオクターブ上の c までグリッサンド。B チャンネルは根音 c のロングトーンで支える構成です(グラフは A チャンネルのピッチ推移のみ示しています)。
_ と ~ は 音程の動かし方の質が異なる 表現です。連続的に滑らかに動かすなら _、半音階の階段状に動かすなら ~、という使い分けが基本になります。
次回
次の #6「タプレットと繰り返し」 では、{...}N(連符)と [...]N(繰り返し・ループ脱出)の話を扱います。
連載全体の目次は シリーズ一覧 からどうぞ。