Gnildaのページ



Final Fantasy V : 制御コード

  1. トップ
  2. SPC
  3. Final Fantasy V
  4. 制御コード
制御コード
00-B3
キーオン
トラック
B4-D1
タイ・休符
トラック
D2 xx
音量設定
トラック
D3 xx yy
音量変化
トラック
D4 xx
パン設定
トラック
D5 xx yy
パン変化
トラック
D6 xx yy
ピッチスライド
トラック
D7 xx yy zz
ビブラート設定
トラック
D8
ビブラート解除
トラック
D9 xx yy zz
トレモロ設定
トラック
DA
トレモロ解除
トラック
DB xx yy
オートパン
トラック
DC
オートパン解除
トラック
DD xx
ノイズクロック設定
全体
DE
ノイズオン
トラックノイズクロック
DF
ノイズオフ
トラックノイズクロック
E0
ピッチモジュレーションオン
トラック
E1
ピッチモジュレーションオフ
トラック
E2
エコーオン
トラック
E3
エコーオフ
トラック
E4 xx
オクターブ指定
トラック
E5
オクターブ + 1
トラック
E6
オクターブ - 1
トラック
E7 xx
キートランスポーズ指定
トラック
E8 xx
キートランスポーズ相対指定
トラック
E9 xx
ディチューン
トラック
EA xx
波形選択
トラック
EB xx
Attack Rate 設定
トラック
EC xx
Decay Rate 設定
トラック
ED xx
Sustain Level 設定
トラック
EE xx
Sustain Rate 設定
トラック
EF
ADSR 初期化
トラック
F0 xx
ループ開始位置
トラック
F1
繰り返し・ループ終了
トラック
F2
演奏終了
トラックノイズクロック
F3 xx
演奏速度指定
音楽トラック
F4 xx yy
演奏速度変化
音楽トラック
F5 xx
エコーボリューム設定
全体
F6 xx yy
エコーボリューム変化
全体
F7 xx yy
エコーフィードバック設定・FIR フィルタ係数テーブル選択
全体
F8 xx
音楽音量設定
音楽トラック
F9 xx yy_zz
条件ジャンプ
音楽トラック
FA xx_yy
ジャンプ
音楽トラック
FB xx_yy
条件ジャンプ 2
音楽トラック
FC-FF
演奏終了 2
トラックノイズクロック

制御コード

00-B3キーオントラック

E4E5E6 コマンドで設定されるオクターブの値、このコマンドに対応した値と E7E8 コマンドのトランスポーズ値、E9EA コマンドで設定される微調整値でピッチを計算し、キーオンします。

コマンドに対応したティック数だけ待機します。

F2 コマンドで演奏終了、または次に処理する 00-C3 コマンドがタイ以外の場合は、コマンドに対応した数値 - 2 ティック後にキーオフします。

DSP Voice の Volume・Pitch 計算フラグがオンになります。

DSP Voice の Source Number・ADSR の値が設定されます。

D6 コマンドをキーオンと同時に使用しない場合は、ピッチ変化量が 0 になります。

キーオン (音長は 10 進数 他は 16 進数)
音長12.234.468.8121624324864
C000102030405060708090A0B0C0D0E
C#0F101112131415161718191A1B1C1D
D1E1F202122232425262728292A2B2C
D#2D2E2F303132333435363738393A3B
E3C3D3E3F404142434445464748494A
F4B4C4D4E4F50515253545556575859
F#5A5B5C5D5E5F606162636465666768
G696A6B6C6D6E6F7071727374757677
G#78797A7B7C7D7E7F80818283848586
A8788898A8B8C8D8E8F909192939495
A#969798999A9B9C9D9E9FA0A1A2A3A4
BA5A6A7A8A9AAABACADAEAFB0B1B2B3
ティック数C09060404830202418100C08060403

B4-D1タイ休符トラック

コマンドに対応したティック数だけ待機します。

F2 コマンドで演奏終了、または次に処理する 00-D1 コマンドがタイ以外の場合は、コマンドに対応した数値 - 2 ティック後にキーオフします。

