The output from your doubling algorithm is 0, 1, 2, 1, 2, 3, 4, 3, 4, 5, 0, 5
.
A simpler (and correct) way of doing the doubling would be:
for (int i = 0; i < monoByteArrayLength; i += 2) {
stereoGeneratedSnd[i*2+0] = generatedSnd[i];
stereoGeneratedSnd[i*2+1] = generatedSnd[i+1];
stereoGeneratedSnd[i*2+2] = generatedSnd[i];
stereoGeneratedSnd[i*2+3] = generatedSnd[i+1];
}
Output: 0, 1, 0, 1, 2, 3, 2, 3, 4, 5, 4, 5