public void execute(TargetDataLine input, SourceDataLine output, byte[] buffer)
		throws IOException, LineUnavailableException
	{
		VisualizerPane visualizer = getVisualizer();

		int nBytesRead = 0;
		input.open();
		output.open();

		input.start();
		output.start();

		NoiseGate gate = new NoiseGate(150, .1);
		Gain gain = new Gain(3);
		Convolution convulse = new Convolution();

		while(true)
		{
			nBytesRead = input.read(buffer, 0, buffer.length);

			gain.apply(buffer);
			convulse.apply(buffer);

			visualizer.updateBuffer(buffer);

			if(nBytesRead > 0)
			{
				int nBytesWritten = output.write(buffer, 0, nBytesRead);
			}
		}
	}