我正在使用 tarsos DSP java API。有人能告诉我为什么 float pitchInHz 没有通过以下代码中的方法 freq() 得到更新吗?有人能告诉我要改变什么才能让它工作吗,因为我不明白为什么它不是。谢谢
public class trial extends JFrame{
File f = new File("RecordAudio.wav");
static JLabel lblNewLabel = new JLabel("New label");
float pitchInHz;
public trial(){
getContentPane().setLayout(new GridLayout(1, 0, 0, 0));
getContentPane().add(lblNewLabel);
run();
freq();
float values = freq();
System.out.print(values);
}
public void run(){
AudioDispatcher dispatcher = null;
try {
dispatcher = AudioDispatcherFactory.fromFile(f, 1024, 0);
} catch (UnsupportedAudioFileException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
AudioProcessor p = new PitchProcessor(PitchEstimationAlgorithm.FFT_YIN, 48000, 1024, pdh);
dispatcher.addAudioProcessor(p);
new Thread(dispatcher,"Audio Dispatcher").start();
}
public float freq(){
return pitchInHz;
}
PitchDetectionHandler pdh = new PitchDetectionHandler() {
public void handlePitch(PitchDetectionResult result,AudioEvent e) {
float pitchInHz = result.getPitch();
lblNewLabel.setText("" + pitchInHz);
//System.out.print(pitchInHz);
}
};
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
trial frame = new trial();
frame.setVisible(true);
frame.setSize(500, 500);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}