AudioFileReader just chains together a bunch of IWaveProviders and ISampleProviders and uses Mp3FileReader under the covers.
In the very latest NAudio code I added a WaveVolumeProvider16 for cases when you want to change the volume without going to floating point.
Also, although IWavePlayer.Volume is obsolete (since not all output models will support it), if you are using WaveOut then you can set the Volume property on that.