Digi-DMX

Ramblings about the DMX-512 lighting protocol

Sep 7, 2017 - 4 minute read

Joystick Controlled Moving Light

Background

A few years back, I put a Rosco I-Cue in a show. The technical contact at the venue was a super carpenter, can make sets do amazing things. Since lighting was not his forte, bouncing a light off a mirror was brilliant to him. Fast forward a few years and he messages me with,

“{deleted show name} requires some kind of follow spot - I was thinking that rather than borrow a traditional one, we’d invest in a mirror attachment similar to what you brought in for {that last show}.

Can you recommend a brand/model that provides the needed capability? Or, is this just a bad idea?”

Well. It was a horrible idea. Their console is an ETC Element which doesn’t have encoder wheels. Besides, trying to followspot with encoder wheels is like trying to draw a circle on an Etch-a-Sketch. But why stop there? I replied …

My first instinct is that it’s a bad idea …

Setting aside other technical issues, do you think you know how we could make just the encoder head of this? See link …

http://www.prg.com/technology/products/luminaires/groundcontrol-followspot-system

It’s still a horrible idea. But why stop there? I then sent …

Now I’m thinking about if I can make an app to read an Xbox joystick …

And he said …

You’re welcome :-)

The I-Cue? Still a bad idea, but if we used an honest to goodness moving head fixture with gobos, colors, iris and a discharge lamp that mimics that spotlight look, it’s a fantastic idea. I had to get the workflow right. There’s no camera for pre-positioning like the Ground Control has. The fixture will be in the air and operator is in the booth.

I asked the director, “Can we have each spot cue always start from a specific spike on stage. I don’t care how many spikes we have, but she’s got to be on her mark when the cue goes.” He said, “Yeah, we can work with that.”

The Result

The result is a little Linux program that listens to DMX over an Ethernet universe (sACN, ArtNet, whatever) and resends modified frames out another universe.

The lighting console there is an ETC Element. I’m really starting to like what ETC is doing now, especially now that they’re into the 2.0 series and you’ve got magic sheets and editable fixture definitions. Hooking up a High End Systems Studio Spot 250 was easy.

Like most modern desks, the ION outputs real DMX to the dimmer rack and sACN over Ethernet to anything you like. We patched the Studio Spot at address 301 which was well beyond all the conventionals and scrollers.

The lighting board was programmed with the moving head coming up on all of the pick-up points. Intensity, Beam, Focus. The board had auto marked cues that preset everything before the light comes on. Once on, the operator pushes the joystick and the app captures just the pan and tilt parameters so as to “follow” the actor as she moved around. The faster she moves, the more pressure you apply to the analog joystick to make the head move faster. The other parameters like intensity, color, gobo still track console, but pan and tilt remain locked under joystick command. So one of the joystick buttons was assigned to a release function to reposition the fixture back to the console position and tracks the console until the joystick captures it again. This is normally done after the light fades out.

<?xml version="1.0" encoding="utf-8"?>
<settings>
  <!--
	 Notes:
			 Byte Order: 1 = MSB, 0 = LSB
			 DMX Offsets start at 1
			 Universe Offsets start at 1
		-->
  <input_universe>1</input_universe>
  <output_universe>2</output_universe>
  <joystick device="/dev/input/js0">
    <map type="analog" link="pan" number="3" min="-32767" max="32767" deadmin="-2048" deadmax="2048" scale="16"/>
    <map type="analog" link="tilt" number="4" min="-32767" max="32767" deadmin="-2048" deadmax="2048" scale="-24"/>
    <map type="analog" link="iris" number="0" deadmin="-3000" deadmax="3000" scale="-2000" />
  </joystick>
  <fixture address="301">
    <parameter name="intensity" offset="15" size="1" order="1"/>
    <parameter name="pan" offset="1" size="2" order="1"/>
    <parameter name="tilt" offset="3" size="2" order="1"/>
    <parameter name="iris" offset="13" size="1" order="1" min="0" max="132"/>
  </fixture>
</settings>

After a bit of tweaking, this is what was created.

Feel free to download and experiment with it.

Github Source