Leave Your Message
دسته‌بندی‌های اخبار
اخبار ویژه

کنترل ریورب و اکو 【متن‌باز】 برای میکروفون کنسول میکس مبتنی بر T5L

۲۰۲۵-۰۱-۰۸

——از دوین انجمن توسعه‌دهندگان

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

[مواد رابط کاربری]

۱۰.png

۱۱.png

۱۳.png

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

۱۲.png

پروژه 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);

#پایان

مقدار ۰ را برمی‌گرداند؛

#پایان

}