Assignment 4 – yay yay yay lights

For MANY A LONG YEAR i have desired to do a frequency-to-color lighting control machine. So this is that, or at least a gesture in the direction of that.

This patch does an FFT of an incoming signal and breaks it up into a certain number of bands. Yes, I could have done this with filters I guess, but I like that these are crossovers rather than filters here, to get slightly cleaner numbers for the colors. The ranges are based on an overtone series; each crossover is double the frequency of the prior.

It takes the peak intensity of each tranche, scales the values to 0-100 (for eventually going to DMX-land), and and returns it to the main screen. The fft part of this is boring. Sorry. It took me a surprisingly long time to figure out how to make the conditionals work though… Seriously…

OK so then we basically have the data we need to send color values to an ETC D60 VIVID+, which takes 7 values for color and 1 for intensity when in “direct” mode. It does this because it is very fancy. Next problem: the show I want to use this on has seven VIVIDs in it, and I would like each of them to be able to get a ‘rotated’ color value (EG red value gets mapped to green value, etc), with each light being offset. This might end up looking totally nuts, but it’s a first pass at some kind of variability across the seven units.

So I’m using poly~ to instantiate seven VIVIDs, each with 7.1 parameters. DMX channel and intensity from the pfft~ outputs get packed together into an OSC message using sprintf, and then that gets sent out to the main window to udpsend. Because the DMX channel is first in the sprintf message, it needed to bang every time there was a new fft value (often)… So I ended up doing something tricky with an uzi and a counter to continually generate those values. I’m ultimately ‘sampling’ at a set metro rate, globally controlling all the peakamp~ objects and such… rather than using the fft rate… but that would be too fast for comfort anyway, so it’s probably OK.

Anyway, finally, the luminosity intensity parameter on the lights is separate from the color intensity parameters (you color mix then turn up the Big Knob). So I’m taking a final peakamp~ of the original input, and passing it as well into each poly~ instance.

 

ARE THERE PICTURES? no! Sorry! This patch will be (maybe) used this January in New York for the APAP showing of the latest ROKE piece. And all this other gear will be there. Imagine a giant circular screen, backlit with all these crazy colored lights, all of which is responding to a modular setup somewhere back there sawing away. It will look vaguely like this:

Here’s the patch:
https://www.dropbox.com/sh/6n2uk8um97ev7sp/AABgysKzBmILQGxrnoie1n3ta?dl=0