private ArrayList<AudioMixer> getCompatibleDevices(){
		devices=new ArrayList<AudioMixer>();
		//list the available mixers
		Mixer.Info mixers[]=AudioSystem.getMixerInfo();
		int i;
		//iterate the mixers and display TargetLines
		for (i=0;i<mixers.length;i++){
			Mixer m=AudioSystem.getMixer(mixers[i]);
			Line.Info l[]=m.getTargetLineInfo();
			// Check these exist and are "Capture" devices
			if((l.length>0)&&((m.getMixerInfo().getDescription().endsWith("Capture")==true))){
				int x;
				for (x=0;x<l.length;x++){
					if (l[0].getLineClass().getName().equals("javax.sound.sampled.TargetDataLine"))	{
						AudioMixer mc=new AudioMixer(mixers[i].getName(),m,l[x]);
						devices.add(mc);			
					}
				}
			}
		}
		return devices;
	}