我无法理解我应该如何将PCM数据从麦克风传递到我正在使用的Piotr Wendykier(它是JTransforms中的DoubleFFT_1D类)制作的FFT类。在Android中使用FFT
我想我必须返回一个实数和虚数,然后加倍实数以最终获得Frequency = 8000 * i/1024,其中i是最高幅度的指数。
有人可以帮助我找到音符的频率吗?
我有一个记录类,如下所示:
import edu.emory.mathcs.jtransforms.fft.DoubleFFT_1D;
...other various imports...
class recorderThread {
...public variables...
public static void getFFtresult(){
AudioRecord recorder;
short[] audioData;
int bufferSize;
int samplerate = 8000;//or 8192?
bufferSize= AudioRecord.getMinBufferSize(samplerate,AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT)*2; //get the buffer size to use with this audio record
recorder = new AudioRecord (AudioSource.MIC,samplerate,AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT,buf