Ejemplo n.º 1
0
        public void PlotLatestData()
        {
            int frameSize  = BUFFERSIZE;
            var audioBytes = new byte[frameSize];

            bwp.Read(audioBytes, 0, frameSize);

            if (audioBytes.Length == 0)
            {
                return;
            }
            if (audioBytes[frameSize - 2] == 0)
            {
                return;
            }

            int BYTES_PER_POINT = 2;

            int graphPointCount = audioBytes.Length / BYTES_PER_POINT;

            double[] pcm     = new double[graphPointCount];
            double[] fft     = new double[graphPointCount];
            double[] fftReal = new double[graphPointCount / 2];

            for (int i = 0; i < graphPointCount; i++)
            {
                short val = BitConverter.ToInt16(audioBytes, i * 2);

                pcm[i] = val / Math.Pow(2, 16) * 200.0;
            }

            fft = FFT(pcm);

            double pcmPointSpacingMs = RATE / 1000;
            double fftMaxFreq        = RATE / 2;
            double fftPointSpacingHz = fftMaxFreq / graphPointCount;

            Array.Copy(fft, fftReal, fftReal.Length);

            PlotUC1.Clear();
            PlotUC1.PlotSignal(pcm, pcmPointSpacingMs, Color.Blue);
            PlotUC2.Clear();
            PlotUC2.PlotSignal(fftReal, fftPointSpacingHz, Color.Blue);

            if (needsAutoScaling)
            {
                PlotUC1.AxisAuto();
                PlotUC2.AxisAuto();
                needsAutoScaling = false;
            }

            numberOfDraws += 1;

            Application.DoEvents();
        }
Ejemplo n.º 2
0
        public void SetupGraphLabels()
        {
            PlotUC1.fig.labelTitle = "Entrada Microfone";
            PlotUC1.fig.labelY     = "Amplitude (PCM)";
            PlotUC1.fig.labelX     = "Tempo (ms)";
            PlotUC1.Redraw();

            PlotUC2.fig.labelTitle = "FFT - Resultado";
            PlotUC2.fig.labelY     = "Power (raw)";
            PlotUC2.fig.labelX     = "Frequência (Hz)";
            PlotUC2.Redraw();
        }