コード例 #1
0
ファイル: SharpTest.cs プロジェクト: andruxa-smirnov/RTLSharp
        private unsafe void startButtonClick(object sender, EventArgs e)
        {
            rtlDevice                       = new Device(0);
            rtlDevice.Frequency             = frequency;
            rtlDevice.SamplesAvailable     += D_SamplesAvailable;
            mainSpectrumAnalyzer.Frequency  = rtlDevice.Frequency;
            mainSpectrumAnalyzer.SampleRate = rtlDevice.SampleRate;

            maxIqSamples = (int)(audioBufferInMs * rtlDevice.SampleRate / 1000);

            _fftStream          = new ComplexFifo(maxIqSamples);
            _fftStreamDecimator = new ComplexFifo(maxIqSamples);
            _fftStream.Open();
            _fftStreamDecimator.Open();

            decimator       = new Decimator(rtlDevice.SampleRate, (uint)decimatorRatio, (uint)fftBins);
            audioDecimator  = new InlineFloatDecimator(rtlDevice.SampleRate / decimatorRatio, (uint)decimatorRatio);
            audioSampleRate = (int)((rtlDevice.SampleRate / decimatorRatio) / decimatorRatio);
            audioBuffer     = DataBuffer.Create((audioBufferInMs * audioSampleRate / 1000), sizeof(float));
            audioPtr        = (float *)audioBuffer;
            fmLpf           = new FloatLPF(audioSampleRate, 22050, 127);
            _audioFifo      = new FloatFifo(16 * audioBufferInMs * audioSampleRate / 1000);
            _audioFifo.Open();
            _audioPlayer = new AudioPlayer(audioDeviceIdx, audioSampleRate, (uint)(audioBufferInMs * audioSampleRate / 1000), audioBufferNeeded);

            sFFTDecimator = new SFFT((int)(fftBins / audioDecimator.DecimationFactor));

            ifSpectrumAnalizer.Frequency  = rtlDevice.Frequency;
            ifSpectrumAnalizer.SampleRate = decimator.OutputSampleRate;
            decimator.SamplesAvailable   += Decimator_SamplesAvailable;
            rtlDevice.UseRtlAGC           = false;
            rtlDevice.UseTunerAGC         = false;
            rtlDevice.VGAGain             = vgaGain.Value = 3;
            rtlDevice.LNAGain             = lnaGain.Value = 7;
            rtlDevice.MixerGain           = mixerGain.Value = 3;
            rtlDevice.Start();
            dspHit     = true;
            _dspThread = new Thread(dspWork);
            _dspThread.Start();
            fftTimer.Enabled    = true;
            startButton.Enabled = false;
            stopButton.Enabled  = true;

            Console.WriteLine("Receiving Samples now.");
        }
コード例 #2
0
 public InlineFloatDecimator(long sampleRate, uint decimationFactor)
 {
     _lpf = new FloatLPF(sampleRate, sampleRate / (2 * decimationFactor), TAPS, ATTENUATION, decimationFactor);
     _decimationFactor = decimationFactor;
 }
コード例 #3
0
 public InlineFloatInterpolator(long sampleRate, uint interpolationFactor)
 {
     _lpf = new FloatLPF(sampleRate, (sampleRate * interpolationFactor) / 2, TAPS, ATTENUATION);
     _interpolationFactor = interpolationFactor;
 }