case 2:
wave2.set_info(2, 16, wave1.sample_rate());
for (size_t i = 0; i < wave1.num_units() * wave1.num_channels(); i += 2)
{
int left = wave1.data_8bit(i);
int right = wave1.data_8bit(i + 1);
assert(0 <= left && left <= 255);
assert(0 <= right && right <= 255);
left = linear_interpolation(left, 0, 255, -32768, 32767);
right = linear_interpolation(right, 0, 255, -32768, 32767);
assert(-32768 <= left && left <= 32767);
assert(-32768 <= right && right <= 32767);
wave2.push_16bit(uint16_t(left));
wave2.push_16bit(uint16_t(right));
}
break;
default:
assert(0);
return false;
}

wave2.update_info();
return true;
}