【Open-Source】Contrôle de la réverbération et de l'écho pour microphone de console de mixage basé sur T5L
--Depuis DWIN Forum des développeurs
Nous sommes heureux de vous présenter aujourd'hui un cas open source primé du Forum des développeurs DWIN : le contrôle de la réverbération et de l'écho pour microphone de console de mixage basé sur la puce T5L. Notre ingénieur utilise un écran 800x480 pour interagir avec la carte de développement de réverbération via l'UART 4 de la T5L, permettant ainsi un réglage précis des paramètres audio critiques tels que la réverbération, l'écho, le son traité, le son non traité, l'acoustique, le déclin et le délai, pour des effets audio de qualité supérieure.
[Matériaux de l'interface utilisateur]



[Conception du projet d'interface graphique]

【Projet C51】
(1) Le programme principal de l'écran est le suivant :
vide principal(){
INIT_CPU();//System Initialisation
PORT_Init();//Initialiser le port d'E/S
T0_Init();//Initialiser le minuteur 0
T2_Init();//Initialiser le minuteur 2
mon_UART4_Init(115200);
uart_init();//Initialiser le port série
ws2812_writ_byte(8);//Initialiser la lumière LED
RetMicSet();
délai_ms(1000);
ChangePage(1);
tandis que(1){
Uart_Handle_all();
OneMsHandle();//1Ms à chaque fois
DixMsHandle();
Read_0xF00();//Téléchargement automatique des données
}
}
vide TenMsHandle(vide)
{
si(!TenmsFlag)
retour;
TenmsFlag=0;
HunX_Loi();
HunX_Sec();
HunX_WeiYing();
HunX_ShuaiJian();
HunX_Switch();
Echo_Humide();
Écho_Sec();
Echo_Delay();
Echo_ShuaiJian();
Echo_Switch();
}
vide HunX_Wet(vide)
{
u16readst=0;
readst=Lire_Dgus(0x1200);
si(readst==Mic_Set.MicWetNum)
retour;
Mic_Set.MicWetNum=lecture ;
Effet MicEnvoyer(Mic_Set.MicWetNum*10,
Mic_Set.MicDryNum*10,
Mic_Set.MicDiffNum*5,
Mic_Set.MicDecayNum*5,
Mic_Set.HunXiangSW);
(2) Les paramètres liés à la réverbération sont les suivants
#si 1
intreverb_parameter_val(u16 humide,u16 sec,u8 diffusion,u8 decayfactor,
u8 est_contourné,u8 idmode)
{
#si défini(TCFG_MIC_EFFECT_ENABLE)&& TCFG_MIC_EFFECT_ENABLE
#si 1
u8 mode_id = idmode+5;
Plate_reverb_TOOL_SET *parmt = &eff_mode[mode_id - mic_mode_seq0].plate_reverb_parm;
parmt->parm.wet=humide;
parmt->parm.dry=sec;
parmt->parm.diffusion=diffusion;
parmt->parm.decayfactor=facteur de décroissance;
parmt->is_bypass=est_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=délai_ms;
echo_updata_parm(&parmt->parm, parmt->is_bypass);
#elif 0//PARM_DEBUG
ECHO_PARM_SET *parm = &parmt->parm;
log_debug("délai%d, décroissance %d, activation_filtre %d, coupure_lpf %d, gain_humide %d, gain_sec %d\n",
parm->delay, parm->decayval, parm->filt_enable, parm->lpf_cutoff, parm->wetgain, parm->drygain);
#finsi
#finsi
retourner 0;
}
(3) Les paramètres liés à l’écho sont les suivants :
int Echo_parameter_val(u16 humide,u16 sec,u16 retard,u16 facteur de décroissance,
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=humide;
parmt->parm.sixty=sec;
parmt->parm.delay=délai;
parmt->parm.decayval=facteur de décroissance;
parmt->is_bypass=est_bypass;
echo_updata_parm(&parmt->parm, parmt->is_bypass);
#finsi
retourner 0;
#finsi
}





