Inquiry
Form loading...

【Open-Source】 Reverb thiab Echo Control rau Mixing Console Microphone Raws li T5L

2025-01-08 IB

—— Los ntawm DWIN Developer Forum

Peb txaus siab los nthuav qhia qhov khoom plig qhib qhov rooj los ntawm DWIN Developer Forum hnub no: reverb thiab ncha tswj rau kev sib xyaw console microphone raws li T5L nti. Peb tus engineer siv lub 800x480 daws teeb meem zaub los cuam tshuam nrog lub reverb txoj kev loj hlob board los ntawm UART 4 ​​ntawm T5L, enabling meej kev hloov ntawm cov suab tsis tseem ceeb xws li reverb, ncha, ntub suab, qhuav suab, acoustic, lwj thiab qeeb rau superior suab.

[Cov ntaub ntawv UI]

10. png

11. png

13. png

[GUI Project Design]

12. png

Qhov project C51

(1) Qhov kev pabcuam tseem ceeb rau qhov screen yog raws li hauv qab no:

void main() {

INIT_CPU();//System Initialization

PORT_Init(); //Initialize IO chaw nres nkoj

T0_Init();//Initialize timer 0

T2_Init();//Initialize timer 2

my_UART4_Init(115200);

uart_init();//Initialize serial chaw nres nkoj

ws2812_writ_byte(8);//Initialize LED teeb

RetMicSet();

ncua_ms(1000);

ChangePage(1);

thaum (1) {

Uart_Handle_all();

OneMsHandle();//1Ms txhua lub sijhawm

TenMsHandle();

Read_0xF00();// Cov ntaub ntawv tsis siv neeg upload

}

}

void TenMsHandle(void)

{

yog tias (!TenmsFlag)

rov qab los;

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)

rov qab los;

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) Cov kev cuam tshuam ntawm reverb muaj raws li hauv qab no

#if 1

intreverb_parameter_val(u16 ntub, u16 qhuav, u8 diffusion, u8 decayfactor,

u8 is_bypass, u8 idmode)

{

#if defined(TCFG_MIC_EFFECT_ENABLE)&& TCFG_MIC_EFFECT_ENABLE

#if 1

u8 mode_id = idmode+5;

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

parmt->parm.wet=ntw;

parmt->parm.dry=nqe;

parmt->parm.diffusion = npiv;

parmt->parm.decayfactor = decayfactor;

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-> ncua, parm->decayval,parm->filt_enable, parm->lpf_cutoff, parm->wetgain, parm->drygain);

#endif

#endif

rov 0;

}

 

(3) Cov kev cuam tshuam nrog ncha yog raws li hauv qab no:

int Echo_parameter_val(u16 ntub, u16 qhuav, u16 ncua, 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= ntub;

parmt->parm.sixty= qhuav;

parmt->parm.delay = ncua;

parmt->parm.decayval = decayfactor;

parmt->is_bypass=is_bypass;

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

#endif

rov 0;

#endif

}