portaudio
余暇に少しいじった後、マイクが開いているときに周波数を送信しようとしました。そのためのコールバックを作成しました。コールバック
は出力ストリームのみを開き、portaudio のレコード コールバックを使用します。サンプル形式の場合出力が何も聞こえないように定義されているため、チャネル数が1に定義されているため、音(beep()音など)が聞こえますが、ピッチ検出(FFTを使用)は送信する周波数と同じではありません. だから私の質問は、FFTが間違って実装されているためです(または、paUint8を使用しても正しい答えを得ることができますか)、またはブロッキングI / Oを使用してみるべきですか?paFloat32
paUInt8
いくつかのコード(おそらく役立つでしょう):
これは、出力ストリームの出力パラメーターです (入力ストリームは記録例からのものです)。
outputParameters.device = Pa_GetDefaultOutputDevice();
outputParameters.channelCount = 1;
outputParameters.sampleFormat = paUInt8;
outputParameters.suggestedLatency = Pa_GetDeviceInfo( outputParameters.device )->defaultLowOutputLatency;
outputParameters.hostApiSpecificStreamInfo = NULL;
PSpaUInt8
: 2つのコールバック(読み取り用と書き込み用)を使用したにもかかわらず、送信できる理由の説明。