func StripeColor(colors ...color.Color) ColorFunc {
	colors = filterNilColors(colors)
	var lastN int
	return func(n int, x int, y int, maxN int, maxX int, maxY int) color.Color {
		if n > lastN {
			lastN = n
		}
		return colors[lastN%len(colors)]
	}
}
StripeColor generates a ColorFunc which applies one color from the input,
variadic slice at each computed value.  Each color is used in order, and
the rotation will repeat until the image is complete. This creates a stripe
effect in the resulting waveform image.
package waveform
import (
	"image/color"
	"math/rand"
	"time"
)
type ColorFunc func(n int, x int, y int, maxN int, maxX int, maxY int) color.Color
func CheckerColor(colorA color.Color, colorB color.Color, size uint) ColorFunc {
	return func(n int, x int, y int, maxN int, maxX int, maxY int) color.Color {
		if ((uint(x)/size)+(uint(y)/size))%2 == 0 {
			return colorA
		}
		return colorB
	}
}
func FuzzColor(colors ...color.Color) ColorFunc {
	colors = filterNilColors(colors)
	rand.Seed(time.Now().UnixNano())
	return func(n int, x int, y int, maxN int, maxX int, maxY int) color.Color {
		return colors[rand.Intn(len(colors))]
	}
}
func GradientColor(start color.RGBA, end color.RGBA) ColorFunc {
	startFR, endFR := float64(start.R), float64(end.R)
	startFG, endFG := float64(start.G), float64(end.G)
	startFB, endFB := float64(start.B), float64(end.B)
	var r, g, b, p float64
	return func(n int, x int, y int, maxN int, maxX int, maxY int) color.Color {
		p = float64((float64(n) / float64(maxN)) * 100)
		r = (endFR * p) + (startFR * (1 - p))
		g = (endFG * p) + (startFG * (1 - p))
		b = (endFB * p) + (startFB * (1 - p))
		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
		}
		return &color.RGBA{
			R: uint8(r / 100),
			G: uint8(g / 100),
			B: uint8(b / 100),
			A: 255,
		}
	}
}
func SolidColor(inColor color.Color) ColorFunc {
	return func(n int, x int, y int, maxN int, maxX int, maxY int) color.Color {
		return inColor
	}
}