61 lines
1.5 KiB
Python
61 lines
1.5 KiB
Python
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
|