Capture streaming audio and perfom D.A.P

I have created an mp3 player with flash that sits on the webpage client side. This plays sound through the clients soundcard. I want to create an applet with JMF that will capture this sound on the way to the sound card. I then want to perform digital audio prcessing: to create an equaliser using fast fourier transforms.

I have been looking at the JMF API and have found several open source code showing how to capture sound from a microphone and save it. Would I have to do something similar to enable me to capture streaming sound from the web? Would this sound then be in a suitable format for processing?

Any help on capturing streaming sound, or sound playing through the sound card would be very much appreciated.

Thank you

Tom
???

import java.io.StreamCorruptedException;

import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.SourceDataLine;

import org.xiph.speex.SpeexDecoder;


/**
 * @author Erik Duijs
 */

public class AudioOutputListener implements AudioStreamListener {

      
      private SourceDataLine line;
      private boolean running;
      private RawSpeexStream stream;
      private AudioInputStream inputStream;
      
      private SpeexDecoder decoder;

      
      public AudioOutputListener() {
            
            
            AudioFormat format = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 16000, 16, 1, 2, 16000, false);
            DataLine.Info info = new DataLine.Info(SourceDataLine.class, format, 8192);
            
            decoder = new SpeexDecoder();
            decoder.init(1, 16000, 1, false);
            
            //stream = new RawSpeexStream();
            //inputStream = new Speex2PcmAudioInputStream(stream, audioFormat, AudioSystem.NOT_SPECIFIED);

            try {
                  
                  line = (SourceDataLine) AudioSystem.getLine(info);
                  System.out.println("Sound initialized successfully.");
            } catch (LineUnavailableException lue) {
                  
                  System.err.println("Unavailable data line");
            }
            
            start();
      }
      
      
      public void start() {
            
            try {
                  
                  line.open();
            } catch (LineUnavailableException e) {

                  e.printStackTrace();
            }
            
            line.start();
      }
      
      
      /*
       * (non-Javadoc)
       * 
       * @see com.qiui.sound.AudioStreamListener#write(byte[])
       */
      public void write(byte[] bytes) {
            if (line.isOpen()) {
                  
                  try {
                        decoder.processData(bytes, 0, bytes.length);
                  } catch (StreamCorruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                  }
                  byte[] decoded = new byte[decoder.getProcessedDataByteSize()];
                  decoder.getProcessedData(decoded, 0);

                  line.write(decoded, 0, decoded.length);
            }
      }
      
      
      public void stop() {
            line.close();
      }
}

It’s a class from a voice over IP applet that I did with darcone. The write(byte[]) method is called by the networking code and writes a stream of compressed sound data. It’s decoded using JSpeex and played back using javax.sound. You can do all DSP you like with the decoded sound data.