/// <summary> /// Initializes a new instance of the <see cref="RIFFFileReader" /> class. /// </summary> /// <param name="fileName">Filename which points to a wave file.</param> /// <param name="useWordAlignment">whether to ensure word-alignment (defaults to false)</param> public RIFFFileReader(string fileName, bool useWordAlignment = false, bool closeBinaryFile = false) { if (fileName == null) { throw new ArgumentNullException("fileName"); } _useWordAlignment = useWordAlignment; _closeBinaryFile = closeBinaryFile; _binaryFile = new BinaryFile(fileName, BinaryFile.ByteOrder.BigEndian); var firstChunkId = new String(_binaryFile.ReadChars(4)); if (firstChunkId == "RIFF") { // read RIFF data size var chunkSize = _binaryFile.ReadInt32(); // read form-type (WAVE etc) var field = new string(_binaryFile.ReadChars(4)); Log.Verbose("Processing RIFF. Data size: {0}, field: {1}", chunkSize, field); _chunks = ReadChunks(_binaryFile); } else { // unrecognized file format, not a RIFF File _chunks = new List <RIFFFileChunk>(2); Log.Error("Unknown format (not RIFF). First chunk Id: {0}", firstChunkId); } Log.Verbose(GetRIFFFileChunkInformation(Chunks)); _binaryFile.Position = 0; }