MIDI Over Network Part 3

 Last time, we began talking about some of the things we can do with MIDI and how the note structure works. If you missed that post, go back and read it now. It’s OK, we’ll wait. Got it? Good. Moving on…

Channel Designation for Organization

Given that we have 16 channels available, I decided to assign a channel to each computer in the booth. ProPresenter is channel 1, the Hog is channels 2-3 (in case I want to do more than 128 things with it—I think big…), and audio control is channels 4-5 (again, thinking big). Mixxx is on channel 5, channel 4 is currently not used. 

So let’s take the Hog for a moment. To press the virtual “Go” button, I send a Channel 2 Note-On 50 with a value of 1. I’m not sure why, but a 0 value won’t work. I suspect anything above 1 would also work, but 1 does the trick. For simple button presses, the right Note-On with a value of 1 will typical work. Most lighting controllers will respond to MIDI commands; check your documentation (or Google it) to figure out how to your system works. Here’s the link for the Hog documentation.

In ProPresenter, I’ve designated Note-On 32 as the start message clock. So from the SD8, I send a Channel 1, Note-On, Note 32, value 1. 

But wait, there’s more! 

Some things can accept more than one value. Take a ProPresenter presentation with 37 slides in it (a totally random number I just grabbed out of thin air). I’ve set up the Trigger Slide command up as Note-On 21, but I can access any of those 37 slides by specifying a value between 1-37. So maybe the message video package is the 5th slide in that presentation. By firing a Note-On 21 with a value of 5, I would trigger that slide directly. So the video rolls right as the audio snapshot is fired. 

Or in Mixxx, the thing we ran into one weekend was with the crossfader. Because it’s a DJ app, it’s designed to let you fade back and forth because the two virtual “Decks.” Our problem happened when the last song of the walk in set landed on Deck B. When I fired the walk out snapshot, Deck A started up, but no sound came out because the crossfader was all the way over on Deck B. But we can fix that. 

The crossfader can be controlled by MIDI. I assigned Note-On 3 to the crossfader. A value of 0 is full Deck A. A value of 127 is full Deck B. So can you guess what I send to Mixxx now in my walk out snapshot? 

  • Channel 5, Note-On 3, 0 (pull the crossfader to full Deck A)
  • Channel 5, Note-On 1, 1 (play Deck A)

And also…

  • Channel 1, Control Change 3 (stop recording and save all tracks in Reaper)

Now, I know I said channel 1 was designated to ProPresenter, but Pro doesn’t respond to CC’s, and Reaper is already set up on channel 1 for CC’s and I didn’t feel like changing it. Maybe someday I’ll correct this gross inconsistency. 

Keep it Organized

To keep track of all the stuff I can now control, I’ve come up with this simple spreadsheet to remind me of the various commands I’m sending to where. It seems like a lot, but for the most part, the commands I’m using regularly are already part of my baseline show file, or saved as Macros and assigned to function keys on the SD8.


 This is my current master MIDI list. It's a work in progress, but these are the commands we use regularly.

The cool stuff doesn’t end there. I’ve written before how I use AppleScripts to control things, and one of the fun features of MIDIPipe is it’s ability to fire an AppleScript in response to a MIDI command. So my next project is an AppleScript to start the video recording in Media Express, which will of course be fired by a MIDI command, which is fired from a snapshot on the audio console. 

I should also note that I’ve held off writing about this for a few months because I wanted to see how stable it would all be. I’m actually pretty surprised that it’s worked flawlessly for the last two months. The only issues we’ve had have been when we forgot to make sure the network nodes were all connected before service started. I’ve run lights from audio for two full weekends without a single glitch. And the walk out music starts right on cue every time now. So it’s pretty solid, overall. 

What Does It Look Like?

Here’s a screen shot of my MIDI list from last weekend. We were without a lighting guy, so I ran lights from the SD8 (a practice I don’t recommend—it’s a very high workload—but you do what you have to do).

This is a glimpse into the madness that goes on in my head every weekend... 

Let’s look at the last two snapshots. 39.50 is a live walk out that brings the band back up to play out of the service. That Channel 2, Note-On 50, Value 1 advances the lighting console to the next cue (the walk out look). In snapshot 40, we do three things; crossfade to Deck A, start Deck A playing, and tell to Reaper stop recording and saves all tracks. Of course, snapshot 40 also fades down the band DCAs (in 3 seconds) and fades up Mixxx in 6 seconds. 

