Purple Hearts hpmusic

Control Change Events

Thursday, 04 November 2004
The aim of this article is to explain the effect of the controller events with YAMAHA keyboards.

Introduction

Controller events are MIDI messages, that influence the general state of the synthesizer or some sound character. In contrast of the manufacturer depended SysEx, the controller events are defined in the standard MIDI protocol and are interpreted therefore by nearly all synthesizers and keyboards. The PSR-keyboards generate controller events implicitly mostly, others can be inserted by the user at the keyboard. All the controller events can be inserted into the song with sequencer-software on the PC. There are several functions which can be done by YAMAHA SysEx events with more power, but if we use SysEx, other synthesizers like the soundgenerator of Windows don?t understand these.

The controller events are numbered from 0 to 127, but only some of these numbers are assigned to functions of the keyboard. Nearly all of these only work on a particular MIDI-channel, which has to be specified in the event. In the manuals we find lists of the implemented controller events.

We explain and demonstrate the effects of controller events. A set of small MIDI-files can be downloaded, to be played on the keyboard or on the PC. Each one is referenced to a particular controller event, applied on MIDI-channel 1. These MIDIs are of format XG/XF with lyrics. With the my program PSRUTI and the keyboards we see a comment of the actual played part on the lyric-screen. It may be instructive, to look with my program PSRMIDI at the event list of each file.

Download controller examples

Bank Select, Controller 0 /MSB); Controller 32 (LSB)

A voice bank is a set of up to 128 voices, numbered from 0 to 127. GM uses 128 voices only, but the Yamaha keyboards know a lot of banks. The two bank select events are needed to adjust a voice bank before a following non-controller program change event switches to a special voice of this voice bank. First we have to send the bank select coarse with a data MSB (most significant byte), after this the bank select fine with a data LSB (least significant byte).

The General MIDI (GM) voice bank of the keyboards are adjusted by MSB=0 and LSB=0. The voice is changed not before a following patch change event is sent. For example we get the panel-voice cello by the patch change with data (voice number) 42. Look at the voice-lists of the keyboard data lists.

The keyboards generate these three events implicitly for each MIDI-channel, if we select a style, MultiPad or melody-voices on the keyboard. PSRUTI and the sequencer Cakewalk also does it, if we select a bank and a voice for a particular channel.

We cannot play different voices at the same moment on the same channel. Therefore each channel is assigned usually to a fixed voice from the beginning to the end of the song. On the other side we are able to play different voices on one channel, if we start a note, change the voice immediately after this and start a second note then. The first note remains in its voice as long as it can be heard. This tricky method is applied sometimes in MultiPad parts, because there is used one channel only.

The example
Download Bank Select Demo
plays on the same channel 1 a solo trumpet (panel-bank LSB=112) and strings (XG-bank LSB=0); first at different time, then with overlapping sound. It may be instructive to look at the event-list with PSRMIDI.

Controller 1:Modulation

The modulation controller event sets the modulation wheel to a value. That means we get a vibrato effect on the channel with a particular intensity.

The example
Download Modulation Demo
sets the modulation to the values 0, 32, 64, 96 and 127 respectively. After this the modulation slides down from 127 to 0.

Controller 5: Portamento Time<

Portamento means a sliding effect between two different, slightly overlapping notes. The portamento controller event sets the rate at which portamento slides the pitch. The effect has to be switched on by the controller event number 65 (Portamento) before.

The example "portamento_time.mid" sets the effect to the values 0, 32, 64, 96 and 124. respectively.

Controller 7: Main Volume

The main volume controller event sets the volume of a channel to a particular value. On Yamaha keyboards we can adjust the main volume with the wheels for all channels This effect is also applied with the FADE IN/OUT function. The expression controller also affects the volume.

The example
Download Main Volume Demo
sets the main volume to the values 0, 32, 64, 96 and 127 respectively. After this the main volume slides down from 127 to 0.

Controller 10: Panpot

