この再生は、CD-ROMからの再生のみとなり、この読み込みには、
STMライブラリが必要になります。
GFSライブラリでは、サブヘッダの情報を
取得することができないからです。
この再生例は、PCMライブラリの
サンプルプログラムに含まれていますので、参照ください(SMPPCM2)。
ADPCMのデータは再生する際にも、まず予測値を計算し、データ補正を しなければならないため、1サンプルのデータ復号にはPCMデータよりも 時間がかかります。
このデコードの作業をハードウェアで持っているものもありますが、
セガサターンの場合、そういうチップは搭載していませんので全てソフトで復号
します。
この為、セガサターンにおいてはADPCMの再生は非常に負荷のかかる仕事であると
お考えください。
CD-ROM XAでは、データ圧縮の条件によって、ADPCMレベルをBとCの2つ設け
ています。
レベル B → サンプル周波数 37.8kHz 4bit FMレベルの音質 レベル C → サンプル周波数 18.9kHz 4bit AMレベルの音質
上記はそれぞれ、STEREO/MONOのモードに分かれます。
これらの情報は、ファイルに付属させるものではなく、CD-ROM XAの規格で
あるサブヘッダ部分のサブモードに記録されます(Mode2 Form2)。
そのため、
再生にはこのサブヘッダ部分を参照してどのレベル(BかC)でどのモード
(STEREOかMONO)であるかの情報を取得する必要があります。
SEGA提供のライブラリでは、この情報取得作業をSTMライブラリで行うことが
できます。
弊社提供のADPCMエンコーダーで圧縮する。
VCDスクリプトファイルに作成したデータを記述します。
ただし CD-XA はMODE2のFORM2でしか使用できないので注意が必要です。
(例)インターリーブしない場合(37.8KHz,Mono)
File SAMPLE1.XA;1 FileSource "SAMPLE1.ADP" RealTime DataType FORM2 SourceType MONO_B CodingInformation 0 EndFileSource EndFile
ビルド後のディスクイメージ上のファイルを再生する形になります。
詳しくはSGLのドキュメント「SGL¥DOC¥ADPCM.TXT」を参照してください。
が販売している「AudioStack」というツールで圧縮してデータを作成します。
計算式 -oct FNS=(2 ×1024×Fs)/44.1-1024 octの値 5.5125KHz → -3 11.0250KHz → -2 22.0500KHz → -1 44.1000KHz → 0 88.2000KHz → 1 例えばレートが”18.9KHz”の場合ですと OCT値は -2 となり、FNSの値は -(-2) FNS = (2 ×1024×18.9)/44.1-1024 = (4 ×1024×18.9)/44.1-1024 = 731.4285714
となりFNS設定は2DB、2DCのどちらでも誤差が生じる事になります。
これを回避するにはデータの最後に無音データを追加して、誤差の影響を
受けないようにします。
データサイズはリングバッファ1つに相当する
1000サンプル分の約0.21秒程度を追加しておけば大丈夫でしょう。