声音文件的波形显示和三维频谱的问题

xxgclj 2008-12-10 11:50:39
我写了个程序,可以把声音文件的波形和三维频谱图(横轴是时间,纵轴是频率,颜色深浅来表示能量大小)显示出来,虽然基本实现了,不过还有很多的问题
1.画波形时如何把采样点用不同频率的正弦波连起来(不是直线连接或是简单的曲线连接),要像Audition(以前叫CoolEdit)那样的效果
2.画三维频谱图时,这个能量值和颜色如何对应才好,我使终找不到一个合理的颜色设计方法
3.画三维频谱图时,我的程序速度太慢,如何提速(听人说有什么改进的FFT算法,用汇编做FFT什么的)
有做过此类问题的高手指点一下,最好能详细一点,因为估计你的答案我不会
...全文
472 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
sharinupt 2009-01-08
  • 打赏
  • 举报
回复
请教楼主是怎样实现横轴设成时间的?
你那个横轴时间应该是当前的时间并且不断向前滚动的吧。
能不能分享一下方法
谢谢了
xxgclj 2009-01-06
  • 打赏
  • 举报
回复
还是没人回答?
crazydale 2008-12-23
  • 打赏
  • 举报
回复
没发成功??
帮你顶一个,目前本人也正在做这方面的,先学习下
crazydale 2008-12-23
  • 打赏
  • 举报
回复
帮你顶起来,现在也准备实现这个,先学习
greenspan 2008-12-23
  • 打赏
  • 举报
回复
hi
xxgclj 2008-12-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 Behard 的回复:]
其实现在的 FFT 算法基本达到极致了,我使用 Celeron 600M Win2000 每秒能做 8阶(256) FFT 计算 50 次以上的

不过其实计算不占用太多时间,反而是画图占用时间,特别是当你使用 Image 时,使用 PaintBox 试一试,不过需要自己处理重画事件
[/Quote]

是吗?我曾经听一个人说过,他做fft时在程序中内嵌汇编代码,速度能提高几倍,但我没搞过汇编,不明白,后来也没机会见这个人。
Behard 2008-12-16
  • 打赏
  • 举报
回复
其实现在的 FFT 算法基本达到极致了,我使用 Celeron 600M Win2000 每秒能做 8阶(256) FFT 计算 50 次以上的

不过其实计算不占用太多时间,反而是画图占用时间,特别是当你使用 Image 时,使用 PaintBox 试一试,不过需要自己处理重画事件
xxgclj 2008-12-15
  • 打赏
  • 举报
回复
很不成熟(感觉挺烂的),怎么能做控件?波形显示和FFT画频谱都可以搜到(很多人发过帖子,可以在CSDN上搜),不过别人发的频谱图多是横轴是频率,纵轴是幅度。画三维频谱我用的方法是:假如在整个屏幕(1024×768)上画,就把采样值分成1024块,对每块做FFTLEN(根据需要设的值)长的FFT,再在纵轴上根据算出的各频率的幅度(能量)来画。我是这样画的,看效果应该是对的,不过速度太慢,颜色效果也不太好。
CSDN现在没人了吗?我的帖子都几天了,还在首页啊……
wg961423 2008-12-15
  • 打赏
  • 举报
回复
最好做成个控件,大家都可以共享了
jaffy 2008-12-12
  • 打赏
  • 举报
回复
最好做成个控件,大家都可以共享了
wesleyluo 2008-12-12
  • 打赏
  • 举报
回复
楼主,把你的成果分享下可以不?
帮你顶了先。
blackboycpp 2008-12-11
  • 打赏
  • 举报
回复
不懂, 帮顶并学习
xxgclj 2008-12-11
  • 打赏
  • 举报
回复
波形我是用简单的连线
频谱就是用fft做的
My_Love 2008-12-11
  • 打赏
  • 举报
回复
怎么实现的?
TripH0101 2008-12-11
  • 打赏
  • 举报
回复
怎么实现的?

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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