public WaveChannel32(WaveStream sourceStream, float volume, float pan) { this.PadWithZeroes = true; ISampleChunkConverter[] array = new ISampleChunkConverter[] { new Mono8SampleChunkConverter(), new Stereo8SampleChunkConverter(), new Mono16SampleChunkConverter(), new Stereo16SampleChunkConverter(), new Mono24SampleChunkConverter(), new Stereo24SampleChunkConverter(), new MonoFloatSampleChunkConverter(), new StereoFloatSampleChunkConverter() }; for (int i = 0; i < array.Length; i++) { ISampleChunkConverter sampleChunkConverter = array[i]; if (sampleChunkConverter.Supports(sourceStream.WaveFormat)) { this.sampleProvider = sampleChunkConverter; break; } } if (this.sampleProvider == null) { throw new ArgumentException("Unsupported sourceStream format"); } this.waveFormat = WaveFormat.CreateIeeeFloatWaveFormat(sourceStream.WaveFormat.SampleRate, 2); this.destBytesPerSample = 8; this.sourceStream = sourceStream; this.volume = volume; this.pan = pan; this.sourceBytesPerSample = sourceStream.WaveFormat.Channels * sourceStream.WaveFormat.BitsPerSample / 8; this.length = this.SourceToDest(sourceStream.Length); this.position = 0L; }