T5L ଉପରେ ଆଧାର କରି କନସୋଲ୍ ମାଇକ୍ରୋଫୋନ୍ ମିଶ୍ରଣ ପାଇଁ ଓପନ୍ ସୋର୍ସ】 ରେଭର୍ ଏବଂ ଇକୋ କଣ୍ଟ୍ରୋଲ୍ |
—— DWIN ଡେଭଲପର୍ ଫୋରମ୍ ରୁ |
ଆଜି DWIN ଡେଭଲପର୍ ଫୋରମ୍ ତରଫରୁ ଏକ ପୁରସ୍କାର ପ୍ରାପ୍ତ ଓପନ୍ ସୋର୍ସ କେସ୍ ଉପସ୍ଥାପନ କରିବାକୁ ଆମେ ଖୁସି: T5L ଚିପ୍ ଉପରେ ଆଧାର କରି କନସୋଲ୍ ମାଇକ୍ରୋଫୋନ୍ ମିଶ୍ରଣ ପାଇଁ ରେଭର୍ ଏବଂ ଇକୋ କଣ୍ଟ୍ରୋଲ୍ | ଆମର ଇଞ୍ଜିନିୟର T5L ର UART 4 ମାଧ୍ୟମରେ ରେଭର୍ ଡେଭଲପମେଣ୍ଟ ବୋର୍ଡ ସହିତ ଯୋଗାଯୋଗ କରିବା ପାଇଁ ଏକ 800x480 ରେଜୋଲୁସନ ଡିସପ୍ଲେ ବ୍ୟବହାର କରେ, ଉଚ୍ଚ ଅଡିଓ ପ୍ରଭାବ ପାଇଁ ରେଭର୍, ଇକୋ, ଓଦା ଧ୍ୱନି, ଶୁଖିଲା ଧ୍ୱନି, ଆକାଶବାଣୀ, କ୍ଷୟ ଏବଂ ବିଳମ୍ବ ପରି ଜଟିଳ ଅଡିଓ ପାରାମିଟରଗୁଡିକର ସଠିକ୍ ଆଡଜଷ୍ଟମେଣ୍ଟକୁ ସକ୍ଷମ କରିଥାଏ |
[UI ସାମଗ୍ରୀ]
[GUI ପ୍ରୋଜେକ୍ଟ ଡିଜାଇନ୍]
【C51 ପ୍ରକଳ୍ପ】
(1) ସ୍କ୍ରିନ୍ ପାଇଁ ମୁଖ୍ୟ ପ୍ରୋଗ୍ରାମ୍ ହେଉଛି:
void main () {
INIT_CPU (); // ସିଷ୍ଟମ୍ ପ୍ରାରମ୍ଭିକରଣ |
PORT_Init (); // IO ପୋର୍ଟ ଆରମ୍ଭ କରନ୍ତୁ |
T0_Init (); // ଟାଇମର୍ 0 ଆରମ୍ଭ କରନ୍ତୁ |
T2_Init (); // ଟାଇମର୍ 2 ଆରମ୍ଭ କର |
my_UART4_Init (115200);
uart_init (); // କ୍ରମିକ ପୋର୍ଟ ଆରମ୍ଭ କରନ୍ତୁ |
ws2812_writ_byte (8); // LED ଆଲୋକ ଆରମ୍ଭ କରନ୍ତୁ |
RetMicSet ();
ବିଳମ୍ବ_ମସ୍ (1000);
ChangePage (1);
ଯେତେବେଳେ (1) {
Uart_Handle_all ();
ପ୍ରତ୍ୟେକ ଥର OneMsHandle (); // 1Ms |
TenMsHandle ();
Read_0xF00 (); // ଡାଟା ସ୍ୱୟଂଚାଳିତ ଅପଲୋଡ୍ |
}
}
ଶୂନ୍ୟ TenMsHandle (ଶୂନ୍ୟ)
{
ଯଦି (! TenmsFlag)
ଫେରସ୍ତ;
TenmsFlag = 0;
HunX_Law ();
HunX_Dry ();
HunX_WeiYing ();
HunX_ShuaiJian ();
HunX_Switch ();
Echo_Wet ();
Echo_Dry ();
Echo_Delay ();
Echo_ShuaiJian ();
ଇକୋ_ସ୍ୱିଚ୍ ();
}
ଶୂନ୍ୟ HunX_Wet (ଶୂନ୍ୟ)
{
u16readst = 0;
readst = Read_Dgus (0x1200);
ଯଦି (readst == Mic_Set.MicWetNum)
ଫେରସ୍ତ;
Mic_Set.MicWetNum = ପଠନ;
MicEffectSend (Mic_Set.MicWetNum * 10,
Mic_Set.MicDryNum * 10,
Mic_Set.MicDiffNum * 5,
Mic_Set.MicDecayNum * 5,
Mic_Set.HunXiangSW);
(୨) ରେଭର୍-ସମ୍ବନ୍ଧୀୟ ପାରାମିଟରଗୁଡିକ ନିମ୍ନଲିଖିତ ଅଟେ |
#if 1
intreverb_parameter_val (u16 wet, u16 dry, u8 diffusion, u8 decayfactor,
u8 is_bypass, u8 idmode)
{
# ଯଦି ବ୍ୟାଖ୍ୟା କରାଯାଇଛି (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 = ଓଦା;
parmt-> parm.dry = ଶୁଖିଲା;
parmt-> parm.diffusion = ବିସ୍ତାର;
parmt-> parm.decayfactor = କ୍ଷୟକ୍ଷତି;
parmt-> is_bypass = is_bypass;
plate_reverb_update_parm (& parmt-> parm, parmt-> is_bypass);
# ଏଲିଫ୍ 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 = ବିଳମ୍ବ_ମସ୍;
echo_updata_parm (& parmt-> parm, parmt-> is_bypass);
#elif 0 // PARM_DEBUG |
ECHO_PARM_SET * parm = & parmt-> parm;
log_debug ("ବିଳମ୍ବ% d, କ୍ଷୟ% d, filt_enable% d, lpf_cutoff% d, wetgain% d, drygain% d \ n",
parm-> ବିଳମ୍ବ, parm-> decayval, parm-> filt_enable, parm-> lpf_cutoff, parm-> wetgain, parm-> drygain);
# ଏଣ୍ଡିଫ୍ |
# ଏଣ୍ଡିଫ୍ |
ଫେରସ୍ତ 0;
}
(3) ଇକୋ ସମ୍ବନ୍ଧୀୟ ପାରାମିଟରଗୁଡିକ ନିମ୍ନଲିଖିତ ଅଟେ:
int Echo_parameter_val (u16 ଓଦା, u16 ଶୁଖିଲା, u16 ବିଳମ୍ବ, u16 କ୍ଷୟକ୍ଷତି,
u16 is_bypass, u16 idmode)
{
# ନିର୍ଦ୍ଦିଷ୍ଟ (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 = ଓଦା;
parmt-> parm.sixty = ଶୁଖିଲା;
parmt-> parm.delay = ବିଳମ୍ବ;
parmt-> parm.decayval = କ୍ଷୟକ୍ଷତି;
parmt-> is_bypass = is_bypass;
echo_updata_parm (& parmt-> parm, parmt-> is_bypass);
# ଏଣ୍ଡିଫ୍ |
ଫେରସ୍ତ 0;
# ଏଣ୍ଡିଫ୍ |
}