Gnildaのページ



Final Fantasy VI : 制御コード

  1. トップ
  2. SPC
  3. Final Fantasy VI
  4. 制御コード
制御コード
00-A7
キーオン
A8-C3
タイ・休符
C4 xx
音量設定
C5 xx yy
音量変化
C6 xx
パン設定
C7 xx yy
パン変化
C8 xx yy
ピッチスライド
C9 xx yy zz
ビブラート設定
CA
ビブラート解除
CB xx yy zz
トレモロ設定
CC
トレモロ解除
CD xx yy zz
オートパン
CE
オートパン解除
CF xx
ノイズクロック設定
D0
ノイズオン
D1
ノイズオフ
D2
ピッチモジュレーションオン
D3
ピッチモジュレーションオフ
D4
エコーオン
D5
エコーオフ
D6 xx
オクターブ指定
D7
オクターブ + 1
D8
オクターブ - 1
D9 xx
キートランスポーズ指定
DA xx
キートランスポーズ相対指定
DB xx
ディチューン
DC xx
波形選択
DD xx
Attack Rate 設定
DE xx
Decay Rate 設定
DF xx
Sustain Level 設定
E0 xx
Sustain Rate 設定
E1
ADSR 初期化
E2 xx
ループ開始位置
E3
繰り返し・ループ終了
E4
スラー開始
E5
スラー終了
E6
レガート開始
E7
レガート終了
E8 xx
音長(待機時間)指定
E9 xx
効果音再生1
EA xx
効果音再生2
EB
演奏終了
EC-EF, FD-FF
演奏終了2
F0 xx
演奏速度指定
F1 xx yy
演奏速度変化
F2 xx
エコーボリューム設定
F3 xx yy
エコーボリューム変化
F4 xx
音量設定 (音楽)
F5 xx yy_zz
条件ジャンプ
F6 xx_yy
ジャンプ
F7 xx yy
エコーフィードバック変化
F8 xx yy
FIR フィルタ係数変化 (テーブル選択)
FB
音量設定 2 (音楽)
FC xx_yy
条件ジャンプ2

制御コード

00-A7キーオンチャネル

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

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

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

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

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

C8 コマンドをキーオンと同時に使用しない場合は、1 回あたりのピッチ変化量の整数部分が 0 になります。

キーオン (音長は 10 進数 他は 16 進数)
音長1234.468.8121624324864
C000102030405060708090A0B0C0D
C#0E0F101112131415161718191A1B
D1C1D1E1F20212223242526272829
D#2A2B2C2D2E2F3031323334353637
E38393A3B3C3D3E3F404142434445
F464748494A4B4C4D4E4F50515253
F#5455565758595A5B5C5D5E5F6061
G62636465666768696A6B6C6D6E6F
G#707172737475767778797A7B7C7D
A7E7F808182838485868788898A8B
A#8C8D8E8F90919293949596979899
B9A9B9C9D9E9FA0A1A2A3A4A5A6A7
ティック数C060404830202418100C08060403

A8-C3タイ休符チャネル

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

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

タイ・休符 (音長は 10 進数 他は 16 進数)
音長1234.468.8121624324864
タイA8A9AAABACADAEAFB0B1B2B3B4B5
休符B6B7B8B9BABBBCBDBEBFC0C1C2C3
ティック数C060404830202418100C08060403

C4音量設定チャネル

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

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

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

C5音量変化チャネル

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

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

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

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

C6パン設定チャネル

C6 xx
xx : パン (0x00 〜 0x7F)

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

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

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

DSP Voice の Volume (L, R) の値が再計算されます。

C7パン変化チャネル

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

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

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

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

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

C8ピッチスライドチャネル

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

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

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

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

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

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

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

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

時間経過による揺れの大きさの倍率は 4 段階ありますが、xx = 0 の場合は最初から最大値で計算されます。zz の上位 2 ビットが 0b11 の場合は計算が zz の上位 1 ビットが 0 と同じ変化になります。

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

ディレイ
xxX
00
0 以外xx - 1
半周期
yyY
0256
0 以外yy
周期とピッチ変化 (p2 ≒ p1 * 2, p3 ≒ p1 * 3, p4 ≒ p1 * 4)
半周期zz の上位 2 ビットの値
0b110b0?0b100b110b0?0b10
0± 0± 0± 0---
1+ p1+ p1- p1 + p4+ p4- p4
2- p1± 0± 0 ± 0± 0± 0
3+ p2+ p2- p2 + p4+ p4- p4
4- p2± 0± 0 ± 0± 0± 0
5+ p3+ p3- p3 + p4+ p4- p4
6- p3± 0± 0 ± 0± 0± 0
7+ p4+ p4- p4 + p4+ p4- p4
8- p4± 0± 0 ± 0± 0± 0
9+ p4+ p4- p4 + p4+ p4- p4
10- p4± 0± 0 ± 0± 0± 0
xx0x01 - 0xFF0x00

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

CA

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

CBトレモロ設定チャネル

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

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

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

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

時間経過による揺れの大きさの倍率は 4 段階ありますが、xx = 0 の場合は最初から最大値で計算されます。zz の上位 2 ビットが 0b11 の場合は計算が zz の上位 1 ビットが 0 と同じ変化になります。

キーオンまたはコマンド実行時に内部計算用のカウンタ値を初期化しますが、このコマンドではなく C9 コマンドの値を初期化してしまいます。通常使用ではディレイ後初回は不定、二回目以降は最大値で計算されるようになります。

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