タイ・休符 (音長は 10 進数 他は 16 進数)
音長12.234.468.8121624324864
タイB4B5B6B7B8B9BABBBCBDBEBFC0C1C2
休符C3C4C5C6C7C8C9CACBCCCDCECFD0D1
ティック数C09060404830202418100C08060403

D2音量設定トラック

D2 xx
xx : 音量 (0x00 〜 0x7F)

音量の値が xx に設定されます。

xx の最上位ビットは無視されます。

D3音量変化トラック

D3 xx yy
xx : 処理時間 (0x00 〜 0xFF)
yy : 音量 (0x00 〜 0x7F)

音量が現在の値から yy まで X ティックで変化します。

yy の最上位ビットは無視されます。

処理時間
xxX
00
0 以外xx - 1

D4パン設定トラック

D4 xx
xx : パン (0x00 〜 0xFF)

パンの値が xx に設定されます。

0x00 (左) - 0x80 (中央・モノラル) - 0xFF (右)

D5パン変化トラック

D5 xx yy
xx : 処理時間 (0x00 〜 0xFF)
yy : パン (0x00 〜 0xFF)

パンが現在の値から yy まで X ティックで変化します。

0x00 (左) - 0x80 (中央・モノラル) - 0xFF (右)

処理時間
xxX
00
0 以外xx - 1

D6ピッチスライドトラック

D6 xx yy
xx : 処理時間 (0x00 〜 0xFF)
yy : 音程変化 (0x80 〜 0x7F)

xx ティックで現在の音程から yy (semitone) 変化します。

計算結果の下位 8 ビットの値 (符号なし) がピッチスライド終了時の音程の値になります。

ピッチスライドが終了する前に更にピッチスライドを実行すると、"2 回目の処理時間" で "現在の音程" から "1 回目の処理を始める直前の (ビブラートでの変化分を除く) 音程の値に 1 回目と 2 回目の音程変化の値を加算した値 (semiton)" まで変化します。

D7ビブラート設定トラック

D7 xx yy zz
xx : ディレイ (0x00 〜 0xFF)
yy : 周期 (0x00 〜 0xFF)
zz : 揺れ方と揺れの大きさ (0x00 〜 0xFF)

キーオンまたはコマンド実行の xx ティック後から、約 4.5 * (yy + 1) (ms) 毎に音程が変化し続けます。

zz の上位 2 ビットで揺れ方を、下位 6 ビットで揺れの大きさを設定します。

時間経過による揺れの大きさの倍率は 4 段階 (約 0.5, 1.0, 1.5, 2.0) ありますが、xx = 0 の場合は最初から約 2.0 倍の値で計算されます。

タイの直前にも実行できますが、ピッチ変化量計算に使用されるカウンタ値が初期化されません。

D8 コマンド (または zz に 0 を指定) で解除されます。

処理回数とピッチ変化量 (p1 = p2 * 0.5, p3 = p2 * 1.5, p4 = p2 * 2.0)
処理回数zz の上位 2 ビットの値
0b110b010b?00b110b010b?0
0± 0± 0± 0---
1+ p1+ p1- p1+ p4+ p4- p4
2- p1± 0± 0- p4± 0± 0
3+ p2+ p2- p2+ p4+ p4- p4
4- p2± 0± 0- p4± 0± 0
5+ p3+ p3- p3+ p4+ p4- p4
6- p3± 0± 0- p4± 0± 0
7+ p4+ p4- p4+ p4+ p4- p4
8- p4± 0± 0- p4± 0± 0
9+ p4+ p4- p4+ p4+ p4- p4
10- p4± 0± 0- p4± 0± 0
xx0x01 - 0xFF0x00

D8ビブラート解除トラック

D8

ビブラートを解除します。

D9トレモロ設定トラック

D9 xx yy zz
xx : ディレイ (0x00 〜 0xFF)
yy : 周期 (0x00 〜 0xFF)
zz : 揺れ方と揺れの大きさ (0x00 〜 0xFF)

キーオンまたはコマンド実行の X ティック後から、音量の倍率は約 4.5 (ms) 毎に、音量の倍率計算に使用する値は約 4.5 * (yy + 1) (ms) 毎に変化し続けます。

