These tables represent the Planckian (thermal) and spectral locus
output for WS2812B.  The observer model used is the CIE 2012 10°

All RGB values are given as floating-point numbers between 0 and 255,
so they can be scaled as desired for your application.  This allows
the values to be easily scaled to any designed brightness, or mixed
with other colors, without losing precision.  If you want plain RGB
values to output to the LEDs, just round to integer.

*** thermal.csv:

The minimum achievable *approximate* color temperature with WS2812B is
638.0 K, which corresponds to G = B = 0.

The maximum R component is at 1662.0 K.

The brightest possible thermal (Planckian) temperature is 8743.7 K, at
which point RGB = (216.15 255.00 255.00).

The approximate color temperature of R = G = B = 255 is 7170 K,
however, this is not actually Planckian color.

As the dynamic range of the *actual* Planckian locus is enormous, the
values have been scaled by a power function so that:

       R = 255 at maximum red (T = 1662.0 K)
       G = B = 255 at maximum thermal brightness (T = 8743.7 K)

Values above 8743.7 K are capped so that B = 255.  Thus, brightness
will decrease with increasing temperature.

The values given are:

1. Temperature in mireds (inverse megakelvins, 10^6/T)
2. Temperature in kelvins
3. R,G,B

*** spectral.csv

This represents an approximation of pure spectral colors.  As the
spectral locus is curved in XYZ color space, only the actual pure RGB
primaries are achievable as true spectral colors; all the rest of them
would require at least one negative RGB value, which is of course

The values given are:

1. Wavelength in nanometers
2. R,G,B

*** color.c, rgbxyz.c

These are C functions which contain a variety of color transformation
functions.  color.c is generic; rgbxyz.c is specific to WS2812B and
was calculated by the Octave/Matlab script rgbxyz.mat.

The files lin2012xyz10e_fine_7sf.* are helper files for color.c (and
are #included into color.c); they contain the data for the observer