Как уже упоминалось, линейная интерполяция не дает наилучшего качества звука, но она проста и дешева.
Для каждого нового сэмпла, который вы создаете, просто усредните его со следующим, например,
short[] source = ...;
short[] result = new short[source.length * 2];
for(int i = 0; i < source.length; ++i) {
result[i * 2] = source[i];
result[i * 2 + 1] = (source[i] + source[i + 1]) / 2;
}
Вам определенно следует искать библиотеку, которая поможет вам работать с файлами WAV. Несмотря на то, что это простой формат, вам не нужно делать это самостоятельно, если есть код, который будет делать то, что вам нужно. Кстати, почему вы делаете это в первую очередь? Возможно, вы могли бы просто использовать sox или аналогичный инструмент для этого.