APU > 音声ブロックフォーマット

32KHz でサンプリングされた音は、BRR (ビット・レート・リダクション) の 処理をかけられ、16 ビットから 4 ビットにデータ圧縮されます。 4 ビットのデータは 16 個にまとめられ RF レジスタと共に、 9 byte で 1 ブロックを形成します。

D7 D6 D5 D4 D3 D2 D1 D0
RF 粒度 フィルター
指定
Loop
on/off
END
Da0 Da0 H Da0 L
Db0 Db0 H Db0 L
Da1 Da1 H Da1 L
Db1 Db1 H Db1 L
Da2 Da2 H Da2 L
Db2 Db2 H Db2 L
Da3 Da3 H Da3 L
Db3 Db3 H Db3 L

RF

D7 ~ D2 は、BRR に関する情報です。 D1=1 のときはループありの Source であることを示し、 D0=1 のとき、ブロックがデータの最後のブロックであることを示します。

粒度は、そのブロックの量子化レベルを指す (0 ~ 12 の値)。 ここに大きい値を指定すると、BRR の各 4bit エントリの振幅値を 小さい値にシフトする。

BRRニブル (BRRの各4bitのエントリ) は、-8 から 7 の範囲で値を取る。

粒度の値 範囲 刻み
00 -00008 ~ 00007 0001
01 -00016 ~ 00014 0002
02 -00032 ~ 00028 0004
03 -00064 ~ 00056 0008
04 -00128 ~ 00112 0016
05 -00256 ~ 00224 0032
06 -00512 ~ 00448 0064
07 -01024 ~ 00896 0128
08 -02048 ~ 01792 0256
09 -04096 ~ 03584 0512
10 -08192 ~ 07168 1024
11 -16384 ~ 14336 2048
12 -32768 ~ 28672 4096

SPC は 16ビットの波形を使う。 32K の領域があり、上記の方法により、58,240 サンプル分を入れることができる。 これは、14.4 KHz の 4 秒分に相当する。 カートリッジには 24 MBits の領域がある。 ここには最大 550 万サンプルを入れることができる。 これは、モノラルの CD 音質で 6.5 分 分に相当する。

デコードアルゴリズム

f : フィルター指定値 r : 粒度 n : ブロック内の 4 Bit のデータ s : デコードされた PCM サンプル (^ は、何乗かを表す)

  • If f == 0, s = 2 ^ r * n.
  • If f == 1, s = 2 ^ r * n + (15/16) * s′.
  • If f == 2, s = 2 ^ r * n + (61/32) * s′ - (15/16) * s″.
  • If f == 3, s = 2 ^ r * n + (115/64) * s′ - (13/16) * s″.

s′ は最後の出力値を、s" は、さらに 1 つ前の出力値を指す。

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2017年02月20日 18:29