Как я понимаю, используемый мной массив байтов аудио (PCM Stereo 16bit) составляет 4 байта на семпл. Я заметил, что когда вы инвертируете значение Byte (т.е. от -128 до 128 и от 128 до -128), оно не помещает звук в канал объемного звучания. Звучит одинаково (фронтальный звук). Я экспериментировал с инвертированием каждого второго байта (каждые 2 байта), а не всех байтов, и получил что-то вроде объемного звука, но он очень грязный и прерывистый. Как именно я манипулирую обычным 16-битным стереофоническим WAV-файлом PCM (в форме байтового массива), чтобы звук помещался в каналы объемного звучания?
Мой код:
public byte[] putInSurround(byte[] audio) {
for (int i = 0; i < audio.length; i += 4) {
int i0 = audio[i + 0];
int i1 = audio[i + 1];
int i2 = audio[i + 2];
int i3 = audio[i + 3];
if (0 > audio[i + 0]) {
i0 = Math.abs(audio[i + 0]);
}
if (0 < audio[i + 0]) {
i0 = 0 - audio[i + 0];
}
if (0 > audio[i + 1]) {
i1 = Math.abs(audio[i + 1]);
}
if (0 < audio[i + 1]) {
i1 = 0 - audio[i + 1];
}
if (0 > audio[i + 2]) {
i2 = Math.abs(audio[i + 2]);
}
if (0 < audio[i + 2]) {
i2 = 0 - audio[i + 2];
}
if (0 > audio[i + 3]) {
i3 = Math.abs(audio[i + 3]);
}
if (0 < audio[i + 3]) {
i3 = 0 - audio[i + 3];
}
audio[i + 0] = (byte) i0;
//audio[i + 1] = (byte) i1; <-- Commented Out For Every Other Byte.
//audio[i + 2] = (byte) i2; <-- Commented Out For Every Other Byte.
audio[i + 3] = (byte) i3;
}
return audio;
}