Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C PortAudio:如何从麦克风获取记录(获取数据)_C_Portaudio - Fatal编程技术网

C PortAudio:如何从麦克风获取记录(获取数据)

C PortAudio:如何从麦克风获取记录(获取数据),c,portaudio,C,Portaudio,我尝试使用portaudio(跨平台功能),从麦克风读取数据,然后我想通过FFT将数据输入,但我不太确定如何做到这一点。 很多人告诉我:1.获取数据,2.应用fft, 但问题是我不太确定如何获取数据,portaudio没有太多关于从麦克风获取输入的教程,如果你知道任何代码、教程或任何其他资源,那就太好了。我已经搜索了一段时间了。请帮助portaudio发行版以示例C程序的形式提供了文档。它们位于test目录中,通常称为patest.。那里有很多很好的资料,文件中有 您要查看的是patest_re

我尝试使用portaudio(跨平台功能),从麦克风读取数据,然后我想通过FFT将数据输入,但我不太确定如何做到这一点。 很多人告诉我:1.获取数据,2.应用fft,
但问题是我不太确定如何获取数据,portaudio没有太多关于从麦克风获取输入的教程,如果你知道任何代码、教程或任何其他资源,那就太好了。我已经搜索了一段时间了。请帮助

portaudio发行版以示例C程序的形式提供了文档。它们位于
test
目录中,通常称为
patest.
。那里有很多很好的资料,文件中有

您要查看的是
patest_record
,它通过回调进行异步录制。如果你想做任何严肃的事情,这是一条路。但是还有一个patest\u read\u record.c,它执行同步(阻塞)IO

代码实际上非常简单,以下是相关部分(遗漏了很多内容): 1/你在一个缓冲区中malloc 2/你安装了一个回调3/在回调中,你将数据复制到你的缓冲区

/* 1 */ 
data.recordedSamples = (SAMPLE *) malloc( numBytes );
/* 2 */
err = Pa_OpenStream(
          &stream,
          &inputParameters,
          NULL,                  /* &outputParameters, */
          SAMPLE_RATE,
          FRAMES_PER_BUFFER,
          paClipOff,      
          recordCallback,
          &data );  
 /* 3, in recordCallBack with rptr the input data and wptr our buffer */
 for( i=0; i<framesLeft; i++ )
 {
     *wptr++ = *rptr++;  /* left */
     if( NUM_CHANNELS == 2 ) *wptr++ = *rptr++;  /* right */
 }
/*1*/
data.recordedSamples=(样本*)malloc(numBytes);
/* 2 */
err=Pa_OpenStream(
&溪流,
&输入参数,
NULL、/*&输出参数*/
抽样率,
每个缓冲区的帧数,
帕利波夫,
记录回调,
&数据);
/*在带有rptr的recordCallBack中,输入数据和wptr是我们的缓冲区*/

对于(i=0;我想任何人都可以帮助我,真的很难。这里有一个链接可能会有帮助: