如何在运行时使用 C++ 生成音频?我只是在寻找一个起点。论坛上有人建议我尝试让程序播放给定频率和幅度的方波。
我听说现代计算机使用 PCM 样本对音频进行编码:在特定时间单位(例如 48 kHz)的给定速率下,声音的幅度以给定的分辨率(例如 16 位)记录。如果我生成这样的样本,我如何让我的扬声器播放它?我目前正在使用窗户。如果可能的话,我宁愿避免使用任何额外的库,但我会选择一个非常轻便的库。
这是我尝试使用此原理生成方波样本:
signed short* Generate_Square_Wave(
signed short a_amplitude ,
signed short a_frequency ,
signed short a_sample_rate )
{
signed short* sample = new signed short[a_sample_rate];
for( signed short c = 0; c == a_sample_rate; c++ )
{
if( c % a_frequency < a_frequency / 2 )
sample[c] = a_amplitude;
else
sample[c] = -a_amplitude;
}
return sample;
}
我这样做正确吗?如果是这样,我该如何处理生成的样本来让我的扬声器播放它?