2012-06-15 48 views
0

我想知道是否可以使用并显示均衡器频段,而无需实际播放音频。我有关于选择带范围的噪音水平的信息。我想以音频均衡器的形式显示这些信息。谢谢。没有播放音频的JavaFX EqualizerBand

+0

如果您在任何给定点数的时间(噪声),你可以以任何形式显示出来:组矩形或文本或BarChart。你的问题是什么? :) –

+0

我想知道AudioEqualizer是否可以在没有媒体源和MediaPlayer的情况下工作,而不必自己画矩形来获得均衡器频段。 – jerome

回答

2

你的意思是http://docs.oracle.com/javafx/2/api/javafx/scene/media/AudioEqualizer.html?这个类不绘制任何东西,只是提供数据。 FX作为库不具有均衡器控制功能,只能构建一个。

但是在JavaFX功能的基础上构建了很多均衡器。例如。

你可以使用任何的样品和替代的MediaPlayer带输出与自己的数据。

E.g.从fxexperience.com下载项目。打开它并找到FxExperiencePlayer文件。有下一行:

spectrumListener = new AudioSpectrumListener() { 
    ... 

这里是根据乐队更新UI的监听器。而不是让MediaPlayer监听器自己调用它。例如。

new Thread() { 
     public void run() { 
      Random random = new Random(); 
      for (int i = 0; i < 10000; i++) { 
       final float[] magnitudes = new float[10]; 
       for (int j = 0; j < magnitudes.length; j++) { 
        magnitudes[j] = random.nextFloat() * -100f; 
       } 

       Platform.runLater(new Runnable() { 

        @Override 
        public void run() { 
         spectrumListener.spectrumDataUpdate(0, 0, magnitudes, null); 
        } 
       }); 
       try { 
        Thread.sleep(100); 
       } catch (InterruptedException ex) { 
       } 
      } 
     } 
    }.start(); 

和注释下一行禁用媒体播放器:

//mediaPlayer.setAudioSpectrumListener(spectrumListener); 
+0

感谢您的回答,以及绝佳的样品。但我不明白我怎么能用我自己的数据替换MediaPlayer波段输出,除非我看看MediaPlayer的源代码。不知道是否有可能。 – jerome

+0

我已经用示例更新了答案 –

+0

好东西,不知道我们可以像这样称呼它。感谢您的宝贵帮助。 – jerome