I wonder if there is a list of generator identification numbers. here is the portion of the SF2 spec that has me thinking that it is possible to modify any generator with NRPN midi messages. Any experts on this?
9.6.2 The NRPN Select Values
The SoundFont 2.01 standard defines the following values that must be recognized and responded to by any synthesizer
that is SoundFont 2.01 compatible. These values should not conflict with values used in standard and/or widely available
MIDI synthesizers today.
The NRPN Select MSB message value is 120. This message indicates that a NRPN Message that follows will be a
SoundFont 2.01 NRPN message.
The NRPN Select LSB message with data less than 100 corresponds to the generator enumeration value, modulo 100, if
and only if the most recently sent NRPN Select MSB message was 120. The NRPN Select LSB message with data greater
than or equal to 100 is used to permit selecting of generator values greater than 100.
0 – 99:
Indicates the generator value
100:
Indicates a
single multiple of 100 for generator value selection
101:
Indicates a single multiple of 1,000 for generator value selection
102:
Indicates a single multiple of 10,000 for generator value selection
103 – 127:
Undefined, unused, should be ignored if enco
untered
Note that NRPN Select LSB greater than 100 are for setup only, and should not be used on their own in order to select a
generator parameter.
So, to have a NRPN message control the Initial Filter Cutoff parameter, the following NRPN Select parameters are sent:
NRPN Select MSB:
120
NRPN Select LSB:
8
And, if a generator value is defined by the SoundFont Specification with a value of 100, the following NRPN Select
parameters are sent:
NRPN Select MSB:
120
NRPN Select LSB:
100
NRPN Select LSB:
0
And, if a generator value is defined by the SoundFont Specification with a value of 250, the following NRPN Select
parameters are sent:
NRPN Select MSB:
120
NRPN Select LSB:
100
(generator 100)
SoundFont 2.01 Technical Specification - Page
76
-
08/05/98 12:43 PM
NRPN Select LSB:
100
(generator 200)
NRPN Select LSB:
50
(generator 250)
Running status does not include multiple sends of values greater than 100. IE you cannot use a single message to select
251 if the most recently sent message selected generator 250:
NRPN Select LSB:
100
NRPN Select LSB:
100
NRPN Select LSB:
50
(Selects generator 250)
NRPN Select LSB:
51
(Selects generator 51, NOT 251)
If a parameter is selected which is unrecognized, or is not designated as a real-time controller or synthesizer parameter
(such as overriding root key, key number, etc), or cannot be controlled in real-time by a synthesizer, either at all or without
causing audio artifacts, the LSB selection should be ignored but the status of the MSB selection, being that of a
SoundFont 2.01 NRPN controller, should remain unchanged