The panpot controller event sets the panorama position, where within the stereo field of the amplifiers the sound will be placed. With the parameter value 0 the left and with 127 the right amplifier is activated only.

The example
Download Panpot Demo
sets the panpot to the values 0 (left), 32, 64 (middle), 96 and 127 (right) respectively. After this the panpot slides from right to left.

Controller 11: Expression

The expression controller event sets the volume of a channel to a particular percentage of the volume, which is set by the main volume controller. The parameter value 127 means hundred percent and the value 0 zero percent, i.e. we don't hear anything. The Yamaha Keyboards set the expression controller implicitly always to the value 127.

The example
Download Expression Demo
sets the expression to the values 0, 32, 64, 96 and 127 respectively. After this the expression slides down from 127 to 0.

Controller 64: Sustain On/Off

The sustain controller event activates a sustain effect with parameter values from 64 to 127 and deactivates this with values from 0 to 63. When on, this holds all notes that are playing on a particular channel even if the musician releases the notes; ie the note off event is postponed until the sustain off event is sent. Therefore the sustain effect can not used with voices, which do not hold the sound after Note On like a bell or drum. The PSR-8000 applies the event if the sustain pedal is used, but this influences all MIDI-channels, whereas the controller event can be applied to a particular channel.

With the example
Download Sustain Demo
we hear first a trumpet without sustain, after this with sustain for a quarter note and for one and two beats and for one and two measures.

Controller 65: Portamento

Whether the portamento effect is on (parameter value 64 - 127) or off (0 - 63). This effect is used to activate and deactivate the portamento time controller, which is set by the controller event number 5, look at this section.

Controller 66: Sostenuto

