CHOP Help: extend, offset and replace values of a stream of data

I’m trying to drive 6 LED bars of 20 RGBW pixels each, and tilt, intensity and zoom per bar.
I have the 6 streams of 80 RGBW channels sorted out, but I want to modify that stream to add the corresponding values for tilt intensity and zoom according to the specification of the manufacturer.

So, I’d like to offset and extend each stream by 9 values, and replace those values with the ones set by each parameter (tilt, zoom, intensity) and the ones that need to be defined but I won’t be using.

Any idea how to approach this?

You’d have to have a lengthy sequence of trims and joins. Instead of detailing that though, I think it’d be better to outline the method that I’ve used to organize my DMX data with minimal chop juggling.

The key is to have each fixture channel as a chop channel, with its name being the name of the fixture channel (red, green, blue, white, tilt, etc). Each fixture is represented by the value of every channel at a specific index. A couple of cool things result from this.

  • Fixture data can be divided into multiple sources easily.
  • Unused channels can be padded by including them in a constantCHOP, and they get extended to the correct length by a mergeCHOP automatically.
  • Aligning to spec is free with reorderCHOP
  • Sequencing all fixtures is free with Sequence All Samples in shuffleCHOP

Here’s a .tox that should help you get the idea
dmxsetup.tox (9.2 KB)

1 Like

Thank you so much for this! It’s way cleaner, straightforward and flexible than what I was going at (awkward net of shift, resamples, join where any change would’ve been a nightmare).

There’re a few unrelated things I’ve learned from your .tox also. Very very handy.

The only difference with my setup is that each fixture has 20 RGBW channels (LED bar) mapped with a SOP of the virtual fixture geometry over a TOP, and tilt zoom etc each fixture. What I need now is to have a channel for all the 1st pixel Rs, all the 1st pixel Gs … up to 20 channels, a total of 80 that I’d need to add to the spec list.

I think I managed to do it here

dmxsetup.tox (11.3 KB)

Sure thing.
Here’s another version with more tricks (pattern expansion, toptoCHOP Full Image).

dmxsetup.tox (9.6 KB)

1 Like

Thanks again, pattern expansion is very nice!
toptoCHOP of the full image is cool too but it doesn’t work in my case as these horizontal bars will go under a LED screen, so it reads the bottom pixels of the animation, and the 6x3m LED screen is a copy of a set of 10 vertical bars that will go in front of the screen. So I’m not using the screen as a screen but as a bar extension kinda.

Yeah the method that 20ml is talking about, while very efficient, only works best for a homogenous collection of fixtures (aka all the same fixtures with same channel counts and same spacing in DMX universe land).

You could either make TWO of those such systems, one for the vertical bars and one for the horizontal - assuming those are the only two places where you will have different fixture profiles / numbers of pixels per fixture / etc.

Or you will have to get a little more creative with spacing out fixture profiles in DMX land. I’ve been experimenting with better ways to do this - especially when you have fixtures start channels not so evenly spaced in your DMX universe - or many different types of fixtures, and as far as I can tell, you can either create a mess of trim / splice / join / shuffle CHOPs, or try and get everything lined up ahead of time in TOP land (including controlling pan and tilt with TOP data) before the TOPto CHOP. And THAT only really works if your fixture spacing ends up on clean breaks of 3 channels (aka RGB always ends up lining up with the every 3 channels that TOPto CHOP gives you for converting RGB.

The only other way I can think of doing it is with Replicator COMP and then merging all of the resulting final CHOPs of each replicant into one channel. Or if you’re feeling a little crazy, a lookup CHOP and maybe an animation COMP outputting full-range increasing ladders of “ramp per sample” style segments spread along a 512 sample CHOP channel…

Or change the DMX start addresses of all your fixtures so that they always start at the same distance apart even if they don’t have the same number of pixels. AKA send 120 pixels worth of data to your 20 pixel bars and space each next bar (in DMX universe land - not physically) far enough apart to not have overlap.

Either way it seems like there should be a better way to arbitrarily build long unique multi-sample CHOPs for this kind of stuff without having to manually do a bunch of CHOP-ghetti to get there (and thus risking headache should a DMX channel change onsite)

1 Like

Thanks a lot Peeet, nice ideas there too.

Luckily I have the other set of vertical bars already mapped. Since they are DIY bars and the basis of my show I have them “manually” mapped with a relatively simple sequence of shuffles (the numbers was the tricky part). That won’t be changing unless I add or remove bars and would have plenty of time to adapt. I actually had to cut some pixels out to make the solder points more reliable so I had to count on that too, some have 120 and others 119. I wouldn’t like to be someone else mapping my bars now.

So the solution above works very good in my case since I’m adapting to a temporary setup. Just yesterday they changed the bars I was planning to map at the start of this thread, changing the specs to the new ones was a breeze now that some steps are automated (at least on paper, let’s see in situ).