2 つの 16 ビット PCM サンプルを短いバッファーに混合しています。
// This is our buffer for PCM audio data
mp3Buffer = new short[minBufferSize];
wavBuffer = new short[minBufferSize];
mixedBuffer = new short[minBufferSize];
これらのバッファに mp3 ファイルと wav ファイルの両方からのサンプルを入れています。wav ファイルは常にモノラルで、mp3 は常にステレオであることがわかりました。
「元の PCM データの 2 倍のサイズのバッファーを割り当て、元のバッファー内のすべてのサンプルに対して、新しいバッファーに 2 回入れる」と読みました。
short[] stereoWavBuffer = new short[minBufferSize];
int k = 1;
for (int j = 0; j < minBufferSize / 2; j += 2)
{
stereoWavBuffer[j] = wavBuffer[j];
stereoWavBuffer[k] = wavBuffer[k];
k += 2;
}
// TO DO - Add the 2 buffers together
for (int i = 0; i < minBufferSize; i++){
mixedBuffer[i] = (short)(mp3Buffer[i] + stereoWavBuffer[i]);
}
track.write(mixedBuffer, 0, minBufferSize);
}
どうすればこれを達成できますか? これを試してみましたが、wav オーディオは通常の速度になりましたが、シマリスのように聞こえます。