public Modulator(Stream stream) { ModSrc = new ModulatorType(stream); ModDest = (GeneratorType)StreamHelperLe.ReadUInt16(stream); ModAmount = StreamHelperLe.ReadInt16(stream); ModAmtSrc = new ModulatorType(stream); ModTrans = (TransformType)StreamHelperLe.ReadUInt16(stream); }
void BuildSamples(Stream stream) { if ((BitsPerSample & 0x7) > 0) { throw new FileFormatException("WaveFile.BitsPerSample", BitsPerSample, "[multiple of 8]"); } var bytesPerSample = BitsPerSample >> 3; var sampleLength = Data.Length / bytesPerSample; Samples = new double[sampleLength]; switch (bytesPerSample) { case 1: for (int i = 0; i < sampleLength; i++) { Samples[i] = (double)stream.ReadByte() / 0x7F - 1.0; } break; case 2: for (int i = 0; i < sampleLength; i++) { Samples[i] = (double)StreamHelperLe.ReadInt16(stream) / 0x7FFF; } break; case 3: for (int i = 0; i < sampleLength; i++) { Samples[i] = (double)StreamHelperLe.ReadInt24(stream) / 0x7FFFFF; } break; case 4: for (int i = 0; i < sampleLength; i++) { Samples[i] = (double)StreamHelperLe.ReadInt32(stream) / 0x7FFFFFFF; } break; } if (stream.Position < stream.Length) { throw new FileFormatException("WaveFile.stream.Position", stream.Position, stream.Length); } }