Project approach feedback/ideas (incl OSC control)

24 views
Skip to first unread message

Felicity Jeffery

unread,
Apr 12, 2024, 11:07:56 PMApr 12
to Lightjams
Hello!

TLDR; Would love some advice on the best approach for building a project that may require upwards of 100 different scenes that can be triggered by OSC. Scenes must be modular in nature to allow flexibility in effects and rapid development/changes.

- - 

We've been using lightjams for 6ism months now to control the lighting for a live Dungeon and Dragons-esque choose your own adventure DJ set. It's worked wonderfully so far but our current configuration isn't scalable not portable from a conceptual point of view if we want to take our show into venues with their own lighting systems (eg. chamsys, GrandMA, Onyx etc).

We're planning to rebuild it from the ground up over the next few months and would love some ideas on what we can do differently going forward. I'll try to keep the below over view brief, but apoligies in advance for the wall of text.

Current Kit:
  • 6 x Chauvet EZLink Par QB4T RGBA (used on stands as downlights)
  • 5 x Light Emotion P645QUADP2 RGBW (used as uplights - we have additional fixtures that we can add if needed)
  • 1 x Beamz Star128 16X RGBW Flood light (not currently used in project)
  • 1 x Dawntronics Oliver T650 Haze Machine (not currenly used in project)

Current Control Interfaces:
  • OSC - Deep Symmetry - Beat Link Trigger (Interface between Pioneer XDJ-XZ and Light Jams )
    • OSC commands sent from beatlink based on programed cue points or other triggers within tracks preloaded into show files
  • Music analysis performed using lightjams (audio input from the deck via Tascam audio interface)
  • Midi - From the deck via LoopMidi and used through the formula function to time effects to the beat
