0

実際にオーディオを再生せずに、イコライザーバンドを使用して表示できるかどうか知りたいのですが。選択した帯域範囲に対応するノイズのレベルに関する情報があります。その情報をオーディオイコライザーバンドの形で表示したいと思います。ありがとうございました。

4

1 に答える 1

2

http://docs.oracle.com/javafx/2/api/javafx/scene/media/AudioEqualizer.htmlのことですか?このクラスは何も描画せず、データを提供するだけです。ライブラリとしてのFXには、イコライザーを構築する機能だけがありません。

しかし、JavaFX機能の上に構築された多くのイコライザーがあります。例えば

そのサンプルのいずれかを取得して、MediaPlayerバンドの出力を独自のデータに置き換えることができます。

たとえば、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);
于 2012-06-19T11:20:47.557 に答える