Gnilda のページ


補足説明 (シーケンスコマンド・サウンドドライバファンクション)


  1. ホーム
  2. スーパーファミコンのサウンドドライバ
  3. 補足説明 (シーケンスコマンド・サウンドドライバファンクション)

用語一覧
定数一覧
NK
キーオン時のノート番号 (符号なし)
PiK
キーオン時のピッチ (符号なし)
変数一覧
NC
現在のノート番号 (符号なし)
PaC
現在のパン (符号なし)
PaA
オートパンのパン変化量 (符号あり)
PaF
サウンドドライバファンクションのパン変化量 (符号あり)
PiB
ピッチの基本値 (符号なし)
PiC
現在のピッチ (符号なし)
PiS
ピッチスライドのピッチ変化量 (符号あり)
PiV
ビブラートのピッチ変化量 (符号あり)
PiF
サウンドドライバファンクションのピッチ倍率に関する値 (符号あり)
VC
現在のトラック音量 (符号なし)
VT
トレモロの音量に関する値
関数一覧
x
床関数 (floor)
x
天井関数 (ceiling)
MIN(x1, x2, ...)
最小値
MAX(x1, x2, ...)
最大値
CLAMP(x, N, X)
クランプ
U2(x)
符号なし 2 ビット整数
U3(x)
符号なし 3 ビット整数
U4(x)
符号なし 4 ビット整数
U5(x)
符号なし 5 ビット整数
U6(x)
符号なし 6 ビット整数
U7(x)
符号なし 7 ビット整数
U8(x)
符号なし 8 ビット整数
U16(x)
符号なし 16 ビット整数
S8(x)
符号あり 8 ビット整数
LSL8(x, s)
符号なし 8 ビット整数 の 論理左シフト
LSR8(x, s)
符号なし 8 ビット整数 の 論理右シフト
LSL16(x, s)
符号なし 16 ビット整数 の 論理左シフト
LSR16(x, s)
符号なし 16 ビット整数 の 論理右シフト
H8(x)
符号なし 16 ビット整数の 上位 8 ビット
L8(x)
符号なし 16 ビット整数の 下位 8 ビット
E8(x)
符号あり 8 ビット 整数 (エクセス 128)
PITCH(N)
ピッチの値 (符号なし 16 ビット整数)
R16(A)
APU RAM の値 (符号なし 16 ビット整数)
参考リンク

用語一覧

トラック

サウンドドライバが管理しています。音楽・効果音・発声用 DSP チャネル制御用 などの種類があり、複数のトラックを使用します。種類や総トラック数はサウンドドライバにより異なります。

当サイトではトラックの番号は 1 以上の値を使用しています。

チャネル

シーケンスコマンド と サウンドドライバファンクション の説明では "発声用 DSP の チャネル" を表しています。

同時発音数は 8 で、当サイトでは DSP チャネル の番号は 0–7 を使用しています。参考リンク先のレジスタ名の先頭には "Voice 0–7" 又は "V0–V7" が使用されています。

説明リスト と 見出し要素では "DSP チャネル制御用のトラック" を表しています。

アドレス

"APU RAM のアドレス" です。$0000–$FFFF の範囲で指定しますが、一部のアドレスはレジスタなどで使用しています。

仮引数

8 ビットの値で、xx yy zz など 2 文字で定義しています。内部で 16 ビットの値を扱う場合は、説明リストでは yy_xx 、説明では yyxx と表しています。

当サイトでは、値の範囲は "最小値–最大値" と表しています。符号の有無は、最小値の絶対値が最大値の絶対値よりも大きいかどうかで確認できます。

既定値

サウンドドライバファンクションで演奏開始時に設定される値です。

乗算・除算

SPC700 の乗算・除算 (など) は符号なしのみがサポートされていますので、被乗数・被除数が負数の場合は正数に符号反転し、計算結果を符号反転する必要があります。

固定小数点数

小数点が置かれる桁を固定して表された数です。サウンドドライバでは一回当たりの変化量を求める場合などに使用します。処理速度などの制限があるため、整数部と小数部はそれぞれ 8 の倍数のビット数で処理します。負数は 2 の補数で表現します。

