Пример #1
0
        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);
        }
Пример #2
0
 public WaveDecomposer(IDemodulator demodulator)
 {
     Demodulator = demodulator;
 }
Пример #3
0
 public Demodulator(IDemodulator demodulator)
 {
     _demodulator = demodulator ?? throw new ArgumentNullException(nameof(demodulator));
 }
Пример #4
0
        public void Demodulator_PassedNullDemodulatorObject_ThrowsArgumentNullException()
        {
            IDemodulator nullDemodulator = null;

            Assert.Throws <ArgumentNullException>(() => new Demodulator(nullDemodulator));
        }