コンテンツにスキップ

音符・休符・オクターブ・音長

音符と休符

c d e f g a b     音符 (ドレミファソラシ)
c+  f+            半音上げ (c+ = C#、f+ = F#)。# でも書ける (c# f#)
r                 休符
  • 大文字と小文字は区別されません。
  • c+ の + は # でも書けます。
  • 音符には、~<N> で 音程テーブルの列 (variant) を選べます (c~1)。省略した c は ~0 と全く同じです。書かなくて構いません。

~ (variant) の効き方

各半音には、微妙に高さの違う 3 つの値 (~0 ~1 ~2) があります。どれを選んでも、半音そのものは変わらず、数セント〜数十セントだけ音程が動きます。効くかどうかは、音源で決まります。

音源 ~0 (省略時) ~1 ~2
FM (OPNA / OPM) 平均律 平均律 平均律 (値は無視される)
OPLL (FM・リズム) 約 -28 セント 約 -10 セント 約 +6 セント (平均律にもっとも近い)
PSG / SSG 約 -17 セント 約 -1 セント (平均律にもっとも近い) 約 +16 セント
  • FM (OPNA / OPM) だけの曲では、~ はなくて構いません。
  • OPLL や PSG で、省略 (~0) のままにすると、音が少し低くなります。実機のデータを再現したい曲では、この「少し低い」音程が、そのまま使われます。
  • OPLL では ~2、PSG では ~1 が、平均律にもっとも近い音程です。

曲全体の既定の variant ; default_variant=N

全部の音符に ~2 を書くのは大変なので、曲のヘッダに ; default_variant=N (N は 0〜2) と書くと、~ を書いていない音符が、自動的に ~N になります。

; default_variant=2
CH4: @1 v12 o3 L4 c d e f~0 g

上の例の c d e g は ~2 になり、明示した f~0 は ~0 のままです。

  • 明示した ~N は、常に優先されます。
  • リズムのチャンネル (CH9〜CH11、または role= でリズムを指定したチャンネル) は、ドラムの音色が変わってしまうので、対象外です。
  • FM (OPNA / OPM) では ~ が無視されるので、音は変わりません。
  • OPLL を FM と重ねるときは 2、PSG を重ねるときは 1 が、平均律にもっとも近い値です。OPLL と PSG を両方使う曲では、どちらかを既定にして、もう一方のチャンネルに ~1 (または ~2) を明示してください。
  • ヘッダは、ファイルのどこに書いても有効です。範囲外の値 (3 以上、負の数、数字以外) は無視されます。
  • RetroFMEditor独自方言の MML だけが対象です。MXDRV 方言には ~ がありません。

音符の後ろに音長は書けません

MDX のような c4 d8. という書き方はできません。音長は、前に書いた L または l() が、後続の音符と休符すべてに効きます。

e と d の直後に数字を続けない

e3 は音符 E ではなく エンベロープ 3 (E3)、d12 は音符 D ではなく デチューン 12 (D12) として読まれます。音符の e d に variant を付けるときは、e~1 d~0 のように ~ を使ってください。

オクターブ

コマンド 意味
o<N> オクターブを N に設定
o> オクターブを 1 つ上げる
o< オクターブを 1 つ下げる

初期値は o7 です。

> と < だけでは効きません

MDX や PMD のような単独の > < は、読み飛ばされます。必ず o> o< と書いてください。

音長

コマンド 意味
L<分母> 全音符 = 192 tick を分母で割った長さ。L4 = 48、L8 = 24、L16 = 12
L<分母>. 付点。ドットは複数書けます (L8. = 36、L8.. = 42)
l(<n>) tick 数を直接指定 (例: l(23))

どちらも、次に別の指定をするまで、あとに続く音符と休符すべてに効きます。

L8 c d e f      8 分音符 4 つ
L4. c           付点 4 分音符
l(40) c         40 tick の音符

L は大文字だけ、l は括弧つきだけ

小文字の l4 は音長として読まれません。分母で指定するときは大文字の L4、tick で指定するときは l(48) と書いてください。

L コマンドは、ループの [L8] ([LOOP 8] の短縮形) とは別のものです。角括弧がないものが音長です。

tick と時間

tick の長さはテンポで決まります。何も指定しない曲では、1 秒が 60 tick です (ループ・テンポ)。したがって L4 (48 tick) は 0.8 秒です。[TB] や [BPM] でテンポを変えると、同じ l(n) でも実際の時間が変わります。

ゲート (音の切れ方)

音符の長さと、実際に鳴っている長さは、ロールによって異なります。

ロール 鳴っている長さ
PSG_A 音符の 1/6 (残りは無音)
PSG_B 音符の 3/4
PSG_C 音符の全長
リズム 音符の 7/8
FM (FM_0〜FM_5、OPM_0〜OPM_7) ゲートファクタ [F2]〜[F9] で決まる

FM のゲートファクタは、[F2] が 0 で、[F9] が 7 です。

無音の長さ = ファクタ × 音符の tick / 8
鳴っている長さ = 音符の tick - 無音の長さ

ファクタが 0 ([F2]) のとき、無音の長さはなく、音符の全長が鳴ります。

  • ; full_gate_channels=<ch,...> を書いたチャンネルは、ロールに関係なく、常に音符の全長が鳴ります。
  • スラー (&) の途中の音符と、[EV] でエンベロープを割り当てた音符も、常に全長が鳴ります。

トランスポーズ

コマンド 意味
[TRANS n] チャンネルの移調量を設定します