Raspberry Pi通过PiFM生成音调
Raspberry Pi generate tone with PiFM
回来时,我遇到了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秒。但我要么什么也得不到,要么有噪音。你们能建议如何修复它吗?或者一些好的阅读材料?
编辑:更改代码以修复振幅问题。仍然没有语气。
我不确定是否有意使amplitude
随时间变化。无论如何,对于所有小于bufferLen
的i
(在C/C++中查找整数除法),i / bufferLen * 32760
被评估为(i / bufferLen) * 32760
,而i / bufferLen
将为0,这是因为for (int i = 0; i < bufferLen; i++)
。
相关文章:
- 基于树莓pi的tensorflow lite量化ssd目标检测
- 计算 PI 最多 42 位小数
- 使用莱布尼茨公式的 Pi 近似
- 为什么 std::round(sin(pi/6)) 不等于 1?
- Opencv GStreamer管道在Raspberry Pi 4上不起作用
- Raspberry Pi OpenVG C/C++
- C++数学问题和 5/4*pi 与 5*pi/4
- Raspberry Pi Zero W 上的 OpenCV - 浮点异常
- 从Raspberry Pi / Linux上的Python脚本运行和停止C++程序
- 使 C++ Pi 近似在 GPU Nvidia 970M CUDA 上的 Paralell 中运行
- 仅在 rasperry pi 要求时才在 Arduino 上运行C++
- 在 c++ 或 python 中生成一个体面的视差图以在 Raspberry Pi 上实现的最佳方法(算法或函数)是什么
- 与Qt交叉编译到Raspberry Pi 3B+通讯录(协议缓冲区)-错误符号查找错误
- 为什么OpenCV在Raspberry Pi 3B+上表现不佳
- Get Ip of Rapberry Pi
- C++接线Pi崩溃
- 我想使用 I2C 接收从 arduino 到 raspberry pi 的多个数据
- Qt-QML JIT on Raspberry PI Rev. 1
- 接线Pi的分段错误
- Raspberry Pi通过PiFM生成音调