jl701n_soundbox_release_v1.4.2 中的2T1_duplex应用 主机模式PC端调节PC音量条从机端没有同步音量设置问题处理
📎 原始文档:https://www.kdocs.cn/l/cgHMsmK86hib jl701n_soundbox_release_v1.4.2 中的2T1_duplex应用 主机模式PC端调节PC音量条从机端没有同步音量设置问题处理
前言:改文档提供一种2T1_duplex 应用音量控制的临时解决办法
修改主机本地 usb speaker 音频的音量大小(默认已经增加数字音量节点同步处理)

(第一种办法修改主机端的数字音量后发送给从机)修改从机的接收到的主机转发的usb speaker 数据的音量,采用在主机端先调节转发音频音量后再转发到从机的做法实现



user_audio_digital_vol_run(data, len, user_dig_vol_table[user_dig_vol_step], user_dig_vol_table[user_dig_vol_step]);
#define USER_DIGITAL_VOL_MAX SYS_MAX_VOL
u8 user_dig_vol_step = USER_DIGITAL_VOL_MAX;
const u16 user_dig_vol_table[USER_DIGITAL_VOL_MAX + 1] = {
0 , //0
545,
1347, //1
2751, //2
3930, //3
4700,
5616, //4
6713, //5
8025, //6
9592, //7
10500,
11466,//8
12000,//9
13000,//10
14000,//11
15200,//12
16384 //13
};
//单/双声道数字音量处理
// vol:0~16384(大于16384会把数据放大,有可能出现失真)
int user_audio_digital_vol_run(void *data, u32 len, u32 l_vol,u32 r_vol)
{
s32 valuetemp;
s16 *buf;
buf = data; //数据
len >>= 1; //byte to point //
for (u32 i = 0; i < len; i += 2) {
///left channel
valuetemp = buf[i];
if (valuetemp < 0) {
valuetemp = -valuetemp;
valuetemp = (valuetemp * l_vol) >> 14 ; //除以16384
valuetemp = -valuetemp;
} else {
valuetemp = (valuetemp * l_vol) >> 14 ;
}
if (valuetemp < -32768) {
valuetemp = -32768;
} else if (valuetemp > 32767) {
valuetemp = 32767;
}
buf[i] = (s16)valuetemp;
///right channel
valuetemp = buf[i + 1];
if (valuetemp < 0) {
valuetemp = -valuetemp;
valuetemp = (valuetemp * r_vol) >> 14 ;
valuetemp = -valuetemp;
} else {
valuetemp = (valuetemp * r_vol) >> 14 ;
}
if (valuetemp < -32768) {
valuetemp = -32768;
} else if (valuetemp > 32767) {
valuetemp = 32767;
}
buf[i + 1] = (s16)valuetemp;
}
return 0;
}
(第二种办法通过发送音量等级给到从机后修改从机本地的音量)
701双向一拖二双向音量同步demo.rar
3. 修改主机录音到PC端的录音gain值的实现 同样采样直接修改上传录音数据的办法
原因是主机端的录音是本地的linein、两个从机的mic 声音等多路混合而成,默认做法是将数据全部混合相加后,再统一传到PCmic录音中断
做法实现:

#define USER_DIGITAL_VOL_MAX SYS_MAX_VOL
u8 user_usb_mic_dig_vol_step = USER_DIGITAL_VOL_MAX;
const u16 user_usb_mic_dig_vol_table[USER_DIGITAL_VOL_MAX + 1] = {
0 , //0
545,
1347, //1
2751, //2
3930, //3
4700,
5616, //4
6713, //5
8025, //6
9592, //7
10500,
11466,//8
12000,//9
13000,//10
14000,//11
15200,//12
16384 //13
};
///增加mic 音量控制
user_audio_digital_vol_run(data, len, user_usb_mic_dig_vol_table[user_usb_mic_dig_vol_step], user_usb_mic_dig_vol_table[user_usb_mic_dig_vol_step]);