【Sumber Terbuka】Kawalan Reverb dan Gema untuk Mencampur Mikrofon Konsol Berdasarkan T5L
——Daripada DWIN Forum Pembangun
Kami berbesar hati untuk mempersembahkan sarung sumber terbuka yang memenangi anugerah daripada Forum Pembangun DWIN hari ini: kawalan reverb dan gema untuk mencampurkan mikrofon konsol berdasarkan cip T5L. Jurutera kami menggunakan paparan resolusi 800x480 untuk berinteraksi dengan papan pembangunan reverb melalui UART 4 T5L, membolehkan pelarasan tepat parameter audio kritikal seperti reverb, gema, bunyi basah, bunyi kering, akustik, pereputan dan kelewatan untuk kesan audio yang unggul.
[Bahan UI]



[Reka Bentuk Projek GUI]

【Projek C51】
(1) Program utama untuk skrin adalah seperti berikut:
batal main(){
INIT_CPU();//Permulaan Sistem
PORT_Init();//Initialkan port IO
T0_Init();//Memulakan pemasa 0
T2_Init();//Memulakan pemasa 2
my_UART4_Init(115200);
uart_init();//Memulakan port bersiri
ws2812_writ_byte(8); // Mulakan lampu LED
RetMicSet();
kelewatan_ms(1000);
ChangePage(1);
manakala(1){
Uart_Handle_all();
OneMsHandle();//1Ms setiap kali
TenMsHandle();
Read_0xF00();//Muat naik automatik data
}
}
batal TenMsHandle(kosong)
{
jika(!TenmsFlag)
kembali;
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)
kembali;
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) Parameter berkaitan reverb adalah seperti berikut
#jika 1
intreverb_parameter_val(u16 basah, u16 kering, u8 resapan, u8 faktor pereput,
u8 is_bypass, u8 idmode)
{
#jika ditakrifkan(TCFG_MIC_EFFECT_ENABLE)&& TCFG_MIC_EFFECT_ENABLE
#jika 1
u8 mod_id = idmode+5;
Plate_reverb_TOOL_SET *parmt = &eff_mode[mod_id - mic_mode_seq0].plate_reverb_parm;
parm->parm.wet=basah;
parm->parm.dry=dry;
parmt->parm.diffusion=difusi;
parmt->parm.decayfactor=decayfactor;
parmt->is_bypass=is_bypass;
plate_reverb_update_parm(&parmt->parm, parmt->is_bypass);
#elif 1
u8 mod_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->delay, parm->decayval,parm->filt_enable, parm->lpf_cutoff, parm->wetgain, parm->drygain);
#endif
#endif
pulangan 0;
}
(3) Parameter berkaitan gema adalah seperti berikut:
int Echo_parameter_val(u16 basah, u16 kering, u16 kelewatan, u16 faktor pereput,
u16 is_bypass, u16 idmode)
{
#ifdefined(TCFG_MIC_EFFECT_ENABLE) &&TCFG_MIC_EFFECT_ENABLE
#ifTCFG_MIC_EFFECT_SEL==MIC_EFFECT_REVERB_ECHO
u8 mod_id = idmode+5;
EF_ECHO_TOOL_SET*parmt = &eff_mode[mod_id - mic_mode_seq0].echo_parm;
parmt->parm.wetgain=basah;
parm->parm.sixty=kering;
parmt->parm.delay=delay;
parmt->parm.decayval=decayfactor;
parmt->is_bypass=is_bypass;
echo_updata_parm(&parmt->parm, parmt->is_bypass);
#endif
pulangan 0;
#endif
}





