My findings on working with multigrid markers in Lexicon, Serato and EngineDJ

At the time I moved from serato to engine via Lexicon, I also transitioned from basically not caring at all about my beatgrids (mixing by ear always) to being super accurate about them. The reason was that I started to get into lighting using soundswitch, a lighting solution which relies on beatgrid information to play lightshows. In this thread, I’d like to discuss my findings when creating and exporting flexible beatgrids with Lexicon.

First of all, Serato and Engine both interpret flexible beatgrids differently than Lexicon. In Lexicon, a new grid can start anywhere immediately, which makes sense from a music theory perspective. Sometimes an eight-note pause is just what you need.
Engine and Serato have a different problem though, they offer an autosync feature. And whether you use it or not, that feature needs defined behaviour when changing tempo. And that is not the case if the beat grid skips. So instead, engine and serato make sure that the downbeat always lands on a beat from a previous beat grid. If your grid in lexicon is shifted by an eight, that means the whole beat grid before that is adjusted to compensate for an eighth note, meaning it will go out of sync to the tune of an eight in the timespan between the last beat marker and the new one. This is unacceptable to most of us in a real world scenario.

So what do you need to do to avoid this behaviour? If you have a skip in the beatgrid (i.e. not just a tempo change at exactly the downbeat, but an actual pause or delay in the track)

  1. you beat grid your initial section as you would usually
  2. you place an auxiliary beat marker on the last correctly timed downbeat of the old beat grid. This marker effectively anchors the previous section
  3. you place a new beat marker on the first downbeat of the new grid and adjust the BPM of the new section, if necessary
  4. and crucially, you set the bpm of the auxiliary marker in such a way, that the next downbeat falls exactly on the new beat marker.

If you omit step 4, engine or serato may adjust the position of your new beat marker to fit on the grid, which is not what you want.

If you have a situation where there is no pause, i.e. the track just changes tempo at the downbeat, you can skip the auxiliary marker, but you always must make sure that your new beatmarker ideally lands on a downbeat of the old grid. This is the case for most tracks that are recorded live without a metronome. It may work with landing on any beat, this seems to sometimes not work for me, and I haven’t determined the exact circumstances yet. Also, I’m not sure how other DJ software handles this.

To this extent, I’d love if there was a button in lexicon that adjusts the tempo of the currently active section to satisfy step 4 automatically. Previously, I had to manually fiddle around with it to get it “as good as possible”. The errors you make can add up, unfortunately.

I had been doing testing with Serato and came to the same conclusion which has been discussed in detail within some threads on discord. Though for Serato I concluded the new grid needed to be at the end of a bar of the previous grid, not just a beat. I haven’t touched Engine though and wasn’t aware of it potentially having similar issues.

You can build Serato-compliant beatgrids inside Lexicon as you’ve touched on by having quantise turned on and creating “filler grids” where you add a new grid at the end of a bar where the tempo shift happens and then adjust the bpm of that grid so that it has a bar ending exactly where your next beatgrid needs to start.

I’ve also formulated a way that Lexicon could mathematically calculate and populate filler grids to turn a non-compliant serato grid into a compliant one automatically. The math works, but there are some things that need further testing with that to ensure it’s not going to introduce additional problems with those amended grids ending up in the other DJ apps.

@Scythe is our expert on this topic :slight_smile:

I’m happy to add these filler/auxillary beatgrids to avoid the stupid behavior Serato and Engine have but I’m afraid it will have weird side effects in live situations. Because this filler beatgrid will jump to a very high BPM for a short time, it might make 2 synced decks act weird.

If we have a bit more testing in live situations and we’re sure it has no bad side effects, I could create a test version with this change

Nice! Glad to hear this is being discussed. Personally, I’m actually quite happy about the manual way that lexicon requires because it requires you to make your intentions explicit. My experience is that these filler grids can have pretty significant tempo changes or gradually change over 2 or 3 bars, and it’s nice to be able to define exactly over which period the tempo should change. For me personally, a button that makes the current beat grid align to the next marker perfectly is ideal. I’m open to any final implementation of course.

Addendum: I’m kind of neutral about the way synced decks behave. My personal interpretation is that if you sync decks, you need to be aware of these caveats whether you are in lexicon or serato/engine. Tools that read the beat grid (like soundswitch does) will profit from accurate timings though.

Yeah if it has negative effects, then it would need to be an (advanced) option that users can choose to use.

I imagine Soundswitch can really freak out when it suddenly sees a 400 BPM grid :thinking:

Completely agree, this needs to be a feature that’s triggered explicitly. Right now, I plan ahead on how the best strategy would look like for each case and I did not have a a 400bpm case yet. In cases where adjustments would be extreme, I’d rather add a bar to the transition marker and make it a lower bpm. even if the light is offbeat for 4 beats, no one is going to notice. In an auto sync mode, that would probably be a train wreck, but that’s not relevant to me.

BTW not hating on autosync. I just can’t use it because I forget it switched it on and then terrible things happen as an open format dj.

If I could get a wish, I’d like a button that automatically adjust the current beatgrid in such a way that it lands exactly on the nearest downbeat. So in use I’d approximate the bpm by entering it manually and then klick a button (or better yet, key combo) to fix the grid.

1 Like

I hope Christiaan hasn’t forgotten about trying to implement this feature. I have recently started doing this, gridding till the last bar and then letting the grid be off for a bar to match the next ones start point.