You’ll also notice a bunch of snapshots that start with —L… Those are my lighting snapshots that don’t do anything to the mix, they simply fire the MIDI command that advances a lighting cue. To keep track of where I am in the cue list on the Hog, I set my iPad on a music stand next to me with an open VNC connection to the Hog. 

Wrapping Up

So that’s my week of MIDI primer posts. I once considered MIDI somewhat mysterious, but it’s really easier than I thought. You may wonder why go to all the trouble to set it up when we have volunteers to run all the other gear in the booth. The answer is two-fold. First, I did it because I can (sort of why mountain climbers climb Everest—because it’s there). Second, we’re in a season of being short on volunteers. And the show must go on. Only now, it can be done with fewer people. Plus, it’s just really cool…

Today's post is brought to you by DPA Microphones. DPA's range of microphones have earned their reputation  for exceptional clarity,  high resolution, above all, pure, uncolored accurate sound. Whether recording or sound reinforcement, theatrical or broadcast, DPA's miking solutions have become the choice of professionals with uncompromising demands for sonic excellence.

MIDI Over Network Part 2

Last time, we talked about how to set up a MIDI network in your tech booth (or anywhere else for that matter). Today, we’ll talk about what we can do with it. Or, more correctly, I’ll tell you what I’m doing with it. Before we go any further, we should first talk about the structure of MIDI commands.

Channels, Notes, Values, Oh My!

The basic structure of a MIDI command is a Channel, a Note and a Value. There are 16 possible channels, 128 possible notes, and 128 values for each notes. Oddly, channels run from 1-16, while the notes and note values from from 0-127. Go figure. 

In addition to Note-On, you can also specify Note-Off, Control Changes, Program Changes and a few other things that don’t concern us. For the most part, I use Note-On and Control Change. To send commands to Reaper, my DAW for recording, I use CC’s, which are nice because they don’t require a value. I can send a Channel 1, CC 1 for example and Reaper drops a marker at the current location (handy for marking the start of the message—yes it’s sent from the Message snapshot). That’s not a default, I assigned CC 1 in the Reaper shortcut menu. Most of the other apps respond to Note-On commands. 

These are a few of the commands I've set up in Reaper. The list is practically endless... 

Auto-Start the Walk Out Music

I’ve long had a dream that I could fire the walk out snapshot and music would automatically start playing from Mixxx (our DJ app that plays walk in/out music). That dream is now a reality. I spent a few minutes configuring Mixx to listen for commands on MIDI channel 5. Because I can start the playback “Decks” with a MIDI command, I send one command that brings the crossfader over to Deck A, and another that starts Deck A. All I have to do beforehand is load the song that I want to start into Deck A. I typically do that near the beginning of the message so I don’t forget. I mentioned MIDI channel 5; we’ll talk about that in a little bit. Setting up those commands in Mixxx took a little effort, but I discovered the MIDI Learning Wizard in Mixxx that made it easy. What else can we do? 

Once you set Mixxx up to listen to MIDI commands via your network setup, you can then run the learning wizard to assign commends to the controls you want to fire.  

Fire Lighting Cues

It’s summertime, and the living is easy. And the volunteers are scarce. Between camps, vacations and the usual attrition, we’re short on lighting guys right now. But that’s no problem because I can fire lighting commands from audio snapshots. I configured the Hog to listen to MIDI commands on channel 2, and can easily hit the “Go” button with a simple MIDI 2, 50, 1 command. Sometimes, we’ll have several lighting cues per song, and I typically only do one audio snapshot per song. In those cases, I’ll create “dummy” snapshots that do nothing but fire lighting cues (no recall of any audio parameters). I label them exactly the same as my lighting cues so I can keep track of where I am. This takes a little setting up, but it’s actually quite easy now that I’ve done it once or twice. You can also do a whole lot  more with MIDI on your Hog. Here’s an excerpt from the manual on how to set it all up. Not comfortable with that? Well how about this:

Start the Message Timer

