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(); }
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(); }