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