Gnildaのページ



Final Fantasy IV : 制御コード

  1. トップ
  2. SPC
  3. Final Fantasy IV
  4. 制御コード
制御コード
00-B3
キーオン
B4-D1
休符・タイ
D2 xx_yy zz
演奏速度変化
D3 xx yy zz
何もしない
D4 xx
エコーボリューム設定
D5 xx yy
エコーフィードバック設定・FIR フィルタ係数テーブル選択
D6 xx yy zz
ピッチスライド設定
D7 xx yy zz
トレモロ設定
D8 xx yy zz
ビブラート設定
D9 xx yy zz
オートパン設定
DA xx
オクターブ指定
DB xx
波形選択
DC xx
キーオン時の音量変化テーブル選択
DD xx
キーオンから一定時間経過後の Gain rate 指定
DE xx
キーオン後に Gain rate が変化するまでの待ち時間指定
DF xx
ノイズクロック設定
E0 xx
ループ開始位置
E1
オクターブ + 1
E2
オクターブ - 1
E6
ピッチスライド解除
E7
トレモロ解除
E8
ビブラート解除
E9
オートパン解除
EA
エコーオン
EB
エコーオフ
EC
ノイズオン
ED
ノイズオフ
EE
ピッチモジュレーションオン
EF
ピッチモジュレーションオフ
F0
繰り返し・ループ終了
F1
演奏終了
F2 xx_yy zz
音量変化
F3 xx_yy zz
パン変化
F4 xx_yy
ジャンプ
F5 xx yy_zz
条件ジャンプ
F6
ジャンプ 2
F7-FF
演奏終了 2

制御コード

00-B3キーオンチャネル

DAE1E2 コマンドで設定されるオクターブ、このコマンドに対応した値、DB コマンドで設定される微調整値でピッチを計算し、キーオンします。

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

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

チャネル (DSP Voice) の Volume・Pitch 計算フラグがオンになります。

チャネル (DSP Voice) の Source Number・ADSR の値が設定されます。

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

B4-D1休符・タイチャネル

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

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

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

D2演奏速度変化全体

D2 xx yy zz
yyxx : 処理時間 (0x0000 〜 0xFFFF)
zz : 演奏速度 (0x00 〜 0xFF)

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

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

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

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

1 回あたりの変化量が 1/256 未満になる場合は変化しません。

処理時間
yyxxX
00
0 以外yyxx - 1

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

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

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

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

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

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

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

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

yy の値が範囲内に収まるかどうかのチェックはありません。

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

D6ピッチスライド設定チャネル

D6 xx yy zz
xx : ディレイ (0x00 〜 0xFF)
yy : 処理時間 (0x01 〜 0xFF)
zz : 音程変化 (0x80 〜 0x7F)

キーオンから X ティック後に Y ティックでキーオン時の音程から zz (semitone) 変化します。

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

ディレイと処理時間
xxyyXY
-0-無効
0xFF 以外0 以外xxyy
0xFF0yy - 1

D7トレモロ設定チャネル

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

キーオンから X ティック後に約 9 * Y (ms) 周期で音量の倍率の一つが 256 → Z → 256 と変化し続けます。

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

トレモロ無効時または倍率の計算結果が 0 の場合は、この音量の倍率は 256 になります。

ディレイ
xxX
0xFF 以外xx
0xFF0
周期 / 2
yyY0Y
0x00 - 0x01無効-
0x02 - 0xFF[yy / 2]Y0 + 1
倍率
周期Z
1 / 2((- [(zz << 8) / Y0] * Y) SAR 8) & 0xFF

D8ビブラート設定チャネル

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

キーオンから X ティック後と、以降は約 4.5 * Y (ms) 毎に音程が変化し続けます。

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

