title: NAudio Volume Changing
body: <pre><code>class Sound
  {
  
      private NAudio.Wave.BlockAlignReductionStream stream = null;
      private NAudio.Wave.DirectSoundOut output = null;
      private string fileName;
  
      public Sound(string fileName)
      {
  
          this.fileName = fileName;
  
      }
      public void PlaySound()
      {
  
          if(fileName.EndsWith(".mp3"))
          {
          NAudio.Wave.WaveStream pcm = NAudio.Wave.WaveFormatConversionStream.CreatePcmStream(new NAudio.Wave.Mp3FileReader(fileName));
          stream = new NAudio.Wave.BlockAlignReductionStream(pcm);
  
          }
          else if (fileName.EndsWith(".wav"))
          {
              NAudio.Wave.WaveStream pcm = new NAudio.Wave.WaveChannel32(new NAudio.Wave.WaveFileReader(fileName));
              stream = new NAudio.Wave.BlockAlignReductionStream(pcm);
          }
          else throw new InvalidOperationException("Not a correct audio file type.");
  
          output = new NAudio.Wave.DirectSoundOut();
          output.Init(stream);
          output.Play();
          output.Volume = 0.5f;
      }
      public void Volume(float vol)
      {
  
      }
      public void PausePlay()
      {
          if (output != null)
          {
              if (output.PlaybackState == NAudio.Wave.PlaybackState.Playing) output.Pause();
              else if (output.PlaybackState == NAudio.Wave.PlaybackState.Paused) output.Play();
          }
      }
      public void Pause()
      {
          if (output != null)
          {
              if (output.PlaybackState == NAudio.Wave.PlaybackState.Playing) output.Pause();
          }
      }
      public void Play()
      {
          if (output != null)
          {
              if (output.PlaybackState == NAudio.Wave.PlaybackState.Paused) output.Play();
          }
      }
      public void DisposeWave()
      {
          if (output != null)
          {
              if (output.PlaybackState == NAudio.Wave.PlaybackState.Playing) output.Stop();
              output.Dispose();
              output = null;
          }
          if (stream != null)
          {
              stream.Dispose();
              stream = null;
          }
      }
      public bool Over()
      {
          if (stream.Position == stream.Length)
              return true;
          return false;
      }
      public void Loop()
      {
  
          if (Over())
          {
              stream.Position = 0;
              output.Play();
  
          }
  
      }
  </code></pre>
  
  <p>I really don't know what's the problem here, I'd be glad for a help, I'm trying to change the volume of the output audio.
  When I compile this code I'm getting an error in the <code>output.volume = 0.5</code>. The error is:</p>
  
  <blockquote>
    <p>Setting volume not supported on DirectSoundOut, adjust the volume on your WaveProvider instead.</p>
  </blockquote>