Custom Channels
thenicnic opened this issue · 3 comments
Thank you for this great project, really cool!
I'd like to add some more channels because I got a RGB LED bar that contains 16 segments (R, G, B for each segment, thus 48 channels).
What would be the best way for me to modify the Controller file to support more than the default colors and 'dim' and so on?
Hardcoed channel numbers wouldn't be a problem for me, plus I don't need the web interface because I'm trying to realize a sound-to-light script.
👋 You shouldn't need to modify the core Controller to do this, you'll just need to implement your own fixture profile for the fixture you are using so that it registers all the expected channels. You can look at the built-in fixture profiles as a reference and starting point for implementing your own: https://github.com/MattIPv4/PyDMXControl/tree/master/PyDMXControl/profiles
Thanks Matt! Sorry I forgot to attach the code, I actually made a custom fixture but cannt address the register_channels. I may need to call them all "dimmer" but how do I do the addressing then? By using the "name" tag in add_fixture?
from ..defaults import Fixture
class PixelbarSwitch_53(Fixture):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._register_channel('dimmer')
self._register_channel_aliases('dimmer', 'dim', 'd')
self._register_channel('1r')
self._register_channel_aliases('1r')
self._register_channel('1g')
self._register_channel_aliases('1g')
self._register_channel('1b')
self._register_channel_aliases('1b')
self._register_channel('2r')
self._register_channel_aliases('2r')
self._register_channel('2g')
self._register_channel_aliases('2g')
self._register_channel('2b')
self._register_channel_aliases('2b')
self._register_channel('3r')
self._register_channel_aliases('3r')
self._register_channel('3g')
self._register_channel_aliases('3g')
self._register_channel('3b')
self._register_channel_aliases('3b')
self._register_channel('4r')
self._register_channel_aliases('4r')
self._register_channel('4g')
self._register_channel_aliases('4g')
self._register_channel('4b')
self._register_channel_aliases('4b')
self._register_channel('5r')
self._register_channel_aliases('5r')
self._register_channel('5g')
self._register_channel_aliases('5g')
self._register_channel('5b')
self._register_channel_aliases('5b')
self._register_channel('6r')
self._register_channel_aliases('6r')
self._register_channel('6g')
self._register_channel_aliases('6g')
self._register_channel('6b')
self._register_channel_aliases('6b')
self._register_channel('7r')
self._register_channel_aliases('7r')
self._register_channel('7g')
self._register_channel_aliases('7g')
self._register_channel('7b')
self._register_channel_aliases('7b')
self._register_channel('8r')
self._register_channel_aliases('8r')
self._register_channel('8g')
self._register_channel_aliases('8g')
self._register_channel('8b')
self._register_channel_aliases('8b')
[...]
self._register_channel('41r')
self._register_channel_aliases('41r')
self._register_channel('41g')
self._register_channel_aliases('41g')
self._register_channel('41b')
self._register_channel_aliases('41b')
self._register_channel('42r')
self._register_channel_aliases('42r')
self._register_channel('42g')
self._register_channel_aliases('42g')
self._register_channel('42b')
self._register_channel_aliases('42b')
self._register_channel('43r')
self._register_channel_aliases('43r')
self._register_channel('43g')
self._register_channel_aliases('43g')
self._register_channel('43b')
self._register_channel_aliases('43b')
self._register_channel('44r')
self._register_channel_aliases('44r')
self._register_channel('44g')
self._register_channel_aliases('44g')
self._register_channel('44b')
self._register_channel_aliases('44b')
self._register_channel('45r')
self._register_channel_aliases('45r')
self._register_channel('45g')
self._register_channel_aliases('45g')
self._register_channel('45b')
self._register_channel_aliases('45b')
self._register_channel('46r')
self._register_channel_aliases('46r')
self._register_channel('46g')
self._register_channel_aliases('46g')
self._register_channel('46b')
self._register_channel_aliases('46b')
self._register_channel('47r')
self._register_channel_aliases('47r')
self._register_channel('47g')
self._register_channel_aliases('47g')
self._register_channel('47b')
self._register_channel_aliases('47b')
self._register_channel('48r')
self._register_channel_aliases('48r')
self._register_channel('48g')
self._register_channel_aliases('48g')
self._register_channel('48b')
self._register_channel_aliases('48b')
Ah! So the interface isn't great for this, but you can call Fixture#set_channel
with the channel name and a value, or if you just want to set all the channels, you can call Fixture#set_channels
with a list of values
PyDMXControl/PyDMXControl/profiles/defaults/_Fixture.py
Lines 313 to 337 in 27d41b3