在业余时间搞砸了一点之后,portaudio
我尝试在麦克风打开时传输频率,为此我编写了一个回调 - 回调仅打开
一个输出流,然后我使用 portaudio 的记录回调。如果示例格式因为输出被定义paFloat32
为什么都听不到,但是如果我将其定义paUInt8
为通道数 1,所以我听到了声音(如 beep() 声音)但音高检测(使用 FFT)与我传输的频率不同. 所以我的问题是因为 FFT 实施错误(或者 - 是否可以使用 paUint8 并且仍然得到正确答案)或者我应该尝试使用阻塞 I/O?
一些代码(也许会有所帮助):
这是输出流的输出参数(输入流来自记录示例)。
outputParameters.device = Pa_GetDefaultOutputDevice();
outputParameters.channelCount = 1;
outputParameters.sampleFormat = paUInt8;
outputParameters.suggestedLatency = Pa_GetDeviceInfo( outputParameters.device )->defaultLowOutputLatency;
outputParameters.hostApiSpecificStreamInfo = NULL;
PSpaUInt8
:尽管我使用了 2 个回调(1 个用于读取,1 个用于写入) ,但任何关于为什么可以传输的解释。