public static HydraPhdr Load(IReadable reader) { HydraPhdr phdr = new HydraPhdr(); phdr.PresetName = reader.Read8BitStringLength(20); phdr.Preset = reader.ReadUInt16LE(); phdr.Bank = reader.ReadUInt16LE(); phdr.PresetBagNdx = reader.ReadUInt16LE(); phdr.Library = reader.ReadUInt32LE(); phdr.Genre = reader.ReadUInt32LE(); phdr.Morphology = reader.ReadUInt32LE(); return(phdr); }
public static HydraShdr Load(IReadable reader) { var shdr = new HydraShdr(); shdr.SampleName = reader.Read8BitStringLength(20); shdr.Start = reader.ReadUInt32LE(); shdr.End = reader.ReadUInt32LE(); shdr.StartLoop = reader.ReadUInt32LE(); shdr.EndLoop = reader.ReadUInt32LE(); shdr.SampleRate = reader.ReadUInt32LE(); shdr.OriginalPitch = (byte)reader.ReadByte(); shdr.PitchCorrection = reader.ReadSignedByte(); shdr.SampleLink = reader.ReadUInt16LE(); shdr.SampleType = reader.ReadUInt16LE(); return(shdr); }
public static bool Load(RiffChunk parent, RiffChunk chunk, IReadable stream) { if (parent != null && RiffChunk.HeaderSize > parent.Size) { return(false); } if (stream.Position + HeaderSize >= stream.Length) { return(false); } chunk.Id = stream.Read8BitStringLength(4); if (chunk.Id[0] <= ' ' || chunk.Id[0] >= 'z') { return(false); } chunk.Size = stream.ReadUInt32LE(); if (parent != null && HeaderSize + chunk.Size > parent.Size) { return(false); } if (parent != null) { parent.Size -= HeaderSize + chunk.Size; } var isRiff = chunk.Id == "RIFF"; var isList = chunk.Id == "LIST"; if (isRiff && parent != null) { // not allowed return(false); } if (!isRiff && !isList) { // custom type without sub type return(true); } // for lists unwrap the list type chunk.Id = stream.Read8BitStringLength(4); if (chunk.Id[0] <= ' ' || chunk.Id[0] >= 'z') { return(false); } chunk.Size -= 4; return(true); }