All Systems Stop
What happens when you press your sequencer's "stop" button and why does such a simple operation sometimes cause so much trouble? Vic Lennard offers a few troubleshooting tips and reveals that there's probably more to it than you think.
What happens when you hit your sequencer's stop button? More than you'd guess, and sometimes more than you need - this analysis may help cure some of your problems.
You've just pressed the stop button on your sequencer - one of the tracks playing back was recorded using the pitchbend wheel. Chances are that at the precise moment you pressed Stop, the pitchbend value was something other than zero, which means that notes being affected by the pitchbend will not have been at their root pitch. What happens when you hit Play and continue playback from where you stopped? The pitchbend value is correct for that particular point in the song. But what happens if you move to a different point in the song and hit Play? The notes on the same MIDI channel as the pitchbend information will effectively be out of tune.
A similar problem arises where you've been using the modulation wheel - again you hit Stop and continue playback from another point in the song. The modulation information is transferred to the new point in the song.
The reason why the above problems occur is down to the fact that a synth effectively stores the current value for pitchbend and modulation (among other parameters). These stored values continuously change during the course of a song but when the sequencer stops playing, a specific value is held in memory. When the sequencer starts again, this value is regarded as current and is imposed on the tone-generating circuitry of the synth.
There are other MIDI performance controls which create similar problems - Sustain Pedal, for example. This ensures that a sound follows its envelope until it reaches the sustain portion, and then stays at the sustain level until the pedal is released. At this point the sound enters its release phase. Consequently, the status of the sustain pedal is buffered and used by the envelope-generating circuitry of the synth. If Sustain Pedal is "on" when the sequence is stopped, it will be remembered by the synth; when you start playing again, all notes will be sustained until a sustain pedal off command appears in the song, at which point the previous sustain pedal on will be defeated.
A worse possibility still arises when a sound generator receives a note on and the sequencer is stopped before it receives a note off. Sequencer users will know that this isn't (usually) the case - this is because the sequencer keeps track of the notes being played at any particular time and sends out the necessary note off commands when the Stop button is pressed.
Software writers have been aware of these problems since the invention of sequencing. After all, there's little point in providing complex sequencer functions if the program collapses every time you stop and start it. What most sequencers do is to transmit certain MIDI commands on each MIDI channel every time you stop the sequencer. The most common of these are:
Pitch Bend Recentre: as pitchbend is a 14-bit MIDI command, it can take any value between 0 and 16,383. Consequently, the middle value is 8,192 which corresponds to the pitchbend wheel sitting in its central position. This is transmitted as En 00 40 (where n is the MIDI channel and all numbers are in hexadecimal; this will be true for all examples).
Sustain Pedal Off: this is a seven-bit MIDI Controller (#64) which can take any value between 0 and 127. For a switch function, any value of 63 or lower is taken to mean off, while a value between 64 and 127 means on. However, it is conventional to use 0 for off and 127 for on. The necessary MIDI message to turn this off would be Bn 40 00.
Modulation Wheel Off: again this is a seven-bit MIDI Controller (#1), but this time it is not a switch function and, therefore, can take any value between 0 and 127. The value usually corresponds to the depth of the modulation effect, so to ensure that it is turned off entails the transmission of a depth of 0. The necessary message is Bn 01 00.
Channel Aftertouch Off: while this isn't actually a MIDI Controller, it is a channel-specific message upon which most synths will act. It's instigated by putting further pressure on the synthesiser's keys, after initially pressing them and triggering a note. Its original use was as an alternative way of originating modulation effects; however, most of today's synths allow you to re-map Aftertouch to functions including the pitch envelope, voice filter (VCF) or audio level (VCA). It is a seven-bit message, and to ensure that it is non-effective requires the reset message Dn 00.
All Notes Off: this is a function of the transmitting device which, in this case, is the computer. All Notes Off mutes all the currently-sounding voices of a synth. The need for this message dates back to the early days of MIDI, when synths often left notes hanging. While it is a seven-bit MIDI Controller, it is in the area reserved for Mode messages and can only take a 0 value; any other value is undefined. The relevant message is Bn 7B 00. One problem with All Notes Off is that not all synths recognise it as it is an optional MIDI command. Very few Yamaha synths will respond to it, Yamaha's EMT10 sound module being one of the few.
The MIDI Manufacturers Association (MMA) in the USA and the Japanese MIDI Standards Committee (JMSC) became aware of this "reset" problem and created a special MIDI command to make the functions within a synth which are affected by the values of MIDI Controllers (and various other MIDI messages) revert to their default values. The message Reset All Controllers tells a MIDI device to change certain parameters to preprogrammed values, as if the individual MIDI commands for each of these parameters had been received. This command is also in the Mode section of the MIDI Controller messages and Bn 79 00 is the required message.
As most sequencer writers have now implemented Reset All Controllers, are any of the other messages still necessary? Unfortunately the answer is yes, because Reset All Controllers only took its place within the Detailed MIDI 1.0 Specification a few years ago and such functions cannot be made retrospective - if a synth can't recognise it, it can't act on it.
Some sequencer writers have resorted to ingenious methods to counter the problem of synths not recognising the All Notes Off message. For example, C-Lab's Creator/Notator transmits a single Active Sensing byte ($FE) each time you hit Stop. If you have either a Roland U110 or a U220, you'll see the messages Active Sensing Error and MIDI Off-Line respectively.
The Active Sensing message is intended to tell all slave devices connected to a master that the latter is still there by sending the one-byte message about every 300 milliseconds. This message is optional; if a slave never receives Active Sensing bytes, it doesn't expect to receive them. However, once the message has been received, a slave expects to continue to see such messages. If none appear within the allotted time, the slave assumes that the master has been disconnected and shuts off its voice circuitry. In the words of the MIDI Specification, the receiver "will assume the MIDI cable has been disconnected for some reason and should turn off all voices and return to normal operation". What's meant by "normal operation" is the condition which exists when a device is powered up. The problem here is that this may lead to MIDI Volume (Controller #7) being reset to the maximum value of 127 - which was the case with the Korg Wavestation. In this case, all your carefully-created volume levels for various multitimbral parts disappear as soon as you hit the Stop button. A software change to the Wavestation solved this problem.
While the use of a single Active Sensing byte is ingenious, it appears to be contrary to the spirit of the MIDI Specification - but such are the problems of having optional messages. The origin of Active Sensing is similar to that of All Notes Off - the message was essential in the early days of MIDI when the system wasn't as reliable as it could have been. Many manufacturers now feel that it's no longer necessary and so do not implement Active Sensing in their current equipment; moreover, most MIDI processing devices discard Active Sensing at input.
Some sequencers give you the option of not sending out reset messages: Steinberg's Cubase for one. Perhaps the solution, bearing in mind the possible problems caused by optional messages, is to have a menu from which you can select which messages are transmitted. After all, most sequencers give you a menu from which you can choose which MIDI messages are to be filtered as they are input. The Function Junction MIDI patchbay offers this facility for determining the messages sent when switching from one patch to another. Firstly, you have the option for whether reset data should be sent at all. Secondly, you can choose from All Notes Off, Sustain Pedal Off, Centre Pitch Bend, Zero Modulation Wheel, Reset All Controllers, Channel Pressure (Aftertouch) Off and Sostenuto Off. With a MIDI patchbay, this is especially important - if you're switching between two patches and a particular connection exists in both of them, you may wish to keep sustained notes playing over the patch change (as you may with synth patches). Consequently, certain reset data must be suppressed - if Sustain Pedal Off is transmitted, for example, sustained notes will be muted even if you're still holding the sustain pedal down. On the other hand, switching between two patches where a connection is made in the first but not in the second is likely to lead to hung notes.
The "panic" button you may have seen implemented on various MIDI devices carries out a similar function to pressing the sequencer's Stop button, except that the sequencer could still be playing while the reset information is transmitted. A panic button, therefore, has to cope with stuck notes where a note off has either not been transmitted from the computer (or keyboard) or else the synth has failed to recognise a note off. Consequently, it has to be more thorough in its cleaning-up procedure and will often transmit every possible note off on each of the 16 MIDI channels - a total of over 6000 bytes. Add to this the other messages mentioned above (for each MIDI channel) and it's possible to have a stream of over 6500 bytes which would take more than 20 seconds to transmit. Admittedly this figure can be reduced to around 4300 bytes with the use of running status, but this is still going to cause a significant glitch in any music playing at the time.
The problem is that a device cannot keep an account of what MIDI data has passed through it - it won't know precisely which note on has failed to receive a note off in the case of a hanging note. Including such intelligence in a MIDI unit is generally financially prohibitive. Next time you hit the panic button and wonder why those perfectly crafted 16ths on the hi-hat suddenly start fluttering, you'll know why.
A word of warning if you're using a MIDI patchbay with a panic button and a MIDI port expander on the ST: hitting the panic button under these circumstances may cause reset data to be sent to all connected MIDI Ins on the expander. The consequence of this is likely to be a flow of MIDI data beyond that which the MIDI Input routine of the sequencer can handle. Result: computer crash.
From the point of view of synths, there is a newly-implemented MIDI message which can act as a panic button. All Sound Off is MIDI Controller #120 (Bn 78 00) and mutes all currently-sounding notes on the specified MIDI channel. When a synth receives this message, the level of the final amplifier for all voices is set to zero as quickly as possible; any notes currently sounding are turned off. Consequently, such a MIDI message could be assigned to a button on a keyboard which is capable of having a MIDI message defined for it. All Sound Off is not intended to replace All Notes Off or the correct sequence of notes on and off; rather, it's a bolt-and-braces solution to a problem in a performance situation.
One further problem falls within the scope of this article - the Stop button has been hit, the sequencer has sent out the various commands to reset the relevant buffers in your synths. What happens when you re-start the sequencer, whether at the same point or not?
The issue is that the sequencer has somehow to know what the current situation is for the MIDI Controllers, Pitch Bend and Aftertouch. You're in the middle of a song or piece of music - is the Modulation value 0, 25 or 76? What degree of Pitch Bend is there? Is the Sustain Pedal on or off? Without reinstalling the correct values in the synth buffers, performance data of the above types will not be correctly assigned when the sequencer re-starts.
Most sequencers can "chase" the correct values; that is, they search backwards from the current position for the last value and then transmit this as the sequencer starts up. But not all sequencers chase all aspects of a performance - for example, some only look for the first 32 MIDI Controllers (as Controllers #32 to #63 are only used in conjunction with their parallel partners in #0 to #31 and so are rarely implemented within synths). So the likes of Modulation, MIDI Volume, Pan, Balance and Expression are correctly dealt with, but Sustain Pedal, Sostenuto and all others beyond MIDI Controller #64 aren't. Fortunately, Pitch Bend is usually catered, for as is Aftertouch. You soon get to know what your sequencer chases; just listen for what appears to be wrong.
In my conversations with various manufacturers of software sequencers, it seems that there's concern over the possibility of glitches occurring as the music starts to play, due to the number of bytes required to reset the synth buffers. This may be so but, again, it would be nice to have the option to set a function like this from a menu. Many people prefer not to change default settings, assuming those chosen by the manufacturer are "correct", but having things under your own control would certainly pre-empt one situation likely to arise in the near future. Most of the additions to the MIDI Specification as far as Controllers are concerned have involved Controllers numbered above 64. For example, there are ten Sound Controllers (#70-#79). Let's hope that sequencer software writers keep themselves abreast of these changes and modify their software accordingly.
I am a firm believer in allowing people who use software to configure many of the program aspects to their own taste; anyone who uses an Apple Mac will be aware of the significance of this philosophy. Given hundreds of different options within a sequencer, many people (probably most) will avoid even considering their usefulness. However, if these options have sensible defaults, this lack of interest in technical detail will have no unfavourable side effects. For those who really want to be able to get the best from their MIDI system, the ability to be able to make such choices is important.
Information on the latest additions and changes to the MIDI Specification is free to all members of the European MIDI Association (EMA). For more information about membership, please contact Vic Lennard on 081-368 2245.