DSP Voice の Volume 計算時に D2D3 コマンドの音量とこのコマンドの音量の倍率の積を計算します。その計算結果は符号なし 8 ビットに収まる値 (255 を超える場合は 255) になります。

zz の上位 2 ビットで揺れ方を、下位 6 ビットで揺れの大きさを設定します (最大で v2 は約 50% になります) 。

時間経過による揺れの大きさの倍率は 4 段階 (約 0.5, 1.0, 1.5, 2.0) ありますが、xx = 0 の場合は最初から約 2.0 倍の値で計算されます。

タイの直前にも実行できますが、音量倍率変化量計算に使用されるカウンタ値が初期化されません。

DA コマンド (または zz に 0 を指定) で解除されます。

処理回数と音量倍率変化量 (v1 = v2 * 0.5, v3 = v2 * 1.5, v4 = v2 * 2.0)
処理回数zz の上位 2 ビットの値
0b110b010b?00b110b010b?0
0± 0± 0± 0---
1+ v1+ v1- v1+ v4+ v4- v4
2- v1± 0± 0- v4± 0± 0
3+ v2+ v2- v2+ v4+ v4- v4
4- v2± 0± 0- v4± 0± 0
5+ v3+ v3- v3+ v4+ v4- v4
6- v3± 0± 0- v4± 0± 0
7+ v4+ v4- v4+ v4+ v4- v4
8- v4± 0± 0- v4± 0± 0
9+ v4+ v4- v4+ v4+ v4- v4
10- v4± 0± 0- v4± 0± 0
xx0x01 - 0xFF0x00

DAトレモロ解除トラック

DA

トレモロを解除します。

DBオートパン設定トラック

DB xx yy
xx : 周期 (0x00 〜 0xFF)
yy : 揺れ方と揺れの大きさ (0x80 〜 0x7F)

初回は約 4.5 * (X / 2) (ms) で 0 → Y 、以降は約 9 * X (ms) 周期で Y → -Y → Y とパン移動量が変化し続けます。

この値は DSP Voice の Volume 計算時に、処理中のパンの値に加算されます。パンの計算結果は符号なし 8 ビットに収まる値 (0 未満は 0 、255 を超える場合は 255) になります。

yy で揺れ方 (Y の符号) と揺れの大きさ (Y の絶対値) を設定します。

DC コマンド (または yy に 0 を指定) で解除されます。

周期
xxX
02
奇数xx + 1
偶数xx
揺れ方と揺れの大きさ
yyY揺れ方揺れの大きさ
0x80 - 0xFF-(~yy)左 → 右 → 左~yy
0x00 - 0x7Fyy右 → 左 → 右 yy

DCオートパン解除トラック

DC

オートパンを解除します。

DDノイズクロック設定全体

DD xx
xx : ノイズクロック (0x00 〜 0x1F)

DSP に設定するノイズクロックの値を設定します (0 〜 32kHz)。

音楽と効果音で異なる値を設定できます。

ノイズを使用した効果音が演奏状態であれば効果音の値、そうでない場合は音楽の値が自動的に DSP に設定されます。

xx の上位 3 ビットは無視されます。

DEノイズオントラックノイズクロック

DE

EA コマンドで設定した波形データの代わりにノイズを発声するようになります。

ループしない波形が設定されている場合はその長さの時間だけ発声します。

ノイズクロックの値はノイズを使用した効果音が演奏状態であれば効果音の値、そうでない場合は音楽の値が自動的に DSP に設定されます。

DFノイズオフトラックノイズクロック

DF

EA コマンドで設定した波形データを使用して発声するようになります。

ノイズクロックの値はノイズを使用した効果音が演奏状態であれば効果音の値、そうでない場合は音楽の値が自動的に DSP に設定されます。

E0ピッチモジュレーションオントラック

E0

ひとつ前のチャネルの DSP 内部の値 (OUTX) でピッチ変調をかけるようになります。

音楽トラック 1 (Voice 0) には変調がかかりません。

E1ピッチモジュレーションオフトラック

