Well, this seems to work pretty good, judging from what I hear and looking at Cool Edit spectrographs:
% MATLAB
source = wavread('udial.wav');
spectrum = fft(source);
% length means number of samples
new_length = length(source)*480/441;
padding = round((new_length - length(spectrum))/2);
% ye mägygk:
new_spectrum = fftshift([ zeros(padding,2); fftshift(spectrum); zeros(padding,2) ]);
% there are some non-zero imaginary components which we have to eliminate
resampled = real(ifft(new_spectrum));
wavplay(source,44100)
wavplay(resampled,48000)
wavwrite(resampled,48000,16,'udial_resampled.wav');
The above only works for stereo samples and only does 44.1kHz to 48kHz but should be easily modifiable. For optimal results the input file should have an even number of samples but you could build something that pads in an extra zero sample at the end.
Is udial.wav supposed to have so much high frequency content? I guess that is what trips up bad resamplers. I can hear parts of it and it is damn annoying. I didn't think I could hear that high. My soundcard is a Terratec Aureon Sky (flashed to Prodigy) which shouldn't resample.