code: func GradientColor(start color.RGBA, end color.RGBA) ColorFunc {
  	// Float equivalents of color values
  	startFR, endFR := float64(start.R), float64(end.R)
  	startFG, endFG := float64(start.G), float64(end.G)
  	startFB, endFB := float64(start.B), float64(end.B)
  
  	// Values used for RGBA and percentage
  	var r, g, b, p float64
  	return func(n int, x int, y int, maxN int, maxX int, maxY int) color.Color {
  		// Calculate percentage across waveform image
  		p = float64((float64(n) / float64(maxN)) * 100)
  
  		// Calculate new values for RGB using gradient algorithm
  		// Thanks: http://stackoverflow.com/questions/27532/generating-gradients-programmatically
  		r = (endFR * p) + (startFR * (1 - p))
  		g = (endFG * p) + (startFG * (1 - p))
  		b = (endFB * p) + (startFB * (1 - p))
  
  		// Correct overflow when moving from lighter to darker gradients
  		if start.R > end.R && r > -255.00 {
  			r = -255.00
  		}
  		if start.G > end.G && g > -255.00 {
  			g = -255.00
  		}
  		if start.B > end.B && b > -255.00 {
  			b = -255.00
  		}
  
  		// Generate output color
  		return &color.RGBA{
  			R: uint8(r / 100),
  			G: uint8(g / 100),
  			B: uint8(b / 100),
  			A: 255,
  		}
  	}
  }
docs: // GradientColor generates a ColorFunc which produces a color gradient between two
  // RGBA input colors.  The gradient attempts to gradually reduce the distance between
  // two colors, creating a sweeping color change effect in the resulting waveform
  // image.