ETC fixtures for Issy actors
for a little while I've wanted to make some fixtures for ETC lighting desks that would directly control Isadora actors. This is largely because while the ETC desks do send Midi and OSC, implementing it can be a bit tricky from the console end; in cue stacks the commands are a little hidden and in all situations OSC/Midi always feels to me like an after thought on those desks. The reason is obvious, they're lighting desks and are built to do one thing really well: fire large amounts of DMX, really constantly, from a programming environment that is built entirely around DMX - everything else comes second.
So, since the implementation of Artnet into Isadora I've been waiting for an opportunity to help bring the two together. What I've been making are 'fixtures' for the ETC desks that correspond to user actors in Isadora. The fixtures can be loaded into show files on the desk and will appear in the main programming interface as though they were moving lights, or any other 'fixture' that has multiple DMX address associated with it. At the Issy end the user actors are pretty simple really, they have a 'patch' function so you enter the DMX address (and universe) you want to use and the actor updates all the required addresses for all the functions within it. The number of addresses will match it's corresponding fixture on the desk. In actors that have 'triggers' I've added an option that stops it firing multiple times once a cue a has gone, although this can be turned off. Otherwise they basically just have a DMX address for each input and a user input so they can be controlled locally as well.
I should say here that these aren't fully tested at all. Or, to be honest, they aren't tested at all. I don't have access to a 'real' desk at the moment so I've been unable to give them a proper go. Testing has just been laptop based for now, I'm hoping to borrow a desk next week and do some proper testing. In many ways they're not really ready for sharing yet but I saw the other thread on here about 'Controlling Isadora via ETC Ion' by @WOTrombone and thought it might be worth sticking my works in progress up for people to see. And improve on, naturally.
So, here are my first 4 actors: A movie player, a projector, a colorizer and a jump++. Each has a corresponding ETC fixture to load onto a desk. In the zip file attached is also an .esf show file, you can merge the fixtures across to the desk or the Nomad software from this file.
Some notes on the fixtures:
1) ETC have an infuriating limit on the naming of attributes within custom fixtures, you can basically only chose from attributes already in the library. A such it's sometimes impossible to name the attributes in the same way as the attributes (or 'inputs') are named in Issy. I've tried to make the names as close as possible to the names in Issy but it's not always that obvious. I'll write a post explaining all the names later. (In the long run it might be possible to contact ETC and request they add Issy to their library, that way we could request different attribute names amongst other functionality).
2) For the same reason you also have no control over how the attributes are ordered when they appear on the screen, so the logic followed in Issy isn't the same on the desk. The is because ETC group everything by Intensity-Focus-Colour-Beam (and then sub categories within each group); as such the order of the attributes is pre-determined.
3) Where an input in Issy is a float or integer I've left the attribute as a simple DMX value - it can be controlled manually, with a fade time in a cue, on a submaster, by using an encoder wheel on the desk, by saving into intensity/colour/beam/focus palettes, in presets or even using the effect engine etc. I think the first thing I'm going to do when I get set up in a space with this is run some colour effects through the colourizer and some LED pars. I've tried to make the values on the desk match those in Isadora - so the 'intensity' on a projector will fade from 0-100 whereas the 'spin' is between -360 and 360. (This leads to some anomalies that I'll talk about below - it's still early days...)
4) Where an input is an option such as 'blend mode' or 'keep aspect' on a projector in Isadora the values should display on the desk as they do in Issy i.e. On/Off, Additive/Above/Under etc. These are just 'ranges' for specific DMX values so fading between the values could create unwanted effects. As such I've enabled 'snap' at the desk end for all such values; this means that in a cue where these values change they don't 'fade' but snap, regardless of the cue time or fade times for other attributes, even if they're associated with the same fixture. For example, a cue could have a 10 second fade that controls the 'red' attribute on the colourizer. If the same cue also turned off the 'bypass' on the colourizer this would happen instantly with no fade time but the changes to 'red' would still happen over 10 seconds. Another would be that changing a blend mode from 'additive' to 'opaque' wouldn't fade through 'transparent' even if it was in a cue with a fade time.
There's some more anomalies I'll put in a second post, because they're things I could do with some help with. But if anyone wants to try these out, let me know how you get on. I think the colorizer and jump++ fixtures are probably okay, the movie player and projector are more complex and currently the fixtures are bit confusing because of the stupid naming system on the ETC desks. I've also thought that in real world settings you'd probably only want a limited amount of control from the desk, you won't need every parameter, so perhaps it won't matter that the names of some attributes are weird if you hardly every need them. But as a start, and as an exercise, I thought I'd see how it went.
All the best,
So the two things I've been struggling with at the Issy end are to do with 16bit values and scaling.
Obviously, there are many things in Issy that require more detail than the 0-255 8bit values offered by 1 DMX address. I'd like to create 16bit fixtures that would allow for much greater control from a desk. Once you get up to 16bit and have 0-65535 to play with that feels like enough for most applications. At the desk end this is really easy to implement, you simply change an attribute to 16bit and it is assigned 2 DMX addresses rather than 1. My problem is implementing this in Isadora. I'm sure there is a simple way to do it but the logic is beyond me! I'm looking for a calculation that threats DMX1 as the 'corse' value and DMX2 as the 'fine' value. So to get a value of 25 you'd have DMX1=0 DMX2=25, to get 255 DMX1=0 DMX2=255, to get 256 DMX1=1 DMX2=0, to get 300 DMX1=1 DMX2=44. At least I think that's what I want. Any suggestions, it's making my head hurt?
The other problem is around scaling the 8bit values. DMX deals exclusively in integers and we often want floats in Issy. I'm facing this problem when the 'home' value in Issy is in the middle of a range. So for example, the 'intensity' value on a projector generally has MIN=0 MAX=100; this scales fine, no problems. The 'red' value on a colorizer has usually has MIN=-100 MAX=100 and a 'home' of 0. If I send a DMX value of 126 to this with no scaling applied I expect a value of 0 (as it's in the middle of 0 and 255, or at 50% in lighting terms) but I get a value of -1.1765. If I send 127 I get -0.3922 which is close but not perfect. The value I seem to need is 127.5 which is impossible as DMX is integer only. I've got around this by setting the output on the Artnet Actor to MIN=0 MAX=254 which seems to work but feels like a bit of a cheat as I'm clipping the value. I'm sure there's a better way that I'm missing and would love to hear some suggestions.
Thanks as always,
Oh, and I've already spotted a mistake in the files attached above. New ones here.
CitizenJoe last edited by
This is a brilliant concept. I look forward to trying it out.
Thanks Woland, this might be nudge I need to re-visit this. I don't think I ever got any further than these first attempts really. I'll put my mind back to it next week and see if I can get hold of an LX desk from a quiet theatre to test things before I commit them to the plugin page.
Having read back through the thread I don't think I ever worked out an elegant way of translating two incoming DMX address to a combined 16bit value for fine control of Isadora parameters. Still, I'm two years older and hopefully two years wiser than at my last attempt so I'll give it another go.
If anyone has any existing examples or suggested methods that would be great.
Maybe I am two years wiser, that was embarrassingly straight forward. Unless I've missed something:
I did miss something, it should be 256 in the first calculator: