コード例 #1
0
 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;
 }