Here I am.

H stands for hue where the 6 primary colors red/yellow/green/cyan/blue/violet are stretched equally. The value goes from red = 0 to red = 65536. So each of the 6 segments are of size 65536/6 = 10922.6

Note that here the primary colors are the ones of sRGB colorspace.

G is corrected in the sense that each segment does not have the same size. The exact size of the segments is described in HtoG function:

function HtoG(hue: word): word;

const

segmentDest: array[0..5] of UInt32or64 =

(13653, 10923, 8192, 13653, 10923, 8192);

segmentSrc: array[0..5] of UInt32or64 =

(10923, 10922, 10923, 10923, 10922, 10923);

The segments are:

- Red to Yellow: H in 0..10923 (size 10923), G in 0..13653 (size 13653)
- Yellow to Green: H in 10923..21845 (size 10922), G in 13653..24576 (size 10923)
- Green to Cyan: H in 21845..32768 (size 10923), G in 24576..32768 (size 8192)
- Cyan to Blue: H in 32768..43691 (size 10923), G in 32768..46421 (size 13653)
- Blue to Violet: H in 43691..54613 (size 10922), G in 46421..57344 (size 10923)
- Violet to Red: H in 54613..65536 (size 10923), G in 57344..65536 (size 8192)

Red has the same value 0 both as H and G. Cyan has same value 32768 both as H and G. Intermediate colors do not have the same value due to the stretching.

The gradient from Red to Yellow and Cyan to Blue are stretched in G because it is easier to see intermediate colors in this segment. Also there is a need for symmetry so that the opposite color is always obtained by adding 32768.

The gradient from Green to Cyan is shrunk in G because it is less easy to differentiate the shades. Symmetry also is applied here so gradient from Violet to Red is also shrunk.

The amount to which the segments are stretched was done by me in a rather experimental way. Though you can see that it kind of match the U'V'W' diagram of the sRGB colorspace:

https://commons.wikimedia.org/wiki/File:CIE_U%27V%27W%27_Diagramme_de_chromaticit%C3%A9_001.pngThe smallest segment is between yellow and green and the widest is between Red to Yellow and Cyan to blue. Arguably though the segment from Violet to Red not so small, it is shrunk in the G scale for symmetry.

As a final note, this correction of the hue scale is not quite the same as the gamma correction, which is already taken into account in the THSLAPixel colorspace. This gamma correction is rather about the intermediate colors between the primary colors, where the dark colors are overrepresented without gamma correction because 128, the middle value is in fact darker than the middle lightness. So you will not get the same RGB values using THSLAPixel instead of the standard HSL colorspace that does not have gamma correction (TStdHSLA).

So when computing a color with GSBA colorspace, first the hue is stretched to reflect the fact that some gradients of colors are easier to perceive. Then the saturated color is interpolated using gamma correction (as with THSLAPixel). Finally and this is quite important, the B value is really the perceived brightness, taking into account that each channel RGB does not have the same luminosity. It is different from HSL colorspace where the luminosity is rather a mix of the saturated color with black (luminosity below 32768) or white (luminosity over 32768).