【Open-Source】Contrôle de réverbération et d'écho pour microphone de console de mixage basé sur T5L
——Extrait du forum des développeurs DWIN
Nous sommes heureux de vous présenter aujourd'hui un cas open source primé du DWIN Developer Forum : le contrôle de la réverbération et de l'écho pour le microphone de la console de mixage basé sur la puce T5L. Notre ingénieur utilise un écran de résolution 800x480 pour interagir avec la carte de développement de réverbération via l'UART 4 de T5L, permettant un réglage précis des paramètres audio critiques tels que la réverbération, l'écho, le son humide, le son sec, l'acoustique, la décroissance et le délai pour des effets audio supérieurs.
[Matériaux de l'interface utilisateur]
[Conception du projet d'interface utilisateur graphique]
【Projet C51】
(1) Le programme principal de l'écran est le suivant :
vide main(){
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(void)
{
si(!TenmsFlag)
retour;
TenmsFlag=0;
HunX_Law();
HunX_Dry();
HunX_WeiYing();
HunX_ShuaiJian();
HunX_Switch();
Echo_Mouillé();
É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 MicSend(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_contournement,u8 idmode)
{
#si défini (TCFG_MIC_EFFECT_ENABLE)&& TCFG_MIC_EFFECT_ENABLE
#si 1
u8 mode_id = idmode+5;
Ensemble d'outils de réverbération de plaque *parmt = &eff_mode[mode_id - mic_mode_seq0].plate_reverb_parm;
parmt->parm.wet=mouillé;
parmt->parm.dry=sec;
parmt->parm.diffusion=diffusion;
parmt->parm.decayfactor=facteur de décroissance;
parmt->is_bypass=est_bypass;
mise à jour_de_la_réverbération_de_la_plaque_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 du filtre %d, coupure de lpf %d, gain humide %d, gain sec %d\n",
paramètre->délai, paramètre->decayval, paramètre->filt_enable, paramètre->lpf_cutoff, paramètre->wetgain, paramètre->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 est_contournement,u16 idmode)
{
#ifdefined(TCFG_MIC_EFFECT_ENABLE) &&TCFG_MIC_EFFECT_ENABLE
#ifTCFG_MIC_EFFECT_SEL==ECHO_REVERB_EFFET_MIC
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=dry;
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
}