Current Project approach (I've attached a few screenshots showing examples of some of this)
  • Core Grids 
    • Saturation - All attributes set to 100% saturation
  • Dimmer/Intensity Grids
    • Base Dimmer - All attributes dimmer set to 100%
    • Intensity - All attributes set to max 50%
    • A collection of grids that adjust max/min dimmer or intensity attributes as needed to achieve particular effects (usually combined with the switch effect noted below)
  • Collection of 'effects' grid - Mostly utilise dimmer and intensity attributes 
    • Pulse - power for the dimmer attributes is controlled based on music analysis with uplights attached to the lows and the downlights attached to the high's
    • Alternate - Source node moved on the x-axis between the uplights and downlights using a xtopercent formula. Only one group of lights active at a time
    • Walk - Using the same formula but changing individual attributes at each point to have turn off or turn to white (max intensity) on each beat
    • Combinations of the above into single grids
  • Collection of 'track' grids grouped into sets - Mostly just hue attributes
    • Most grids are just two columns (one for uplights and one for downlights) with the hue set for each group and occasioanlly more complex colour patterns to make rainbows or specific effects
    • Switch effect - similar to alternate above but instead of on/off the colours swap between the groups
  • Sequencer Grids 
    • 1 per set (each performance will utilise 3 sets - but the exact sets utilised is not-predetermined)
    • Each set contains between 16-24 songs
    • Some songs have one scene, some have multiple
    • Each scene is made up of the activation attributes for the track grid plus one or more of the effects grids - once scene per column
    • OSC commands are used to trigger the activation of the correct sequencer grid and then to move the source node along the x-axis at the pre-programmed point within each track (set via Beatlink Trigger)
Planned Changes:
  • All dimmer attributes 0% by default
  • Eliminate 'track' specific grids
  • Separate all grids so uplights and downlights have their own grids
  • Have base Hue grids which include saturation nodes
  • Create effects grids - e.g alternate - that contain grid activation attributes rather than the fixture attributes directly
  • Utilise Beatlink to implement beat level triggers for greater control (every 2nd, 3rd, 4th beat etc) 
The part I'm most unsure about is the best way to trigger the required grids.
  • Idea 1 - 1 large grid that contains all the grid activation attributes
    • each attribute has it's own source node attached
    • OSC addresses mapped to the power of each source node
    • Have beatlink send one or more OSC commands to trigger the activation of the required grids to make up the desired scene
    • Pro - greater flexibility to mix and match grids to create the scenes
    • Pro - more likely to be able to interface with other control systems with we can just provide out commands then the other LD can map to their own systems as needed 
    • Con - not sure how to manage transisitoning between grids smoothly (deactivating the old grids so there's no conflicting effects in play)
  • Idea 2 - Continue with the current approach of sequencer grids and pre-set the scenes so a single OSC command is needed 
    • Pro - we know how it works
    • Pro - Transitions between scenes are straightforward
    • Cons - not easily adjusted to change scene order or add additional scenes whilst retaining a visual start to finish order of scenes
    • Con - May require more work to interface with other systems
P.S - More than happy to share the project file as it currently stands and very much open to feedback on alternative approaches to the current way we've created effects
Screenshot 2024-04-13 120558.png
Screenshot 2024-04-13 120517.png
Screenshot 2024-04-13 120421.png
Screenshot 2024-04-13 120251.png
Screenshot 2024-04-13 120441.png

Isaac Caballero

unread,
Apr 13, 2024, 9:16:22 AMApr 13
to ligh...@googlegroups.com
Hi!

I guess the real question is, where do you want the logic of creating scenes to happen? In idea1, scenes are created externally (beatlink or other). In idea2, scenes are created in LJ.

What about having the best of both worlds? 

You could create your Idea1 Master Grid with all activation attributes and trigger them individually externally, and you could create your Idea2 Sequencer Grids that have preset scenes that you can also trigger externally.

The sequencer grids would be your scenes and they would just be 'groupings' of the same activation attributes from Idea1 Master Grid. You could easily deactivate the sequencer grids and have full manual control when needed, and switch from one 'mode' to the other.

You can even mix and match, have some attributes on manual individual control, and others in 'scene mode'.

A few questions/comments:

Instead of OSC, you could also use sACN or ArtNet input in LJ to trigger stuff from external sources, it may sometimes be easier when working with GrandMA, Onyx etc.

When you say going into venues with their own LD and lighting control system, what are they replacing exactly, beatlink?

>>>(idea1) not sure how to manage transitioning between grids smoothly (deactivating the old grids so there's no conflicting effects in play)

You would have to make sure that the system that is sending commands deactivates a grid when activating a new one of the same 'category'.

Or you could map the same OSC (or ArtNet etc) channel to more than one grid activation instead of having a source/channel for each. So whatever grids you do not want running at the same time would be the same OSC channel, and you alternate between them with the value of that OSC channel. That way you do not have to worry about deactivating and having conflicts.

Hope it helps! Cheers


--
You received this message because you are subscribed to the Google Groups "Lightjams" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lightjams+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/lightjams/66127a61-2f4d-43aa-8d00-9e5439992024n%40googlegroups.com.

Felicity Jeffery

unread,
Apr 14, 2024, 5:07:11 AMApr 14
to Lightjams
Hi Isaac! 

Thanks so much for your reply. 

>>>I guess the real question is, where do you want the logic of creating scenes to happen? In idea1, scenes are created externally (beatlink or other). In idea2, scenes are created in LJ.

You've succinctly asked the question I think I've been grappling with and the partial premise of my original post. I'm not commited to any approach as yet, I'm exploring the pros and cons of each.

I hadn't thoughts about combining the two idea by creating "scene" grids. I do worry though that would add even more grids to manage as it puts another layer in the middle than what I've got now. But it would simplify the number of commands that beatlink would need to send and solve the transition between scenes issue.

Having a hybrid approach is probably the path that we'll go down unless I can establish a clear winner.

>>>Instead of OSC, you could also use sACN or ArtNet input in LJ to trigger stuff from external sources, it may sometimes be easier when working with GrandMA, Onyx etc.

As far as I can tell Beatlink doesn't support aACN or ArtNet, although I don't know either protocol to tell for sure. There's likely scope that it might be capable with some assistance from the dev as he has already assisted with integrations with GrandMA 2 and also ShowXpress Live. It's main output is midi but OSC is easily supported and as I'd been using OSC via TouchOSC already it was the easiest to implement.

>>>When you say going into venues with their own LD and lighting control system, what are they replacing exactly, beatlink?

This is one we're really not sure on as we haven't spoken to any local venues or LD's yet and our attempts to get a consensus approach in another lighting group was fruitless. We imagine their existing control system would replace lightjams and then beatlink may or may not be used depending on a) what the in house system is, b) who is programming the show (us or the in house/busking LD) and how we negotiate that the show will look like without lightjams. Ideally I'd prefer to keep LJ in the mix because of the music analysis - it's vital to how we've designed the lighting and I haven't seen anything that will mimic what can be achieved.

It's very much a case of we don't know what we don't know and we're just making it up as we go.

>>>Or you could map the same OSC (or ArtNet etc) channel to more than one grid activation instead of having a source/channel for each. So whatever grids you do not want running at the same time would be the same OSC channel, and you alternate between them with the value of that OSC channel. That way you do not have to worry about deactivating and having conflicts.

This sounds like what we'd need, just not sure I follow the how part. How would you configure it so that you could use different OSC values to alternate between the activation grids? Would that essentially be a sequencer grid again?

Again thank you so much for your reply. 

isaac

unread,
Apr 14, 2024, 10:33:44 AMApr 14
to Lightjams
>>>This sounds like what we'd need, just not sure I follow the how part. How would you configure it so that you could use different OSC values to alternate between the activation grids? Would that essentially be a sequencer grid again?

Basically you would use something like osc(channel#) on the x of a source and set the power to 100%.  So the value you send on channel 0 would make the source go to that position. In LJ Config/OSC/Mappings, you have to set the min/max for that channel to however many cells in your row.

Let's say we are using channel 0. When you send the osc messages /osc0 0, /osc0 1, /osc0 2 etc the source would go to that position and trigger the corresponding attribute.

I guess we can call it a sequencer, or just a 'mutually exclusive' way of selecting attributes only using a single OSC channel instead of having one channel for each attribute.

I am attaching a small project file for reference. Note that I just put random dimmers as attributes, but they would be grid activators in your case. I also added how to do it in 'shader mode' which still uses one channel per attribute but you don't have to map each source individually. Using TouchOSC as an OSC sender (for visualisation purposes) but it would be beatlink in your case I think.
OSC Sample.ljp
OSC Sample.mp4
Reply all
Reply to author
Forward
0 new messages