コンテンツにスキップ

曲ヘッダディレクティブ

曲全体の設定は、; のコメントとして書きます。ファイルのどこに書いても (チャンネルの本文と同じ行でも) 読み取られますが、見やすいように ファイルの先頭にまとめる のがおすすめです。

基本

ディレクティブ 内容
; chip=dual\|opna\|opm\|all 音源の構成 (音源とチャンネル)
; tempo=<N> 曲のテンポ。1 フレームに N/75 tick 進む (ループ・テンポ)
; song_loop=forever\|loop\|1 すべてのチャンネルを無限ループにする
; loop_start_tick=<N> loop_period_tick=<M> 直後の CH の行だけに効く、暗黙のループの位置
; initial_frame_delay=<N> 曲の頭の無音のフレーム数
; default_variant=<0-2> ~ を省略した音符に付ける variant (音程テーブルの列)。リズムは対象外 (音符・休符・オクターブ・音長)
; channel_start_frame=<ch>:<frame>,... チャンネルごとの、発音開始の遅れ

音色・音量

ディレクティブ 内容
; custom_patch_<NN>: ... OPLL のユーザー音色 (16 進 8 バイト)
; opna_patch_<NN>: ... OPNA の 4 オペレータ音色 (10 進 38 個)
; opm_patch_<NN>: ... OPM の 4 オペレータ音色 (10 進 46 個)
; psg_env_<NN>=... PSG のソフトウェア音量エンベロープ (PSG)
; opll_default_vol=<%> OPLL の音量
; opna_default_vol=<%> OPNA の音量 (opn_default_vol= でも書けます)
; opm_default_vol=<%> OPM の音量
; pdx_default_vol=<%> PCM (PDX) の音量
; scc_default_vol=<%> SCC のミックス前音量
; wave_<NN>=<32個の符号付き値> SCC の波形バンク (NN は 16 進 00〜FF)

音色の書式は 音量・音色・パン を参照してください。

音源ごとの音量 *_default_vol

その曲を再生している間だけ、音源ごとの音量を変えられます。

値 意味
100 標準の音量 (指定しなかったときも、これと同じ)
50 半分
0 その音源だけを無音にする
400 最大
; opll_default_vol=100
; opna_default_vol=80
; opm_default_vol=70
; pdx_default_vol=50
; scc_default_vol=100

この音量は、再生される音と、プレイヤーのレベルメーターの両方に反映されます。SCC 波形の書式と選択方法は 音源とチャンネル を参照してください。

綴りについて

dafult のような綴り間違いの書き方も、互換のために読み取られます。新しく書くときは default を使ってください。

sample時刻PCMイベント (chip=all)

MML tick ではなく原音のサンプル時刻に合わせるPDX発音を指定できます。#pcmfileでPDXを宣言し、; chip=allを設定してください。PDXは開いているMMLファイルのフォルダから解決されるため、ファイルとして読み込む必要があります。

; chip=all
#pcmfile "tone.pdx"
; sample_pcm_rate=44100
; sample_pcm_total=2473049
; sample_pcm_loop=46629,2426420
CHP1: [PCM 46629,0,15,4,3]
指令 内容
; sample_pcm_rate=<Hz> 原音タイムラインのサンプルレート。省略時は 44100 Hz
; sample_pcm_total=<サンプル数> 原音タイムライン全体の長さ。省略時は最後のイベントとループ終端から算出
; sample_pcm_loop=<開始サンプル>,<長さ> ループ開始と長さ。ループ内のイベントを同じ間隔で繰り返す
CHP1:〜CHP8: 内の [PCM <時刻>,<PDX番号0-95>,<音量0-15>,<F番号0-4>,<パン0-3>] 指定したサンプル時刻にPDX音を発音。F番号はF0〜F4に対応。旧形式の ; sample_pcm_event=<時刻>,<CHP番号>,... も読み込めます

イベント時刻はsample_pcm_rate単位で、通常のMML tickとは独立しています。ループ内に置くイベントは、ループ開始以上かつループ終端より前にしてください。再生先のCHPチャンネルは、通常のMMLイベントには使えません。エディタの保存・変換機能は、これらの指令を保持します。

互換・再現のためのオプション

曲ごとに、実機に近い動作を選ぶための設定です。ふつうの作曲では、指定する必要はありません。

ディレクティブ 内容
; ssg_pitch_table=mako\|opna\|ay SSG の音程テーブルの選択
; mxdrv_slur=oneshot\|1\|true & を、MXDRV と同じ「直後の 1 音だけをつなぐ」動作にする
; pitch_mod=faithful 実機に準拠したピッチ変調にする
; vibrato_oneshot=1 M を「次の 1 音だけ」に効かせる
; vibrato_bound_channels=<ch,...> 累積ビブラートの幅を抑える
; effect_freerun=1 [FE] を休符の間も進める
; effect_freerun_exclude=<ch,...> effect_freerun から除外するチャンネル
; effect_keep_level_channels=<ch,...> 音を鳴らし始めるときに、エフェクトのレベルを引き継ぐチャンネル
; volume_latch_at_note=1 v の反映を、次の音符を読み込むまで遅らせる
; full_gate_channels=<ch,...> 常に音符の全長を鳴らすチャンネル
; immediate_pitch_mod_tick=1 / ; initial_pitch_mod_ticks= ピッチ変調の最初の tick
; keyon_zero_volume_channels=<ch,...> 音量 0 でも発音を保つチャンネル
; psg_envelope_loop=<ch,...> 休符の間も PSG のエンベロープを続ける
; psg_noise_timed_channels=<ch,...> @N をノイズ周期の指定として扱うチャンネル
; psg_rest_hold_volume_channels=<ch,...> 休符でも PSG の音量を保つチャンネル
; suppress_resident_voice_install=1 曲の頭の、標準音色の書き込みを止める
; suppress_rhythm_pitch_channels=<ch,...> リズムの音程の書き込みを止めるチャンネル
; rhythm_pair_order=runtime リズムの書き込み順
; rhythm_playback=register\|shadow リズムをレジスタの列で再生する
; rhythm_mode_latch=onset リズムモードのビットを反映するタイミング
; rhythm_sd_hh_key_bits= / ; rhythm_tom_cym_key_bits= リズムのキービットの上書き

レジスタ列の直接再生

実機の曲を再現するための設定です。

ディレクティブ 内容
; opll_seed= 曲の頭の OPLL レジスタの初期値
; opll_init= フレーム 0 (曲の頭より前) の OPLL レジスタの初期値
; opll_register_events= 予定した OPLL レジスタの書き込み
; opll_register_events_loop_start= / ; opll_register_events_loop_period= 上記のループの範囲
; ay_register_events= 予定した AY (PSG) レジスタの書き込み