Just wondering if there are many people out there who program their timelines outside of the Liberation IDE? The json timeline import looks to be a fantastic feature (one that was painfully missing from LaserShowGen). Designing shows for QLC+ using Final Cut Pro’s timeline and then a PHP script that takes the output of that along with some definitions of what each marker and title clip means to make a QLC+ script has been a powerful and flexible tool for me. Looks like Liberation is similarly tractable. This will make a hybrid DMX/Liberation show quite doable (although I note that Seb has suggested that he’s adding full DMX capability to Liberation).
I doubt that anyone else is doing it the way I do, but I’m sure there will be others importing json timelines. I’d be curious to hear about them.
This sounds very interesting. Please explain how you do it.
Personally, I doubt that at least in the near future Liberation will be able to do all the things a fully fledged DMX software can do. Just because it is a huge task to implement all of that and there are some people out there who for years have been doing nothing else and still aren’t quite done (DMXControl – Startseite). Liberation is very powerful at Laser control and that’s great.
I am using DMX Control as “Master” and control Liberation from there using a tool I mentioned a couple of days ago (Request: Liberation as a DMX fixture - #8 by MWSysTech). So Liberation is sort of specialized intermediate layer for laser control.
How I do which it? The QLC+? I’ve not done the Liberation version yet!
But….
I start with creating a FInalCutPro project with the music I want to use (eg. Grand Pas de Deux from Tchaikovsky’s Nutcracker). Then I have some concepts about sequences/chasers that I want to have at certain times, and I pop in some titles with a simple caption (eg “OrchestralDescent”) and some markers at key points - eg. the notes in the descending scale.
Then I export that as xml.
The FCP exported timeline is quite similar to the Liberation export (but in XML rather than JSON).
My software does a few things:
It will analyse the soundfile and generate an array of instantaneous amplitude values for each 0.1s interval
It will convert the FCPX markers into milliseconds
It will iterate through the clips, looking for start time/duration and caption
For each clip it will create a sequence (or multiple sequences) according to a definition of what a clip caption symbolises (eg. it might be a Moving Head fixture tilting to a different DMX value at each marker, while the colour changes and the brightness is driven by the music volume, or maybe a “sweep” effect across a bunch of parcans that line my auditorium - with certain colours/tail length etc).
Each sequence is laid onto a QLC track (eg. MH movements must always be on the same track, otherwise QLC sends crazy messages to the fixtures)
A virtual console is generated with a button for each track
This is all output in QLC’s own XML format
I load the file into QLC and press the various play buttons when I want the track to start.
I also incorporated some MIDI notes as fixtures that then signal via a loopback interface to LaserShowGen to play clips at the appropriate moment - and I think the same will work with Liberation.
Bringing in your own JSON timelines is absolutely fine to experiment with, but it isn’t something I can officially support. The format will keep evolving, and dropping in hand-written JSON can sometimes lead to odd behaviour (and crashes).
That said, I’m more than happy for people to look through the JSON formats for most parts of Liberation. If you’re curious and enjoy tinkering, feel free to explore it - just treat it as an advanced, “at your own risk” workflow for now.
That’s fine - any changes can easily be adapted to, although I guess you’ll have to have some kind of converter to give backward compatibility for those with handcrafted scripts?
@seb Something that might be worth considering if folks ARE going to do this is to add a validator for the json file, something like JSON Schema or similar and then fail if they don’t conform to your standard vs a random crash. Just an idea.
I totally get the thinking, but just to keep expectations realistic: hand-written or externally generated JSON isn’t something I plan to build any tooling around. Liberation’s own projects will always stay backwards compatible, but anything outside that is very much in the “tinker at your own risk” category.
A validator or schema sounds neat in theory, but once I start formalising the format it becomes something I need to maintain, document and support - and I really don’t want to go down that road. The JSON is primarily an internal format, not a public API.
So you’re absolutely welcome to explore it, but I’m going to draw a line there in terms of support. I think that’s probably everything we need to cover on this one, so I’ll close the thread here just to keep things tidy. Thanks everyone!