【ଖୋଲା-ଉତ୍ସ】T5L ଉପରେ ଆଧାରିତ ମିଶ୍ରଣ କନସୋଲ୍ ମାଇକ୍ରୋଫୋନ୍ ପାଇଁ ରିଭର୍ବ ଏବଂ ଇକୋ ନିୟନ୍ତ୍ରଣ
——ଠାରୁ ଡ୍ୱିନ୍ ଡେଭଲପର୍ ଫୋରମ୍
ଆମେ ଆଜି DWIN ଡେଭଲପର ଫୋରମରୁ ଏକ ପୁରସ୍କାରପ୍ରାପ୍ତ ଓପନ୍-ସୋର୍ସ କେସ୍ ଉପସ୍ଥାପନ କରିବାକୁ ଖୁସି: T5L ଚିପ୍ ଉପରେ ଆଧାରିତ ମିଶ୍ରଣ କନସୋଲ୍ ମାଇକ୍ରୋଫୋନ୍ ପାଇଁ ରିଭର୍ବ ଏବଂ ଇକୋ ନିୟନ୍ତ୍ରଣ। ଆମର ଇଞ୍ଜିନିୟର T5L ର UART 4 ମାଧ୍ୟମରେ ରିଭର୍ବ ଡେଭଲପମେଣ୍ଟ ବୋର୍ଡ ସହିତ ପାରସ୍ପରିକ କ୍ରିୟା କରିବା ପାଇଁ ଏକ 800x480 ରିଜୋଲ୍ୟୁସନ୍ ଡିସପ୍ଲେ ବ୍ୟବହାର କରନ୍ତି, ଯାହା ଉତ୍କୃଷ୍ଟ ଅଡିଓ ପ୍ରଭାବ ପାଇଁ ରିଭର୍ବ, ଇକୋ, ଓଦା ଶବ୍ଦ, ଶୁଷ୍କ ଶବ୍ଦ, ଆକୋଷ୍ଟିକ୍, କ୍ଷୟ ଏବଂ ବିଳମ୍ବ ଭଳି ଗୁରୁତ୍ୱପୂର୍ଣ୍ଣ ଅଡିଓ ପାରାମିଟରଗୁଡ଼ିକର ସଠିକ୍ ସମାୟୋଜନକୁ ସକ୍ଷମ କରିଥାଏ।
[UI ସାମଗ୍ରୀ]



[GUI ପ୍ରୋଜେକ୍ଟ ଡିଜାଇନ୍]