ディレイ
xxX
00
0 以外xx - 1
半周期
yyY
0256
0 以外yy
周期と音量倍率変化量 (v2 ≒ v1 * 2, v3 ≒ v1 * 3, v4 ≒ v1 * 4)
半周期zz の上位 2 ビットの値
0b110b0?0b100b110b0?0b10
0± 0± 0± 0---
1+ v1+ v1- v1 + v4+ v4- v4
2- v1± 0± 0 ± 0± 0± 0
3+ v2+ v2- v2 + v4+ v4- v4
4- v2± 0± 0 ± 0± 0± 0
5+ v3+ v3- v3 + v4+ v4- v4
6- v3± 0± 0 ± 0± 0± 0
7+ v4+ v4- v4 + v4+ v4- v4
8- v4± 0± 0 ± 0± 0± 0
9+ v4+ v4- v4 + v4+ v4- v4
10- v4± 0± 0 ± 0± 0± 0
xx0x01 - 0xFF0x00

CCトレモロ解除チャネル

CC

トレモロを解除します。

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

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

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

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

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

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

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

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

CE

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

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

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

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

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

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

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

D0ノイズオンチャネル

D0

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

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

D1ノイズオフチャネル

D1

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

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

D2

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

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

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

D3

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

D4エコーオンチャネル

D4

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

D5エコーオフチャネル

D5

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

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

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

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

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

D7

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

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

D8

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

D9キートランスポーズ指定チャネル

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

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

xx = 0 で解除されます。

DAキートランスポーズ相対指定チャネル

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

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

DBディチューンチャネル

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

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

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

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

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

DC波形選択チャネル

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

波形を選択します。

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

スラーとレガートを解除します。

DDAttack Rate 設定チャネル

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

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

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

DEDecay Rate 設定チャネル

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

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

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

DFSustain Level 設定チャネル

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

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

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

E0Sustain Rate 設定チャネル

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

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

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

E1ADSR 初期化チャネル

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

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

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

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

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

ループ内の F5 コマンドのカウントアップカウンタの値を 1 に初期化します。

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

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

E3

ループ内の F5 コマンドのカウントアップカウンタの値を 1 増やします。

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

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

E4スラー開始チャネル

E4

既にキーオンされた状態で次の処理コマンドがキーオンの場合、直前のキーオフ処理とキーオン処理を実行せずピッチ変更のみを実行します。

レガートを解除します。

E5 コマンドで解除します。

DCE6 コマンド、休符で解除されます。

E5スラー終了チャネル

E5

スラーを解除します。

E6レガート開始チャネル

E6

既にキーオンされた状態で次の処理コマンドがキーオンの場合、直前のキーオフ処理を実行しなくなります。

スラーを解除します。

E7 コマンドで解除します。

DCE4 コマンド、休符で解除されます。

E7レガート終了チャネル

E7

レガートを解除します。

E8音長(待機時間)指定チャネル

E8 xx
xx : 音長(待機時間) (0x00 〜 0xFF)

xx が 0x00 以外の値の場合、次に実行するキーオンタイ・休符コマンドの(更に次のコマンドを実行するまでの)待機時間が、コマンド対応した値ではなく xx ティックに設定されます。

xx が 2 以下であればキーオフせず、3 以上は通常のキーオンタイ・休符コマンドと同じ設定になります。

EB演奏終了チャネル

EB

演奏を終了します。

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

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

EC-EF, FD-FF演奏終了2チャネル

EC, ED, EE, EF, FD, FE, FF

演奏を終了します。

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

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

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

F0演奏速度設定全体

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

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

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

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

F1演奏速度変化全体

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

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

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

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

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

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

F2 xx
xx : エコーボリューム (0x80 〜 0x7E)

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

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

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

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

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

F4音量設定 (音楽)全体 (音楽)

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

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

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

F5条件ジャンプチャネル

F5 xx yy zz
xx : カウントアップカウンタの値
zzyy : ジャンプ先

ループ内の F5 コマンドのカウントアップカウンタの値が xx の場合、zzyy に APU RAM アドレス 0x0000 の 16 ビットの値を加算した結果の下位 16 ビットのアドレスへジャンプします。

ジャンプする場合 E2 コマンドのカウンタ値が 1 であればループを抜けるので、E3 コマンドは不要です。

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

F6ジャンプチャネル

F6 xx yy
yyxx : ジャンプ先

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

F7エコーフィードバック変化全体

F7 xx yy
xx : 処理時間 (0x00 〜 0xFF)
yy : エコーフィードバック (0x80 〜 0x7F)

DSP に設定するエコーフィードバックが現在の値から yy まで X ティックで変化します。

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

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

F8FIR フィルタ係数変化 (テーブル選択)全体

F8 xx yy
xx : 処理時間 (0x00 〜 0xFF)
yy : FIR フィルタ係数テーブル選択 (0x00 〜 0x03)

DSP に設定する FIR フィルタ係数が X ティックで変化します。

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

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

処理時間
xxX
00
0 以外xx - 1
FIR フィルタ係数 (16進数)
yyエコーフィルタ
C0C1C2C3C4C5C6C7
007F00000000000000
010C212B2B13FEF3F9
0258BFDBF0FE070C0C
03343300D9E501FCEB

FB音量設定 2 (音楽)チャネル

FB

チャネルの音量計算に使用される倍率の値の一つが、F4 コマンドの値ではなく 256 に設定されます。

効果音から設定すると、使用中のチャネルの音楽音量設定が変化します。

DC コマンドで解除されます。

FC条件ジャンプ2チャネル

FC xx yy
yyxx : ジャンプ先

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

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

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

- Rental Orbit Space -