/* * tg_user_ctrl.cpp * * Created on: 2025Äê7ÔÂ24ÈÕ * Author: 86189 */ #include "IModule.h" #include "module_def.h" #include "tg_user_ctrl.h" u32 tg_param_ctrl::Signalgen_Ctrl(IModule* m, u32 pID, s16* val_c) { enum SGItemType{ SG_MUTE = 0x1, SG_TYPE , SG_REQ , SG_GAIN, }; short val[4]; int channel = val_c[0]&(MAX_INPUT_NUM-1); if(pID == INPUT_TYPE) {//signal gen if(val_c[1] > 3) { val[0] = channel; val[1] = 0 ; } else if(val_c[1] > 0) { val[0] = channel; val[1] = RESSIGNBIT(val_c[1]); m->Ctrl(SG_TYPE, val, 2); } else { val[0] = channel; val[1] = 0; m->Ctrl(SG_TYPE, val, 2); } } else if(pID == INPUT_FREQ) { val[0] = channel; val[1] = RESSIGNBIT(val_c[1]); m->Ctrl(SG_REQ, val, 2); } else if(pID == INPUT_LEVEL) { val[0] = channel; val[1] = RESSIGNBIT(val_c[1]); m->Ctrl(SG_GAIN, val, 2); } return 0; } u32 tg_param_ctrl::Input_Ctrl(IModule* m, u32 pID, s16* val_c) { enum GainID { GAIN = 0x1, MUTE, SENSI, PHANTOM, PHASE = 9, STEP,//-500~+500 }; enum PitchID { PITCH_BYPASS = 0x1,// PITCH_SEMITONES,// }; short val[4]; int channel = val_c[0]&(MAX_INPUT_NUM-1); if(pID == INPUT_STEP) { val[0] = channel; val[1] = RESSIGNBIT(val_c[1]); m->Ctrl(STEP, val, 2); } else { val[0] = channel; val[1] = RESSIGNBIT(val_c[1]); m->Ctrl(pID, val, 2); } return 0; } u32 tg_param_ctrl::Gain_Ctrl(IModule* m, u32 pID, s16* val_c) { enum GainID { GAIN = 0x1, MUTE, SENSI, PHANTOM, PHASE = 9, STEP,//-500~+500 }; short val[4]; int channel = val_c[0]&(MAX_INPUT_NUM-1); if(pID == 0x20) { val[0] = channel; val[1] = RESSIGNBIT(val_c[1]); m->Ctrl(GAIN, val, 2); } return 0; } u32 tg_param_ctrl::Output_Ctrl(IModule* m, u32 pID, s16* val_c) { enum GainID { GAIN = 0x1, MUTE, SENSI, PHANTOM, PHASE = 9, STEP, }; short val[4]; int channel = val_c[0]&(MAX_OUTPUT_NUM-1); short cmd[16] = {GAIN, MUTE, 0, PHASE, SENSI, STEP, 0, 0, 0, 0, 0, 0 ,0 ,0 ,0 ,0 }; val[0] = channel; val[1] = RESSIGNBIT(val_c[1]); m->Ctrl(cmd[pID-1], val, 2); return 0; } u32 tg_param_ctrl::Mixer_Ctrl(IModule* m, u32 pID, s16* val_c) { short val[4]; if(m->GetModuleID() >= 320){ val[0] = RESSIGNBIT(val_c[0]); val[1] = 0; val[2] = RESSIGNBIT(val_c[1]); m->Ctrl(MIXER_SWITCH, val, 3); } else{ val[0] = val_c[0]&0xff ; val[1] = (val_c[0]>>8)&0xff; val[2] = RESSIGNBIT(val_c[1]); m->Ctrl(pID, val, 3); } return 0; } u32 tg_param_ctrl::Crossover_Ctrl(IModule* m, u32 pID, s16* val_c) { enum CFilterID { _BYPASS = 0x1, _TYPE, _TAPS, _FREQ, _GAIN, }; short val[4]; if(pID >= XOVER_LOWPASS_BYPASS){ val[0] = 0; val[1] = RESSIGNBIT(val_c[0]); pID = pID - XOVER_LOWPASS_BYPASS +1; } else{ val[0] = 1; val[1] = RESSIGNBIT(val_c[0]); } m->Ctrl(pID, val, 2); return 0; } u32 tg_param_ctrl::Feedback_Ctrl(IModule* m, u32 pID, s16* val_c) { // enum NHSID{ // FB_BYPASS = 0x1, // FB_PANIC, // FB_THRS, // FB_FLT_DEPTH, // FB_STEP, // FB_FLT_Q, // FB_RECYCLETIME, // // FB_FLT_FREQ, // FB_FLT_GAIN, // FB_FLT_TYPE, // // FB_CLEAR, // FB_CLEAR_DYNAMIC, // }; enum NHSID{ FB_BYPASS= 0x1, FB_FLT_FREQ, FB_FLT_GAIN, FB_FLT_Q, FB_FLT_TYPE, FB_STEP, FB_CLEAR, FB_PANIC, FB_FLT_DEPTH, FB_THRS, }; short val[4]; // short cmd[16] = {FB_BYPASS, FB_FLT_FREQ, FB_FLT_GAIN, FB_FLT_Q, FB_FLT_TYPE, FB_STEP,\ // FB_CLEAR, FB_PANIC, FB_FLT_DEPTH, FB_THRS, 0, 0 ,0 ,0 ,0 ,0 }; val[0] = RESSIGNBIT(val_c[0]); val[1] = RESSIGNBIT(val_c[1]); m->Ctrl(pID, val, 2); return 0; } u32 tg_param_ctrl::Automixer_Ctrl(IModule* m, u32 pID, s16* val_c) { enum GainSharingAMID { AM_BYPASS =0x1, AM_MUTE , AM_GAIN, AM_SLOPE, AM_RESPONSE, AM_CHANNEL_AUTO , AM_CHANNEL_MUTE, AM_CHANNEL_GAIN, AM_CHANNEL_PRIORITY, }; short val[4]; short cmd[16] = {AM_MUTE, AM_GAIN,AM_SLOPE,AM_RESPONSE,AM_CHANNEL_AUTO,AM_CHANNEL_MUTE,\ AM_CHANNEL_GAIN,AM_CHANNEL_PRIORITY,AM_BYPASS}; val[0] = RESSIGNBIT(val_c[0]); val[1] = RESSIGNBIT(val_c[1]); m->Ctrl(cmd[pID-1], val, 2); return 0; } u32 tg_param_ctrl::Aec_Ctrl(IModule* m, u32 pID, s16* val_c) { enum AECID{ BYPASS = 0X1, MUTE, NLPLEVEL, NSMODE, HPFFREQ, CHANNAME, AGC_BYPASS, AGC_THRESHOLD, AGC_TARTHRESHOLD, AGC_RATIO, AGC_ATTACK, AGC_RELEASE, AGC_GAIN, }; short val[4]; short cmd[12] = {0, BYPASS, NLPLEVEL, 0, 0,0}; val[0] = RESSIGNBIT(val_c[0]); val[1] = RESSIGNBIT(val_c[1]); m->Ctrl(cmd[pID], val, 1); return 0; } u32 tg_param_ctrl::Sysctl_Ctrl(IModule* m, u32 pID, s16* val_c) { enum SYSCTRLID{ SYSCTL_MUTE = 0x1, //val[0]:0-unmute,1-mute SYSCTL_GAIN, // }; short val[4]; short cmd[4] = {0, SYSCTL_GAIN, SYSCTL_MUTE, 0}; val[0] = RESSIGNBIT(val_c[0]); m->Ctrl(cmd[pID], val, 1); return 0; } u32 tg_param_ctrl::Geq_Ctrl(IModule* m, u32 pID, s16* val_c) { enum EQID{ EQ_BYPASS_ALL = 0x1, EQ_BYPASS, EQ_FREQ, EQ_GAIN, EQ_QVALUE, EQ_TYPE, }; short val[4]; short cmd[8] = {0,EQ_BYPASS_ALL, EQ_QVALUE, EQ_GAIN}; val[0] = RESSIGNBIT(val_c[0]); val[1] = RESSIGNBIT(val_c[1]); m->Ctrl(cmd[pID], val, 2); return 0; } u32 tg_param_ctrl::Reverb_Ctrl(IModule* m, u32 pID, s16* val_c) { short val[4]; val[0] = RESSIGNBIT(val_c[0]); val[1] = RESSIGNBIT(val_c[1]); m->Ctrl(pID, val, 2); return 0; } u32 tg_param_ctrl::Echo_Ctrl(IModule* m, u32 pID, s16* val_c) { enum EchoID{ ECHO_BYPASS = 1, ECHO_HPF, ECHO_LPF, ECHO_DELAY, ECHO_GAIN, }; short val[4]; val[0] = RESSIGNBIT(val_c[0]); val[1] = RESSIGNBIT(val_c[1]); m->Ctrl(pID, val, 2); return 0; } u32 tg_param_ctrl::General_Ctrl(IModule* m, u32 pID, s16* val_c) { short val[4]; val[0] = RESSIGNBIT(val_c[0]); val[1] = RESSIGNBIT(val_c[1]); m->Ctrl(pID, val, 2); return 0; }