日本語English

MMLファイル構成仕様

1曲分のシーケンスデータを記述する.mmlファイルの全体構造と、各セクション のパラメータ仕様です。演奏コマンド自体(音符・休符・ノート記法等)は MMLコマンド仕様を参照してください。

[global] — 曲全体の初期設定

YAML形式で記載します。

[global]
  tempo: 120
  sequenceID: SampleMML
  loop: false
  volume: 100
  startOffset: 1
  reverb: false
  reverbType: normal
  reverbTime: 1.5
  reverbLevel: 50
キー範囲・書式説明
tempo数値(BPM)曲のテンポ。[conductor]側にテンポ 指定があればそちらが優先されます。
sequenceID文字列このシーケンスを一意に識別するID。 player.Play等に渡すキーになります。
looptrue / false曲末尾に達した際に先頭(または startOffset位置/ジャンプポイント)へ戻ってループ再生するか。各パートのうち最も長い 部分が曲の末尾として扱われます。
volume0〜127エンジン全体のマスターボリューム。省略時はフル 音量。
startOffset全音符個数(整数)再生開始オフセット。例えば 1なら各パートの全音符1個分の時間をスキップしてから再生開始します(ノート以外のコマンド はスキップ区間内でも内部的に処理されます)。未設定・無効値は無視されます。loop:trueで ジャンプポイント未設定の場合、ループ時の巻き戻し先もこのオフセット位置になります。
reverbtrue / falseマスターリバーブを使用するか。falseまたは 未記載ならバイパス。
reverbTypesimple / normal simple=Schroeder型(軽量)、normal=FDN型(高品質・やや高負荷)。
reverbTime0.5〜3.0秒(小数第一位まで)リバーブの残響時間。 0.5以下はバイパス、3.0を超える値は3.0に丸められます。
reverbLevel0〜127ドライ音に対するリバーブ音量。0ならドライ のみ。
各パートでreverbSendを設定していても、[global]reverbがfalseの場合はリバーブはかかりません。

[conductor] — コンダクターパート(任意)

ループ時のジャンプ地点や、曲中のテンポ変化を設定する特別なパートです。1曲に1つだけ設置可能で、 記載自体が無くても構いません。

[conductor]
[conductorPart]
  R1 R1 J
  T120 R4 T115 R4 T110 R4
  T80
[conductorPartEnd]
コマンド説明
T数値テンポを指定値へ変更(小数点は無視)。パートの先頭に記載されて いれば[global]tempoより優先されます。曲の途中に記載すれば、他の全パート を含め曲全体のテンポをその時点から逐次変更します。
R+数字休符(コンダクターパートの時間経過用)。2=2分音符、 .で付点、3連符は6/12/24で指定。
Jジャンプポイント。[global]loop:true時、 曲末尾に達すると先頭(またはstartOffset位置)からではなく、このジャンプポイントの位置 からループします(イントロ1回+ループ部分、という構成に使えます)。1曲に1個のみ有効(複数記載時は 2個目以降を無視)。

[partSetting] — FM音色パート初期設定

YAML形式。最大16パート(partNo: 116)。

[partSetting]
part:
  - partNo: 1
    voiceID: 0
    volume: 100
    pan: 0
    reverbSend: 30
    transpose: -12
    mute: false
    solo: false
キー範囲・書式説明
partNo1〜16パート番号。[partN]本体セクションと 対応します。
voiceID整数使用するFM音色のID。メモリ上に存在しないIDの場合 はデフォルト音色で代替されます。
volume0〜127パート音量。
pan-16(左)〜16(右)パン定位。0が中央。
reverbSend0〜127マスターリバーブへのセンドレベル。127で 100%wet。
transpose-36〜36(半音単位)パート全体の移調。1で半音、12で 1オクターブ。未設定・範囲外は無視されます。
mutetrue / falsetrueでこのパートを無音化します。未設定・ 無効値はfalse扱い。
solotrue / falsetrueにすると、このパート(およびsolo:true の他パート)のみが再生され、他の全パートは自動的にミュートされます(主にデバッグ用途)。

[pcmPartSetting] — PCM音色パート初期設定

YAML形式。FMパートとの区別のため、パート番号はA〜P(最大16パート)を使用します。

[pcmPartSetting]
pcmPart:
  - partNo: A
    voiceID: 0
    partType: oneShot
    volume: 60
    pan: 0
    transpose: 2
    mute: false
    solo: false
    reverbSend: "C1: 5, E1: 30, F#1: 15"

  - partNo: B
    voiceID: 1
    partType: long
    volume: 100
    pan: 5
    reverbSend: 40
キー範囲・書式説明
partNoA〜Pパート番号。[pcmPartX]本体セクション と対応します。
voiceID整数使用するPCM音色のID。
partTypeoneShot / longそのPCM音色 のvoiceTypeと一致させる必要があります(oneShot指定パートにはoneShot音色のみ設定可)。
volume0〜127パート音量。
pan-16〜16パン定位。partTypeがoneShotの場合はこの設定は 無視され、音色側(voiceSetting)のpanが優先されます。longでは通常通り使用されます。
transpose-36〜36FM音色パートと同様。longのみ意味を持ちます。
mutetrue / falseFM音色パートと同様。
solotrue / falseFM音色パートと同様。
reverbSendpartType依存(下記)マスターリバーブへのセンド レベル。
reverbSendの書式がpartTypeで異なります:
partType: long の場合は、FM音色パートと同じ単一の数値(0〜127)を指定します。
partType: oneShot の場合は、WAV割り当てノートごとに個別のセンドレベルを設定するため、 "ノート名: レベル, ノート名: レベル, ..."という文字列(ダブルクォーテーションで囲む) で記載します。記載のないノートはリバーブがかかりません(センド0扱い)。

各パート本体:[partN] / [pcmPartX]

セクション開始タグ終了タグ対象
FM音色パート[part1][part16] [part1End][part16End]FMシンセシスコアで発音
PCM音色パート[pcmPartA][pcmPartP] [pcmPartAEnd][pcmPartPEnd]WAVサンプルで発音 (voiceTypeにより oneShot / long でコマンド体系が異なる)

開始タグと終了タグに囲まれた部分に演奏コマンド(MML文字列)を自由に改行・空白を入れて記載できます (読み込み時に空白・タブ・改行は除去され1本のコマンド列として連結解析されます)。具体的なコマンド 仕様はMMLコマンド仕様を参照してください。

[part1]
  O3 C4D4E4F#4
  G8A8B8
  O4 C16C#16D16e16 F2R4G8
[part1End]