ピッチベンドとグリッサンド — MML 連載 #5

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
d c c_d 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
d c c_16d d_16c

c_16d は 1/16 の時間で d に到達し、残りは d を保持。アタック直後にしゃくり上げる動きになります。

全体長を明示する

目標音のあとに数字を書くと、その音の長さが「全体長」になります。

A T120 o4 L4 Q8
A c_d4 r8 c_d2
d c c_d4(4 分音符) c_d2(2 分音符)

両方とも c から d へベンドしますが、全体長が 4 分音符と 2 分音符で異なります。

遅延と遷移時間を組み合わせると、より細かい制御ができます。

A T120 o4 L4 Q8
A c8_d4 r8 c8_16d4
d c c8_d4 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
g e d c c_d c_e(破線:本来の軌道) 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
g e d c c_d c_e 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
g c c_g(● = MIDI ノートオン位置:g)

既定(Target)では、g でノートオンした上で初期ベンド値を c に下げた状態から開始し、目標音 g に向かって上昇します。ピッチベンドが「目標音にたどり着く」イメージです。

A T120 o4 L4 Q8 $BendRange=12 $PitchBendOrigin=Source
A c_g r8 c_g
g c c_g(● = MIDI ノートオン位置:c)

Source モードでは c でノートオンし、ベンドで g に持ち上げる挙動になります。アタックが起点側に出るので、しゃくりの始まりをはっきり聞かせたい場面で使い分けます。ピッチ推移そのものは Target モードと同じですが、ノートオンが発生する音程が違います(グラフの ● 印の位置)。

グリッサンド ~ の基本

~半音単位の階段で 2 音をつなぐ 表現です。ピッチベンドが連続的な滑らかさなのに対し、グリッサンドはクロマティックな階段になります。

A T120 o4 L1 Q4
A c~>c
c' c c~>c(step: 1/32、起点 c は無音、c# から階段で c' に到達)

c から 1 オクターブ上の c まで、半音ずつ階段状に音が上がります。~起点音そのものは独立して発音されません(目標音の入り口として扱われます)。

ステップサイズはデフォルトで 32 分音符。荒くしたい場合は数字を入れます。

A T120 o4 L1 Q4
A c~16>c
c' c c~16>c(step: 1/16、起点 c は無音、c# から階段で c' に到達)

c~16>cステップサイズを 1/16 にした版。1 音ぶんの長さが広がるため、より段差のはっきりした上昇になります。

$Glissando でデフォルト値を変える

毎回ステップを書くのが面倒な場合は $Glissando でデフォルトを変えられます。

A T120 o4 L1 Q4 $Glissando=8
A c~>c
c' f c c~>c($Glissando=8、step: 1/8、f の段から開始)

$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
c' g c c_g4(ベンド) g~>c2(グリッサンド)

A チャンネルは、休符のあと c から g へ 4 分音符かけてベンド、休符をはさんでから g からオクターブ上の c までグリッサンド。B チャンネルは根音 c のロングトーンで支える構成です(グラフは A チャンネルのピッチ推移のみ示しています)。

_~音程の動かし方の質が異なる 表現です。連続的に滑らかに動かすなら _、半音階の階段状に動かすなら ~、という使い分けが基本になります。

次回

次の #6「タプレットと繰り返し」 では、{...}N(連符)と [...]N(繰り返し・ループ脱出)の話を扱います。

連載全体の目次は シリーズ一覧 からどうぞ。

Share