1

我真的需要帮助。我为此搜索了 13 多个小时,但没有找到有用的东西

我一直在研究一个 Android 项目,该项目将输入信号 (( IN RPM)) 的基频显示为实时条。我已经成功地实现了这个AudioRecord类并从中获取数据。我FFT对这些数据进行了处理,将其从数字域转换为频域。

int bufferSize = AudioRecord.getMinBufferSize(frequency,
                channelConfiguration, audioEncoding);
        AudioRecord audioRecord = new AudioRecord(
                MediaRecorder.AudioSource.DEFAULT, frequency,
                channelConfiguration, audioEncoding, bufferSize);

        short[] buffer = new short[blockSize];
        double[] toTransform = new double[blockSize];
        try {
            audioRecord.startRecording();
        } catch (IllegalStateException e) {
            Log.e("Recording failed", e.toString());
        }
        while (started) {
            int bufferReadResult = audioRecord.read(buffer, 0, blockSize);

            for (int i = 0; i < blockSize && i < bufferReadResult; i++) {
                toTransform[i] = (double) buffer[i] / 32768.0; // signed 16
                                                                // bit
            }

            transformer.ft(toTransform);
            //Here i have FFT of the input sound in toTransform[]
        }

现在我需要以 RPM 格式获取这些数据的基本频率,并将其显示在实时栏上。

请我真的需要任何帮助,任何链接或任何项目来源。

4

0 回答 0