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

D7D6D5D4D3D2D1D0
RF粒度フィルター
指定
Loop
on/off
END
Da0Da0 HDa0 L
Db0Db0 HDb0 L
Da1Da1 HDa1 L
Db1Db1 HDb1 L
Da2Da2 HDa2 L
Db2Db2 HDb2 L
Da3Da3 HDa3 L
Db3Db3 HDb3 L

RF

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

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

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

粒度の値範囲刻み
00-00008 〜 000070001
01-00016 〜 000140002
02-00032 〜 000280004
03-00064 〜 000560008
04-00128 〜 001120016
05-00256 〜 002240032
06-00512 〜 004480064
07-01024 〜 008960128
08-02048 〜 017920256
09-04096 〜 035840512
10-08192 〜 071681024
11-16384 〜 143362048
12-32768 〜 286724096

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 つ前の出力値を指す。


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-10-27 (日) 15:52:31 (2889d)