Controlling Jands Vista Lighting Cues via MIDI show control from Ableton

Building a beautiful light show can be great. But getting all those incredible cues to sync perfectly with the song just like you envision can be challenging at best. To achieve this, many shows are now utilizing SMPTE timecode or MIDI control to trigger lighting cue changes from software like Ableton, which allows a show to be entirely pre-programmed fairly easily–timing included.

That all sounds great I'm sure, but making it happen can be a bit tricky, so that's what this post is all about. Keep in mind that although I'm writing this post specifically for Ableton controlling Jands Vista, a lot of these steps are generic and would work for a wide range of lighting consoles or music software.

Okay, let's get started with a bit of an explanation of how this works, then we'll get into the how-to of setting it up

MIDI Show Control (MSC)

I think it's important to start with some fundamentals. Lighting consoles can be remotely controlled via a number of protocols, including SMPTE timecode, Linear Time Code, MIDI Time Code (MTC), and others. For the purposes of this setup however, we're going to be using MIDI show control (MSC).

Note Spend some time finding the best protocol for your setup. In my opinion, timecode-based solutions work great when you have a set show, while MSC works much better if your sets change frequently, and you want to be able to program and arrange songs individually.

A little bit about MSC

MIDI show control is simply a special reserved MIDI SysEx message that includes the following important parameters:

  • Device ID: This identifies the target device for the message
  • Command: This can be something like "go", "go stop" and others. Essentially this is what the target device should do with the message
  • Data: The data included in an MSC SysEx message includes the target cue, cue list, and cue path. We'll talk more about these later

In this tutorial, we're simply going to be sending a "go" command for a specific cue/cuelist combination which will tell Jands Vista to "play" the cue at that time.

Bome MIDI Translator

Unfortunately for us, Ableton can't directly send MIDI show control messages. This would essentially make what we're trying to do impossible if it wasn't for a great piece of software called the Bome MIDI translator. This simple little application lets you take a MIDI input, look at the note/message you're receiving and based on that, send any output to another MIDI device. It's like a MIDI Swiss army knife and it's handy for more than just remote lighting control.

For this tutorial, we'll be using Bome to translate MIDI notes coming from Ableton into MIDI show control messages we'll send to Jands Vista.

MIDI Networking

Unless your lighting computer and Ableton computer are sitting right next to each other, and unless both have MIDI interfaces, you're probably going to want to use MIDI networking. MIDI networking is built into macOS, and on Windows you can use rtpMIDI which is a great free MIDI networking driver for Windows that works with the protocol built into macOS.

When you're using MIDI networking, you'll create a MIDI network that shows up in other applications just like a regular MIDI device, except instead of there being any physical MIDI connections the MIDI is sent over the network to any other computers connected using rtpMIDI or macOS' MIDI networking. We'll talk about setting this up in the how-to section below.

Getting Started

1. Creating the MIDI network

First things first: we need to ensure our Ableton computer can talk MIDI to the Jands computer. We'll accomplish this by setting up a simple two-device MIDI network. In this tutorial, I'll assume both devices are running macOS, but it's quite similar to do this with a Windows computer running rtpMIDI.

First, open Audio MIDI Setup on both computers. This can be found under /Applications/Utilities on your Mac. This typically opens a window something like this:
Audio MIDI Setup
You're going to start by double-clicking the "Network" icon to open the MIDI Network Setup window, which looks like this:
MIDI Network Setup
Right now you can see that I have no sessions or available computers in the directory. My next step, is to create a session I will use for lighting control on both computers by clicking the + under "My Sessions". Name the session something like "Lighting Control Session", and update the Bonjour name on each computer to be something that makes sense, like "Ableton Mac" and "Lighting Mac". Once you've created and enabled the session on both computers, you need to add the other computer to the session. For example, on my Ableton Mac, I have to add the Lighting Mac to my Lighting Control Session. Once it's set up you'll see the computers in the participants list like this:
Complete MIDI Network Setup

Tip You may have to make sure you have "Anyone" selected under "Who may connect to me". I've also had some issues making this work if there are multiple network connections (wired and wireless), so I highly recommend disabling your WiFi and only running this over a wired network. That'll help keep your latency and jitter down too!

At this point you should have a functioning virtual MIDI connection between your Ableton computer and your lighting computer. If you open up Ableton preferences and go to MIDI you should see something like the following:
Complete MIDI Network Setup
This shows that we have a MIDI device we can use to send MIDI over the network to a remote computer. However, first we need to translate Ableton's notes so Jands Vista can understand them.

2. Translating Ableton for Jands Vista

Okay, so let's go back to Ableton's MIDI preferences. Instead of sending MIDI notes directly to the network, we're going to send them to the Bome MIDI translator. I'm assuming at this point you have that installed, so open up Ableton and make sure your MIDI ports are set up something like this:
Ableton MIDI output to Bome MIDI translator
We don't want Ableton to be receiving MIDI from the network or from Bome, we just want our MIDI output to be sent to the Bome MIDI translator.

Now let's turn our attention to Bome. This is where things get a bit complicated. If you're new to Bome, I'd recommend looking through the manual. I'm going to assume you can at least get it installed, opened, and create a new preset and translator entry.