The sostenuto controller works like the sustain controller, except this only sustains notes that are already on (ie, the synthesizer has received "Note On" messages, but the respective "Note Offs" haven?t yet arrived when a Sostenuto On is sent. All Note On arriving in the state Sostenuto On are not held. So, the sostenuto implements the effect for the notes that are sounding when sostenuto is turned on. At Yamaha keyboards the sostenuto event is interpreted, but it cannot produced by the musician.

In each part of the example
Download Sostenuto Demo
the first note or chord is held for different time by sostenuto; in the state Sostenuto On other notes are played and these are not held.

Controller 67: Soft Pedal

When On (parameter value 64 - 127) the volume is lowered, when Off (0 - 63) the volume should be normal. On the Yamaha keyboards I can not hear any affect to the volume. Try the example
Download Soft Pedal Demo
the first note plays with Soft Pedal Off, the second with On and with the third note the Soft Pedal changes from Off to On during the sound.

Controller 71: Harmonic Content

This controls the amp?s envelope levels, the sound timbre. With higher parameter value the sound gets more eccentric. On the Yamaha keyboards we can adjust harmonic content with panel wheels.

The example
Download Harmonic Content Demo
sets the harmonic content to the values 0, 32, 64, 96 and 127 respectively. After this the effect slides down from 127 to 0.

Controller 72: Release Time

The release time event sets the time how long it takes a sound to fade out after Note Off. Yamaha keyboards understand, but do not apply this event.

The example
Download Release Time Demo
sets the release time to the values 0, 32, 64, 96 and 127 respectively.

Controller 73: Attack Time

The attack time event sets the time how long it takes a sound to fade in after Note On. The Yamaha keyboards understand but do not apply this event.

The example
Download Attack Time Demo
sets the attack time to the values 0, 32, 64, 96 and 127 respectively.

Controller 74: Brightness

The effect controls the filter?s cutoff frequency, for an "overall" brightness of the sound. On the Yamaha keyboards we can adjust brightness with panel wheels.

The example
Download Brightness Demo
sets the brightness to the values 0, 32, 64, 96 and 127 respectively. After this the effect slides down from 127 to 0.

Controller 84: Portamento Control

The controller Portamento Control is parameterized with a note number; i.e. for note A5 for example with the value 69 = hex 45. With a Note-On after a Portamento Control the pitch slides from the controller note to the new note-on pitch. The rate set by the portamento time controller takes effect.

Download Portamento Control Demo
The example demonstrates the effect of Portamento Control with different control and note values.

Controller 91: Reverb Send Level

This event sets the effect depth of the reverb with parameter values 0 (no reverb) up to 127 (full reverb). Yamaha keyboards set implicitly different values for different voices.

The example
Download Reverb Send Level Demo
sets the controller to the values 0, 32, 64, 96 and 127 respectively. After this the effect slides down from 127 to 0.

Controller 93: Chorus Send Level

This event sets the effect depth of the chorus with parameter values 0 (no chorus) up to 127 (full chorus). Yamaha keyboards mostly sets the parameter to different values implicitly.

The example
Download ChorusSend Level Demo
sets the controller to the values 0, 32, 64, 96 and 127 respectively. After this the effect slides down from 127 to 0.

Controller 94: Variation Send Level

This event sets the effect depth of the variation with parameter values 0 (no variation) up to 127 (full variation). The PSR-8000 mostly sets the parameter to the value 0 implicitly. We can not change the actual value at the keyboard.

The example
Download Variation Send Level Demo
sets the controller to the values 0, 32, 64, 96 and 127 respectively. After this the effect slides down from 127 to 0. The variation effect only works, if the variation connection is system; therefore I had to insert some SysEx events. The type of variation effect Hall2 is selected.

Controller 121: Reset All Controllers

This controller event is useful, if we play a midifile with sequencer software into the keyboard (keyboard receive). The initial values are listed in the manual of the keyboard.

RPN and NRPN : Controller 6, 38, 98, 99.100,101

The limited number of 128 possible controller events and their partly inaccurate parameterization was the reason for the introduction of the RPN and NRPN instructions. For RPN and NRPN six special controller event numbers used. With RPN, manufacturer-independent functions have been specified, NRPN have been used for manufacturer-specific Extensions introduced. To activate an RPN or NRPN function, four successive Controller Events is required. With the first two (no. 101 and 100 for RPN, 99 and 98 for NRPN) the function the following two (No. 6 and 38) define the parameter value in the range 0 to 16383.
RPN events are used to adjust the sensitivity of the pitch bend wheel or to tune voices ...for the first time. The YAMAHA NRPN events change, for example, the vibrato speed - see the datalist of the keyboard.

The RPN example
Download RPN Demo
demonstrates the RPN effect Pitch Bend Sensitivity.
In the first part, "Pitch Bend Sensitivity" is zero.
With the second note, "Pitch Bend Sensitivity" was assigned 16000.
The last two parts demonstrate the coarse and fine tuning. In both cases the parameters glide from low to high values and back again.

The same technic is applied with the Non-Registered Parameter Numbers NRPN for manufacturer-specific "extended controller" events. Here the controller 99 and 98 are used to define the NRPN. The controller 6 and 38 also are applied to define the parameter value.

The NRPN-events are used by YAMAHA, to modify adjustments of some effects as vibrato rate. Look at the data list of the keyboard.

With General MIDI Format 2 (GM2) four new Controller-Events are introduced:

Controller 75: Decay Time

The controller changes the decay phase of the envelope.

In the example
Decay Time Demo
the controller is parameterized successively with the values 0, 32, 64, 96 and 127. Then the parameter value slides down from 127 to 0.

Controller 76: Vibrato Rate

The controller changes the vibrato speed.

In the example
Vibrato Rate Demo
the controller is parameterized successively with the values 0, 32, 64, 96 and 127. Then the parameter value slides down from 127 to 0.

Controller 77: Vibrato Depth

The controller changes the frequency of the vibrato swing.

In the example
Vibrato Depth Demo
the controller is parameterized successively with the values 0, 32, 64, 96 and 127. Then the parameter value slides down from 127 to 0.

Controller 78: Vibrato Delay

The controller changes the delay of the vibrato effect.

In the example
Vibrato Delay Demo
the controller is parameterized successively with the values 0, 32, 64, 96 and 127. Then the parameter value slides down from 127 to 0.



Print article