I am doing a volume control for my wifi speaker. I need to process the raw PCM data byte array to adjust volume. But my code give me lots of noise. follow is my code:
for (int i = 0; i < split.length; i+=2) {
short audioSample = (short) (((split[i+1] & 0xff) << 8) | (split[i] & 0xff));
audioSample = (short) (audioSample * 1 * equal.vol);
split[i] = (byte) audioSample;
split[i+1] = (byte) (audioSample >> 8);
}
split is raw data byte array
My audio profile: 22.05K sample rate, 16 bits per sample
equal.vol? Are you sure the data is in little endian format? Are you sure 0 <=equal.vol<= 1?