Forums > Jitter

HSL/RGB conversion

December 10, 2011 | 6:13 am

I’m looking to convert between HSL and RGB, 3 floats in the range 0.,1. This is going to be inside a patcher which I am going to have multiple copies of using [poly~], so I’d like to keep it as tight as possible.

I was a bit surprised that I couldn’t find a built-in object to do this, but it seems like I have a few options:

1. Implement using [expr] and consume via [bpatcher]. Optionally use a [swatch] to do HSL to RGB and get the saturation from RGB.

2. Implement in Javascript in a [js] object

3. Convert to a 1x1x3 matrix and use [jit.rgb2hsl] / [jit.hsl2rgb]

#1 seems easiest, but I have a feeling #3 is more efficient. #2 just seems like a bad idea, if there are going to be a few dozen copies of it. (I’m still on Max 5 and the old JS for now.)

Thoughts?


December 11, 2011 | 10:23 pm

I’ve been using a Jasch object, hsv2rgb to do this. Works fine for me, but I came upon your post because I was looking to see if there’s a way to do it without the external. I was doing the conversion with swatch before, but it was slower – I presume because it has to update the swatch GUI interface.


December 12, 2011 | 10:59 pm

Thinking about this a bit over the last couple of days, I landed on moving this to a color manager object and taking the logic out of the poly~’ed object entirely (that one would only field (color $1 $2 $3 $4) as a property message and passes it on to its jit.gl.mesh). In the color manager I will probably use approach #3. I’ll post it when it’s done.


Viewing 3 posts - 1 through 3 (of 3 total)