Inquiry
Form loading...

【Open-Source】Reverb and Echo Control for Mixing Console Microphone Basatu nantu à T5L

2025-01-08

——Da u Forum di sviluppatori DWIN

Semu piacè di prisentà oghje un casu premiatu open-source da u Forum di Sviluppatori DWIN: cuntrollu di reverb è eco per mischjà u microfonu di cunsola basatu annantu à u chip T5L. U nostru ingegnere usa un display di risoluzione 800x480 per interagisce cù a scheda di sviluppu di reverb attraversu l'UART 4 ​​di T5L, chì permette un aghjustamentu precisu di parametri audio critichi cum'è reverb, eco, sonu umitu, sonu seccu, acusticu, decadenza è ritardu per effetti audio superiori.

[Materiali UI]

10.png

11.png

13.png

[Design di Prughjettu GUI]

12.png

Prughjettu C51

(1) U prugramma principale per u screnu hè u seguente:

void main(){

INIT_CPU();//Inizializazione di u Sistema

PORT_Init();//Inizializà u portu IO

T0_Init();//Initialize timer 0

T2_Init();//Initialize timer 2

my_UART4_Init(115200);

uart_init();//Inizializà u portu seriale

ws2812_writ_byte(8);//Inizializà a luce LED

RetMicSet();

delay_ms (1000);

Cambia pagina (1);

mentri (1) {

Uart_Handle_all();

OneMsHandle();//1Ms ogni volta

TenMsHandle();

Read_0xF00();// Carica automatica di dati

}

}

void TenMsHandle (void)

{

if(!TenmsFlag)

ritornu;

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=Leggi_Dgus(0x1200);

if(readst==Mic_Set.MicWetNum)

ritornu;

Mic_Set.MicWetNum=lettu;

MicEffectSend(Mic_Set.MicWetNum*10,

Mic_Set.MicDryNum*10,

Mic_Set.MicDiffNum*5,

Mic_Set.MicDecayNum*5,

Mic_Set.HunXiangSW);

 

(2) I paràmetri di reverb-related sò i seguenti

#se 1

intreverb_parameter_val(u16 wet,u16 dry,u8 diffusion,u8 decayfactor,

u8 is_bypass, u8 idmode)

{

#se definitu (TCFG_MIC_EFFECT_ENABLE)&& TCFG_MIC_EFFECT_ENABLE

#se 1

u8 mode_id = idmode+5;

Plate_reverb_TOOL_SET *parmt = &eff_mode[mode_id - mic_mode_seq0].plate_reverb_parm;

parmt->parm.wet = bagnatu;

parmt->parm.dry = seccu;

parmt->parm.diffusion=diffusione;

parmt->parm.decayfactor=fattore di decadenza;

parmt->is_bypass=is_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=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

torna 0;

}

 

(3) I paràmetri di l'eco sò i seguenti:

int Echo_parameter_val(u16 wet,u16 dry,u16 delay,u16 decayfactor,

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 = bagnatu;

parmt->parm.sixty=seccu;

parmt->parm.delay = ritardu;

parmt->parm.decayval=fattore di decadenza;

parmt->is_bypass=is_bypass;

echo_updata_parm(&parmt->parm, parmt->is_bypass);

#endif

torna 0;

#endif

}