Liberation news and updates September 2024

Hi everyone!

First of all, thank you for your continuing support and it’s been really great to see all your work and hear about how much you’re enjoying using Liberation.

TLDR : timecode, timeline tempo map, improved tap tempo all working. Plus zones cursor key nudge. And lots of other fixes and improvements. I’m currently ironing out bugs here before releasing to you.

The long story :

It’s been a tough month of hard work, all of the timing code needed to be rewritten from the ground up. But why has it taken so long?

Tempo (beats) vs absolute time (seconds)

Some of you know that I’m a musician, so I’ve always used a musical tempo-first approach to timing in Liberation. It seems logical to me, because 99% of the work we do will likely be to music. So the core timing is in beats and bars and with a tempo in beats per minute (BPM).

So of course, the Liberation timeline should also use beats and bars to position the content, just the same as the music apps that I’ve used for years and taken inspiration from.

It kind of blows my mind that it’s rare for music visual tech to take the same approach… you’ve probably experienced lighting software where you have to take copious notes of the exact timecode in seconds that the chorus kicks in. Followed by your spreadsheet of cues and timings. And the cue itself has it’s own tempo? Ugh.

I know that some of you are happy working like that but for me, it just seems cumbersome. Music is usually split into groups of, say, 8 or 16 bars, so it’s much easier for me to think in terms of bar counts.

Although it may be a little more work upfront to sync the tempo with the music/timecode, subsequent edits are way easier. There’s a 2 bar bridge after the verse? No problem. You’re gonna add a double chorus at the end? Done! You’ve decided to change the tempo to 121 BPM? Let me change this one setting for you. :grinning: And you know that every single clip will be in time, every time.

So this is a very roundabout way of saying that I have spent a lot of effort to save you effort.

Refactoring the timing system(s)

Up until now the timing system in Liberation has been based on one object, and it is one of the oldest bits of code, dating back to 2013. It’s grown to accommodate tap tempo, MIDI clock and Ableton Link, and it’s become a monster. So I ripped it apart into separate objects, and rewrote it all from the ground up.

So now every timing source is independent, inheriting from a base class. Some time sources have their root in beats and bars (MIDI clock, Ableton Link) and some have their root in absolute time, minutes and seconds (the live clock/ tap tempo, and any timecode source). And they all convert seamlessly between seconds and beats.

Tempo map

Another challenge is the new tempo map feature for the timeline. There’s not much point in having a timeline unless you can have multiple tempos (“tempi” if you’re feeling pretentious :blush: ) as the music changes speed.

You now have a separate track along the top that you can add tempos into.

Architecture

All of these timing features require some complicated maths, although honestly that’s been the easy part. With code bases of this size and complexity, it will always be the integration that’s the hard part.

But I’m at a good point now where it seems to be working well, and I’m just ironing out a few minor issues as I discover them.

Clips

I’ve refactored the clip system in a way that you will not notice but hopefully will make the system more stable and easier to work on in future!

Video

I’ve added an experimental video object into the timeline to help you work on timeline shows. It seems a bit processor intensive but I may keep it as an unlockable feature.

Zone nudge

A feature that lots of you have asked for - you can now nudge zones / corner points with your cursor keys. It seems like it should be simple but it required yet more architecture to route key commands into the appropriate bit of code.

What next?

In order to give the new code a proper run, I am using it in a couple of big projects. The first will be using 8 lasers outdoors and running for a full month. It’s a timeline project that syncs to LTC timecode, coming in through any audio interface, now implemented in Liberation.

Putting this show together has also helped me to fix some issues with the timeline.

Later in October I’m doing lasers along with @abbycodestudio for a yet to be revealed 80s star on a couple of their UK tour dates. I’m excited to be reliving my early teens with such a legendary songwriter!

I’m going to be doing a combination of pre-made timelines with some live work. As I don’t think I’m getting timecode, I’ll be experimenting with a timeline that I can use tap tempo with. I’ll let you know how it goes.

New version

As I missed my last deadline I’m hesitant to promise a date as to when I’ll let you test the new version but as soon as it gets more stable I’ll start to distribute it.

Thanks again for all your support, it’s been a lot of hard work, I look forward to sharing it

Seb

10 Likes

This is extremely exciting, thank you for the transparency and for the dedication to implementing things the right way rather than just slapping new code on top of old.

3 Likes