Exemplo n.º 1
0
        public FFTPicker(SystemPanel _owner, BinaryReader src) : base(_owner, src)
        {
            blockSize = src.ReadInt32();
            fftWindow = (FFTProcessor.WindowType)src.ReadInt32();
            f         = src.ReadDouble();

            init();
        }
Exemplo n.º 2
0
        public FFTPicker(int _blockSize) : base()
        {
            blockSize = _blockSize;
            f         = 1000;
            fftWindow = FFTProcessor.WindowType.Hann;

            init();
        }
Exemplo n.º 3
0
        public DataFFT(SystemPanel _owner, BinaryReader src) : base(_owner, src)
        {
            blockSize = src.ReadInt32();
            fftWindow = (FFTProcessor.WindowType)src.ReadInt32();
            mode      = (FFTOutMode)src.ReadInt32();
            normalize = src.ReadBoolean();

            init();
        }
Exemplo n.º 4
0
        public DataFFT() : base()
        {
            blockSize = 512;
            fftWindow = FFTProcessor.WindowType.Hann;
            normalize = false;
            mode      = FFTOutMode.Sig;

            init();
        }
Exemplo n.º 5
0
        public Chromagram() : base()
        {
            blockSize = 4096;
            fA        = 220;
            fMax      = 220 * 16;
            fftWindow = FFTProcessor.WindowType.Hann;

            init();
        }
Exemplo n.º 6
0
        public Chromagram(SystemPanel _owner, BinaryReader src) : base(_owner, src)
        {
            blockSize = src.ReadInt32();
            fftWindow = (FFTProcessor.WindowType)src.ReadInt32();
            fA        = src.ReadDouble();
            fMax      = src.ReadDouble();
            normalize = src.ReadBoolean();

            init();
        }
Exemplo n.º 7
0
        public MEL() : base()
        {
            blockSize = 512;
            fA        = 300;
            fMax      = 3500;
            coeffs    = 26;
            fftWindow = FFTProcessor.WindowType.Hann;

            init();
        }