ディレイ
xxX
0xFF 以外xx
0xFF0
周期 / 2
yyY0Y
0x00 - 0x01無効-
0x02 - 0xFF[yy / 2]Y0 + 1
処理回数とピッチ変化 (P' = キーオン時のピッチ / 12, D = zz)
処理回数ピッチ変化
0± 0
1+ P' / 256
2± 0
3+ [P' * [D * 2 / 8] / 256]
4± 0
5+ [P' * [D * 3 / 8] / 256]
6± 0
7+ [P' * [D * 4 / 8] / 256]
8± 0
9+ [P' * [D * 5 / 8] / 256]
10± 0
11+ [P' * [D * 6 / 8] / 256]
12± 0
13+ [P' * [D * 7 / 8] / 256]
14± 0
15+ [P' * [D * 8 / 8] / 256]
16± 0
17+ [P' * [D * 8 / 8] / 256]
18± 0

D9オートパン設定チャネル

D9 xx yy zz
xx : ディレイ (0x00 〜 0xFF)
yy : 周期 (0x00 〜 0xFF)
zz : 揺れ幅 (0x00 〜 0xFF)

キーオンから X ティック後に初回は約 4.5 * [yy / 2] (ms) で 0 → zz / 2 、以降は約 9 * yy (ms) 周期で zz / 2 → -(zz / 2) → zz / 2 とパン移動量が変化し続けます。

この値は DSP に設定するボリューム計算時に、処理中のパンの値に加算されます。パンの計算結果は下位 8 ビットのみ有効です。

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

ディレイ
xxX
0xFF 以外xx
0xFF0

DAオクターブ指定チャネル

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

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

DB波形選択チャネル

DB xx
xx : 波形番号 (0x00 〜 0x7F)

波形を選択します。

内部でピッチ微調整に使用される値が設定されます。

値が範囲内に収まるかどうかのチェックはありません。

DCキーオン時の音量変化テーブル選択 (Attack?)チャネル

DC xx
xx : 音量変化テーブル選択 (0x00 〜 0x1F)

キーオン時から約 9ms 毎の音量倍率変化テーブルを選択します。

倍率が 0 になると (直前の倍率のまま) チャネル (DSP Voice) は ADSR モードから GAIN モード (減少:指数・Gain rate は DD コマンドで設定した値) になります。

xx に 0x11 〜 0x13, 0x19 〜 0x1D, 0x1F のいずれかを設定した場合は倍率が変化せずに、キーオン直後に ADSR モードから GAIN モードになります。


xx = 0x00時間 : 234ms


xx = 0x01時間 : 1008ms


xx = 0x02時間 : 315ms


xx = 0x03時間 : 684ms


xx = 0x04時間 : 1440ms


xx = 0x05時間 : 441ms


xx = 0x06時間 : 90ms


xx = 0x07時間 : 261ms


xx = 0x08時間 : 378ms


xx = 0x09時間 : 189ms


xx = 0x0A時間 : 45ms


xx = 0x0B時間 : 9ms


xx = 0x0C時間 : 396ms


xx = 0x0D時間 : 9ms


xx = 0x0E時間 : 153ms


xx = 0x0F時間 : 180ms


xx = 0x10時間 : 288ms


xx = 0x14時間 : 9ms


xx = 0x15時間 : 9ms


xx = 0x16時間 : 9ms


xx = 0x17時間 : 9ms


xx = 0x18時間 : 9ms


xx = 0x1E時間 : 234ms

DDキーオンから一定時間経過後の Gain rate 指定 (Sustain?)チャネル

DD xx
xx : Gain rate (0x00 〜 0x1F)

キーオン時から (DC コマンドで指定した) 一定時間経過後の Gain rate を指定します。

GAIN モードは「減少:指数」です。

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

DEキーオン後に Gain rate が変化するまでの待ち時間指定 (Release?)チャネル

DE xx
xx : 待ち時間 (0x00 〜 0xFF)

キーオン後にチャネル (DSP Voice) が GAIN モード (減少 : 指数・Gain rate : 0x11) になるまでの待ち時間 (キーオフまでのティック数 + 1 に対する割合) を設定します。

効果音から設定できますが、効果はありません。

キーオンからキーオフまでのティック数 + 1 に対する割合とディレイ
xx設定値ディレイ (ティック数)備考
0x00, 0x65 - 0xFF100%-このコマンドでは何もせずにキーオフ
0x01 - 0x63約 xx%[(キーオフまでのティック数 + 1) * 設定値 / 256] - 1[256 * xx / 100] / 256
0x6439.0625%同上100 / 256

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

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

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

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

音楽から設定した場合、ノイズを使用した効果音が演奏中であれば効果音の値が DSP に設定されます。

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

E0ループ開始位置チャネル

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

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

1 チャネルで同時に使用可能なループ処理の最大数は 4 です (5 以上は次のデータを破壊します)。

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

ループ内に F5 コマンドがある場合、カウンタ値を調整する必要があります。

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

E1オクターブ + 1チャネル

E1

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

E2オクターブ - 1チャネル

E2

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

E6ピッチスライド解除チャネル

E6

ピッチスライドを解除します。

E7トレモロ解除チャネル

E7

トレモロを解除します。

E8ビブラート解除チャネル

E8

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

E9オートパン解除チャネル

E9

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

EAエコーオンチャネル

EA

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

エコーを使用する状態(効果音も含みます)になると、DSP のエコーボリュームは自動的に D4 コマンドで設定された値になります。

EBエコーオフチャネル

EB

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

エコーを使用しない状態(効果音も含みます)になると、DSP のエコーボリュームは自動的に 0 になります。

ECノイズオンチャネル

EC

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

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

ECノイズオフチャネル

ED

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

EEピッチモジュレーションオンチャネル

EE

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

チャネル 1 (Voice 0) には変調がかかりません。

EFピッチモジュレーションオフチャネル

EF

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

F0繰り返し・ループ終了チャネル

F0

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

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

F1演奏終了チャネル

F1

演奏を終了します。

効果音の場合は自動的にエコー・ノイズ・ピッチモジュレーションが無効になります。

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

F2音量変化チャネル

F2 xx yy zz
yyxx : 処理時間 (0x0000 〜 0xFFFF)
zz : 音量 (0x00 〜 0xFF)

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

スラー時 yyxx に 0 を指定して実行しても、このコマンドのみではチャネルの音量はキーオフされるまで変化しません。yyxx に 1 を設定するか、他のコマンドを併用して強制的に音量再計算させる必要があります。

1 回あたりの変化量が 1/256 未満になる場合は変化しません。

処理時間
yyxxX
00
0 以外yyxx - 1

F3パン変化チャネル

F3 xx yy zz
yyxx : 処理時間 (0x0000 〜 0xFFFF)
zz : パン (0x00 〜 0xFF)

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

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

スラー時 yyxx に 0 を指定して実行しても、このコマンドのみではチャネルの音量はキーオフされるまで変化しません。yyxx に 1 を設定するか、他のコマンドを併用して強制的に音量再計算させる必要があります。

1 回あたりの変化量が 1/256 未満になる場合は変化しません。

効果音から設定すると、音楽のデータを破壊してしまいます。

処理時間
yyxxX
00
0 以外yyxx - 1

F4ジャンプチャネル

F4 xx yy
yyxx : ジャンプ先 (絶対アドレス)

アドレス yyxx までジャンプします。

F5条件ジャンプチャネル

F5 xx yy zz
xx : ジャンプするときのチェック回数
zzyy : ジャンプ先 (絶対アドレス)

ループ内で F5 コマンドを処理した回数が xx 回の場合、アドレス zzyy までジャンプします。

ジャンプする場合 E0 コマンドのカウンタ値が 1 減らされます (0 の場合は何もしません)。減らされた結果が 0 になる場合はループを抜けるので、F0 コマンドは不要です。

F7-FF演奏終了 2チャネル

F7, F8, F9, FA, FB, FC, FD, FE, FF

演奏を終了します。

効果音の場合は自動的にエコー・ノイズ・ピッチモジュレーションが無効になります。

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

F1 コマンドと違い、これらのコマンドはステップタイム計算等で無視されます。

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