public static BitArray Decompose(IDemodulator demodulator, WavFile wavFile) { var samples = wavFile.Data.ToShortArray(); samples = new Trimmer().Trim(samples); var hpFilter = new HighPassFilter( cutoffFrequency: demodulator.CarrierFrequency / 2.0, sampleRate: demodulator.SampleRate ); // samples = hpFilter.FilterSamples(samples); samples = new Normalizer().PeakNormalize(samples); // samples = new PhaseFixer().FixPhase(samples, (int)demodulator.SampleRate, 2); // var soundBytes = samples.ToByteArray(); var processedSound = new WavFile(wavFile.SampleRate, soundBytes); using (FileStream fs = new FileStream($"PROCESSED.wav", FileMode.Create)) { BinaryWriter bw = new BinaryWriter(fs); bw.Write(processedSound.ToBytes()); } // var waveDecomposer = new WaveDecomposer(demodulator); var dataSegments = waveDecomposer.FindDataSegments(samples); BitArray data = null; foreach (var segment in dataSegments) { var bits = demodulator.ReadBits(segment.DataSamples, segment.ZerosValue, segment.OnesValue, segment.BytesToRead); if (data == null) { data = new BitArray(bits); } else { data = data.MergeWith(bits); } } return(data); }
public WaveDecomposer(IDemodulator demodulator) { Demodulator = demodulator; }
public Demodulator(IDemodulator demodulator) { _demodulator = demodulator ?? throw new ArgumentNullException(nameof(demodulator)); }
public void Demodulator_PassedNullDemodulatorObject_ThrowsArgumentNullException() { IDemodulator nullDemodulator = null; Assert.Throws <ArgumentNullException>(() => new Demodulator(nullDemodulator)); }