As others have said, that's wrong. I'll try to illustrate (and I'm sure local experts will point out if some of that is wrong

). We start with 1 kHz tone at 8 kHz sampling rate and 8 bits (all generated files are in the attachment):
Code:
sox -r8k -c1 -n -b8 "01_sin.8_8.wav" synth 5 sin 1k norm -3
View attachment 220482
The upsampling is done by inserting zero samples between the existing samples, then filtering the images created by this operation and finally applying a gain to compensate. If we only insert zero samples, we get images in the spectrum:
Code:
sox "01_sin.8_8.wav" -r16k "02_sin.8_16.upsample.wav" upsample 2
View attachment 220484
When we filter out the images and apply the gain, then the zero samples
magically mathematically pop up into the expected places:
Code:
sox "02_sin.8_16.upsample.wav" "03_sin.8_16.lpf.wav" sinc -t 400 -3800 vol 2
View attachment 220485
What you described is zero-order hold interpolation. It could work, I think, but it is more complicated then what was described above. To show the problem, we start with white noise with 3 kHz bandwidth, again at 8 kHz sampling rate and 8 bits:
Code:
sox -r8k -c1 -n -b8 "04_noise.8_8.wav" synth 30 white norm -9 sinc -t 400 -2900
View attachment 220491
If we only insert zero samples, we get images (same as earlier):
Code:
sox "04_noise.8_8.wav" -r16k "05_noise.8_16.upsample.wav" upsample 2
View attachment 220492
If we filter out the images and apply gain, we'll get the original signal. But if we do zero-order hold instead of zero samples then this happens:
Code:
No sox command this time :( If it is possible to do in sox, then I don't know how
View attachment 220493
We could filter-out the images, but then we are left with this sloping spectrum when the original was flat. From what I understand, we could apply some filter to counteract this effect. So in the end we have this filter vs a simple gain in case of zero samples.