کنترل ریورب و اکو 【متنباز】 برای میکروفون کنسول میکس مبتنی بر T5L
——از دوین انجمن توسعهدهندگان
ما مفتخریم که امروز یک کیس متنباز برنده جایزه از انجمن توسعهدهندگان DWIN را ارائه دهیم: کنترل ریورب و اکو برای میکروفون کنسول میکس مبتنی بر تراشه T5L. مهندس ما از یک نمایشگر با وضوح 800x480 برای تعامل با برد توسعه ریورب از طریق UART 4 از T5L استفاده میکند و امکان تنظیم دقیق پارامترهای صوتی حیاتی مانند ریورب، اکو، صدای مرطوب، صدای خشک، آکوستیک، پوسیدگی و تأخیر را برای جلوههای صوتی برتر فراهم میکند.
[مواد رابط کاربری]



[طراحی پروژه رابط کاربری گرافیکی]

【پروژه C51】
(1) برنامه اصلی برای صفحه نمایش به شرح زیر است:
تابع اصلی () {
// مقداردهی اولیه سیستم
PORT_Init(); // مقداردهی اولیه پورت IO
T0_Init(); // تایمر ۰ را مقداردهی اولیه میکند
T2_Init(); // تایمر ۲ را مقداردهی اولیه کن
ورودی_UART4_my(115200);
uart_init(); // مقداردهی اولیه پورت سریال
ws2812_writ_byte(8); // مقداردهی اولیه نور LED
RetMicSet();
تاخیر_میلی ثانیه(1000)؛
صفحه تغییر(1)؛
در حالی که (1) {
تابع UART_Handle_all();
OneMsHandle(); // هر بار 1 میلیثانیه
هندل دهم ام اس ()؛
Read_0xF00(); // آپلود خودکار دادهها
}
}
TenMsHandle باطل (باطل)
{
اگر(!TenmsFlag)
بازگشت؛
پرچم تنمز=0;
HunX_Law();
خشک کردن ()؛
HunX_WeiYing();
HunX_ShuaiJian();
سوئیچ HunX();
اکو_مرطوب();
اکو_خشک();
تأخیر اکو();
Echo_ShuaiJian();
سوئیچ اکو();
}
باطل HunX_Wet(باطل)
{
u16readst=0;
readst=Read_Dgus(0x1200);
اگر (readst==Mic_Set.MicWetNum)
بازگشت؛
Mic_Set.MicWetNum=readst;
ارسال اثر میکروفون (مجموعه میکروفون.تعداد مرطوب میکروفون*10،
تعداد خشک کننده میکروفون * 10
عدد اختلاف میکروفون (Mic_Set.MicDiffNum) * 5،
تعداد پوسیدگی میکروفون * 5
مجموعه میکروفون. هان شیانگ اس دبلیو)؛
(2) پارامترهای مربوط به ریورب به شرح زیر است
#اگر ۱
intreverb_parameter_val(u16 wet,u16 dry,u8 diffusion,u8 decayfactor,
u8 is_bypass,u8 idmode)
{
#اگر تعریف شده باشد(TCFG_MIC_EFFECT_ENABLE)&& TCFG_MIC_EFFECT_ENABLE
#اگر ۱
u8 mode_id = idmode+5;
ابزار تنظیم Reverb صفحه *parmt = &eff_mode[mode_id - mic_mode_seq0].plate_reverb_parm;
parmt->parm.wet=مرطوب;
parmt->parm.dry=dry;
parmt->parm.diffusion=انتشار؛
parmt->parm.decayfactor=فاکتور واپاشی;
parmt->is_bypass=is_bypass;
plate_reverb_update_parm(&parmt->parm، parmt->is_bypass);
#الیف ۱
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("تاخیر%d، تغییر مقدار %d، فعالسازی فیلتر %d، قطع lpf %d، افزایش رطوبت %d، افزایش خشکی %d\n",
parm->delay، parm->decayval، parm->filt_enable، parm->lpf_cutoff، parm->wetgain، parm->drygain)؛
#پایان
#پایان
مقدار ۰ را برمیگرداند؛
}
(3) پارامترهای مربوط به اکو به شرح زیر هستند:
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=مرطوب;
parmt->parm.sixty=dry;
parmt->parm.delay=تأخیر؛
parmt->parm.decayval=فاکتور واپاشی؛
parmt->is_bypass=is_bypass;
echo_updata_parm(&parmt->parm، parmt->is_bypass);
#پایان
مقدار ۰ را برمیگرداند؛
#پایان
}







