This is a neat script. One minor thing I noticed on a brief review of your code was this:
case id
when 1, 13, 25, 37, 49, 61 ; [Color.new(255, 67, 67, alpha), Color.new(255, 51, 51, alpha)]
when 2, 14, 26, 38, 50, 62 ; [Color.new(255, 161, 68, alpha), Color.new(255, 153, 52, alpha)]
when 3, 15, 27, 39, 51, 63 ; [Color.new(255, 252, 68, alpha), Color.new(255, 252, 52, alpha)]
when 4, 16, 28, 40, 52 ; [Color.new(164, 255, 68, alpha), Color.new(156, 255, 52, alpha)]
when 5, 17, 29, 41, 53 ; [Color.new(68, 255, 68, alpha), Color.new(52, 255, 52, alpha)]
when 6, 18, 30, 42, 54 ; [Color.new(68, 255, 161, alpha), Color.new(52, 255, 153, alpha)]
when 7, 19, 31, 43, 55 ; [Color.new(68, 255, 252, alpha), Color.new(52, 255, 252, alpha)]
when 8, 20, 32, 44, 56 ; [Color.new(68, 164, 255, alpha), Color.new(52, 156, 255, alpha)]
when 9, 21, 33, 45, 57 ; [Color.new(68, 72, 255, alpha), Color.new(52, 57, 255, alpha)]
when 10, 22, 34, 46, 58 ; [Color.new(156, 68, 255, alpha), Color.new(148, 52, 255, alpha)]
when 11, 23, 35, 47, 59 ; [Color.new(252, 68, 255, alpha), Color.new(252, 52, 255, alpha)]
when 12, 24, 36, 48, 60 ; [Color.new(255, 68, 164, alpha), Color.new(255, 52, 156, alpha)]
else ; [Color.new(0, 0, 0, alpha), Color.new(0, 0, 0, alpha)]
end
It might be more efficient to do something like this:
return [Color.new(0, 0, 0, alpha), Color.new(0, 0, 0, alpha)] if id > 63
case id % 12
when 0 ; [Color.new(255, 68, 164, alpha), Color.new(255, 52, 156, alpha)]
when 1 ; [Color.new(255, 67, 67, alpha), Color.new(255, 51, 51, alpha)]
when 2 ; [Color.new(255, 161, 68, alpha), Color.new(255, 153, 52, alpha)]
when 3 ; [Color.new(255, 252, 68, alpha), Color.new(255, 252, 52, alpha)]
when 4 ; [Color.new(164, 255, 68, alpha), Color.new(156, 255, 52, alpha)]
when 5 ; [Color.new(68, 255, 68, alpha), Color.new(52, 255, 52, alpha)]
when 6 ; [Color.new(68, 255, 161, alpha), Color.new(52, 255, 153, alpha)]
when 7 ; [Color.new(68, 255, 252, alpha), Color.new(52, 255, 252, alpha)]
when 8 ; [Color.new(68, 164, 255, alpha), Color.new(52, 156, 255, alpha)]
when 9 ; [Color.new(68, 72, 255, alpha), Color.new(52, 57, 255, alpha)]
when 10 ; [Color.new(156, 68, 255, alpha), Color.new(148, 52, 255, alpha)]
when 11 ; [Color.new(252, 68, 255, alpha), Color.new(252, 52, 255, alpha)]
end
Anyway, that's minor. I think this is a very helpful debug tool.