E1

ピッチ変調をかけなくなります。

E2エコーオントラック

E2

エコーがかかるようになります。

E3エコーオフトラック

E3

エコーがかからなくなります。

E4オクターブ指定トラック

E4 xx
xx : オクターブ (0x00 〜 0xFF)

キーオン時のピッチ計算に使用されるオクターブの値が xx に設定されます。

E5オクターブ + 1トラック

E5

キーオン時のピッチ計算に使用されるオクターブの値が、現在の値 + 1 に設定されます。計算結果の下位 8 ビットの値が設定されます。

E6オクターブ - 1トラック

E6

キーオン時のピッチ計算に使用されるオクターブの値が、現在の値 - 1 に設定されます。計算結果の下位 8 ビットの値が設定されます。

E7キートランスポーズ指定トラック

E7 xx
xx : トランスポーズ値 (0x80 〜 0x7F)

キーオン時のピッチ計算に使用される音程の値を xx (Semitone) 変化させます。

xx = 0 で解除されます。

E8キートランスポーズ相対指定トラック

E8 xx
xx : トランスポーズ値変化 (0x80 〜 0x7F)

トランスポーズ値が、現在の値 + xx に設定されます。計算結果の下位 8 ビットの値が設定されます。

E9ディチューントラック

E9 xx
xx : ピッチ微調整 (0x80 〜 0x7F)

キーオン時に計算されるピッチの値を微調整することができます。

この値は EA コマンドのピッチ微調整に使用する値の一つに加算され、結果の下位 8 ビットが使用されます。

xx に 0 を指定で解除されます。

このコマンドの値のみがピッチ計算に使用される (EA コマンドの値でピッチ微調整を行わない) 場合、ピッチの値はこのコマンドを利用しない場合の値の約 0.5 〜 1.5 倍になります。

EA波形選択トラック

EA xx
xx : 波形番号 (0x00 〜 0x3F)

波形を選択します。

内部で DSP に設定する ADSR の値と、ピッチ微調整に使用する値二つが設定されます。

EBAttack Rate 設定トラック

EB xx
xx : Attack Rate (0x00 〜 0x0F)

DSP に設定する Attack Rate の値が設定されます。

上位 4 ビットは無視されます。

ECDecay Rate 設定トラック

EC xx
xx : Decay Rate (0x00 〜 0x07)

DSP に設定する Decay Rate の値が設定されます。

上位 5 ビットは無視されます。

EDSustain Level 設定トラック

ED xx
xx : Sustain Level (0x00 〜 0x07)

DSP に設定する Sustain Level の値が設定されます。

上位 5 ビットは無視されます。

EESustain Rate 設定トラック

EE xx
xx : Sustain Rate (0x00 〜 0x1F)

DSP に設定する Sustain Rate の値が設定されます。

上位 3 ビットは無視されます。

EFADSR 初期化トラック

EBECEDEE コマンドで設定された値を EA コマンドで自動的に設定される値に戻します。

F0ループ開始位置トラック

F0 xx
xx : カウントダウンカウンタの初期値 (0x00 〜 0xFF)

このコマンドと F1 コマンドでループ処理を行うことができます。

1 トラックで同時に使用可能なループ処理の最大数は 4 です (5 以上は一番古いデータが上書きされます)。

ループ内の F9 コマンドのチェック回数を 0 に初期化します。

カウントダウンカウンタ
xx初期値ループ回数
0x00, 0xFF0無限
0x01 - 0xFExx + 1最大で xx + 1 回

F1繰り返し・ループ終了トラック

F1

F0 コマンドのカウンタ値が 0 の場合、そのまま最も内側のループ開始位置までジャンプします (無限ループ)。

カウンタ値が 1 以上の場合は 1 減らされます。結果が 1 以上の場合は、最も内側のループ開始位置までジャンプします。結果が 0 になる場合は、ループを抜けます。

F2演奏終了トラックノイズクロック

F2

演奏を終了します。

ノイズ・ピッチモジュレーション・エコーが無効になります。

すべての効果音が無演奏状態になった場合、DSP のノイズクロックは音楽の値が設定されます。

