2016-01-20 84 views
0

我正试图创建一个程序来查找用户添加的.mp3文件的注释。我到目前为止是:Java - 从.mp3音频获取笔记?

public void audioToNotes(String path){ 
    File f = new File(path); 
    AudioInputStream ais = AudioSystem.getAudioInputStream(f); 
} 

然后我卡住了。 对不起,如果这是一个noob问题,我在这里学习,而我只是一个初学者。

编辑: 我网上冲浪了一下,发现这个代码:

AudioInputStream din = null; 
     final AudioFormat baseFormat = in.getFormat(); 
     final AudioFormat decodedFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 
       baseFormat.getSampleRate(), 
       16, 
       baseFormat.getChannels(), 
       baseFormat.getChannels() * 2, 
       baseFormat.getSampleRate(), 
       false); 
+0

你想要音符,就像你想要440赫兹注册为A4? MP3文件是纯音还是实际音乐?这可能对StackOverflow问题太模糊。 – guitarsteve

+0

你有谷歌吗?你读过“mp3格式”吗? – Andremoniy

+0

例如,用户给出Darude - Sandstorm的mp3文件或其他东西,并且该程序找到音符。例如:C D E C C F D B – winterfox

回答

2

频率检测有没有直接做的MP3格式。

没有,我知道,一个API可以让你做到这

notes = analyze(audioSignal) 

其中票据是音高的集合。

对于周期性波形,您可以对此音频信号进行FFT。那里有DSP库。仍然不是自动的。

N.B.信号处理并不容易,而且涉及到相当多的数学问题。

+0

我从来没有和那些人一起工作过:你能举个例子,还是给我提供一个链接?这将是非常有用的:) – winterfox

+1

喜欢这个? http://stackoverflow.com/questions/636686/signal-processing-library-in-java – winterfox

+0

我同意!我正在学习电子和信息通信技术,发现这个项目非常困难,特别是对于12年。音调识别本身不应该那么困难,但是我认为OP想要读取mp3并且不用演奏就能得出音符。 –