Beispiel #1
0
 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);
 }
Beispiel #2
0
        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);
            }
        }