Purple Hearts hpmusic
Main Menu
Home
Downloads
News
Tips&Tricks
Songs
Articles
Good Links
Contact
Impressum
Who's Online
We have 36 guests online
Search
Control Change Events PDF Print
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 soundcards. The PSR-keyboards generate controller events implicitely 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 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 PSR-8000, we see a comment of the actual played part on the lyric-screen. It may be instructiv, to look with sequencer software at the eventlist of each file.

Download controller examples (12 KB)

Bank Select


Number: 0 (coarse) 32 (fine)

A voice bank is a set of up to 128 voices, numbered from 0 to 127. GM uses 128 voices only, but the 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 basic panel voice bank of the keyboards are adjusted by MSB=0 and LSB=112. 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 manual.

The keyboards generate these three events implicitely for each MIDI-channel, if we select a style, MultiPad or melody-voices on the keyboard. 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 "bank_select.mid" 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 Cakewalk.

Modulation


Number: 1 (coarse)

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 "modulation.mid" sets the modulation to the values 0, 32, 64, 96 and 127 respectively. After this the modulation slides down from 127 to 0.

The controller number 33 is reserved for a fine modulation adjustment, but the PSR-8000 ignores this event.

Portamento Time<


Number: 5 (coarse)

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.

The controller number 37 is reserved for a fine portamento time adjustment, but the PSR-8000 ignores this.

Main Volume


Number: 7 (coarse)

The main volume controller event sets the volume of a channel to a particular value. On the PSR-8000 we can adjust the main volume with the wheels for each voice-part. This effect is also applied with the FADE IN/OUT function. The expression controller also affects the volume.

The example "main_volume.mid" 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.

The controller number 39 is reserved for a fine main volume adjustment, but the PSR-8000 ignores this.

Panpot

Number: 10 (coarse)

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 "panpot.mid" 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.

The controller number 42 is reserved for a fine panpot adjustment, but the PSR-8000 ignores this.

Expression


Number: 11 (coarse)

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, ie we don‘t hear anything. The PSR-8000 sets the expression controller implicitely always to the value 127.

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

The controller number 43 is reserved for a fine expression adjustment,but the PSR-8000 ignores this.

Sustain On/Off


Number: 64

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.

In the example "sustain.mid" we hear first a trumpet without sustain, after this for one and two beats and for one and two measures.

Portamento


Number: 65

Wether 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.

Sostenuto


Number: 66

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 a "chord hold" for the notes that are sounding when sostenuto is turned on. At the PSR-8000 the sostenuto event is interpreted, but it cannot produced by the musician.

In each part of the example "sostenuto.mid" 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.

Soft Pedal


Number: 67

When On (parameter value 64 - 127) the volume is lowered, when Off (0 - 63) the volume should be normal. On the PSR-8000 I can not hear any affect to the volume. Try the example "soft_pedal.mid". 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.

Harmonic Content


Number: 71

This controls the amp‘s envelope levels, the sound timbre. With higher parameter value the sound gets more eccentric. On the PSR-8000 we can adjust harmonic content with panel wheels in the menu Full Fader/Filter.

The example "harmonic_content.mid" sets the harmonic content to the values 0, 32, 64, 96 and 127 respectively. After this the effect slides down from 127 to 0.

Release Time


Number: 72

The release time event sets the time how long it takes a sound to fade out after Note Off. The PSR-8000 understands, but does not apply this event.

The example "release_time.mid" sets the release time to the values 0, 32, 64, 96 and 127 respectively.

Attack Time


Number: 73

The attack time event sets the time how long it takes a sound to fade in after Note On. The PSR-8000 understands but does not apply this event.

The example "attack_time.mid" sets the attack time to the values 0, 32, 64, 96 and 127 respectively.

Brightness


Number: 74

The effect controls the filter‘s cutoff frequency, for an "overall" brightness of the sound. On the PSR-8000 we can adjust brightness with panel wheels in the menu Full Fader/Filter.

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

Portament Control


Number: 84

This controller is not specified in the GM norm but in the PSR-8000 manual. I have tried it and could not hear any effect. The example "portament_control.mid" sets the portament control to the values 0, 32, 64, 96 and 124 one after another.

Reverb Send Level


Number: 91

This event sets the effect depth of the reverb with parameter values 0 (no reverb) up to 127 (full reverb). The PSR-8000 sets implicitely different values for different voices. We can change the actual value in the menu Full Fader/Effect Depth.

The example "reverb_send_level.mid" sets the controller to the values 0, 32, 64, 96 and 127 respectively. After this the effect slides down from 127 to 0.

Chorus Send Level


Number: 93

This event sets the effect depth of the chorus with parameter values 0 (no chorus) up to 127 (full chorus). The PSR-8000 mostly sets the parameter to different values implicitely. We can change the actual value in the menu Full Fader/Effect Depth.

The example "chorus_send_level.mid" sets the controller to the values 0, 32, 64, 96 and 127 respectively. After this the effect slides down from 127 to 0.

Variation Send Level


Number: 94

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 implicitely. We can not change the actual value at the keyboard.

The example "varation_send_level.mid" 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.

Reset All Controllers


Number: 121

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


Number: 6, 38, 98, 99, 100, 101

Because there is a limit of 128 controller events, there are six numbers reserved to enlarge the effective number of such events. Firstly there are the Registered Parameter Numbers RPN for manufacturer independed "extended controller" events. One RPN event needs four controller events: the first two (controller number 101 and 100) define the RPN, the second two (controller number 6 and 38) define the RPN parameter value. Therefore 16384 RPNs can be defined, each of these with a parameter range of 0 up to 16383.

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.

With RPN-events three controllers of the PSR-8000 can be set: the Pitch Bend Range, the Fine and the Coarse Tune of the voice. The NRPN-events are used by YAMAHA, to modify adjustments of some effects as vibrato rate. Look at the list of the manual.

I have only one MIDI-example created: "rpn.mid" demonstrates RPN effects. This file is XG but not XF; because I had some problems using XFTools here.

In the first part the pitch bend sensitivity is set to zero: We can apply the pitch bend wheel for the first note without any effect.
The second part sets the pitch bend sensitivity to 16000. Try the pitch bend wheel again.
The last two parts demonstrate the coarse and the fine tune controllers. In both cases the RPN parameter values slide from low to high values and back again.

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

  1. Decay Time, number: 75
  2. Vibrato Rate, number: 76
  3. Vibrato Depth, number: 77
  4. Vibrato Delay, number: 78

I have not yet programmed example-files with these new controller-events.

End