public void run() {
		int readPoint = 0;
		int bytesRead = 0;
		try {
			while (notYetEOF) {
				if(GameData.musicMuted)stop();
				else start();
				if (playing) {
					bytesRead = in.read (buffer, 
								readPoint, 
								buffer.length - readPoint);
                   if (bytesRead == -1) { 
                	   	notYetEOF = false; 
                	   	break;
                   }
					// how many frames did we get,
					// and how many are left over?
					int frames = bytesRead / frameSize;
					int leftover = bytesRead % frameSize;
					// send to line
					line.write (buffer, readPoint, bytesRead-leftover);
					// save the leftover bytes
					System.arraycopy (buffer, bytesRead,
							  buffer, 0, 
							  leftover); 
	                    readPoint = leftover;
				} else { 
					// if not playing                   
					// Thread.yield(); 
					try { Thread.sleep (10);} 
					catch (InterruptedException ie) {}
				}
			} // while notYetEOF
			line.drain();
			line.stop();
		} catch (IOException ioe) {
			ioe.printStackTrace();
		} finally {
			
			GameData.songNum++;
//			HUFF HUFF HUFF
//			TODO Auto-generated catch block
			try {
				new BigSound(new File("resources/sounds/"+GameData.songs[GameData.songNum%2])).start();
			} catch (Exception e) {
				e.printStackTrace();
			}
			line.close();
		}
	} // run