F3演奏速度設定音楽トラック

F3 xx
xx : 演奏速度 (0x01 〜 0xFF)

演奏速度の値が xx に設定されます。

効果音からは設定できません。

速度が 0 になるとコマンド処理ができなくなります。

bpm = (1000 / 4.5) * (zz / 256) / 48 * 60  (若干小さな値になります)

F4演奏速度変化音楽トラック

F4 xx yy
xx : 処理時間 (0x01 〜 0xFF)
yy : 演奏速度 (0x00 〜 0xFF)

演奏速度が現在の値から yy まで xx ティックで変化します。

効果音からは設定できません。

速度が 0 になるとコマンド処理ができなくなります。

bpm = (1000 / 4.5) * (zz / 256) / 48 * 60  (若干小さな値になります)

F5エコーボリューム設定全体

F5 xx
xx : エコーボリューム (0x00 〜 0xFE)

DSP に設定するエコーボリュームの値が xx / 2 に設定されます (xx の下位 1 ビットは無効です) 。

効果音からは設定できません。

F6エコーボリューム変化全体

F6 xx yy
xx : 処理時間 (0x00 〜 0xFF)
yy : エコーボリューム (0x00 〜 0xFE)

DSP に設定するエコーボリュームが現在の値から yy / 2 まで xx ティックで変化します (yy の下位 1 ビットは無効です) 。

効果音からは設定できません。

F7エコーフィードバック設定・FIR フィルタ係数テーブル選択全体

F7 xx yy
xx : エコーフィードバック (0x80 〜 0x7F)
yy : FIR フィルタ係数テーブル選択 (0x00 〜 0x03)

xx で DSP に設定するエコーフィードバックの値を設定します。

yy で DSP に設定する FIR フィルタ係数のテーブルを選択します。

yy の上位 6 ビットは無視されます。

効果音からは設定できません。

FIR フィルタ係数 (16進数)
yyエコーフィルタ
C0C1C2C3C4C5C6C7
007F00000000000000
010C212B2B13FEF3F9
0258BFDBF0FE070C0C
03343300D9E501FCEB

F8音楽音量設定音楽トラック

F8 xx
xx : 音量 (0x00 〜 0xFF)

音楽の音量計算に使用される倍率の値の一つが xx に設定されます。

通常は xx に 255 を指定します。

F9条件ジャンプ音楽トラック

F9 xx yy zz
xx : ジャンプするときのチェック回数
zzyy : ジャンプ先

ループ内で F9 コマンドを処理した回数が xx の場合、zzyy に APU RAM アドレス 0x0006 の 16 ビットの値を加算した結果の下位 16 ビットのアドレスへジャンプします。

効果音は使用できません。

F0 コマンドのカウンタ値は変化しないので、F1 コマンドでループ処理する必要があります。

FAジャンプ音楽トラック

FA xx yy
yyxx : ジャンプ先

yyxx に APU RAM アドレス 0x0006 の 16 ビットの値を加算した結果の下位 16 ビットのアドレスへジャンプします。

効果音は使用できません。

FB条件ジャンプ 2音楽トラック

FB xx yy
yyxx : ジャンプ先

内部データのトラックに対応したビットが 1 の場合、yyxx に APU RAM アドレス 0x0006 の 16 ビットの値を加算した結果の下位 16 ビットのアドレスへジャンプします。

ジャンプする場合、内部データのトラックに対応したビットは 0 になります。

効果音は使用できません。

このコマンドを使用するには 65C816 (メイン CPU) からサウンドドライバに命令を送信する必要があります。

FC-FF演奏終了 2トラックノイズクロック

FC, FD, FE, FF

演奏を終了します。

ノイズ・ピッチモジュレーション・エコーが無効になります。

すべての効果音が無演奏状態になった場合、DSP のノイズクロックは音楽の値が設定されます。

F2 コマンドと違い、これらのコマンドは次のキーオンタイ・休符コマンドを探す処理で無視されます。

  1. トップ
  2. SPC
  3. Final Fantasy V
  4. 制御コード

- Rental Orbit Space -