Exemplo n.º 8
0
 private void ClWin_choiceStateChanged(object sender, EventArgs e)
 {
     fftWindow = (FFTProcessor.WindowType)clWin.selectedItem;
 }
        public void initSpectrumAnalyzer(SpectrumAnalyzer _spectrumAnalyzer, int _channels, int _FIFOdepth)
        {
            inputs = new FIFO[_channels];
            for (int i = 0; i < _channels; i++)
            {
                inputs[i] = new FIFO(_FIFOdepth);
            }
            lines        = new SpectrumAnalyzerLine[_channels];
            inputsActive = new Boolean[_channels];
            inputData    = new double[_channels][];
            for (int i = 0; i < _channels; i++)
            {
                lines[i] = new SpectrumAnalyzerLine(spectrumAnalyzerScreen);
                switch (i % 4)
                {
                case 0: lines[i].color = Color.Red; break;

                case 1: lines[1].color = Color.Green; break;

                case 2: lines[2].color = Color.Cyan; break;

                case 3: lines[3].color = Color.Magenta; break;
                }
            }
            FIFOdepth        = _FIFOdepth;
            spectrumAnalyzer = _spectrumAnalyzer;
            timer.Interval   = 100; // ms
            timer.Tick      += Timer_Tick;

            _blockSize  = 4096;
            _windowType = FFTProcessor.WindowType.Hann;
            for (int i = 0; i < _channels; i++)
            {
                lines[i].acf = FFTProcessor.windowAmplitudeCorrectionFactorsdB[(int)_windowType];
            }

            fftProcessor = new FFTProcessor(_blockSize, spectrumAnalyzer.owner.sampleRate, _windowType);

            fftBlockSizes = new List <int>();
            for (int i = 64; i <= 8192; i *= 2)
            {
                SpectrumAnalyzerBlockSize.Items.Add(String.Format("{0} --> {1:f1}ms",
                                                                  i, 1000.0 * i / spectrumAnalyzer.owner.sampleRate));
                fftBlockSizes.Add(i);
            }
            SpectrumAnalyzerBlockSize.SelectedIndex         = fftBlockSizes.IndexOf(_blockSize);
            SpectrumAnalyzerBlockSize.SelectedIndexChanged += SpectrumAnalyzerBlockSize_SelectedIndexChanged;

            string[] windows = Enum.GetNames(typeof(FFTProcessor.WindowType));
            fftWindows = new List <FFTProcessor.WindowType>();
            for (int i = 0; i < windows.Length; i++)
            {
                fftWindows.Add((FFTProcessor.WindowType)i);
                SpectrumAnalyzerWindow.Items.Add(windows[i]);
            }
            SpectrumAnalyzerWindow.SelectedIndex         = fftWindows.IndexOf(_windowType);
            SpectrumAnalyzerWindow.SelectedIndexChanged += SpectrumAnalyzerWindow_SelectedIndexChanged;

            spectrumAnalyzerScreen.initSpectrumAnalyzerScreen(this, _channels, lines);

            if (spectrumAnalyzerScreen.gridF.logScale)
            {
                SpectrumAnalyzerFLog.Checked = true;
            }
            SpectrumAnalyzerFLog.Click += SpectrumAnalyzerFLog_Click;

            SpectrumAnalyzerFMin.Value = Convert.ToDecimal(spectrumAnalyzerScreen.gridF.min);
            SpectrumAnalyzerFMax.Value = Convert.ToDecimal(spectrumAnalyzerScreen.gridF.max);
            SpectrumAnalyzerYMin.Value = Convert.ToDecimal(spectrumAnalyzerScreen.gridY.min);
            SpectrumAnalyzerYMax.Value = Convert.ToDecimal(spectrumAnalyzerScreen.gridY.max);

            SpectrumAnalyzerFMin.ValueChanged += SpectrumAnalyzerFMin_ValueChanged;
            SpectrumAnalyzerFMax.ValueChanged += SpectrumAnalyzerFMax_ValueChanged;
            SpectrumAnalyzerYMin.ValueChanged += SpectrumAnalyzerYMin_ValueChanged;
            SpectrumAnalyzerYMax.ValueChanged += SpectrumAnalyzerYMax_ValueChanged;

            SpectrumAnalyzerAutoScale.Click += SpectrumAnalyzerAutoScale_Click;

            SpectrumAnalyzerChannelOnA.Checked = lines[0].show;
            SpectrumAnalyzerChannelOnB.Checked = lines[1].show;
            SpectrumAnalyzerChannelOnC.Checked = lines[2].show;
            SpectrumAnalyzerChannelOnD.Checked = lines[3].show;

            SpectrumAnalyzerChannelOnA.Click += SpectrumAnalyzerChannelOnA_Click;
            SpectrumAnalyzerChannelOnB.Click += SpectrumAnalyzerChannelOnB_Click;
            SpectrumAnalyzerChannelOnC.Click += SpectrumAnalyzerChannelOnC_Click;
            SpectrumAnalyzerChannelOnD.Click += SpectrumAnalyzerChannelOnD_Click;

            SpectrumAnalyzerPkHldA.Checked = lines[0].showMax;
            SpectrumAnalyzerPkHldB.Checked = lines[1].showMax;
            SpectrumAnalyzerPkHldC.Checked = lines[2].showMax;
            SpectrumAnalyzerPkHldD.Checked = lines[3].showMax;

            SpectrumAnalyzerPkHldA.Click += SpectrumAnalyzerPkHldA_Click;
            SpectrumAnalyzerPkHldB.Click += SpectrumAnalyzerPkHldB_Click;
            SpectrumAnalyzerPkHldC.Click += SpectrumAnalyzerPkHldC_Click;
            SpectrumAnalyzerPkHldD.Click += SpectrumAnalyzerPkHldD_Click;

            SpectrumAnalyzerAvgA.Checked = lines[0].showAvg;
            SpectrumAnalyzerAvgB.Checked = lines[1].showAvg;
            SpectrumAnalyzerAvgC.Checked = lines[2].showAvg;
            SpectrumAnalyzerAvgD.Checked = lines[3].showAvg;

            SpectrumAnalyzerAvgA.Click += SpectrumAnalyzerAvgA_Click;
            SpectrumAnalyzerAvgB.Click += SpectrumAnalyzerAvgB_Click;
            SpectrumAnalyzerAvgC.Click += SpectrumAnalyzerAvgC_Click;
            SpectrumAnalyzerAvgD.Click += SpectrumAnalyzerAvgD_Click;

            SpectrumAnalyzerSave.Click += SpectrumAnalyzerSave_Click;

            run = true;
            SpectrumAnalyzerRun.Checked = run;
            SpectrumAnalyzerRun.Click  += SpectrumAnalyzerRun_Click;

            showGrid = true;
            SpectrumAnalyzerGrid.Checked         = showGrid;
            spectrumAnalyzerScreen.drawGrid      = showGrid;
            SpectrumAnalyzerGrid.CheckedChanged += SpectrumAnalyzerGrid_CheckedChanged;

            channels      = _channels; // Triggers start
            timer.Enabled = true;
        }
