杰里之使用内置硬件 EQ 动态调高低音变化不平滑处理方法篇2

在 timer0 中断中添加 eq_gain_smooth_deal 函数,如下图:
杰里之使用内置硬件 EQ 动态调高低音变化不平滑处理方法篇2_第1张图片
函数实现代码内容如下(主要放在 eq.c 文件中)
杰里之使用内置硬件 EQ 动态调高低音变化不平滑处理方法篇2_第2张图片
杰里之使用内置硬件 EQ 动态调高低音变化不平滑处理方法篇2_第3张图片
/*
** 函数功能 :EQ 增益处理函数
** 函数形参 :void
** 返回值 :void
** 备注 :主要处理电位器调高低音时产生的 POPO声(实现原理:增益逐个等级变化,不直接设置)
: 该程序修改的是 用户自定义 EQ 文件中的 第一段(低音) 第二段(高音)的增益值。
: 需更换一个库文件(围 适用范围 2012P4_SDK ,将 EQ 增益范围改为 -48 ~ 48)
:库文件下载地址链接: https://pan.baidu.com/s/1gyhaUnj-4XsEuX2NF9c4sw 提取码: w6ft
*/
s8 treble_level_table[9] =
{
-48,-36,-24,-12,0,12,24,36,48
};
s8 bass_level_table[9] =
{
-48,-36,-24,-12,0,12,24,36,48
};
void eq_gain_smooth_deal(void)
{
u8 eq_update_flag = 0;
s8 bass_level_actual = eq_dbg_online->eq_freq_gain[6][0];
s8 treble_level_actual = eq_dbg_online->eq_freq_gain[6][1];
if(eq_dbg_online != NULL){
//高音
if(treble_level_actual > treble_level_table[user->audio.treble_level]/需要设
置的增益变量,请自行替换
/)
{
treble_level_actual–;
eq_update_flag = 1;
}
else if(treble_level_actual < treble_level_table[user->audio.treble_level])
{
treble_level_actual++;
eq_update_flag = 1;
}
//低音
if(bass_level_actual > bass_level_table[user->audio.bass_level])
{
bass_level_actual–;
eq_update_flag = 1;
}
else if(bass_level_actual < bass_level_table[user->audio.bass_level]/需要设
置的增益变量,请自行替换
/)
{
bass_level_actual++;
eq_update_flag = 1;
}
if(eq_update_flag){
eq_dbg_online->eq_freq_gain[6][0] = treble_level_actual;
eq_dbg_online->eq_freq_gain[6][1] = bass_level_actual;
printf(“hw_eq_cfg_update GAIN1%d GAIN2%d\n”, treble_level_actual,
bass_level_actual);
hw_eq_cfg_update();
}
}
}

你可能感兴趣的:(杰里之使用内置硬件 EQ 动态调高低音变化不平滑处理方法篇2)