from colorsys import hsv_to_rgb from .common import BaseDMXLight class CameoPixbar600Pro(BaseDMXLight): name = "Cameo Pixbar 600 Pro (78-Channel Mode)" def _dump(self): return self.address, [ self.intensity, 0, # strobe *[ self.red, self.green, self.blue, self.white, 0, # amber 0, # uv ] * 12, 0, # macro 0, # colour correction 0, # auto mode 0, # auto mode speed ] def rainbow(self, idx, angle, number_of_lights, intensity, brightness): degrees_per_light = 360 / number_of_lights my_degrees_dec = (angle + (idx * degrees_per_light)) % 360 degrees_per_pixel = degrees_per_light / 12 dmx_values = [ brightness, 0, # strobe ] for pixel in range(12): r, g, b = hsv_to_rgb( (my_degrees_dec + (pixel * degrees_per_pixel)) / 360, 1, intensity / 100, ) dmx_values += [ int(r * 255), int(g * 255), int(b * 255), 0, 0, 0, ] dmx_values += [ 0, # macro 0, # colour correction 0, # auto mode 0, # auto mode speed ] return self.address, dmx_values