获取基频并将其转换为RPM

时间:2013-04-16 05:43:17

标签: android audio-recording audio-processing

我真的需要帮助。我搜索了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格式获取此数据的基本频率并将其显示在实时条上。

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

0 个答案:

没有答案