
This document is intended for any DSSI plugin authors who are confused
about which MIDI continuous controller (CC) numbers they might want to
map to their plugin controls.


Controllers Commonly Found
--------------------------

These controllers are defined in General MIDI level 1 (GM):

  1 Modulation
  7 Volume
 10 Pan
 11 Expression/LFO
 64 Sustain

as well as two for the Controllers To Avoid section (below):

121 Reset all controllers
123 All notes off

These are some of the controllers in General MIDI level 2:

  5 Portamento
 65 Portamento on/off
 66 Sostenuto
 67 Soft pedal
 71 Filter resonance
 72 Release
 73 Attack
 74 Brightness
 75 Decay
 91 Reverb
 93 Chorus

as well as

  0 Bank select MSB
 32 Bank select LSB

In practice, those in the above list in the 60-70s range are often
used for quite different things by non-GM2 (i.e. most) synths,
although reverb and chorus are pretty standard.

If you are wanting to allocate controllers for other dedicated uses,
go for those in the range 12-31 which are usually undefined,
assignable, or simply highly nonstandard.


Controllers To Avoid
--------------------

DSSI will not permit you to request a mapping for controllers 0 or 32
(the Bank Select controllers).  Other controllers that by convention
you would be most unwise to map include the (N)RPN controllers:

  6 Data entry MSB
 38 Data entry LSB
 96 Data button increment
 97 Data button decrement
 98 Non-registered parameter LSB 
 99 Non-registered parameter MSB
100 Registered parameter LSB
101 Registered parameter MSB

and the keyboard mode controllers, unless you know what you're doing:

120 All sound off
121 Reset all controllers
122 Local keyboard power switch
123 All notes off
124 Omni on
125 Omni off
126 Monophonic mode
127 Polyphonic mode


About NRPNs
-----------

Plain MIDI continuous controllers have a value range of only 0-127,
and of course there is a limited number of controllers.  An NRPN
(non-registered parameter number) is a way of providing a larger
number of higher resolution controls.  To adjust an NRPN control, a
device first identifies the parameter number via the two NRPN
controllers 98 and 99, and then adjusts the value via controllers 96
or 97, or 6 and 38.  The end result is a 14 bit resolution (0-16383)
for both parameter numbers and values.  There is no standard for the
parameter numbers (hence the first N in NRPN), so if you want more
finely adjustable MIDI controls, feel free to assign ports to any NRPN
numbers you want.  Just bear in mind that you have to be using a
source of NRPN parameter adjustments (such as a controller keyboard
that supports NRPNs) for this to be of any relevance.

