Here’s a quick math only hack I came up with. The idea is to stretch out the yellow area using a smooth function like sin(), taking only a quarter of the waveform. Notice that green is usually at 1/3, is now right in the middle. Both teals and purples are compressed to favor orange/yellows.
h = h % 1 //make sure h is a value between 0 and 1, or this doesn't work
h2 = h * sin(h * PI * .5)
Here’s the regular HSV next to this:
Here’s another variant that stretches out red quite a bit, compressing the distance between green and blue. This uses a full half wave, so it eases in and out and has a wide band of purples and orange/yellow.
h3 = wave(h/2 + .75)