【Open-Source】 Reverb thiab Echo Control rau Mixing Console Microphone Raws li T5L
—— Los ntawm DWIN Developer Forum
Peb txaus siab los nthuav qhia qhov khoom plig qhib qhov rooj los ntawm DWIN Developer Forum hnub no: reverb thiab ncha tswj rau kev sib xyaw console microphone raws li T5L nti. Peb tus engineer siv lub 800x480 daws teeb meem zaub los cuam tshuam nrog lub reverb txoj kev loj hlob board los ntawm UART 4 ntawm T5L, enabling meej kev hloov ntawm cov suab tsis tseem ceeb xws li reverb, ncha, ntub suab, qhuav suab, acoustic, lwj thiab qeeb rau superior suab.
[Cov ntaub ntawv UI]
[GUI Project Design]
【Qhov project C51】
(1) Qhov kev pabcuam tseem ceeb rau qhov screen yog raws li hauv qab no:
void main() {
INIT_CPU();//System Initialization
PORT_Init(); //Initialize IO chaw nres nkoj
T0_Init();//Initialize timer 0
T2_Init();//Initialize timer 2
my_UART4_Init(115200);
uart_init();//Initialize serial chaw nres nkoj
ws2812_writ_byte(8);//Initialize LED teeb
RetMicSet();
ncua_ms(1000);
ChangePage(1);
thaum (1) {
Uart_Handle_all();
OneMsHandle();//1Ms txhua lub sijhawm
TenMsHandle();
Read_0xF00();// Cov ntaub ntawv tsis siv neeg upload
}
}
void TenMsHandle(void)
{
yog tias (!TenmsFlag)
rov qab los;
TenmsFlag=0;
HunX_Law();
HunX_Dry();
HunX_WeiYing();
HunX_ShuaiJian();
HunX_Switch();
Echo_Wet();
Echo_Dry();
Echo_Delay();
Echo_ShuaiJian();
Echo_Switch();
}
void HunX_Wet(void)
{
u16readst = 0;
readst=Read_Dgus(0x1200);
if(readst==Mic_Set.MicWetNum)
rov qab los;
Mic_Set.MicWetNum=readst;
MicEffectSend(Mic_Set.MicWetNum*10,
Mic_Set.MicDryNum*10,
Mic_Set.MicDiffNum*5,
Mic_Set.MicDecayNum*5,
Mic_Set.HunXiangSW);
(2) Cov kev cuam tshuam ntawm reverb muaj raws li hauv qab no
#if 1
intreverb_parameter_val(u16 ntub, u16 qhuav, u8 diffusion, u8 decayfactor,
u8 is_bypass, u8 idmode)
{
#if defined(TCFG_MIC_EFFECT_ENABLE)&& TCFG_MIC_EFFECT_ENABLE
#if 1
u8 mode_id = idmode+5;
Plate_reverb_TOOL_SET *parmt = &eff_mode[mode_id - mic_mode_seq0].plate_reverb_parm;
parmt->parm.wet=ntw;
parmt->parm.dry=nqe;
parmt->parm.diffusion = npiv;
parmt->parm.decayfactor = decayfactor;
parmt->is_bypass=is_bypass;
plate_reverb_update_parm(&parmt->parm, parmt->is_bypass);
#elif 1
u8 mode_id = idmode+5;
//memcpy(&eff_mode[mode_id - mic_mode_seq0].echo_parm,&packet->data[1], sizeof(EF_ECHO_TOOL_SET));
EF_ECHO_TOOL_SET *parmt = &eff_mode[mode_id -mic_mode_seq0].echo_parm;
parmt->parm.delay=delay_ms;
echo_updata_parm(&parmt->parm, parmt->is_bypass);
#elif 0//PARM_DEBUG
ECHO_PARM_SET *parm = &parmt->parm;
log_debug("delay %d, decayval %d, filt_enable %d, lpf_cutoff %d, wetgain %d, drygain %d\n",
parm-> ncua, parm->decayval,parm->filt_enable, parm->lpf_cutoff, parm->wetgain, parm->drygain);
#endif
#endif
rov 0;
}
(3) Cov kev cuam tshuam nrog ncha yog raws li hauv qab no:
int Echo_parameter_val(u16 ntub, u16 qhuav, u16 ncua, u16 decayfactor,
u16 is_bypass, u16 idmode)
{
#ifdefined(TCFG_MIC_EFFECT_ENABLE) &&TCFG_MIC_EFFECT_ENABLE
#ifTCFG_MIC_EFFECT_SEL==MIC_EFFECT_REVERB_ECHO
u8 mode_id = idmode+5;
EF_ECHO_TOOL_SET*parmt = &eff_mode[mode_id - mic_mode_seq0].echo_parm;
parmt->parm.wetgain= ntub;
parmt->parm.sixty= qhuav;
parmt->parm.delay = ncua;
parmt->parm.decayval = decayfactor;
parmt->is_bypass=is_bypass;
echo_updata_parm(&parmt->parm, parmt->is_bypass);
#endif
rov 0;
#endif
}