Search code examples
c#naudio

How To pad Audio stream with silence


I have an ISampleProvider I want to pad with 10 seconds of silence, how would I achieve this in NAudio?

  var songDelayed = new AudioFileReader(filePath_1);

    //Delay "songDelayed" by 10 secs
    //What do I do here?

    myDirectSoundObj.Init(songDelayed);
    myDirectSoundObj.Play();

Solution

  • You can do this with OffsetSampleProvider

    var songDelayed = new AudioFileReader(filePath_1);
    
    
    var offset = new OffsetSampleProvider(songDelayed);
    
    offset.DelayBy = TimeSpan.FromSeconds(10);
    // or if you don't have latest NAudio source:
    // offset.DelayBySamples = songDelayed.WaveFormat.SampleRate * 
    //     songDelayed.WaveFormat.Channels * 10;
    
    
    myDirectSoundObj.Init(offset);
    myDirectSoundObj.Play();