public Stream RetrieveWaveStream(int start, int end)
        {
            var data = this.RetrieveRawData(start, end);

            var wav = new WaveFile
            {
                Channels      = this.Channels,
                SampleRate    = this.SampleRate,
                BitsPerSample = this.BitsPerSample,
                Data          = data
            };

            var header = wav.BuildHeader();

            var stream = new MemoryStream(header.Length + data.Length);

            try
            {
                stream.Write(header, 0, header.Length);
                stream.Write(data, 0, data.Length);

                stream.Seek(0, SeekOrigin.Begin);
            }
            catch
            {
                stream.Dispose();
                throw;
            }

            return(stream);
        }
        public Stream RetrieveWaveStream(int start, int end)
        {
            var data = this.RetrieveRawData(start, end);

            var wav = new WaveFile
            {
                Channels = this.Channels,
                SampleRate = this.SampleRate,
                BitsPerSample = this.BitsPerSample,
                Data = data
            };

            var header = wav.BuildHeader();

            var stream = new MemoryStream(header.Length + data.Length);

            try
            {
                stream.Write(header, 0, header.Length);
                stream.Write(data, 0, data.Length);

                stream.Seek(0, SeekOrigin.Begin);
            }
            catch
            {
                stream.Dispose();
                throw;
            }

            return stream;
        }