2013年04月04日

動画再生(8)

  PCM音声再生の話。


>> 設定チャネルをAとBの2つにする → PCMのサンプリングレートが落ちる事に相当

  じゃなかったです。

  ビットレートが落ちるのではなく、サンプリングデータの解像度が落ちるでした。


  現在3チャンネル使っているPCM音声再生を2チャンネルにして試しました。
  どうもサンプリングデータの解像度が落ちるのはそんなに問題にならないようです。

  2チャンネルだけで再生した場合でも6ビット程度の解像度が出ており、データの取り方ではかなりいい音になります。


  2チャンネルで再生した場合の1回の音声発声ルーチンは、

LD C,0A0H
LD B,08H
LD D,09H
↑あらかじめ設定しておく


LD A,XX :7
OUT (0A1H),A :11+1
OUT (C),D (or B):12+1
LD A,XX :7
OUT (0A1H),A :11+1

  と51クロックです。



  どっちかというとサンプリング周波数の方が問題のようです。

  サンプリング周波数を落とすと、当たり前ですが高音が汚くなります。
  8000Hz程度ならまだマシで、それ以下はうーんという感じです。


  さらに...

  動画再生をしながら、というか画面を表示しながらのPCM音声再生は、周波数が限定される事を忘れていました。

  P6の場合、画面描画中はCPUを停止しているため、その期間は音を出せなくなります。

  そのため、画面の1行を表示するたびに、1音を出す、というのが最高の周波数になります。


  算出すると、画面262行を1/60秒で描画しているので、60 × 262 = 15720Hz が最高のサンプリング周波数になります。
  2行ごとの場合は、7860Hz、3行ごとの場合は、5240Hz です。


====

  今の所の検討結果をまとめると、
 ・描画は、320×150(160×150)ドット。
 ・描画していない区間は、CRTKILL でCPUクロックを稼ぐ。
 ・PCM音声再生は2チャンネルで再生する。

  この場合...

 ・PCM音声 なし  :20FPS(垂直同期3回で1枚描画)
 ・PCM音声 15720Hz :12FPS(垂直同期5回で1枚描画)
 ・PCM音声 7860Hz :15FPS(垂直同期4回で1枚描画)
 ・PCM音声 5240Hz :15FPS(垂直同期4回で1枚描画)

  となります。

  2画面切り替えを行うため、垂直同期のn回分で1枚描画にする必要があります。
 (mk2以降の画面切り替えは、垂直同期のタイミングで行われるため)


  後はどれくらいで妥協するか...ですね。

posted by えすび at 22:24| Comment(2) | HW:動画再生 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
7860Hzでも5240Hzでも15FPSなら、7860Hz/15FPSが良さそうです。
8000Hz/8bitで電話並みの音質(ただし実際の電話はu-Lawでダイナミックレンジを拡大。
解除も可)ですから、それを大幅に下回ると...ですね。

追伸 南関東は大雨・暴風で大変なようですが、北関東はウソのように小雨・微風です
(7日午前3時現在)
Posted by かかっくん at 2013年04月07日 03:21
7860Hz →15FPSなんですが、それよりいくら音質を落としても20FPSに出来ない計算になります。
(計算上は800Hzぐらいになりますが、まともに聞こえない)。

ですので、現状は、

なし:20FPS
15720Hz:12FPS
7860Hz:15FPS

の3通りだけが実現の意味がありそうです。
Posted by えすび at 2013年04月07日 09:26
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。