With the MIDI module in ProPresenter, you can assign MIDI commands to all sorts of things. We use Timer 1 to give our pastor a timer for his message. Problem is, the ProPresenter operators occasionally forget to start it. But the audio guy has to hit the message snapshot. So why not start the timer from the audio snapshot. With this system, it’s as easy as pie. With a simple Note-On 1, 32, 1 command, the timer starts right when our pastor starts. Beautiful. 

You can assign whatever values you want to the various functions. This is what I came up with, but you can do whatever you like.  

One caveat to this, however. And I learned this the hard way so you don’t have to. ProPresenter listens to every MIDI channel and responds to notes from every channel (to my friends at Renewed Vision—this would be a great thing to address at some point...). My idea had been to give each computer it’s own channel so we wouldn’t be triggering commands on the lighting desk that were intended for the audio playback. It’s easy to do on the Hog and in Mixxx. But ProPresenter takes commands from all channels. At least out of the box.

This simple MIDI Pipe blocks all messages that don't come in on channel 1. This makes sure a lighting or Mixxx command I send on channels 2 or 5 doesn't trigger a ProPresenter command.

A cool little program called MIDIPipe lets me filter MIDI messages by channel. I built a “pipe”that takes MIDI commands in from my network connection, filters them to allow only channel 1 messages through, then spits it out to ProPresenter. Like VMPK, I have it set to launch this pipe at log in and hide, so we don't even see it.

[UPDATE 5-8-14] I've been informed by my email list provider that MIDIPipe's website contains active malware and we should not be sending them traffic. I'm not sure what the deal is with that; I've had no issues, but I've removed the link nonetheless. If you want to use MIDIPipe, please do so carefully and at your own risk. [END UPDATE]

If you don’t want to bother with this level of segregation, you could just block out your notes to different roles. For example, designate the block of notes 0-40 to ProPresenter, 41-80 to lighting, 81-120 to audio, or whatever. That would work, but depending on what you’re controlling might be tricky. So I like my method better.

 Once the pipe is built, you have ProPresenter connect to that instead of the Network Session. 

So, this is getting long and I suspect we’re closing in on overload, so I’m going to split this up and finish our discussion of the MIDI command structure next time.

Today's post is brought to you by Horizon Battery, distributor of Ansmann rechargeable batteries and battery chargers. Used worldwide by Cirque du Soleil and over 25,000 schools, churches, theaters, and broadcast companies. We offer a free rechargeable evaluation for any church desiring to switch to money-saving,  planet-saving rechargeables. Tested and recommended by leading wireless mic manufacturers and tech directors. 

MIDI Over Network Part 1

Regular readers of this blog will no doubt know that I’m a big fan of networking, connectivity and remote control. I like it when I can get computers to do the boring stuff so I get to do the fun stuff. This post is another installment in that series. Today, we’re talking about how to send MIDI commands over your network. We’ll leave the what and why for the next post, and today focus on the how. 

Here’s the basic idea: I have a digital audio console that can send MIDI commands with snapshots (or macros, but that’s another post). Also in the tech booth are other various pieces of gear—lighting consoles, audio playback applications, ProPresenter—that can receive and act on MIDI commands. And while I could set up an elaborate MIDI distribution network with 5-pin MIDI cable, interfaces and MIDI DAs, that’s so, well, ordinary. And it’s a pain. Not to mention expensive. Besides, there’s a much simpler way if you’re using Macs. It goes like this:

Basic Topology

Sitting on my DiGiCo SD8 is a 17”MacBook Pro. In between the MBP and SD8 is a MOTU FastLane MIDI interface. I go out of the SD8, in to the FastLane, which is connected via USB. The MBP becomes the “master sender” (that’s a technical term I made up) for the rest of the network. 

The MBP is connected to my Sound network via Ethernet. We have a Mac Mini at FOH that does a bunch of stuff, but for this exercise, it runs a DJ app called Mixxx. What’s cool about Mixxx is that it can be controlled by MIDI. Also in the tech booth is another Mini that is Bootcamped into Windows 7, and runs the Hog 4PC lighting controller. That Mini also connected to my Sound network (via wireless for reasons that are beyond the scope of this article). Further down the the booth sits our Mac Pro running ProPresenter with the MIDI module. That Mac is connected to our regular in-house network. However, because the Sound network is NAT’ed out to the house network, we can still get MIDI signals out there. 

