专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
请教,stm32下做个混音程序,有什么可以参考
2019-12-11 18:19
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
11228
23
24
两个WAV文件,一个做背景音乐,一个做信息播报。
想在有信息播报的时候,背景音乐不停下来,而是声音变小。
信息播报和北京语音混音,一起播出来。
想问有什么可以参考的吗??linux的声卡驱动??
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
23条回答
zenith1032
2019-12-13 16:46
本帖最后由 zenith1032 于 2016-7-28 10:15 编辑
实际在windows下用C++中试过,将两个wav合成一个wav。
方法1,有噪音,失真,效果不好。
方法2,噪音较少,效果可以,但不知道怎么调两个音频各自的声音大小。
方法3,方法4还没调通,出来全是噪音。
编辑原因排版。发现数组的【i】,是显示不出来的。
#if REMIX_METHORD == 1
//out=(ka*(DataA-128)+kb*(DataB-128))/(ka+kb)+128;
write_buf【i】 = (11 * (read_buf1【i】- 32768) + 5 * (read_buf2【i】 - 32768)) / 16 + 32768;
#endif
#if REMIX_METHORD == 2
//C = A + B - (A * B >> 0x10)
//if (C > 32767) C = 32767;
//else if (C < -32768) C = -32768;
temp = read_buf1【i】 + read_buf2【i】- (read_buf1【i】 * read_buf2【i】>> 16);
if (temp > 32767)
temp = 32767;
else if (temp < -32768)
temp = -32768;
write_buf
= temp;
#endif
#if REMIX_METHORD == 3
//if( data1 < 0 && data2 < 0)
// date_mix = data1+data2 - (data1 * data2 / -(pow(2,16-1)-1));
//else
// date_mix = data1+data2 - (data1 * data2 / (pow(2,16-1)-1));
if (read_buf1【i】< 0 && read_buf2【i】< 0)
temp = read_buf1【i】+ read_buf2【i】 - (read_buf1【i】* read_buf2【i】 / -(pow(2, 16-1) -1));
else
temp = read_buf1【i】 + read_buf2【i】- (read_buf1【i】 * read_buf2【i】/ (pow(2, 16-1) -1));
#endif
#if REMIX_METHORD == 4
alsa_mix_16(read_buf1【i】, read_buf2【i】, &date_mix);
write_buf【i】= date_mix;
if(date_mix > pow(2,16-1) || date_mix < -pow(2,16-1))
cout << "mix error " << endl;
#endif
加载中...
查看其它23个回答
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
实际在windows下用C++中试过,将两个wav合成一个wav。
方法1,有噪音,失真,效果不好。
方法2,噪音较少,效果可以,但不知道怎么调两个音频各自的声音大小。
方法3,方法4还没调通,出来全是噪音。
编辑原因排版。发现数组的【i】,是显示不出来的。
#if REMIX_METHORD == 1
//out=(ka*(DataA-128)+kb*(DataB-128))/(ka+kb)+128;
write_buf【i】 = (11 * (read_buf1【i】- 32768) + 5 * (read_buf2【i】 - 32768)) / 16 + 32768;
#endif
#if REMIX_METHORD == 2
//C = A + B - (A * B >> 0x10)
//if (C > 32767) C = 32767;
//else if (C < -32768) C = -32768;
temp = read_buf1【i】 + read_buf2【i】- (read_buf1【i】 * read_buf2【i】>> 16);
if (temp > 32767)
temp = 32767;
else if (temp < -32768)
temp = -32768;
write_buf = temp;
#endif
#if REMIX_METHORD == 3
//if( data1 < 0 && data2 < 0)
// date_mix = data1+data2 - (data1 * data2 / -(pow(2,16-1)-1));
//else
// date_mix = data1+data2 - (data1 * data2 / (pow(2,16-1)-1));
if (read_buf1【i】< 0 && read_buf2【i】< 0)
temp = read_buf1【i】+ read_buf2【i】 - (read_buf1【i】* read_buf2【i】 / -(pow(2, 16-1) -1));
else
temp = read_buf1【i】 + read_buf2【i】- (read_buf1【i】 * read_buf2【i】/ (pow(2, 16-1) -1));
#endif
#if REMIX_METHORD == 4
alsa_mix_16(read_buf1【i】, read_buf2【i】, &date_mix);
write_buf【i】= date_mix;
if(date_mix > pow(2,16-1) || date_mix < -pow(2,16-1))
cout << "mix error " << endl;
#endif
一周热门 更多>