杰里之混响声音不经过硬件 EQ 处理方法篇

默认 sdk 如果打开了混响的开关及硬件 eq,我们混响的数据是经过 EQ 处理的。如果需要不经过硬件 EQ 处
理需要以下处理:开启 EQ 的中断处理函数,将混响数据输出的函数放进 EQ 的中断中。
1、在混响同步采样率处理的函数里添加初始化混响 EQ 的代码。
a、audio_stream.h 文件中修改宏定义
#define AUDIO_EFFECT_ECHO (AUDIO_EFFECT_HW_EQ)
b、 在 echo_api.c 文件中的 void echo_dac_adc_sr_sync(void)函数中添加以下内容(主要是灰色部分):
AUDIO_STREAM *echo_stream_io = NULL;
void echo_dac_adc_sr_sync(void)
{
if (!echo_var.run_flag) {
return;
}
u16 ladc_sr = ladc_get_samplerate();
u16 dac_sr = dac_get_samplerate();
printf(“echo_sr_sync, ad_sr = %d, da_sr = %d\n”, ladc_sr, dac_sr);
if (ladc_sr != dac_sr) {
ladc_set_samplerate(dac_sr);
}
#if (EQ_RUN_SEL == EQ_RUN_HW)
AUDIO_STREAM_PARAM stream_param;
stream_param.ef = AUDIO_EFFECT_ECHO;
stream_param.ch = 2;
stream_param.sr = dac_sr;
echo_stream_io = audio_stream_init(&stream_param, NULL);
if (echo_stream_io) {
echo_stream_io->clear(echo_stream_io->priv);
echo_stream_io->set_sr(echo_stream_io->priv, dac_get_samplerate(), 1);
}
#endif
}
2、打开 EQ 的中断
在这里插入图片描述
3、EQ 中断函数如下(将混响数据处理放进 EQ 的中断回调函数中)
#include “echo_api.h”
void eq_isr(s16 *outbuf, u16 npoint)
{
//printf(“e”); //若发现程序在运行过程发现没有混响,可打开打印若没有就是因为 EQ 被关掉了
#if ECHO_EN
echo_output_mix_dac(outbuf, DAC_BUF_LEN);
#endif
}
4、注释掉原来 sdk 在 dac.c 中 DAC 中断回调 dac_isr_cb 中的混响数据处理函数:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rambo-Lamborghini

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值