我正在尝试为声卡生成音调(频率:1950 赫兹,持续时间:40 毫秒,电平:-30 分贝,右声道(立体声),在蒸汽 1 上)。最后,我想播放其中两种音调(一种进入通道 1,一种进入通道 2)。
非常感谢任何帮助或指导。
谢谢,DW
嗨 Bjorn,我试过这个,但我没有得到我期望的频率(而且声音似乎不干净)。有什么想法有什么问题吗?我非常感谢任何帮助。
#define SAMPLE_RATE (44100)
#define TABLE_SIZE (200)
float FREQUENCY = 422;
...
for(int i=0; i<TABLE_SIZE; i++ )
{
data.sine[i] = (float) sin( (double)i * ((2.0 * M_PI)/(double)SAMPLE_RATE) * FREQUENCY );
}
data.left_phase = 0;
data.right_phase = 0;
...
... in callback function ...
for(unsigned long i = 0; i < framesPerBuffer; i++ )
{
// fill output buffer with sin wave
*out++ = data->amp * data->sine[data->left_phase]; // left
*out++ = data->amp * data->sine[data->right_phase]; // right
data->left_phase += 1;
if( data->left_phase >= TABLE_SIZE )
data->left_phase -= TABLE_SIZE;
data->right_phase += 1;
if( data->right_phase >= TABLE_SIZE )
data->right_phase -= TABLE_SIZE;
}