Open light sequencer format? - Page 1
Forum section: electronics / general

author: T3sl4co1l
author_rank: Super Contributor
timestamp: December 12, 2019, 04:09:46 pm
content: I'm building a simple LED controller for shop lighting. Might as well put some effects on it -- glowing, flashing, color fades, that sort of thing. (I've already implemented gamma correction, and per-channel fading between setpoints.)Looks like this, if you're curious:https://www.seventransistorlabs.com/Images/QuadController1.jpgBasically, it comes down to a wave file or sequencer -- either: at time x, channels 0-3 <= new value(s); at time x[n+1], ...; or: set channel(s) w <= z, delay(n), etc. Arb gen data would do, multichannel wave would do, sequencers would do; etc.I'm leaning towards a sequencer, should be the most compact format. Not sure how I want to store the program, if it should be loaded into RAM or ROM or EEPROM or what. Perfectly happy to write my own, but what I'm wondering is:Is there a somewhat standard format people have used for this before?Also unsure if I want per-channel programming, or all at once, or let the program select, or what. Hmm...Tim

author: senso
author_rank: Frequent Contributor
timestamp: December 12, 2019, 05:57:27 pm
content: DMX?

author: ajb
author_rank: Super Contributor
timestamp: December 12, 2019, 06:09:57 pm
content: Is this all so that you can walk into your workshop, hit the switch, and get that cool sci-fi effect of all for the lights coming on one at a time, starting from the closest to the door?I doubt there's a 'standard' that extends beyond any particular ecosystem. The stage lighting world uses cue stacks, which are a similar concept, but a bit more abstract on modern control systems (calling into palettes/presets rather than a plain list of channel values) and the exact way they work varies. Actually, come to think of it, there is a USITT ASCII file format specifically for stage lighting show files, and I think it includes a way of storing cue lists. Being ASCII, it's verbose and inefficient, and I'm not sure how sophisticated it is, so probably not useful to you. Not many people use it.Anyway a very general approach to the concept would be something like, for each cue:- List of channel values in this cue- Fade up time- Fade down time- Optional cue to link to automatically- Delay before linking to next cueThis works very well up until the point when the link delay is less than the fade times (or the user manually advances the cue list), at which point you need to figure out what happens when one channel is commanded to a new value but hasn't yet finished fading to it's previously commanded value. Stage lighting also tends to have a lot more going on and so has even more complications to resolve, but a general distinction is made between 'highest takes precedence' and 'latest takes precedence' when resolving which command takes priority on a given channel (highest meaning commanded channel value, last meaning most recently commanded). Most control systems these days default to LTP because HTP really only makes sense for intensity, and is sort of meaningless for things like pan/tilt, color, gobos, etc.For a simple system, you can probably just define that fade times must be less than link times and be done with it (or that the link delay is added to the longer of the two fade times), that simplifies implementation a LOT, but does limit the sorts of effects you can display. For a small number of channels you can always store all of them, and mask out any channels that a given cue should not affect, or you can choose a more complicated scheme that can more efficiently support sparse channel lists.

author: james_s
author_rank: Super Contributor
timestamp: December 12, 2019, 06:19:56 pm
content: DALI and DMX are the two commonly used lighting control protocols I'm familiar with. DALI is normally used for permanent installations to control general illumination which is what it sounds like you're doing. DMX is used for stage and theater lighting and other effects, it has gained popularity with a lot of people using it in their holiday light displays.

author: ajb
author_rank: Super Contributor
timestamp: December 12, 2019, 06:21:39 pm
content: Just for the sake of interest, here's a snapshot of cue list on a modern stage lighting control system (Avolites Titan). This has separate delays for fade in/out, and you can see the optional link columns. This is a lot more sophisticated than the basic approach I described.-"Move in dark" is for moving lights, essentially it delays pan/tilt changes until after the intensity has reached zero, so that lights can turn off, move to their new position, and then turn on again.- Tracking controls how previously commanded channel values and effects are handled (a given cue can block previous commands from carrying through to subsequent cues).- The timecode column allows cues to be fired automatically at specific times based on a free-running clock or an external timecode source.

author: SiliconWizard
author_rank: Super Contributor
timestamp: December 12, 2019, 06:25:50 pm
content: I just thought about DMX-512 as well. But if I'm not mistaken, DMX is just a communication protocol that doesn't include any sequencing feature per se?

author: james_s
author_rank: Super Contributor
timestamp: December 12, 2019, 06:35:55 pm
content: DMX and DALI are both just the protocol, sequencing is up to the controller.

author: T3sl4co1l
author_rank: Super Contributor
timestamp: December 12, 2019, 06:58:38 pm
content: Yeah, I don't need comms, I'll just talk ASCII over serial. Right now it's set up as a command prompt. Probably a script could translate very easily between something like DALI and it.Don't need something as high level as stage lighting, something a lot simpler would do.Right now the lights are just over my bench, so, any kind of display isn't really at alluseful, it's just for S&Gs.The sequencer I could just put in a script, as well. Was thinking at first, putting it on the MCU, but either will do, really.Would also be neat to, say, capture PC audio out, filter by frequency bands, and transmit amplitudes as brightness commands -- a light organ. Get some party lighting going when I'm jamming to music and not trying to do any work. That would take a bit of doing, though... I'm guessing the Windows audio system is a typical mess.Tim

author: RoGeorge
author_rank: Super Contributor
timestamp: December 12, 2019, 07:43:25 pm
content: DMX is the established standard in the industry. Light shows, theaters, concerts, Christmas lights, everything from spots to lasers or simple dimmers is controlled by DMX. There are all kind of controllers and software tools, can be interfaced with any MIDI device, there is an entire environment for DMX, standardized connectors, etc.Very simple protocol (it sends 8 bits values over a serial daisy chain of devices, devices can be anything), easy to implement, everybody uses it, strongly recommended to use DMX than to reinvent it.For PC, there is already plenty of free DMX software controllers, e.g. Freestyler, DMXcontrol, or payed ones. Many can take music, or images, or the position of a MIDI knob as an input, or simply create timers, and use all that (many sources can be mixed) to control lights intensity, or colors, or laser positions, or whatever other DMX devices that are listening to a chain of 8 bits values.Later edit:-------------A random list of DMX controllers software, compiled for a project some years agoShowmagic SL24 - free max 24 channelsADJ MyDMXChauvet Xpress 512.DMXControl - free"Clarity" by LSC LightingChauvet's showXpressFreestyler

author: james_s
author_rank: Super Contributor
timestamp: December 12, 2019, 07:54:06 pm
content: I use Vixen to control my Halloween display. Version 2.x, I tried 3.x a couple times and couldn't make any sense of it, I think they tried to make it do too much and it lost the elegant simplicity that made the older versions so good.