播放器在播放音乐时,经常会有曲线随着音乐的节奏在震动,请问那时怎么做的,我在音频贞里没有找到相关的信息,用后面的数据怎么弄

qiuqiu173 2008-03-29 01:10:48
播放器在播放音乐时,经常会有曲线随着音乐的节奏在震动,请问那时怎么做的,我在音频贞里没有找到相关的信息,用后面的数据怎么弄
...全文
246 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
viper1433 2008-04-23
  • 打赏
  • 举报
回复
加分啊~~~~~~~~~
viper1433 2008-04-23
  • 打赏
  • 举报
回复
忘了粘常量了!
const double y_scale = 3.60673760222f; /* 20.0 / log(256) */
const double e_const = PI*y_scale;
viper1433 2008-04-23
  • 打赏
  • 举报
回复
你说的是不是频谱分析??就像Winamp里面的那个吧!!

那个其实很简单,取出512个PCM样本,然后FFT,再Scale一下,就可以输出频谱信息了!
对于波形的话,那就更简单了,直接把PCM样本用绘图函数画出来就行了!

我把Scale的代码给你粘一下, xscale:从0到255包含255个元素的数组, mono_freq: FFT后的数据(要化成实数,虚数是不行的!), intern_vis_data:含有255个元素的int型数组(把这个画出来就行了)

for (i = 0; i < 255; i++)
{
for (j = xscale[i], y = 0; j < xscale[i + 1]; j++)
{
if (mono_freq[0][j] > y)
y = mono_freq[0][j];
}
y >>= 4;
if (y != 0)
{
intern_vis_data[i] = (int)((double)log((double)y) * (double)y_scale * (double)e_const);
if (intern_vis_data[i] > 255)
intern_vis_data[i] = 255;
}
else
intern_vis_data[i] = 0;
}

1,451

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计/Flash/Silverlight 开发 图象工具使用
社区管理员
  • 图象工具使用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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