【Open-Source】 Reverb and Echo Control for Mixing Console Maikolofoni Kutengera T5L
——Kuchokera ku DWIN Developer Forum
Ndife okondwa kupereka nkhani yotseguka yopambana mphotho kuchokera ku DWIN Developer Forum lero: reverb and echo control pakusakaniza maikolofoni yotengera kutengera T5L chip. Katswiri wathu amagwiritsa ntchito chiwonetsero cha 800x480 kuti alumikizane ndi bolodi lachitukuko cha reverb kudzera mu UART 4 ya T5L, ndikupangitsa kusintha koyenera kwa magawo amawu ofunikira monga verebu, echo, phokoso lonyowa, mawu owuma, mamvekedwe, kuwola komanso kuchedwa kwamawu apamwamba kwambiri.
[Zida za UI]



[Gui Project Design]

【Pulogalamu ya C51】
(1) Pulogalamu yayikulu yowonera pazenera ili motere:
void main(){
INIT_CPU();//System Initialization
PORT_Init();//Yambitsani doko la IO
T0_Init();//Yambitsani chowerengera 0
T2_Init();//Yambitsani nthawi 2
my_UART4_Init(115200);
uart_init();//Yambitsani serial port
ws2812_writ_byte(8);//Yambitsani kuwala kwa LED
RetMicSet ();
kuchedwa_ms(1000);
Kusintha Tsamba(1);
pamene(1){
Uart_Handle_all ();
OneMsHandle();//1Ms nthawi iliyonse
TenMsHandle ();
Werengani_0xF00();//Data lowetsani zokha
}
}
opanda TenMsHandle (zopanda)
{
ngati(!TenmsFlag)
kubwerera;
TenmsFlag=0;
HunX_Law ();
HunX_Dry ();
HunX_WeiYing ();
HunX_ShuaiJian ();
HunX_Switch ();
Echo_Wet ();
Echo_Dry ();
Echo_Delay ();
Echo_ShuaiJian();
Echo_Switch ();
}
zopanda HunX_Wet(zopanda kanthu)
{
u16kuwerenga=0;
werengani=Werengani_Dgus(0x1200);
ngati(werengani==Mic_Set.MicWetNum)
kubwerera;
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) Magawo okhudzana ndi reverb ndi awa
#ngati 1
intreverb_parameter_val(u16 wonyowa, u16 youma, u8 diffusion,u8 decayfactor,
u8 ndi_bypass, u8 idmode)
{
#ngati zitafotokozedwa(TCFG_MIC_EFFECT_ENABLE)&& TCFG_MIC_EFFECT_ENABLE
#ngati 1
u8 mode_id = idmode+5;
Plate_reverb_TOOL_SET *part = &eff_mode[mode_id - mic_mode_seq0].plate_reverb_parm;
parmt->parm.wet=nyowa;
parmt->parm.dry=dry;
parmt->parm.diffusion=diffusion;
parmt->parm.decayfactor=decayfactor;
parmt->is_bypass=is_bypass;
plate_reverb_update_parm(&parmt->parm, parmt->is_bypass);
#moyo 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 *part = &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("kuchedwa%d, kuwola %d, kusefa_enable %d, lpf_cutoff %d, wetgain %d, drygain %d\n",
parm->chedwetsa, parm-> kuwola, parm->filt_enable, parm->lpf_cutoff, parm->wetgain, parm->drygain);
#ndif
#ndif
kubwerera 0;
}
(3) Magawo okhudzana ndi echo ndi awa:
int Echo_parameter_val(u16 wonyowa,u16 youma,u16 kuchedwa,u16 decayfactor,
u16 ndi_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*part = &eff_mode[mode_id - mic_mode_seq0].echo_parm;
parmt->parm.wetgain=wet;
parmt->parm.sixty=dry;
parmt->parm.delay=kuchedwa;
parmt->parm.decayval=decayfactor;
parmt->is_bypass=is_bypass;
echo_updata_parm(&parmt->parm, parmt->is_bypass);
#ndif
kubwerera 0;
#ndif
}


