基本的なアプローチは次のとおりです。
表示したい音声データを収集します。これは、生のオーディオ サンプルであるか、x 軸のスケーリングを提供するための処理 (たとえば、N 個のサンプル全体の平均化、または N 個ごとのサンプルの取得) の結果である可能性があります。(スケーリングを行わない場合、1 秒間の音声を表示するには 48000 ピクセルが必要です)。
このサンプルの配列が与えられた場合、それを適応時間プロットに変換する必要があります。まず、新しい JPanel を作成し、ペイント メソッドをオーバーライドしてプロットを描画します。
例えば
public void paint(Graphics g)
{
short[] samples; // the samples to render - get this from step 1.
int height = getHeight();
int middle = height/2;
for (int i=0; i<samples.length; i++)
{
int sample = samples[i];
int amplitude = sample*middle;
g.drawLine(i, middle+amplitide, i, middle-amplitude);
}
}
これにより、コンポーネントに振幅-時間グラフが描画されます。コンポーネントと同じ高さで、サンプル数と同じ幅になります。
アニメーションを取得するには、定期的に新しい short[] 配列をコンポーネントにドロップし、repaint() を呼び出します (もちろん、すべて Swing Event スレッドで!)。
幸運を!