トピック
PCMSTREAMの再生にプチノイズが・・・
2そうだね
プレイ済み
返信[1]
親投稿
Oskar oskar_liebig
単純な PCMSTREAM SINDATA,RATE なら大丈夫そうですが、そうではなくて、動的に再生音を書き換えるってことですよね。 PCMSTREAMの再生音は、配列とは別の内部バッファ(FIFO)へある程度のまとまって転送されているようです。そのため、配列の再生位置をMILLISECで計って、その直後を書き換えても間に合わないのだと思います。 VSYNC 1のループでPCMPOSシステム変数を監視しておいて、PCMPOSの値が前回から変化したら、前回位置からPCMPOSの進んだ量(リングバッファなのでPCMPOSが戻る場合に注意)だけサンプルをRINGCOPYで転送するとよさそうです。 あと、書き換えから再生までのラグを短くしたいなら、もうちょっと工夫が必要です。 PCMSTREAM はあまり触っていないので的外れかもしれません。
3そうだね
プレイ済み
返信[2]
親投稿
Oskarさん、コメントありがとうございます。 ちょっと確かめてみたのですが、確かにデータを1つづつ送るのではなく、 まとめてガーッと転送するような感じなんですね。 仰る通りにMILLSECではなくPCMPOSの方を監視して、それに合わせたRINGCOPYをしてみたら無事、音が途切れずに再生されました! こういうリアルタイム処理はまだよく理解できていないのですが、色々勉強してみます。本当にありがとうございました!
1そうだね
プレイ済み