Walkthrough: Setting up midi-relay on MacOS to control Chroma Q Vista 3 with a Stream Deck over the network

I have had a few people ask if I could post another walkthrough with more precision on setting up midi relay to control Chroma Q Vista (formerly owned by Jands) with their stream decks.

What you will need:

  • MacOS running Vista 3 (Vista 2 will also work)
  • Node.js installed, or you can download the MacOS binary release of midi-relay here: https://github.com/josephdadams/midi-relay/releases
  • Bitfocus Companion installed and running on a computer/device (it can be the same computer running Vista, or another computer on the network)

To set it all up:

  1. First, you will need to set up the loop-back MIDI port. Open Audio MIDI Setup. It’s in Applications > Utilities.
  2. In the Audio MIDI Setup window, choose Window from the top menu, then Show MIDI Studio.
  3. This opens the MIDI Studio window. You will see a few options here such as BluetoothIAC Driver, and Network. Depending on how you may have configured MIDI ports in the past, the number of devices here can vary.
  4. Double click the IAC Driver device. This will open the Properties window. The main thing you need to do is click the checkbox for “Device is online” (if not already checked). You may also want to change the device name to Vista.
  5. You can close out all of the Audio MIDI Setup windows now.
  6. Now you need to start midi-relay running. Open a Terminal window and change directory to where you put the executable file for midi-relay. I put mine in a subfolder within the Documents folder. It’s important that you run the executable while the Terminal window directory is the same folder the executable is in, or things may not work correctly. Once you’ve changed directory to the correct folder, you can drag the executable file from Finder to the Terminal window, or you can type in the executable name manually. Hit enter to run it.
  7. When midi-relay starts up, it will give you a read-out in the console of all the available MIDI in/out ports. You should now have one that says Vista Bus 1.
  8. Open Vista. Go to the User Preferences menu by selecting File > User Preferences.
  9. Go to the MIDI tab.
  10. Under the MIDI Show Control section, set the Device ID to 0 (zero).
  11. Under the External MIDI Ports section, check the box next to the Vista Bus 1 MIDI port.
  12. Click OK.
  13. In Vista, right click on the cue list you want to use with MIDI control, and choose Properties.
  14. Go to the MIDI tab.
  15. Now open the Companion Web GUI on the computer that is running Companion.
  16. Add a new instance by searching for Tech Ministry MIDI Relay.
  17. In the instance configuration, type in the IP address of the computer running Vista and midi-relay. If you’re running Companion on the same computer, you can use IP address 127.0.0.1.
  18. Click Apply Changes.

To Send a MIDI Note On and advance a cuelist:

  1. Add a new button in Companion.
  2. Add a new action to that button, using the midi-relay action, Send Note On.
  3. Under the options for this action, choose the Vista Bus 1 for the MIDI port.
  4. By default, it will send channel 0, note A0 (21), with a velocity of 100. Vista does not look for a specific velocity value, only channel and note. Vista will listen to any channel by default, but if you set a specific channel in the Vista MIDI settings, you will need to make sure you send the correct channel from Companion.
  5. Go back to Vista and in the Cuelist PropertiesMIDI tab, click Learn next to the Play item. The Play command is what advances a cuelist. The Learn function will listen for incoming MIDI notes and makes setting the MIDI note slightly easier (and it proves that it works). You can also just set the note manually if you want.
  6. Go back to Companion and click Test Actions (or press the physical button on your stream deck if you are using one), and the Learn box in Vista will go away, and you’ll see that the note you sent from Companion is now populated in the Vista settings.
  7. Now every time you press that button in Companion, it will advance that cuelist. If you have multiple cuelists, you will need to use different MIDI note values.

To Send a MIDI Show Control message to go to a specific cue in a cuelist:

  1. Add a new button in Companion.
  2. Add a new action to that button, using the midi-relay action, Send MSC Command.
  3. Choose Vista Bus 1 for the MIDI port.
  4. The default Device ID is 0 (zero) but if you changed that in Vista, make sure it matches here.
  5. The Command Format should be Lighting – General and the Command should be Go.
  6. The Cue field should be the specific Cue Number in Vista of the Cuelist you want to control.
  7. The Cue List field should be the specific Cuelist Number in Vista.
  8. Now every time you press that button in Companion, it will go to that specific cue in that specific cuelist.

Here’s a walkthrough video of these steps:

[wpvideo HZriRGlS]

I hope this is helpful! If you’re using MIDI relay, feel free to drop a comment and share how it is working for you!

Controlling Chroma-Q (Jands) Vista with MIDI Show Control and a Stream Deck using Node.JS and the Web MIDI API

At my church, we use Chroma-Q’s Vista lighting platform (formerly owned by Jands). It’s a great platform and easy for volunteers to execute pre-programmed lighting cues. Every large worship space we have on campus with a lighting system runs some version of Vista, whether on a physical console or a PC.

We generally program our lighting to use one or two cuelists and volunteers just advance cue by cue within that list for the service. It’s pretty straightforward and works well for them.

Sometimes, we need the ability to advance cues in a list remotely, when we’re not near the lighting console, and that’s where this latest project began.

Most lighting consoles can be controlled using some form of MIDI command. Older ones require a physical connection, others can use network connections. By using a loopback/virtual port, Vista can receive both MIDI notes and MIDI Show Control commands.

A lot of people have been able to accomplish this type of remote control over the network using a protocol called RTP-MIDI. This protocol is very easy to use and computers can broadcast/discover each other over the network, so it makes it a lot quicker to get up and going.

Screen Shot 2019-06-06 at 3.44.05 PM

This is great, and I’ve used it, but I wanted to design something particular for our needs. (1) I wanted something I could run on any PC or Mac to accept commands from a wider range of sources, and so many devices nowadays can send HTTP requests. (2) I wanted something that primarily triggered over TCP, because while RTP-MIDI is great and fast, it uses UDP traffic that can’t cross vlans/subnets. TCP traffic easily can.

So, I broke this project down into two parts: a server that listens to HTTP requests and relays local MIDI, and a module for Companion that allows the Stream Deck to send requests to that server. The server is flexible to support other devices that may want to trigger it, and the Companion module is perfectly paired to work with it.

The server runs a simple REST API that returns a list of local MIDI ports and can accept Note On, Note Off, or MSC (MIDI Show Control) commands. It accepts JSON data via HTTP POST which is then used to build the hexadecimal data and send the MIDI commands.

The HTTP side of things in Node.js uses the Express framework. The MIDI side uses the Jazz Soft JZZ.js library.

The server runs directly on the Vista computer to relay the MIDI commands on a virtual MIDI port which Vista is listening to.

Here is a video of it in action!

[wpvideo ZvMtBNPa]

If you want to do this yourself, setting up the Vista side of things is pretty straightforward.

First, if you are using Vista on a PC and haven’t already, downloaded LoopMidi, you can get it here. It’s free software that creates a virtual MIDI port on the PC.

Once that is configured, open Vista and go to the MIDI settings in User Preferences.

Screen Shot 2019-06-06 at 1.41.54 PM.png

Under the MIDI tab, select the External MIDI port “LoopMidi” (or whatever you named your port). If you’re going to be using MSC, be sure to make note of the Device ID you select.

If you want to advance a cuelist using MIDI Note On commands, right click on the cuelist and under the MIDI tab, select the Note you want to send for the “Play” command.

Screen Shot 2019-06-06 at 1.42.24 PM.png

I hope this is helpful for you! You can dowload a binary release of the MIDI-Relay server from my Github. It’s available for Mac, Windows, and Linux. The Companion module will be made available in a release build at some point.