Controlar som do microfone JavaSound

Ola,
Estou capturando o som do microfone, mas depois gostaria de exibir para o usuario controles para ele mudar a frequencia do som, balanco, e etc. Depois que eu capturo o som eu pego o AudioInputStream e tento pegar um Clip com ele e usar o clip.open(), gera a exception: java.lang.IllegalArgumentException: illegal call to open() in interface Clip.

o código :

public void captureAudio() {
        try {

            audioFormat = getAudioFormat();
            DataLine.Info dataLineInfo = new DataLine.Info(TargetDataLine.class,audioFormat);
            targetDataLine = (TargetDataLine) AudioSystem.getLine(dataLineInfo);

            new CaptureThread().start();

        } catch (Exception e) {
            System.out.println(e);
            System.exit(0);
        }
    }

A Thread

public void run() {

            byteArrayOutputStream = new ByteArrayOutputStream();
            setStopCapture(false);
            try {
                targetDataLine.open(audioFormat);
                targetDataLine.start();

                //Loop de captura de dados e gravacao no outputstream
                while (!isStopCapture()) {
                    //faz a leitura do buffer interno
                    int cnt = targetDataLine.read(
                            tempBuffer,
                            0,
                            tempBuffer.length);
                    if (cnt > 0) {
                        //salva os dados no outputstream
                        byteArrayOutputStream.write(
                                tempBuffer, 0, cnt);
                    }
                }
                byteArrayOutputStream.close();

                targetDataLine.stop();
                targetDataLine.close();

            } catch (Exception e) {
                System.out.println(e);
            }
        }

Depois eu retorno um AudioInputStream com isso:

public AudioInputStream getAudioInputStream() {
        try {
            
            byte audioData[] = byteArrayOutputStream.toByteArray();
            
            InputStream byteArrayInputStream = new ByteArrayInputStream(audioData);
            AudioFormat audioFormat = getAudioFormat();
            return audioInputStream = new AudioInputStream(
                    byteArrayInputStream,
                    audioFormat,
                    audioData.length / audioFormat.getFrameSize());

        } catch (Exception e) {
            System.out.println(e);
            return null;
        }
    }

Alguem sabe o que me impede de usar o clip.open() com esse AudioInputStream? ou outro modo de fornecer para o usuário os controles?