Using MIDI Controllers
MIDI controller data can have many uses such as adding "feel" to music after it's been recorded into a sequencer. Vic "Megalomaniac" Lennard explores this and many other applications.
ONE ASPECT OF THE MIDI SPEC THAT'S OFTEN OVERLOOKED IS THAT OF MIDI CONTROLLERS - AMONGST THEIR MANY APPLICATIONS ARE MIDI-CONTROLLED SIGNAL PROCESSING AND MIXING.
IN NORMAL USE, three types of information can be sent from the MIDI Out port of a keyboard. The first of these is note data. Every time a key is pressed, a Note On is sent which incorporates the note number, MIDI channel and velocity or loudness. When that note is released, a Note Off is generated, which generally holds the same Information as its Note On counterpart but with the velocity set to zero. The second type of information is System Exclusive, which Is the method by which the sound parameters are sent. It's called Exclusive because each manufacturer and model has a unique code so that data intended for one device doesn't end up affecting another.
The third sort of information is loosely called MIDI controller information. Each time you step on a sustain pedal or move the modulation wheel, data is being sent out to control the particular function on the MIDI device which is on the receiving end. Theoretically, there should be 128 different controllers, numbered from 0 to 127, but some of these are used for other purposes, while others have no particular standard function assigned to them as yet.
CONSIDER WHAT HAPPENS when you switch on a light. The light is either on or off depending on the position of the switch. But what happens if the light is controlled by a dimmer instead? When rotated fully anti-clockwise, there is no light and this could be said to take a value of zero. Rotate slowly in a clockwise direction and the light Intensity slowly increases until the point where the light bulb is fully on. In MIDI controller terms, 'off' Is represented by a value of 0, 'fully on' is represented by a value of 127 and anything In between will take a value proportional to the position on a linear scale.
MIDI controllers can also be divided into two similar categories. The first of these is switches - Sustain pedal (controller No. 64), Portamento on/off (No. 65), Soft pedal (No. 67) and Tremolo/Chorus/Phaser depth (Nos. 92/93/95 respectively). All of these are usually operated by a switch mechanism of some kind, be it a foot pedal or a toggle on a keyboard.
The second category is continuous controllers - Modulation (No. 1), Breath (No. 2), Portamento time (No. 5), Volume (No. 7), Balance (No. 8) and Pan (No. 10) each of which are normally slider operated.
All MIDI controllers are termed 'continuous controllers" but for the sake of clarity we'll split them into the above categories.
IN TERMS OF hexadecimal bytes with decimal equivalents in brackets, all controller data takes the following format:
Bn NN XX
where B Is the status byte for controllers, n is the MIDI channel 0-F (1 to 16), NN is the controller number and XX is the value that the controller is to be given. For instance: B4 07 7F would operate on MIDI channel 5, Controller number 7 (MIDI Volume) would be set to 7F (127) which is the highest possible value and would have the same effect as having the volume slider on a keyboard set to maximum.
Now, bearing in mind that all controllers send out information that has a value of between 0 and 127, what happens when you press a switch like the Sustain pedal? Well, the original MIDI spec stated that value 0 would be taken to be off and 127 to be on, with all others being ignored. But some manufacturers decided to work in keeping with the method used for Note On/Off where a velocity of 0 signifies a Note Off and any other is a Note on. Consequently they used 0 as off and any other value as one, which while differing from the actual spec, caused no problems as the two methods don't clash with each other.
However, there is a new definition. Any value between 0 and 63 is to be taken as off and between 64 and 127 is on. This is a extension of the original spec but in direct conflict with the nonstandard method. A value of 24 would be off in the old and new MIDI specs but on with the non-standard.
Who uses this proprietary method? Nobody appears to know, as the necessary information isn't shown in the MIDI Implementation charts or tables. As this is only a problem with earlier devices it probably won't affect you, but it is worth mentioning, as odd happenings which cannot be solved by any other reasoning may be down to this.
WE SAID CONTROLLERS may take any value between 0 and 127, but this isn't entirely true. Each controller has an extra controller number associated with it. For instance, MIDI Volume is controller No. 7 and also No. 39 and if the two of these are used in conjunction, there is a choice of 16,384 possible values instead of 128. In the cases of Volume, Pan and so on, the difference between a sliding scale having 128 or 16,384 values is audibly indistinguishable, and so only the main controller is used.
However, the same cannot be said of pitchbend and aftertouch, which require the extra sensitivity that 16,384 values can give. Consequently they are not part of the normal controller set but have unique commands.
"MIDI EFFECTS UNITS NOW ALLOW THEIR PARAMETERS TO BE MIDI-ADDRESSABLE - REVERB TIME, DECAY AND SO ON CAN BE SET IN REAL TIME USING A MIDI CONTROLLER"
Pitchbend takes the following format:
En LL HH
where E is the status byte for pitchbend and LL/HH are the Low and High values of the data. For example: E1 00 40 means pitchbend on MIDI channel 2 with a value of 4000 Hex. This equates to 8192 in decimal and is taken to be the central position (as negative values are awkward to encode). The low value is called the Least Significant Byte (LSB) while the high value is the Most Significant Byte (MSB).
Aftertouch exists in two forms; Polyphonic (status byte A) and Channel (status byte D). The difference is that any key pressure for the latter will be taken as affecting all notes playing on that MIDI channel, while the former will treat each note Individually, so generating far more data. The values take the same format as pitchbend.
In each of these cases it may be felt that 16,384 discrete values is a little excessive, in which case they will be scaled down by specifying how many different values actually exist. This Is written in the Implementation chart as a number of bits - for example, Yamaha's KX88 Master Keyboard has 7-bit resolution, which means that there are 128 different values possible within the range 0-16,384. While it is possible that these may be in equal steps (16,384/128 = 128) It Is more likely that there will be an Internal table to dictate the 'feel' of the wheel.
SO FAR WE'VE seen that a keyboard has the ability to transmit data in terms of numbers, which have to be interpreted by the receiving device. For example, push the pltchbend wheel to maximum how many semitones is that equivalent to? This depends on how the receiving device is set up. The Control Edit page on a Roland D50 allows you to set a value 0-12 for the number of semitone steps at maximum wheel movement. It also allows pitchbend to be instigated via aftertouch by the setting of a similar value.
Similar aspects exist for most of the MIDI controllers. Akai's S900 sampler has a page within Edit Program for setting the maximum LFO (low frequency oscillator) depth obtainable via the modulation wheel with a scale 0-99. Set this to 50 and a full modulation wheel movement will only have the S900's LFO working at half its maximum depth.
An instrument's audio output level is derived from three sources: the rotary or slider volume control on the front panel adjusts the loudness available from the internal pre-amp; the MIDI output volume sets the maximum level which can be obtained when controller No. 7 is set to full; and the actual value of this controller dictates the level that the synth sees. Needless to say, this can be a source of confusion and can lead to unnecessarily noisy audio sources and signal distortion.
WITH THE EXCEPTION of setting up sound modules to react correctly to controller data in a live situation, most uses of controller data are in the recording of MIDI via a sequencer.
Most sequencers allow you to filter out data that you don't want. (There's little point recording data which isn't going to be used by any connected modules and the memory taken up can be considerable). Playing and releasing a single note will use up 6 bytes (three each for the Note On and Off) while applying a little channel pressure accidentally could easily eat up 30 bytes of memory, a situation which would be multiplied manyfold if your master keyboard transmits polyphonic aftertouch.
One of the benefits of using a sequencer, is that controller data can be entered retrospectively. Take the situation where brass chords need to be swelled in. Play the notes first and then move to a separate sequencer track, set the same MIDI channel as for the notes and use the keyboard volume slider to produce the swell. Got it wrong first time? Do it again and again until the required result is achieved, then merge the tracks together. Cheating? Of course, but few people ever get medals for honesty in the music game.
One problem that can arise is when a keyboard being used as a master keyboard has a volume control but only generates data for internal use and doesn't transmit it. This is particularly likely to be true of older synths. But using our "MIDI overdub" approach, we can use a different keyboard, set to the same MIDI channel to add the required MIDI controller information.
There's one very common mistake made with MIDI controllers. Let's say that you have used a volume slider, originally at maximum, to fade out a particular instrument in the middle of a song. At the end of the fade, the final MIDI volume memorised by the MIDI device on that MIDI channel will be zero and will continue to be so until it is changed. This, means that if this instrument is used further on in the song, it will not be heard unless the MIDI volume is set higher than zero. The situation is worse if the sequencer is stopped halfway through a fade and restarted from another point. Volume control data is the most common culprit, but modulation and pitchbend can also cause highly anti-social sounds.
"C-LAB'S CREATOR HAS A REAL-TIME MIDI GENERATOR WITH 16 FADERS THAT CAN BE USED TO SEND OUT FADER MOVEMENTS FOR ANY CONTROLLER ON ANY MIDI CHANNEL."
There is a new MIDI command, called Reset All Controllers, which will reset all switches to off and MIDI volume to maximum but only exists in MIDI devices manufactured after its creation.
MIDI EFFECTS UNITS are now appearing which allow their parameters to be MIDI-addressable, Digitech's DSP128 and the Alesis Quadraverb being two examples. Reverb time, decay, diffusion, mix and so on can all be set in real time using a MIDI controller - although it is advisable not to have the machine processing data at that moment as an audible glitch may occur. A good example of this would be if you wanted to give the reverb on the snare drum a pre-delay for two beats in a song. This could be achieved in non-MIDI terms by having a digital delay set up, but bypassed, and opening the audio input from the mixing desk at the correct point. But this utilises two effects units and is tricky to set up.
Alternatively we could use one of the two methods mentioned above: at the appropriate time, address the reverb pre-delay, open it out to maximum and then close it again after two beats recording the data on a sequencer to make it available on mixdown. If the length of pre-delay offered by the unit is insufficient, we could set up a configuration with delay before the reverb and address the delay time instead. Set it to the figure required and operate it via a MIDI switch controller so that the setting is practically instantaneous. Again record the data on a sequencer and move it slightly if a glitch is heard as the reverb from the previous snare decays.
The advantage this has over simply patch changing to a different program is the time taken for the hardware to react - which is guaranteed to cause glitches.
Comparisons between the two main master keyboards of yesteryear, the Roland MKB1000 and Yamaha's KX88 shows just how advanced the latter was for its time. The KX88 featured sliders and switches which can be set to a variety of MIDI controllers and various pedals and foot switches. Elka's MK88 followed on in this tradition and more recently, Akai's MX76 and Roland's new A50 and A80.
Other new devices include Anatek's Pocket Pedal (reviewed MT. August 89) which allows you to incorporate an extra pedal and switch into your system, and JL Cooper's FaderMaster which gives you eight sliders, each of which can be set to control a MIDI controller.
AS A FINAL point, much of what has been mentioned here is already fully implemented on Atari ST sequencers.
C-Lab's Creator has a Real-time MIDI Generator (RMG) with 16 faders that can be used to send out fader movements for any controller on any MIDI channel, and also has the ability to memorise 16 different layouts and recall any of them instantly. True Volume checks back to the last place in a song where controller No. 7 was changed, and ensures that this value is used if a song is started from somewhere other than the beginning, and Transform allows you to convert any controller into another, so for instance, a pitchbend wheel may be used to control aftertouch.
Hybrid Arts' MIDItrack series allows you to draw controller curves with the mouse, either freehand or by using dot-to-dot lines. This is far easier than using a hardware slider and gives useful dynamic control.
Intelligent Music's Real Time has a similar feature, although it only uses freehand drawing. It also has the advantage of allowing you to hear the results as you are drawing the controller curves.
Iconix (now defunct but still available) also has the facility to draw controller values but in a rather slow and laborious manner.
Finally, Steinberg's Cubase can also draw controller curves within its editing windows, as well as having a "MIDI processor" for controlling MIDI echo, velocity and pitch. Logical Edit (like Pro24) can change data from one sort into another, again compensating for the lack of certain facilities on a keyboard. (For more detailed information see review MT, August and September '89 issues.)
Whatever type of sequencer you use, experiment with the MIDI controllers available in your system. Situations which would be impossible to achieve without considerable expertise are quite often within reach with a little help from the right MIDI controller.
Feature by Vic Lennard
mu:zines is the result of thousands of hours of effort, and will require many thousands more going forward to reach our goals of getting all this content online.
If you value this resource, you can support this project - it really helps!
Please note: Our yearly hosting fees are due every March, so monetary donations are especially appreciated to help meet this cost. Thank you for your support!