Exemplo n.º 10
0
        public void initWaterfallSpectrum(WaterfallSpectrum _waterfallSpectrum)
        {
            FIFOdepth = 32768;
            input     = new FIFO(FIFOdepth);

            _blockSize        = 4096;
            _windowType       = FFTProcessor.WindowType.Hann;
            waterfallSpectrum = _waterfallSpectrum;

            timer.Interval = 50; // ms
            timer.Tick    += Timer_Tick;


            fftProcessor  = new FFTProcessor(_blockSize, waterfallSpectrum.owner.sampleRate, _windowType);
            fftBlockSizes = new List <int>();
            for (int i = 2048; i <= 8192; i *= 2)
            {
                waterfallSpectrumBlockSize.Items.Add(String.Format("{0} --> {1:f1}ms",
                                                                   i, 1000.0 * i / waterfallSpectrum.owner.sampleRate));
                fftBlockSizes.Add(i);
            }
            waterfallSpectrumBlockSize.SelectedIndex         = fftBlockSizes.IndexOf(_blockSize);
            waterfallSpectrumBlockSize.SelectedIndexChanged += waterfallSpectrumBlockSize_SelectedIndexChanged;

            string[] windows = Enum.GetNames(typeof(FFTProcessor.WindowType));
            fftWindows = new List <FFTProcessor.WindowType>();
            for (int i = 0; i < windows.Length; i++)
            {
                fftWindows.Add((FFTProcessor.WindowType)i);
                waterfallSpectrumWindow.Items.Add(windows[i]);
            }
            waterfallSpectrumWindow.SelectedIndex         = fftWindows.IndexOf(_windowType);
            waterfallSpectrumWindow.SelectedIndexChanged += waterfallSpectrumWindow_SelectedIndexChanged;

            waterfallSpectrumScreen.initWaterfallSpectrumScreen(this);

            double bst = (double)_blockSize / waterfallSpectrum.owner.sampleRate;

            waterfallSpectrumScreen.gridY.max = (waterfallSpectrumScreen.gridY.low - waterfallSpectrumScreen.gridY.high) * bst;

            if (waterfallSpectrumScreen.gridF.logScale)
            {
                waterfallSpectrumFLog.Checked = true;
            }
            waterfallSpectrumFLog.Click += waterfallSpectrumFLog_Click;

            waterfallSpectrumFMin.Value         = Convert.ToDecimal(waterfallSpectrumScreen.gridF.min);
            waterfallSpectrumFMax.Value         = Convert.ToDecimal(waterfallSpectrumScreen.gridF.max);
            waterfallSpectrumFMin.ValueChanged += WaterfallSpectrumFMin_ValueChanged;
            waterfallSpectrumFMax.ValueChanged += WaterfallSpectrumFMax_ValueChanged;

            waterfallSpectrumAutoScale.Click += WaterfallSpectrumAutoScale_Click;

            waterfallSpectrumShowGrid.Checked = waterfallSpectrumScreen.drawGrid;
            waterfallSpectrumShowGrid.Click  += WaterfallSpectrumShowGrid_Click;

            waterfallSpectrumRun.Click += WaterfallSpectrumRun_Click;

            waterfallSpectrumColorScheme.Items.Add("KrYW");
            waterfallSpectrumColorScheme.Items.Add("KbBW");
            waterfallSpectrumColorScheme.Items.Add("KrgBW");
            waterfallSpectrumColorScheme.Items.Add("KW");
            waterfallSpectrumColorScheme.Items.Add("KmryGCBW");
            waterfallSpectrumColorScheme.Text         = waterfallSpectrumScreen.colorTable.scheme;
            waterfallSpectrumColorScheme.TextChanged += WaterfallSpectrumColorScheme_TextChanged;

            waterfallLines = new WaterfallLineFIFO(waterfallSpectrumScreen, 1024, _blockSize / 2, waterfallSpectrum.owner.sampleRate / 2,
                                                   waterfallSpectrumScreen.Width, waterfallSpectrumScreen.Height);


            ready         = true;
            run           = true;
            timer.Enabled = true;
        }