用directshow播放一个音乐文件时怎么知道音乐的音调大小 就像音乐播放器上面的频谱一样,声音大就跳高一点,小就第一点

解决方案 »

  1.   

    具体用什么函数能实现 能具体一点吗  我现在用directshow的智能连接 只看到设置声音大小的函数  
      

  2.   

    put_Volume、get_Volume,设置或获得音量
    参考以下文章或许有帮助:http://blog.sina.com.cn/s/blog_4b3c1f950100kxqb.html
      

  3.   


    音调大些?音调大些应该是指频率高些,这个可以使用FFT变换就可以了。我的资源里有个MP3播放器,其中有FFT变化(有全部源码)
    如果是振幅的话,和您使用的播放方式有关,我一般只使用比较低级的StreamSound(各平台都支持),这样在生成一幁流数据,如0.1秒,统一计算一下振幅就可以了(直接使用声音波形数据),如果是更高级的播放方式,看看有没有相关API
      

  4.   

    tomsoft兄 呵呵 我就是想要这种效果 有没有VC6.0的呢
      

  5.   

    这个样子应该是频谱分析,用FFT就可以了(速度上不用担心);
    应该没有VC 6.0的版本,但一般我的程序只会用到标准的API,所以源码移到VC 6.0不会有太大问题----重新创建工程,再追加这些文件;
      

  6.   

    MusicPlayer\Release目录下有可执行档,应该是您想要的效果;这个程序因为是为了演示算法,所以是未完成版本,有些BUG:
    1)播放第二首或停止时好像有问题;
    2)另外因为StreamSound缓冲区大小设置,实际频谱比正在播放的声音早些 ---- 这个您可以减少缓冲区改善