【问题标题】:Raspberry Pi generate tone with PiFMRaspberry Pi 使用 PiFM 生成音调
【发布时间】:2015-11-29 11:13:43
【问题描述】:

当我遇到 PiFM 时,我决定学习一些有关音频和调制的知识。我正在尝试编写 AFSK 调制器,但首先我想生成纯音,例如 1000Hz。我正在使用 PiFM 项目 (https://github.com/rm-hull/pifm/blob/master/pifm.cpp) 中的代码,它读取 WAV 文件并通过 RF 将其发射出去。我也想这样做,但我想通过射频发射纯音。

这是我的尝试之一:

void playSineWave(float frequency, int duration, float samplerate)
{
SampleSink* ss;

ss =  new Outputter(samplerate);

int bufferLen = duration * samplerate;
float* buffer = new float[bufferLen];

for (int i = 0; i < bufferLen; i++) {
    float amplitude = 6000;

    buffer[i] = amplitude * sin( (2.f * float(M_PI) * i * frequency) / samplerate );
}

cout << "Buffer length: " << bufferLen << endl;

ss->consume(buffer, bufferLen);

delete [] buffer;
}

我会使用它 playSineWave(1000, 5, 22050); 来播放 1000Hz 音调 5 秒。但我没有得到任何东西或噪音。你们能建议如何解决它或一些好的阅读材料吗?

编辑:更改代码以修复幅度问题。还是没有声音。

【问题讨论】:

    标签: c++ audio raspberry-pi


    【解决方案1】:

    我不确定是否有意让amplitude 随时间变化。无论如何,i / bufferLen * 32760 被评估为 (i / bufferLen) * 32760i / bufferLen 对于所有小于 ibufferLen 将是 0(在 C/C++ 中查找整数除法),这是因为 for (int i = 0; i &lt; bufferLen; i++) .

    【讨论】:

    • 眼光不错,但还是没有运气。我将幅度更改为固定值(参见上面的代码)。我在接收端得到的只是噼啪声(噪音)。
    猜你喜欢
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 2019-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多