private void startFile(File inputFile,Mixer mixer){
		if(dispatcher != null){
			dispatcher.stop();
		}
		AudioFormat format;
		try {
			if(inputFile != null){
				format = AudioSystem.getAudioFileFormat(inputFile).getFormat();
			}else{
				format = new AudioFormat(44100, 16, 1, true,true);
			}
			rateTransposer = new RateTransposer(currentFactor);
			gain = new GainProcessor(1.0);
			audioPlayer = new AudioPlayer(format);
			sampleRate = format.getSampleRate();
			
			//can not time travel, unfortunately. It would be nice to go back and kill Hitler or something...
			 if(originalTempoCheckBox.getModel().isSelected() && inputFile != null){
				 wsola = new WaveformSimilarityBasedOverlapAdd(Parameters.musicDefaults(currentFactor, sampleRate));
			 } else {
				 wsola = new WaveformSimilarityBasedOverlapAdd(Parameters.musicDefaults(1, sampleRate));
			 }
			 if(inputFile == null){
				 DataLine.Info dataLineInfo = new DataLine.Info(TargetDataLine.class, format);
					TargetDataLine line;
					line = (TargetDataLine) mixer.getLine(dataLineInfo);
					line.open(format, wsola.getInputBufferSize());
					line.start();
					final AudioInputStream stream = new AudioInputStream(line);
					dispatcher = new AudioDispatcher(stream, wsola.getInputBufferSize(),wsola.getOverlap()); 
			 }else{
					if(format.getChannels() != 1){
						dispatcher = AudioDispatcher.fromFile(inputFile,wsola.getInputBufferSize() * format.getChannels(),wsola.getOverlap() * format.getChannels());
						dispatcher.addAudioProcessor(new MultichannelToMono(format.getChannels(),true));
					}else{
						dispatcher = AudioDispatcher.fromFile(inputFile,wsola.getInputBufferSize(),wsola.getOverlap());
					}
				 //dispatcher = AudioDispatcher.fromFile(inputFile,wsola.getInputBufferSize(),wsola.getOverlap());
			 }
			wsola.setDispatcher(dispatcher);
			dispatcher.addAudioProcessor(wsola);
			dispatcher.addAudioProcessor(rateTransposer);
			dispatcher.addAudioProcessor(gain);
			dispatcher.addAudioProcessor(audioPlayer);

			Thread t = new Thread(dispatcher);
			t.start();
		} catch (UnsupportedAudioFileException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (LineUnavailableException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}	
	}