コード例 #1
0
        private void Timer_Tick(object sender, EventArgs e)
        {
            if (!ready)
            {
                return;
            }
            if (waterfallSpectrum == null)
            {
                return;
            }
            if (waterfallSpectrum.owner == null)
            {
                return;
            }

            int ipfill = input.fill();

            while (ipfill >= _blockSize)
            {
                if ((inputData == null) || (inputData.Length != _blockSize))
                {
                    inputData = new double[_blockSize];
                }
                input.retrieve(ref inputData);

                if (run)
                {
                    WaterfallLine l = waterfallLines.NewforWrite();
                    l.setSize(_blockSize / 2, waterfallSpectrum.owner.sampleRate / 2);
                    fftProcessor.runFFTdBFS(ref inputData, ref l.data);
                }

                ipfill -= _blockSize;
            }
            if (waterfallLines.missingLines > 0)
            {
                waterfallLines.updateBitmap(waterfallSpectrumScreen.colorTable,
                                            waterfallSpectrumScreen.gridF, waterfallSpectrumScreen.gridY,
                                            waterfallSpectrumScreen.gridCol);

                waterfallSpectrumScreen.Invalidate();
            }
        }