怎样得到音乐文件的频谱图呢

anhuihulei 2010-11-01 06:02:39
对于一个普通的音乐文件,我想把它的声音分成5中状态(低,中低,中,中高,高),要怎么处理呢?
听说可以获取单位时间内的功率大小来判断,在mfc里要怎么实现,有相应的api吗,或者告诉我下大致的步骤,我对信号处理不是怎么清楚,先感谢了~~!
...全文
606 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
anhuihulei 2010-11-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhao4zhong1 的回复:]

推荐使用NCTAudioStudio控件
[/Quote]


它支持wm手机开发平台吗?~
赵4老师 2010-11-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhao4zhong1 的回复:]
推荐使用NCTAudioStudio控件
[/Quote]
楼主当耳旁风了?
anhuihulei 2010-11-10
  • 打赏
  • 举报
回复
大家可知道要想解码MP3格式文件怎样得到ID3V2段的长度
anhuihulei 2010-11-04
  • 打赏
  • 举报
回复
此区够火爆,沉到哪了~
wgm001 2010-11-03
  • 打赏
  • 举报
回复
声卡采集数据不就是录音吗?
waveInXXX系列api就可以了,还有directsound也行.
anhuihulei 2010-11-03
  • 打赏
  • 举报
回复
大哥有声卡采集数据的例子吗
anhuihulei 2010-11-03
  • 打赏
  • 举报
回复
那我用waveout系列能否得到表示正在播放的文件的声音强度的数据,然后依据数据画图呢
横風渡口 2010-11-02
  • 打赏
  • 举报
回复
我做个这个项目,但那块不是我做的,当时听我小组的哪位兄弟说,他是去采集声卡的数据,然后删选。。。
具体真不清楚。。。。
wgm001 2010-11-02
  • 打赏
  • 举报
回复
也不算复杂啊,主要就是利用FFT获得频率。
mp3可以先解码,再利用FFT获得频率。
anhuihulei 2010-11-02
  • 打赏
  • 举报
回复
再问一下,对于一个mp3文件,在电脑里存储是否应该是一组关于时间和频率的值,这些值应该是可以被得到的,用什么方法能得到呢?~
LinkSe7en 2010-11-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 icomputerlion 的回复:]

关键字:数字信号处理,傅立叶变换,FFT ……

提醒楼主一下:这绝不是几个API能搞定的事情,如果不是公司项目(貌似不是,如果是公司项目,上面的几个关键字不用提醒了),或者楼主不打算花费太多时间来做这个项目,建议放弃!

另:可以找一些开源音频播放器作为参考!
[/Quote]
参考了~~~
q8236209940 2010-11-01
  • 打赏
  • 举报
回复
NCTAudioStudio
赵4老师 2010-11-01
  • 打赏
  • 举报
回复
推荐使用NCTAudioStudio控件
gujiayue 2010-11-01
  • 打赏
  • 举报
回复
获得频谱用c++貌似有点困难,建议楼主用matlab或者labvIEW来处理,会比较方便的多
iComputerLion 2010-11-01
  • 打赏
  • 举报
回复
关键字:数字信号处理,傅立叶变换,FFT ……

提醒楼主一下:这绝不是几个API能搞定的事情,如果不是公司项目(貌似不是,如果是公司项目,上面的几个关键字不用提醒了),或者楼主不打算花费太多时间来做这个项目,建议放弃!

另:可以找一些开源音频播放器作为参考!
务实的幻想家 2010-11-01
  • 打赏
  • 举报
回复
暂时还没有
使用jdk16编译 import java.awt.Graphics; import java.awt.GridLayout; import java.io.File; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.DataLine; import javax.sound.sampled.SourceDataLine; import javax.swing.GroupLayout; import javax.swing.JFrame; /** * */ /** * @author Administrator * */ public class Musicline extends JFrame implements Runnable { private byte[] audioData = null; private int intBytes = 0; private byte[] ml = new byte[1]; private int[] drawl = null; /** Creates new form Musicline */ public Musicline() { initComponents(); Graphics g; g = this.getGraphics(); } public void paint(Graphics g) { g.clearRect(0, 0, 900, 900); // System.out.print(drawl.length); if (audioData != null) { drawl = new int[audioData.length]; for (int i = 0; i < audioData.length; i++) { ml[0] = audioData[i]; // String s=new String(ml); drawl[i] = Math.abs((int) ml[0]); } System.out.println(drawl[0]); for (int i = 0; i < drawl.length - 1; i++) { g.drawLine(i * this.getWidth() / 256, drawl[i] + 100, (i + 1) * this.getWidth() / 256, drawl[i + 1] + 100); } } } /* * (non-Javadoc) * * @see java.lang.Runnable#run() */ public void run() { // TODO Auto-generated method stub while (intBytes != -1) { try { synchronized (this) { this.wait(10); } } catch (InterruptedException ex) { ex.printStackTrace(); } repaint(); } } public void play() { try { AudioInputStream ais = AudioSystem.getAudioInputStream(new File( "F:/perl/key2.wav"));// 获得音频输入流 ais = AudioSystem.getAudioInputStream( AudioFormat.Encoding.PCM_SIGNED, ais); AudioFormat baseFormat = ais.getFormat();// 指定声音流中特定数据安排 System.out.println("baseFormat=" + baseFormat); DataLine.Info info = new DataLine.Info(SourceDataLine.class, baseFormat); System.out.println("info=" + info);

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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