Leave Your Message

【Açıq Mənbə】T5L əsaslı qarışdırma konsolu mikrofonu üçün reverb və echo nəzarəti

2025-01-08

——Dən DWIN Geliştirici Forumu

Bu gün DWIN Geliştirici Forumundan mükafat qazanan açıq mənbəli bir nümunəni təqdim etməkdən məmnunuq: T5L çipinə əsaslanan qarışdırma konsol mikrofonu üçün reverb və exo idarəetməsi. Mühəndisimiz, T5L-in UART 4 ​​vasitəsilə reverb inkişaf lövhəsi ilə qarşılıqlı əlaqə qurmaq üçün 800x480 qətnamə ekranından istifadə edir və üstün səs effektləri üçün reverb, exo, yaş səs, quru səs, akustik, çürümə və gecikmə kimi vacib audio parametrlərinin dəqiq tənzimlənməsinə imkan verir.

[İstifadəçi interfeysi materialları]

10.png

11.png

13.png

[GUI Layihə Dizaynı]

12.png

C51 Layihəsi

(1) Ekran üçün əsas proqram aşağıdakı kimidir:

boşluq əsas(){

INIT_CPU(); //Sistem Başlanğıc

PORT_Init();//I portunu başlat

T0_Init();//Taymeri 0-a başlat

T2_Init();//Taymer 2-ni başlat

my_UART4_Init(115200);

uart_init();//Serial portu başlanğıc vəziyyətinə gətirin

ws2812_writ_byte(8);//LED işığını işə sal

RetMicSet();

gecikmə_ms(1000);

Səhifəni Dəyişdir(1);

isə(1){

Uart_Handle_all();

OneMsHandle();//hər dəfə 1Ms

TenMsHandle();

Read_0xF00();//Məlumatların avtomatik yüklənməsi

}

}

void TenMsHandle(void)

{

əgər(!TenmsFlag)

qayıtmaq;

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);

əgər(readst==Mic_Set.MicWetNum)

qayıtmaq;

Mic_Set.MicWetNum=oxunma;

MicEffectSend(Mic_Set.MicWetNum*10,

Mikrofon_Dəsti.MikQuruNum*10,

Mikrofon_Dəsti.MikFərqNumber*5,

Mic_Set.MicDecayNum*5,

Mic_Set.HunXiangSW);

 

(2) Reverblə əlaqəli parametrlər aşağıdakı kimidir

#əgər 1

intreverb_parameter_val(u16 yaş, u16 quru, u8 diffuziya, u8 decayfaktor,

u8 bypassdır, u8 idmode)

{

#əgər müəyyən edilibsə(TCFG_MIC_EFFECT_ENABLE)&& TCFG_MIC_EFFECT_ENABLE

#əgər 1

u8 mode_id = idmode+5;

Plate_reverb_TOOL_SET *parmt = &eff_rejimi[rejim_id - mic_rejimi_seq0].plate_reverb_parm;

parmt->parm.wet=wet;

parmt->parm.dry=dry;

parmt->parm.diffusion=diffuziya;

parmt->parm.decayfactor=decayfactor;

parmt->is_bypass=is_bypass;

plate_reverb_update_parm(&parmt->parmt, parmt->bypass_is);

#elif 1

u8 mode_id = idmode+5;

//memcpy(&eff_mode[mode_id - mic_mode_seq0].echo_parm,&packet->məlumatlar[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->parmt, 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

0 qaytarır;

}

 

(3) Əks-səda ilə əlaqəli parametrlər aşağıdakılardır:

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

u16 bypassdır, 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_rejimi[rejim_id - mic_rejimi_seq0].echo_parm;

parmt->parm.wetgain=wet;

parmt->parm.sixty=dry;

parmt->parm.delay=gecikmə;

parmt->parm.decayval=decayfactor;

parmt->is_bypass=is_bypass;

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

#endif

0 qaytarır;

#endif

}