public static void FromStream(Stream source, MetaDataIO meta, ReadTagParams readTagParams) { string str; byte[] data = new byte[256]; // Manufacturer readInt32(source, meta, "sample.manufacturer", data, readTagParams.ReadAllMetaFrames); // Product readInt32(source, meta, "sample.product", data, readTagParams.ReadAllMetaFrames); // Period readInt32(source, meta, "sample.period", data, readTagParams.ReadAllMetaFrames); // MIDI unity note readInt32(source, meta, "sample.MIDIUnityNote", data, readTagParams.ReadAllMetaFrames); // MIDI pitch fraction readInt32(source, meta, "sample.MIDIPitchFraction", data, readTagParams.ReadAllMetaFrames); // SMPTE format readInt32(source, meta, "sample.SMPTEFormat", data, readTagParams.ReadAllMetaFrames); // SMPTE offsets source.Read(data, 0, 1); sbyte sByteData = StreamUtils.DecodeSignedByte(data); meta.SetMetaField("sample.SMPTEOffset.Hours", sByteData.ToString(), readTagParams.ReadAllMetaFrames); source.Read(data, 0, 1); byte byteData = StreamUtils.DecodeUByte(data); meta.SetMetaField("sample.SMPTEOffset.Minutes", byteData.ToString(), readTagParams.ReadAllMetaFrames); source.Read(data, 0, 1); byteData = StreamUtils.DecodeUByte(data); meta.SetMetaField("sample.SMPTEOffset.Seconds", byteData.ToString(), readTagParams.ReadAllMetaFrames); source.Read(data, 0, 1); byteData = StreamUtils.DecodeUByte(data); meta.SetMetaField("sample.SMPTEOffset.Frames", byteData.ToString(), readTagParams.ReadAllMetaFrames); // Num sample loops int numSampleLoops = readInt32(source, meta, "sample.NumSampleLoops", data, readTagParams.ReadAllMetaFrames); // Sample loops size (not useful here) source.Seek(4, SeekOrigin.Current); for (int i = 0; i < numSampleLoops; i++) { // Cue point ID readInt32(source, meta, "sample.SampleLoop[" + i + "].CuePointId", data, readTagParams.ReadAllMetaFrames); // Type readInt32(source, meta, "sample.SampleLoop[" + i + "].Type", data, readTagParams.ReadAllMetaFrames); // Start readInt32(source, meta, "sample.SampleLoop[" + i + "].Start", data, readTagParams.ReadAllMetaFrames); // End readInt32(source, meta, "sample.SampleLoop[" + i + "].End", data, readTagParams.ReadAllMetaFrames); // Fraction readInt32(source, meta, "sample.SampleLoop[" + i + "].Fraction", data, readTagParams.ReadAllMetaFrames); // Play count readInt32(source, meta, "sample.SampleLoop[" + i + "].PlayCount", data, readTagParams.ReadAllMetaFrames); } }