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