Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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_Fft_Frequency_Portaudio - Fatal编程技术网

C [portaudio]发送和检测频率-窗口

C [portaudio]发送和检测频率-窗口,c,fft,frequency,portaudio,C,Fft,Frequency,Portaudio,我是portaudio的新手,我研究了“如何提取频率…”这个问题,但我还是想得到一些帮助。 我需要传输一个频率(使用扬声器),然后我想检查这个频率是否被传输(在麦克风中捕捉),当然我想使用portaudio进行发送和检测。 另外,我不知道如何使用fft进行检测,因为我看到了记录示例,他们使用样本数据类型,使用该数据类型,他们可以找到最大振幅,我可以使用它来找到频率吗 tnx提前播放。播放简单的音调,如PortAudio中所示 虽然音高不是根据特定数字计算的,但很容易计算出: amplitude[

我是portaudio的新手,我研究了“如何提取频率…”这个问题,但我还是想得到一些帮助。 我需要传输一个频率(使用扬声器),然后我想检查这个频率是否被传输(在麦克风中捕捉),当然我想使用portaudio进行发送和检测。 另外,我不知道如何使用fft进行检测,因为我看到了记录示例,他们使用样本数据类型,使用该数据类型,他们可以找到最大振幅,我可以使用它来找到频率吗


tnx提前播放。

播放简单的音调,如PortAudio中所示

虽然音高不是根据特定数字计算的,但很容易计算出:

amplitude[n] = sin( n * desiredFreq * 2 * pi / samplerate )

在PARTAUDIO示例代码中,对于每个调用,您可能需要考虑使用查找表而不是计数Sin(),这两种方法都对性能(以及大量的Sin的准确性,这可能是好的,但我不确定)。 检测正在播放的频率是一个在这里一直被问到的问题。这是我最近给出的答案


结果是,有很多方法取决于你的技能水平,以及背景噪音等问题。如果您只是检测一个简单的正弦波,并且不希望有太多的噪声,那么在确保信号高于某个阈值后,您最好只计算过零次数。如果你真的希望听到噪音,你就必须变得更花哨。

我不清楚你想做什么,“传输频率”似乎是你想做的一件事。这是什么意思?通过网络?播放你的声卡?我想你需要写一个更清楚的问题。sry如果不清楚,我的意思是通过默认输出。我知道如何使用获取默认输出和输入的功能,但我如何设置准确的频率,例如1000 hz。然后我如何使用输入(例如麦克风)来表示我刚刚获得1000 hz。tnx的兴趣和意愿的帮助。我指望这只是不理解整个想法,我看了一个叫做“paex_记录”的例子,我不知道如何在样本上使用FFT,再次tnx的帮助和+1的传输频率的澄清当你记录,你得到一系列样本,表示随时间变化的振幅。取其中的一个连续子集(例如,前1024个样本),将其窗口化,并按照该答案中所述执行FFT。您需要考虑单声道与立体声、数据格式和其他一些因素,但这是一个复杂的问题,我无法在这里解释所有内容。对于初学者来说,您不需要打开它,只需要从PA获取单浮点数据。这会有所帮助。然后转到下一块示例(您可能希望重叠)。这里有一点关于生成音调的详细信息:谢谢,我已经编写了一段代码来生成所需的频率。干杯,谢谢不管怎样我真的很感谢你的帮助。