Leave Your Message

【Open-Source】Contrôle de la réverbération et de l'écho pour microphone de console de mixage basé sur T5L

08/01/2025

--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]

10.png

11.png

13.png

[Conception du projet d'interface graphique]

12.png

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

}