【发布时间】: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