So that’s the basic layout, here’s how it works. 

Built-In MIDI Networking

Every Mac running OSX (starting with Leopard I believe) as a network module for MIDI. You’ve probably seen it but didn’t know how it worked. Start by opening Audio MIDI Setup. Once there, select Show MIDI Window from the Window menu. Sitting there, innocuously enough is a “Network” icon. Double-clicking on it opens this dialog box: 

 When we set up a session, it looks like this. I've named this session MIDI Master so I can easily tell it apart from others on the network.

To start, click the + under the My Sessions window. You can name it whatever you like, but I suggest naming it something useful, like the computer name or a nickname you’ll remember. You can also specify the Bonjour name, which just makes it easier to make sure everything is connected. Once everything is named, click on “Enable” to make it active.

Now go around to the other computers you want to connect and do the same thing. Keep the names discreet so you don’t loose track of what you’re doing. Once you have everything active, you can simply start connecting the “nodes” to the “master.” From the node, select your master computer from the Directory, and hit connect.

I’ve made my 17” MBP the “master,” and everything connects to it. You can actually send MIDI notes bi-directionally, but in my case, I want to send commands from the SD8 to all the computers in the booth. Hence, everything else is a node. When you’re done, the dialog looks like this:

 Here, you can see the other computers on the network, and I've connected to the Hog PC. Any notes generated on my MIDI Master will be sent to the Hog PC right now.

What About Windows?

Sadly, not all of our production gear runs on Mac OS. Sometimes, we need to suffer in Windows. But all is not lost. Some enterprising young man wrote a little program called RTPMIDI that basically does exactly what the Mac OS MIDI network stack does. He even copied the dialog box exactly so set up is exactly the same. I loaded this up on the Mini that we use for the Hog and it locked right up to the MBP master. 

Easy Connections

Because it uses Bonjour, connecting is usually as easy as waiting for the node to show up in the dialog box and hitting connect. If Bonjour gives you trouble, you can also enter an IP address to connect directly. Generally, the connections will re-establish themselves after a power cycle, but sometimes they don’t. It’s become part of my normal workflow to go around and make sure everything is connected after we power up all the computers each weekend. 

Oddly, the RTPMIDI Windows computer connects the most reliably. I can usually connect the ProPresenter Mac from the MBP, but the FOH Mini fails to connect when I do that way, so I have to go to the Mini itself and connect back to the MBP. I’m not sure why. Once it’s all connected, it works quite well, however. 

What’s Happening?

Once you do all this (and it actually only takes a couple of minutes to configure and a few seconds to connect everything), what is going on? Well, basically, any MIDI notes that originate on any computer will be sent over the network to every other node on the network. So I can now send MIDI commands and notes from the SD8 to any computer in the booth. But there is a catch.

You Need a Translator

Or more correctly, something to generate the MIDI notes. Or perhaps even more correctly, something to get the MIDI notes coming in from the SD8 via the FastLane to go out to the network. I have to try it, but I think MIDIPipe would do this, but I ended running a small, free program called VMPK (Virtual Midi Piano Keyboard). Basically, I tell it to listen to MIDI commands coming in from the FastLane and send out MIDI to the network. It doesn’t do anything else but pass notes through. 

The only think VMPK does is take notes in from the FastLane and sent them back out to the network. Note that the output name is Network MIDI Master, which is the network session we set up earlier. 

I have this set to launch automatically and hide, so we don’t even know it’s running. It just sits there in the background and sends notes along to the network.

It’s Easier Than It Sounds

Yes, it took me over 1,000 words to describe the process, and I spent a few hours getting it all figured out. But now that I’ve done the hard work, it won’t take you more than a few minutes to get it all working. And once it is, what can you do with it? If you’re like me, your mind is already racing with possibilities. If not, stay tuned for the next post and I’ll tell you what we’re doing with it.

Today’s post is brought to you by Bose Professional Systems Division, committed to developing best-in-class products, tools, and services to create original audio experiences. The chief advantage products like RoomMatch® array module loudspeakers and our line of PowerMatch® amplifiers offer for worship are clear natural sound that makes voices and music seem more real.