private void End() { if (waveIn != null) { waveIn.StopRecording(); waveIn.Dispose(); waveIn = null; var waveReader = new Mp3Reader { IsMp3FileReader = false }; if (waveReader.TryRead(memoryStream.GetBuffer(), out var fileInfo)) { var signal = new Signal("Microphone Signal"); signal.SamplingFrq = fileInfo.nSamplesPerSec; signal.StartDateTime = fileInfo.dateTime; for (int i = 0; i < fileInfo.nChannels; i++) { signal.channels.Add(new Channel(fileInfo.data.GetLength(0))); signal.channels[i].Source = signal.fileName; signal.channels[i].Name = fileInfo.channelNames[i] ?? ("Channel " + i); for (int j = 0; j < fileInfo.data.GetLength(0); j++) { signal.channels[i].values[j] = fileInfo.data[j, i]; } } signal.UpdateChannelsInfo(); MainWindow.Instance.ResetSignal(signal); } waveFileWriter.Dispose(); memoryStream.Close(); } }