public void Update(double timestamp, double duration, float[] magnitudes,
			float[] phases) 
	{
		GraphicsContext context = display.getGraphicsContext2D();
		display.setWidth(width);
		display.setHeight(height);
		context.setFill(backgroundColor);
		context.fillRect(0, 0, display.getWidth(), display.getHeight());
		//Dimension dim = new Dimension(2,2);
		//change color of the drops
		timeSinceColorUpdate += duration;
		if(timeSinceColorUpdate >= COLOR_UPDATE_FREQUENCY) {
			timeSinceColorUpdate = 0;
			incrementColors();
		}
		
		//grabs the sound levels from the Compressor for the points.
		float [] buckets = ProcessDropCount(magnitudes, timestamp);
		
		//sets up for animation
		for (int i = 0; i < 90;i++)
		{
			
			//dropBuildUp[i] += buckets[i]; 
			if(buckets[i] > THRESHOLD)//checks to see if the bucket's value is above the threshold  
			{
				//if so, creates the center for which all drops radiate.
				//should be one for every updated bucket value.
				ColoredPoint center = new ColoredPoint(width/2,height/2,colorShiftVals[colorShiftIndex]);
				drops.get(i).add(center);
				
			}
			for (int j = 0, size = drops.get(i).size(); j<size ; j++)
			{
				//creates the path that he drops follow
				drops.get(i).get(j).setLocation(drops.get(i).get(j).getX()+Math.cos(angles[i])*SPEED, drops.get(i).get(j).getY()+Math.sin(angles[i])*SPEED);
				context.setFill(drops.get(i).get(j).getColor());//setst he color to fill the rectangle
				context.fillRect(drops.get(i).get(j).getX(),drops.get(i).get(j).getY(), 2, 2);//actually fils the rectangle
			} 
		}
		CheckDrops();
	}