チャネルの音量などの計算には小数部を 0 とした整数部分のみを使用します。固定小数点数の音量が V である場合は V を計算に使用します。

整数部 8 ビット 小数部 8 ビットの例
10 進数 NNN - ⌊N16 進数 (16 ビット)符号ビット
254.75254192/256$FEC0なし
127.5127128/256$7F80?
−3/256−1253/256$FFFDあり

定数一覧

NKキーオン時のノート番号 (符号なし)

キーオン時に計算されるノート番号です。

PiKキーオン時のピッチ (符号なし)

キーオン時に計算されるピッチの値です。

変数一覧

NC現在のノート番号 (符号なし)

キーオン後に複数回実行可能なピッチスライド処理に使用します。

初期値は NK です。

PaC現在のパン (符号なし)

パン設定・変化コマンドで設定・変化中の現在のパンの値です。

PaAオートパンのパン変化量 (符号あり)

オートパンで変化するパンの値です。現在のパンの値に加算します。

初期値は 0 です。

PaFサウンドドライバファンクションのパン変化量 (符号あり)

サウンドドライバファンクションで変化するパンの値です。現在のパンの値に加算します。

通常は音楽と効果音で異なる値を設定可能です。

初期値や数値表現は、サウンドドライバ毎に異なります。

PiBピッチの基本値 (符号なし)

ピッチ倍率 PiF が存在しない 又は ピッチ倍率が 1.0 倍である 場合はこの値が DSP チャネルに設定されます。

ピッチ計算はサウンドドライバ毎に異なります。

PiC現在のピッチ (符号なし)

キーオン時に計算されるピッチの値に ピッチスライドなどの値を直接加算する 場合に使用します。

初期値は PiK です。

PiSピッチスライドのピッチ変化量 (符号あり)

ピッチスライドで変化するピッチの値です。現在のピッチの値に加算します。

初期値は 0 です。

PiVビブラートのピッチ変化量 (符号あり)

ビブラートで変化するピッチの値です。現在のピッチの値に加算します。

初期値は 0 です。

PaFサウンドドライバファンクションのピッチ倍率に関する値 (符号あり)

サウンドドライバファンクションで設定・変化するピッチ倍率に関する値です。

通常は音楽と効果音で異なる値を設定可能です。

初期値や数値表現は、サウンドドライバ毎に異なります。

VC現在のトラック音量 (符号なし)

音量設定・変化コマンドで設定・変化中の現在のトラック音量の値です。

VTトレモロの音量に関する値

トレモロで変化する 音量倍率 又は トラック音量の倍率の計算に用いる値 です。

初期値や数値表現は、サウンドドライバ毎に異なります。

関数一覧

x床関数 (floor)

x 以下の最大の整数を返します。

x天井関数 (ceiling)

x 以上の最小の整数を返します。

MIN(x1, x2, ...)最小値

() 内の最小の値を返します。

MAX(x1, x2, ...)最大値

() 内の最大の値を返します。

CLAMP(x, N, X)クランプ

x が最小値 N・最大値 X の範囲内である場合は x 、範囲外である場合は N 又は X を返します。

最小値は N 、最大値は X です。

CLAMP(x, N, X)MIN(MAX(x, N), X)

U2(x)符号なし 2 ビット整数

x⌋ と 22 - 1 のビット論理積を返します。x が符号なし 8 ビット整数である場合は、上位 6 ビットを 0 に設定した値を返します。

最小値は 0 、最大値は 3 です。

テーブル番号の選択などに使用しています。

U3(x)符号なし 3 ビット整数

x⌋ と 23 - 1 のビット論理積を返します。x が符号なし 8 ビット整数である場合は、上位 6 ビットを 0 に設定した値を返します。

最小値は 0 、最大値は 7 です。

Decay Rate の計算などに使用しています。

U4(x)符号なし 4 ビット整数

x⌋ と 24 - 1 のビット論理積を返します。x が符号なし 8 ビット整数である場合は、上位 6 ビットを 0 に設定した値を返します。

