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.
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. 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
Controller 1:ModulationThe 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
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 VolumeThe 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
Controller 10: PanpotThe 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
Controller 11: ExpressionThe 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
Controller 64: Sustain On/OffThe 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
Controller 65: PortamentoWhether 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: SostenutoThe 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
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
Controller 71: Harmonic ContentThis 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
Controller 72: Release TimeThe 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
Controller 73: Attack TimeThe 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
Controller 74: BrightnessThe 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
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.
Controller 91: Reverb Send LevelThis 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 exampleDownload 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 LevelThis 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
Controller 94: Variation Send LevelThis 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
Controller 121: Reset All ControllersThis 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.
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.
Controller 76: Vibrato Rate
The controller changes the vibrato speed.
Controller 77: Vibrato Depth
The controller changes the frequency of the vibrato swing.
Controller 78: Vibrato Delay
The controller changes the delay of the vibrato effect.
Print article |