【Açıq Mənbə】T5L əsaslı qarışdırma konsolu mikrofonu üçün reverb və echo nəzarəti
——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ı]



[GUI Layihə Dizaynı]

【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
}