最小値は 0 、最大値は 15 です。

Attack Rate の計算などに使用しています。

U5(x)符号なし 5 ビット整数

x⌋ と 25 - 1 のビット論理積を返します。x が符号なし 8 ビット整数である場合は、上位 3 ビットを 0 に設定した値を返します。

最小値は 0 、最大値は 31 です。

ノイズクロックの計算などに使用しています。

U6(x)符号なし 6 ビット整数

x⌋ と 26 - 1 のビット論理積を返します。x が符号なし 8 ビット整数である場合は、上位 3 ビットを 0 に設定した値を返します。

最小値は 0 、最大値は 63 です。

揺れの大きさの計算などに使用しています。

U7(x)符号なし 7 ビット整数

x⌋ と 27 - 1 のビット論理積を返します。x が符号なし 8 ビット整数である場合は、上位 1 ビットを 0 に設定した値を返します。

最小値は 0 、最大値は 127 です。

音量やパンの計算などに使用しています。

U8(x)符号なし 8 ビット整数

x⌋ と 28 - 1 のビット論理積を返します。

最小値は 0 、最大値は 255 です。

xU8(x)16 進数
254.75254$FE
127.5127$7F
255 + 10$00
0 - 1255$FF

U16(x)符号なし 16 ビット整数

x⌋ と 216 - 1 のビット論理積を返します。

最小値は 0 、最大値は 65535 です。

S8(x)符号あり 8 ビット整数

x⌋ と 28 - 1 のビット論理積を返します。最上位ビットが 1 である場合は負数を表します。

最小値は -128 、最大値は 127 です。

エコーフィードバックの値や音程の計算などに使用しています。

LSL8(x, s)論理左シフト (符号なし 8 ビット整数)

x : シフトされる数値 ($00–$FF)
s : シフトする桁数 (0–7)

U8(U8(x) × 2s) を返します。

最小値は 0 、最大値は 255 です。

xsLSL8(x, s)16 進数
2550255$FF
2551254$FE
1272252$FC
150017128$80

LSR8(x, s) 論理右シフト (符号なし 8 ビット整数)

x : シフトされる数値 ($0000–$FFFF)
s : シフトする桁数 (0–15)

U8(U16(x) / 2s) を返します。

最小値は 0 、最大値は 255 です。

xsLSR8(x, s)16 進数
2550255$FF
2551127$7F
127231$1F
150017117$75

LSL16(x, s)論理左シフト (符号なし 16 ビット整数)

x : シフトされる数値 ($0000–$FFFF)
s : シフトする桁数 (0–15)

U16(U16(x) × 2s) を返します。

最小値は 0 、最大値は 65535 です。

LSR16(x, s) 論理右シフト (符号なし 16 ビット整数)

x : シフトされる数値 ($0000–$FFFF)
s : シフトする桁数 (0–15)

U16(U16(x) / 2s) を返します。

最小値は 0 、最大値は 65535 です。

H8(x)符号なし 16 ビット整数 の 上位 8 ビット

符号なし 16 ビット整数 x の 上位 8 ビットの値を返します。

最小値は 0 、最大値は 255 です。

H8(x)LSR16(x, 8)

L8(x)符号なし 16 ビット整数 の 下位 8 ビット

符号なし 16 ビット整数 x の 下位 8 ビットの値を返します。

最小値は 0 、最大値は 255 です。

L8(x)U8(x)

E8(x)符号あり 8 ビット 整数 (エクセス 128)

S8(U8(x) - 128) を返します。

最小値は -128 、最大値は 127 です。

PITCH(N) ピッチの値 (符号なし 16 ビット整数)

ノート番号が U8(N) である場合のピッチの値 (周波数倍率) を返します。

ピッチ計算はサウンドドライバ毎に異なります。

R16(A) APU RAM の値 (符号なし 16 ビット整数)

LSL16(APU RAM アドレス U16(A + 1) の値, 8)U16(APU RAM アドレス U16(A) の値) を返します。

アドレスが特殊なページの境界である場合を考慮していません。