private void ParseAtracData(Stream Stream)
{
var RiffWaveReader = new RiffWaveReader();
RiffWaveReader.HandleChunk += (ChunkType, ChunkStream) =>
{
switch (ChunkType)
{
case "fmt ":
Format = ChunkStream.ReadStructPartially<At3FormatStruct>();
break;
case "fact":
Fact = ChunkStream.ReadStructPartially<FactStruct>();
break;
case "smpl":
// Loop info
Smpl = ChunkStream.ReadStructPartially<SmplStruct>();
LoopInfoList = ChunkStream.ReadStructVector<LoopInfoStruct>(Smpl.LoopCount);
Console.WriteLine("AT3 smpl: {0}", Smpl.ToStringDefault());
foreach (var LoopInfo in LoopInfoList) Console.WriteLine("Loop: {0}", LoopInfo.ToStringDefault());
break;
case "data":
this.DataStream = ChunkStream;
break;
default:
throw (new NotImplementedException(String.Format("Can't handle chunk '{0}'", ChunkType)));
}
};
RiffWaveReader.Parse(Stream);
}