Free technical help for digital creators - music, video, art, photography, graphic & web design

MIDI active sensing

Active Sense is a type of MIDI message (ie, that travels over your MIDI cables just like note data or controller data). It's used to implement a "safety feature". It can provide an automatic "MIDI panic" control that will cause stuck notes and other undesirable effects to be resolved whenever the MIDI connection inbetween modules is broken or impeded in some way.

Here's how Active Sense works.

Assume that you have two sound modules daisy-chained to the MIDI OUT of a keyboard controller. Let's also say that all three units implement Active Sense. If you aren't playing the controller at any given moment (and therefore the controller isn't sending out MIDI data), then after a little while of sitting there idle, the controller will automatically send out an Active Sense MIDI message that tells the attached sound modules (connected to the controller's MIDI OUT) "Hey, I'm still connected to you. Don't worry that you haven't seen any MIDI note data, or controller messages, or Pitch Wheel messages, etc, from me in awhile. I'm just sitting here idle because my owner isn't playing me at the moment". When the sound modules hear this "reassurance" from the controller, then they expect the controller to repeat this same Active Sense message every so often as long as it's sitting idle. That's how the sound modules know that everything is still OK with their MIDI connections. If not for that steady stream of Active Sense messages, then there would be no other MIDI data sent to the sound modules while the controller was left idle, and the sound modules would have no way of knowing whether they were still connected to the controller.

Now, if you walk up to the controller and start playing it, then it will stop sending these "reassurance" messages because now it will be sending other MIDI data instead. And then later, if you again leave the controller sitting idle, it will resume sending Active Sense messages out of its MIDI OUT jack.
By constantly "talking" to the sound modules (sending Active Sense messages whenever it has no other MIDI data to send), the controller is able to let the modules know that they're still connected to the controller.

So how is a "safety feature" derived from this?

Let's say that you press and hold down a key on the controller. This sends a MIDI Note On message to the sound modules telling them to start sounding a note. OK, while still holding that note down, you disconnect the MIDI cable at the controller's MIDI OUT (ie, disconnect the daisy-chained modules). Now, the modules are left sounding that "stuck note". Even if you now release the key on the controller, there's no way for the controller to tell the modules to stop sounding the note (because you disabled the MIDI connection). OK, so the modules are holding that stuck note, and they're waiting for some more MIDI messages from the controller. After awhile, they start to get worried, because they know that if the controller isn't sending them MIDI note data, or controllers, or Pitch Wheel messages, etc, then it should at least be sending them Active Sense messages. And yet, they're not getting even that reassurance. So, what happens? Well, after each module waits for a suitably long time (ie, 300 milliseconds, which is a long time for MIDI devices, but a fraction of a second to humans) without receiving an Active Sense message, then the module automatically concludes that the MIDI connection is broken, and it automatically turns off any sounding notes, all by itself. Hence, the stuck note is turned off.

Active Sense allows any module to detect when the MIDI connection to the preceding module is broken. For example, let's say that you disconnected the MIDI cable between the two sound modules. (ie, The first module is still attached to the controller's MIDI OUT, but now the second module is no longer daisy-chained to the first module's MIDI OUT). In this case, the first module will still be getting the Active Sense messages from the controller, but these can't be passed on to the second module (because it's disconnected from the MIDI chain). Therefore, the second module will quickly realize that its MIDI connection has been broken.
So, Active Sense is a "safety" feature. It allows a MIDI module to know when its connection to some other unit's MIDI OUT jack has been broken. In such a case, the module can take automatic safety precautions such as turning off any sounding notes, or resetting itself to a default state, in order to avoid being left in a "stuck" or undesirable state.

Note that many (in fact, most) MIDI units do NOT implement Active Sense, and therefore aren't setup for this "safety" feature. (Typically, Roland gear DOES implement Active Sense. Roland is one of the few companies that adhere to the MIDI spec to this degree). If you connect a controller with Active Sense to a module that doesn't implement Active Sense, then the controller's reassurance messages are ignored, and the module won't be able to realize when a connection has been broken.

So how do you know if your device implements Active Sensing?

Well, look at the MIDI Implementation Chart in your users manual. For sound modules, you'll look down the Recognized column until you get to Active Sense (it's listed in the AUX Messages section almost at the bottom of the chart). Make sure that there is a circle instead of an X shown beside Active Sense. For a controller, you'll look down the Transmitted column.