【C51 ପ୍ରୋଜେକ୍ଟ】
(୧) ସ୍କ୍ରିନ୍ ପାଇଁ ମୁଖ୍ୟ ପ୍ରୋଗ୍ରାମ୍ ନିମ୍ନଲିଖିତ:
ଖାଲି ମୁଖ୍ୟ(){
INIT_CPU(); //ସିଷ୍ଟମ ପ୍ରାରମ୍ଭିକୀକରଣ
PORT_Init();//IO ପୋର୍ଟ ଆରମ୍ଭ କରନ୍ତୁ
T0_Init();//ଟାଇମର୍ 0 ଆରମ୍ଭ କରନ୍ତୁ
T2_Init();//ଟାଇମର୍ 2 ଆରମ୍ଭ କରନ୍ତୁ
ମୋର_UART4_Init(115200);
uart_init();//ସିରିଏଲ୍ ପୋର୍ଟ ଆରମ୍ଭ କରନ୍ତୁ
ws2812_writ_byte(8);//LED ଲାଇଟ୍ ଆରମ୍ଭ କରନ୍ତୁ
ରେଟମିକସେଟ୍();
ବିଳମ୍ବ_ଏମ୍ସେ(୧୦୦୦);
ପରିବର୍ତ୍ତନ ପୃଷ୍ଠା(1);
ଯେତେବେଳେ(1){
ୟୁଆର୍ଟ_ହ୍ୟାଣ୍ଡଲ୍_ଅଲ୍();
ପ୍ରତ୍ୟେକ ଥର OneMsHandle();//1Ms
ଟେନଏମଏସହ୍ୟାଣ୍ଡଲ();
Read_0xF00();//ଡାଟା ସ୍ୱୟଂଚାଳିତ ଅପଲୋଡ୍
}
}
ଅକାମୀ ଦଶମହ୍ୟାଣ୍ଡଲ(ଅକାମୀ)
{
ଯଦି(!TenmsFlag)
ପ୍ରତ୍ୟାବର୍ତ୍ତନ;
ଦଶମପତାକା=0;
ହନକ୍ସ_ଲ();
ହନଏକ୍ସ_ଡ୍ରାଏ();
HunX_WeiYing ();
HunX_ShuaiJian ();
ହନଏକ୍ସ_ସ୍ୱିଚ୍();
ଇକୋ_ୱେଟ୍();
ଇକୋ_ଡ୍ରାଏ();
ଇକୋ_ଡିଲେ();
Echo_ShuaiJian ();
ଇକୋ_ସ୍ୱିଚ୍();
}
ଅକାମୀ ହନକ୍ସ_ୱେଟ୍(ଅକାମୀ)
{
u16readst=0;
ରିଡଷ୍ଟ=ରିଡ_ଡିଗସ୍(0x1200);
ଯଦି(readst==Mic_Set.MicWetNum)
ପ୍ରତ୍ୟାବର୍ତ୍ତନ;
ମାଇକ୍_ସେଟ୍.ମାଇକ୍ୱେଟ୍ନମ୍=ପଠନ;
ମାଇକ୍ଇଫେକ୍ଟସେଣ୍ଡ(ମାଇକ୍_ସେଟ୍.ମାଇକ୍ୱେଟ୍ନମ୍*୧୦,
ମାଇକ୍_ସେଟ୍। ମାଇକ୍ଡ୍ରାଇନମ୍*୧୦,
ମାଇକ୍_ସେଟ୍। ମାଇକ୍ ଡିଫନମ୍*5,
ମାଇକ୍_ସେଟ୍। ମାଇକ୍ଡେକେନମ୍*5,
ମାଇକ୍_ସେଟ୍.ହୁନସିଆଙ୍ଗଏସ୍ଡବ୍ଲୁ);
(2) ପ୍ରତିଫଳନ-ସମ୍ବନ୍ଧୀୟ ପାରାମିଟରଗୁଡ଼ିକ ନିମ୍ନଲିଖିତ ଭାବରେ ଅଟେ।
#ଯଦି 1
intreverb_parameter_val (u16 wet, u16 dry, u8 diffusion, u8 decayfactor,
u8 ହେଉଛି_ବାଇପାସ୍, u8 ଆଇଡିମୋଡ୍)
{
#ଯଦି ପରିଭାଷିତ ହୁଏ (TCFG_MIC_EFFECT_ENABLE)&& TCFG_MIC_EFFECT_ENABLE
#ଯଦି 1
u8 ମୋଡ୍_ଆଇଡି = ଆଇଡିମୋଡ୍+5;
ପ୍ଲେଟ୍_ରିଭର୍ବ_ଟୁଲ୍_ସେଟ୍ *ପାର୍ମଟ୍ = &eff_ମୋଡ୍[ମୋଡ୍_ଆଇଡି - ମାଇକ୍_ମୋଡ୍_ସେକ୍0].ପ୍ଲେଟ୍_ରିଭର୍ବ_ପାର୍ମ;
parmt->parm.wet=ଓଦା;
parmt->parm.dry=ଶୁଷ୍କ;
parmt->parm.diffusion=ବିକ୍ଷେପଣ;
parmt->parm.decayfactor=କ୍ଷୟକାରକ;
ପାର୍ମଟ୍->ଇସ୍_ବାଇପାସ୍=ଇସ୍_ବାଇପାସ୍;
ପ୍ଲେଟ୍_ରିଭର୍ବ_ଅପ୍ଡେଟ୍_ପାର୍ମ(&parmt->ପାର୍ମ, ପାର୍ମଟ୍->ବାଇପାସ୍ ଅଟେ);
#ଏଲିଫ୍ 1
u8 ମୋଡ୍_ଆଇଡି = ଆଇଡିମୋଡ୍+5;
//memcpy(&eff_mode[mode_id - mic_mode_seq0].echo_parm,&packet->ଡାଟା[1], sizeof(EF_ECHO_TOOL_SET));
EF_ECHO_TOOL_SET *ପାର୍ମଟ = &eff_ମୋଡ୍[ମୋଡ୍_ଆଇଡି -ମାଇକ୍_ମୋଡ୍_ସେକ୍0].ଇକୋ_ପାର୍ମ;
ପାର୍ମଟ୍->ପାର୍ମ.ଡିଲେ=ଡିଲେ_ଏମ୍ଏସ୍;
ଇକୋ_ଅପ୍ଡାଟା_ପାର୍ମ(&parmt->ପାର୍ମ, parmt->ବାଇପାସ୍ ଅଟେ);
#ଏଲିଫ୍ ୦//PARM_ଡିବଗ୍
ECHO_PARM_SET *ପାର୍ମ = &parmt->ପାର୍ମ;
ଲଗ୍_ଡିବଗ୍("ବିଳମ୍ବ %d, ଡିକେଭାଲ୍ %d, ଫିଲ୍ଟ୍_ସକ୍ଷମ %d, lpf_କଟଅଫ୍ %d, ଓ୍ବେଟ୍ଗେନ୍ %d, ଡ୍ରାଏଗେନ୍ %d\n",
ପାର୍ମ->ବିଳମ୍ବ, ପାର୍ମ->ଡିକେଭାଲ୍, ପାର୍ମ->ଫିଲ୍ଟ_ଏନେବଲ୍, ପାର୍ମ->ଏଲପିଏଫ_କଟଅଫ୍, ପାର୍ମ->ୱେଟଗେନ୍, ପାର୍ମ->ଡ୍ରାଏଗେନ୍);
#ଶେଷ
#ଶେଷ
ଫେରସ୍ତ ୦;
}
(3) ପ୍ରତିଧ୍ୱନି ସମ୍ବନ୍ଧୀୟ ପାରାମିଟରଗୁଡ଼ିକ ନିମ୍ନଲିଖିତ:
int Echo_parameter_val(u16 ଓଦା,u16 ଶୁଷ୍କ,u16 ବିଳମ୍ବ,u16 କ୍ଷୟକାରକ,
u16 ହେଉଛି_ବାଇପାସ୍, u16 ଆଇଡିମୋଡ୍)
{
#ଯଦିପରିଭାଷିତ(TCFG_MIC_EFFECT_ENABLE) ଏବଂ&TCFG_MIC_EFFECT_ENABLE
#ଯଦିTCFG_MIC_EFFECT_SEL==MIC_EFFECT_REVERB_ECHO
u8 ମୋଡ୍_ଆଇଡି = ଆଇଡିମୋଡ୍+5;
EF_ECHO_TOOL_SET*parmt = &eff_mode[ମୋଡ୍_ଆଇଡି - ମାଇକ୍_ମୋଡ୍_ସେକ୍0].echo_parm;
parmt->parm.wetgain=ଓଦା;
parmt->parm.sixty=ଶୁଷ୍କ;
parmt->parm.delay=ବିଳମ୍ବ;
parmt->parm.decayval=କ୍ଷୟକାରକ;
ପାର୍ମଟ୍->ଇସ୍_ବାଇପାସ୍=ଇସ୍_ବାଇପାସ୍;
ଇକୋ_ଅପ୍ଡାଟା_ପାର୍ମ(&parmt->ପାର୍ମ, parmt->ବାଇପାସ୍ ଅଟେ);
#ଶେଷ
ଫେରସ୍ତ ୦;
#ଶେଷ
}







