当前位置: 首页 > news >正文

中科蓝汛AB580x高中低EQ增益调试分析

最近在看AB5800平台的代码功能是通过电阻器来调整高中低频率增益开始进入正题。主要文件: app/modules/audio/bsp_eq.c截取的代码段如下bass_treb_loud_param_t msc_bass_treb_loud_param; struct eq_coef_t msc_bass { .param0 CAL_FIX(0.0261732112), //BASS:300Hz(alpha) .param1 CAL_FIX(0.9992290362), //BASS:300Hz(cos_w0) }; #if MUSIC_EFFECT_BASS_TREB_LOUD_EN struct eq_coef_t msc_loud { .param0 CAL_FIX(0.0696856441), //LOUD:800Hz(alpha) .param1 CAL_FIX(0.9945218951), //LOUD:800Hz(cos_w0) }; #endif struct eq_coef_t msc_treb { .param0 CAL_FIX(0.2551222950), //TREB:3000Hz(alpha) .param1 CAL_FIX(0.9238795283), //TREB:3000Hz(cos_w0) }; void bsp_bass_treble_init(void) { memset(msc_bass_treb_loud_param, 0, sizeof(bass_treb_loud_param_t)); msc_bass.coef (u32*)bsp_music_bass_eq_coef_get(); //初始化band0参数的数组 msc_treb.coef (u32*)bsp_music_treb_eq_coef_get(); //初始化band1参数的数组 #if MUSIC_EFFECT_BASS_TREB_LOUD_EN msc_loud.coef (u32*)bsp_music_loud_eq_coef_get(); eq_coef_cal(msc_loud,0); #endif bass_treble_coef_cal(msc_bass, 0, 0); bass_treble_coef_cal(msc_treb, 0, 1); music_bass_treble_enable(1); print_r32(msc_bass.coef,5); print_r32(msc_treb.coef,5); }struct eq_coef_t { u32 param0; //频点参数由工具计算 u32 param1; u32 *coef; //频段参数由eq_coef_cal计算 };struct eq_coef_t msc_bass { .param0 CAL_FIX(0.0261732112), //BASS:300Hz(alpha) .param1 CAL_FIX(0.9992290362), //BASS:300Hz(cos_w0) };我们主要探讨一下这个eq_coef_t结构体由param0, param1, coef组成接下来以300HZ为例解析这两个参数是怎么生成的一. 结论这两个参数是二阶搁架滤波器(2nd Order Shelving Filter)预先计算的中间变量.param0 CAL_FIX(0.0261732112) // 对应滤波器的 α 参数(与 Q 值和增益相关) .param1 CAL_FIX(0.9992290362) // 对应 cos(ω₀), 其中 ω₀ 是数字角频率(单位:弧度) CAL_FIX(x)将浮点数转换为定点数二. 推导过程Fc的推导(从结果反推FS使用的是48000,并非44100,但相同文件里面tbl_coef数组用的就是44100) 1. 从cos(ω₀)反推数字角频率 ω₀ arccos(0.9992290362)-0.0392699弧度 2. 数字角频率推导模拟频率 ω₀ 2πf₀(目标频率) / Fs(采样率) 得出 f₀(目标频率) ω₀ * Fs(采样率) / 2π 即: f₀ 0.0392699 × 48000 / (2×3.1415926535) 所以得出 f₀ ≈ 300HZ Q值的推导 1. α sin(ω₀) / (2Q) 带入推导FC中得到的弧度0.0392699 sin(ω₀) sin(0.0392699) ≈ 0.0392688 得 Q sin(ω₀) / (2α) 0.0392688 / (2×0.0261732112) ≈ 0.75据此我们得出Fc 300Hz Q 0.75, 计算结果如下三. 如何生成这两个系数MATLAB CODE: clear;clc; f0 800; % FC频率, 你需要频率 Fs 48000; % 采样率 Q 0.75; % Q值 w0 2*pi*f0/Fs; cos_w0 cos(w0); alpha sin(w0)/(2*Q); fprintf(.param0 CAL_FIX(%.10f), // %.0fHz(alpha)\n,alpha,f0); fprintf(.param1 CAL_FIX(%.10f), // %.0fHz(cos_w0)\n,cos_w0,f0);效果图如下
http://www.gsyq.cn/news/1395229.html

相关文章:

  • 新手开发者五分钟完成Taotoken的Python SDK配置与首次调用
  • Claude-Code-常用教程
  • SpringBoot 3.2 JWT安全实战:从零配置到生产级权限控制
  • 《流畅的Python》读书笔记12(补充01): 符合 Python 风格的对象 - Python类的运算协议全解析
  • 从注册到高阶插件全免费:大学生ChatGPT生产力套装(含Code Interpreter+PDF解析+论文润色链)
  • 1.4t5
  • 空间追踪逻辑革新:无感定位三维解算,突破UWB巷道盲区瓶颈
  • 场感知矩阵分解:从传统协同过滤到上下文感知推荐的跃迁
  • 基于混合嵌入的无监督作者姓名消歧:融合语义与关系信息解决学术身份识别难题
  • Swift视频播放难题的终极解决方案:Player框架深度解析
  • 10分钟快速上手Print.js:网页打印的终极解决方案
  • 基于FPGA可重构架构的HEVC分数像素插值近似计算硬件加速设计
  • 618有什么值得入手的东西?十件可闭眼入的好物清单分享!狠狠码住
  • 印尼语仇恨言论检测:双层CNN-RNN模型实战与数据不平衡处理
  • 基于GAN与VAE的无嵌入隐写术:用AI生成自带秘密的图像
  • CDSSL自监督学习框架:统一线性与非线性依赖,提升表征学习能力
  • 高瓦斯矿井场景:无感定位为最优解,UWB不再适配高危工况
  • 助睿数智实操教程:学生考勤画像可视化分析——从指标卡到综合仪表盘
  • AI入门图像识别 目标检测与跟踪+区域识别+车道线流量计数
  • ESP32实战指南:构建稳定TCP客户端连接
  • 观察使用 Token Plan 套餐后月度 API 成本的可预测性变化
  • 【注意!这家防腐垫木公司竟靠3大节能秘诀年省百万】
  • 基于分层注意力网络的序列推荐模型:从用户行为序列理解动态意图
  • 2026年真正有用的产品岗位证书:产品经理含金量高的证书推荐与避坑指南
  • python pip ValueError: Invalid IPv6 URL
  • 深度学习CNN-LSTM混合模型在低资源语言垃圾短信检测中的实践
  • 井下安全体系反思:摒弃 UWB 固有模式,无感定位升级矿山透明化空间管理水准
  • 险情处置能力对照:无感定位赋能矿山透明化空间管理,UWB 存在监测断层缺陷
  • File 类
  • 主流推理模型架构的协议对比表格,和专利坑 专利埋雷