【オープンソース】T5Lベースのミキシングコンソールマイク用リバーブとエコーコントロール
- から ドウィン 開発者フォーラム
本日は、DWIN開発者フォーラムから受賞歴のあるオープンソース事例をご紹介いたします。T5Lチップを搭載したミキシングコンソールマイクのリバーブとエコー制御です。当社のエンジニアは、800x480解像度のディスプレイを使用して、T5LのUART 4を介してリバーブ開発ボードと通信することで、リバーブ、エコー、ウェットサウンド、ドライサウンド、音響特性、ディケイ、ディレイといった重要なオーディオパラメータを正確に調整し、卓越したオーディオエフェクトを実現しています。
[UIマテリアル]



[GUIプロジェクト設計]

【C51プロジェクト】
(1)画面のメインプログラムは以下のとおりです。
void main(){
INIT_CPU();//システムの初期化
PORT_Init();//IOポートを初期化する
T0_Init();//タイマー0を初期化する
T2_Init();//タイマー2を初期化する
my_UART4_Init(115200);
uart_init();//シリアルポートを初期化する
ws2812_writ_byte(8);//LEDライトを初期化する
RetMicSet();
遅延_ms(1000);
ページ変更(1);
while(1){
Uart_Handle_all();
OneMsHandle();//1Ms ずつ
TenMsHandle();
Read_0xF00();//データの自動アップロード
}
}
void TenMsHandle(void)
{
if(!TenmsFlag)
戻る;
一時フラグ=0;
HunX_Law();
HunX_Dry();
HunX_WeiYing();
HunX_ShuaiJian();
HunX_Switch();
エコー_ウェット();
エコー_ドライ();
エコー遅延();
Echo_ShuaiJian();
エコースイッチ();
}
void HunX_Wet(void)
{
u16readst=0;
readst=Read_Dgus(0x1200);
if(readst==Mic_Set.MicWetNum)
戻る;
Mic_Set.MicWetNum=読み取り済み;
マイクエフェクト送信(Mic_Set.MicWetNum*10,
Mic_Set.MicDryNum*10、
Mic_Set.MicDiffNum*5、
Mic_Set.MicDecayNum*5、
Mic_Set.HunXiangSW);
(2)リバーブ関連のパラメータは以下の通りである
#1の場合
inteverb_parameter_val(u16 ウェット、u16 ドライ、u8 拡散、u8 減衰係数、
u8 is_bypass、u8 idmode)
{
#定義されている場合(TCFG_MIC_EFFECT_ENABLE)&& TCFG_MIC_EFFECT_ENABLE
#1の場合
u8 モードID = idモード+5;
Plate_reverb_TOOL_SET *parmt = &eff_mode[mode_id - mic_mode_seq0].plate_reverb_parm;
parmt->parm.wet=wet;
parmt->parm.dry=dry;
parmt->parm.diffusion=拡散;
parmt->parm.decayfactor=減衰係数;
パラメータ->is_bypass=is_bypass;
plate_reverb_update_parm(&parmt->parm, parmt->is_bypass);
#elif 1
u8 モードID = idモード+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->delay、parm->decayval、parm->filt_enable、parm->lpf_cutoff、parm->wetgain、parm->drygain);
#endif
#endif
0を返します。
}
(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 モードID = idモード+5;
EF_ECHO_TOOL_SET*parmt = &eff_mode[mode_id - mic_mode_seq0].echo_parm;
parmt->parm.wetgain=wet;
parmt->parm.sixty=dry;
parmt->parm.delay=遅延;
parmt->parm.decayval=減衰係数;
パラメータ->is_bypass=is_bypass;
echo_updata_parm(&parmt->parm, parmt->is_bypass);
#endif
0を返します。
#endif
}





