ここstackoverflow.comで、実際にサウンドを再生するのに役立つ素晴らしい例を見つけました。すべて順調に進んでいますが、PCM 生成で何が起こるか知りたいです。コードは次のとおりです。
int idx = 0;
for (final double dVal : sample) {
final short val = (short) ((dVal * 32767));
generatedSnd[idx++] = (byte) (val & 0x00ff);
generatedSnd[idx++] = (byte) ((val & 0xff00) >>> 8);
}
ここで、sample は、この場合に必要なすべてのパラメーター (周波数、ヘルツなど) を使用して計算されたサインを保持する double 配列であり、generatedSnd はバイト配列です。私が知っていることはすべて、 val & 0xff が int をバイトに変換するということですが、ここで正確に何が行われるのでしょうか? なぜシフト>>> 8があるのですか?