Here's an example of how it might work. I've simplified the problem by limiting the delay to multiples of the sample period. For a 48kHz sample rate, the delay resolution is around 20us. This method is to first convert the delay to a number of samples and prepend it to the samples from the wave file. Second, the noise signal is generated of the same length and then it is added element wise to the first signal.
noiseLevel = input('Level of distortion: '); % between 0 and 1 - 0 means all signal
- 1 means all noise
delaySeconds = input('Delay in seconds: '); % in seconds
[y,fs,nbits] = wavread(filename);
% figure out how many samples to delay. Resolution is 1/fs.
delaySamples = round(delaySeconds * fs);
% signal length
signalLength = length(y) + delaySamples;
% generate noise samples
noiseSignal = gennoise(signalLength); % call your noise generation function.
% prepend zeros to the signal to delay.
delayedSignal = vertcat(zeros(delaySamples,1), y);
combinedSignal = noiseLevel*noiseSignal + (1-noiseLevel)*delayedSignal;