public void reproduction() {
    	final Getoptions opt = new Getoptions();
    	//final AudioOption ao = new AudioOption();
    	try {
    		byte audio[] = Wuuii.out.toByteArray();
    		
    		InputStream input = new ByteArrayInputStream(audio);
    		final AudioFormat format = getTransmissionFormat();
    	    final AudioInputStream ais = new AudioInputStream(input, format, audio.length / format.getFrameSize());
    	    DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
    	    final SourceDataLine line = (SourceDataLine)AudioSystem.getLine(info);
    	    line.open(format);
    	    line.start();
    	    Runnable runner = new Runnable() {
    	    	int bufferSize = (int) format.getSampleRate() * format.getFrameSize();
    	    	byte buffer[] = new byte[bufferSize];

    	    	public void run() {
    	    		opt.setTestAudio(true);
    	    		try {
    	    			int count;
    	    			while ((count = ais.read(buffer, 0, buffer.length)) != -1) {
    	    				if (count > 0) {
    	    					line.write(buffer, 0, count);
    	    					Wuuii.Spectrum(buffer, format, Wuuii.sendCapture);
    	    				}
    	    			}
    	    			line.drain();
    	    			line.close();
    	    		} catch (IOException e) {
    	    			ErrorMessage error = new ErrorMessage("I/O Problems: " + e);
    	    			error.EMessage();
    	    		}
    	    		opt.setTestAudio(false);
    	       }
    	    };
    	    Thread playThread = new Thread(runner);
    	    playThread.start();
    	} catch (LineUnavailableException e) {
    		ErrorMessage error = new ErrorMessage("Line unavailable: " + e);
			error.EMessage();
    	} 
    }