What we're going to do, is pick a bunch of MIDI notes we can translate to MIDI show control. For example, let's say we want to translate the note C0 to the MIDI show control "GO" cue 1, cue list 4. To do this, we're going to create a new translator entry in Bome:
Creating a new Translator in Bome
Name the Translator something that makes sense, and make sure it is set for the correct input note, MIDI channel, and port:
Setting up the Translator
Okay, now we have a Translator set to run when we receive a C0 note from the Bome MIDI Translator. If you were to play this note in Ableton, it should show up on the Bome Event Monitor in the bottom-left, and if you selected "capture MIDI" on this Translator you should be able to record that note. Make sure you have that working before going any further.

Next, we need to configure the output. Scroll down on the Translator pane until you can see "Outgoing". Here we want to select "MIDI Message", and "Raw MIDI / System Exclusive". This will allow us to enter the raw hex values for our special MIDI show control SysEx messages for Jands Vista.

Tip Hold onto your hat, it's about to get technical in here...

You want to paste in the following hexadecimal string: F0 7F 01 02 01 01 31 31 00 34 F7.

Okay, now let's talk about what these crazy letters and numbers mean:
MSD GO message
The first two (F0 and 7F) are always going to be the same, and are just part of the protocol. The next one (01) indicates the devices ID you're talking to, and needs to match the device ID configured in Jands Vista. The fourth (02) simply indicates that this is a MIDI show control message, followed by (01) a separator. The sixth number (01) indicates the MSC message type, in this case 01 indicates a "GO" message, which is the only one we'll be using for this tutorial. The next two (31 and 31) indicate the cue to be played, in this case the number is "11". The next (00) is simply a separator, followed by (34) the cue list: this indicates cue 4. The last number (F7) is an end of message indicator required by the SysEx message format.

Okay, there is a lot there. Let's go back over the important sections: the cue, and cue list numbers. These are the parameters to tell Jands Vista exactly what to do, so it's important they line up. In MSC, the numbers are essentially digits prefixed by the number 3, so you count like this:

  • Cue/cue list 0 ➡ 30
  • Cue/cue list 1 ➡ 31
  • Cue/cue list 2 ➡ 32 ...
  • Cue/cue list 9 ➡ 39
  • Cue/cue list 10 ➡ 31 30

If you have sub-cues, you separate them with 2E, like this:

  • Cue 1.5 ➡ 31 2E 35
  • Cue 1.6 ➡ 31 2E 36
  • Cue 1.6.1 ➡ 31 2E 36 2E 31

Hope you're still following! This is the most technical we'll get, so if you get past this part you'll be well on your way. Leave a comment below if you're getting stuck and I'd be happy to help out.

Next, let's hook up Jands and get things going:

3. Configuring Jands Vista to receive MIDI show control messages

This part is fairly straightforward: open up Jands Vista and open User Preferences. Go to the MIDI tab, and confirm that your MIDI show control device ID matches whatever device ID you want to use in your MSC messages.

Next, check the MIDI network session you're using for MIDI control. This should be Lighting Control Session or whatever other name you used back in step 1. It should look something like this when you're done:
Jands Vista configured for MSC over a MIDI network

So! Now that you have that done, you can tell Jands Vista to play cue 11 of cue list 4 by playing a C0 in Ableton! Congratulations! Before we go any further, test that out to make sure everything is hooked up correctly.

4. Programming a Song

Now that all the little bits and pieces are hooked up, we can move ahead with programming a song.

To do this, we're going to need to do the following:

  1. Create a cue list in Jands Vista for the song
  2. Set up our Ableton session for the song
  3. Program the MIDI cues into Ableton for the lighting cue changes

I'm going to assume that you already know how to program Vista, so go ahead and get 1 out of the way by creating your mind-melting lighting cue list for the song you're programming.

For part two, open up the Ableton session you want to program. You can do this a few different ways and I'm going to assume you're familiar with Ableton, but essentially you're going to want a MIDI clip that you can trigger along with whatever track or guide you're playing, and the notes in that clip will be the lighting cue changes. We have a blog post about our drummer's Ableton setup, and here is what lighting cues look like in that Ableton session:
Ableton set up for lighting control
As you can see, the lighting control notes are stored in a clip launched when we play the scene for that song. Also note that the MIDI output for the lighting track is set to Bome MIDI Translator. Bome will take care of translating those notes into MSC, and forwarding them to the MIDI network.

For the notes themselves, it really doesn't matter what you use since you'll be translating them with Bome. What I do, is simply start low (C-2), and play notes up from there (C#-2, D-2, D#-2, etc) in order. The time position of these notes will indicate the cue changes. I'll need a note for each cue I've programmed into this cue list (unless I'm using some follow cues).

Tip For some reason, Ableton and Bome seem to be an octave apart when you define the notes: a C0 in Ableton is a C1 in Bome

At this point you're ready to complete part 3 by programming in the cues. What I do here, is put the note into Ableton where I want a cue change, add that note to a Bome Translator, and set the raw MIDI message output for that Translator to the cue I want to play at that point. It definitely takes some time to work out, but the plus is that you can replay MIDI notes (on a chorus for example) to replay a set of lighting cue changes without actually having to program duplicate cues into Jands Vista. You can also update the look of the cues once the song is programmed without changing the MIDI notes, as long as the timing for each cue change remains the same.

Summary

I know it sounds like a lot of work, but once you have your MIDI network set up, and Bome configured to translate your Ableton notes into MSC messages for Vista, it really doesn't take too long to program a song. Once the song is programmed, you can easily re-use that song's MIDI notes and cue list in any set list without having to worry about specific timecode issues. It's really a very convenient way of having a time-sensitive remote control for Jands Vista without the need for any specialized hardware.

If you have questions or comments, or if you get stuck somewhere in this tutorial, please leave a comment below and I'll get back to you as soon as I can!