播放音乐视觉效果上下跳动的频谱条怎么用C语言实现

axuey 2012-05-12 11:55:06
如题 想用C语言去实现播放上下跳动的频谱条的效果。

比如windows media player 里面的条形和波浪效果的条形。这个效果改怎么实现呢? 思路是什么?

下面是我手上的源码,只能实现无规律的上消跳动,但是不能随着音乐的声调高低去跳动。 这2者怎么关联起来呢?

static inline MS_U16 _getMP3random(MS_U8 id)
{
static MS_U16 y[8]={0};
if(id==0xff)
{
MS_U16 x[8]={0};
MS_U8 c=7;
for(id=0;id<8;id++)
{
MS_U16 random = 0;
random = rand() % 101;
x[id]=((random >= 100) ? 100 : random);
}
#if 0
randomvalue[0]=(5*trandomvalue[0]+2*trandomvalue[1]-trandomvalue[2])/6;
randomvalue[7]=(2*trandomvalue[7-2]-trandomvalue[7-3]+5*trandomvalue[7-1])/6;
for( id=1;id<7;id++)
randomvalue[id]=(trandomvalue[id-1]+trandomvalue[id]+trandomvalue[id+1])/3;
#else
y[0]=(3*x[0]+2*x[1]+x[2]-x[4])/5;
y[1]=(4*x[0]+3*x[1]+2*x[2]+x[3])/10;
y[c-2]=(x[c-4]+2*x[c-3]+3*x[c-2]+4*x[c-1])/10;
y[c-1]=(x[c-3]-x[c-5]+2*x[c-2]+3*x[c-1])/5;
for(id=2;id<c-2;id++)
y[id]=(x[id-2]+x[id-1]+x[id]+x[id+1]+x[id+2])/5;
#endif

/*//平滑算法0
y[0]=(5*x[0]+2*x[1]-x[2])/6;
y[c-1]=(2*x[c-2]-x[c-3]+5*x[c-1])/6;
for(int i=1;i<c-1;i++)
y[i]=(x[i-1]+x[i]+x[i+1])/3;
*/

/*//平滑算法1
y[0]=(3*x[0]+2*x[1]+x[2]-x[4])/5;
y[1]=(4*x[0]+3*x[1]+2*x[2]+x[3])/10;
y[c-2]=(x[c-4]+2*x[c-3]+3*x[c-2]+4*x[c-1])/10;
y[c-1]=(x[c-3]-x[c-5]+2*x[c-2]+3*x[c-1])/5;
for(int i=2;i<c-2;i++)
y[i]=(x[i-2]+x[i-1]+x[i]+x[i+1]+x[i+2])/5;
*/
/*//平滑算法2
ThrptFivetmSmooth(float* x, float* y, int n)//五点三次平滑算法
{
y[0]=(69*x[0]+4*(x[1]+x[3])-6*x[3]-x[5])/70;
y[1]=(2*(x[0]+x[4])+27*x[1]+12*x[2]-8*x[3])/35;
y[n-2]=(2*(x[n-5]+x[n-1])-8*x[n-4]+12*x[n-3]+27*x[n-2])/35;
y[n-1]=(4*(x[n-4]+x[n-2])-x[n-5]+6*x[n-3]+69*x[n-1])/70;
for(int i=2;i<n-2;i++)
y[i]=(12*(x[i-1]+x[i+1])-3*(x[i-2]+x[i+2])+17*x[i])/35;
}
*/
}
return y[id];
}
...全文
716 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wshn13 2012-05-18
  • 打赏
  • 举报
回复
那个上下跳动的不是随机值!是音乐的频谱。gstreamer 里面有个Spectrum Element可以获得当前音乐的频谱。楼主可以试试。
axuey 2012-05-12
  • 打赏
  • 举报
回复
会在UI上调用getMP3random这个函数,现在只能是无规律的在那乱跳。 和音乐音频高低毫无关联。 求解。
W170532934 2012-05-12
  • 打赏
  • 举报
回复
主要是你要获得音频的相关信息吧。然后和你的关联起来
axuey 2012-05-12
  • 打赏
  • 举报
回复
没人看啊,伤心、、

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