JavaでXYオシロスコープを作成しようとしていますが、行き詰まりました。jFlacのすべてのドキュメント、.flacオーディオファイルのデコードに使用しているライブラリ、および無料のロスレスオーディオコーデックのドキュメントをここで読みました。私が抱えている問題の答えが見つからないようです。次の点を考慮してください。
public void processPCM(ByteData pcm) {
byte[] temp = pcm.getData();
line.write(temp, 0, pcm.getLen());
leftAndRight = new int[pcm.getData().length];
for(int i = 0; i < temp.length; i+=2){
leftAndRight[i/2] = (temp[i + 1]<<8) + (temp[i] & 0xff);
}
}
これは、私のファイルのサンプルデータがSourceDataLineに入れられ、再生される場所です。データを行に書き込んだ後、左と右のオーディオをそれぞれ別々の整数配列変数x[]とy[]に変換したいと思います。
これは、私が使用しているファイルのStreamInfoです。
PCM_SIGNED 44100.0 Hz、16ビット、ステレオ、4バイト/フレーム、リトルエンディアン
上記のコードから、pcm.getLen()は16384の値を返し、pcm.getData()は長さ90112のバイト配列を返します。私が間違っていない場合は、このバイト配列のデータを分離する必要があります。からの左チャネルと右チャネル、そして整数配列に変換します。これは私が達成する方法を理解していない部分です。
編集:上記のコードを、バイト配列を整数配列に変換する方法だと思うものに変更しましたが、左右のチャネルがどのように配置されているかはまだわかりません。