## MIDI CCs and NRPNs

### CCs (Continuous Controllers) directly supported by Yoshimi

Unless stated otherwise, LSB range is 0 to 127.

CC | Function | Notes
--- | --- | ---
0 | Bank Change MSB | (bank root, interchangeable with CC 32)
1 | Mod Wheel
2 | Breath
6 | NRPN data MSB
7 | Volume
10 | Panning
11 | Expression
32 | Bank Change LSB | (bank, interchangeable with CC 0)
38 | NRPN data LSB
64 | Sustain Pedal
65 | Portamento
68 | Legato Pedal
71 | Filter Q
74 | Filter Cutoff
75 | Bandwidth
76 | FM Amplitude
77 | Resonance Center Frequency
78 | Resonance Bandwidth
96 | NRPN Data Increment
97 | NRPN Data Decrement
98 | NRPN LSB
99 | NRPN MSB
120 | All Sound Off
121 | Reset All Controllers
123 | All Notes Off
124 | Omni Mode Off
125 | Omni Mode On

Back to top

### Extended CCs

The following channel mode messages are internally translated so that they can be MIDI learned. They will appear to have the following numbers.

CC | Function
--- | ---
128 | Pitch Bend
129 | Channel Pressure
130 | Key Pressure

### NRPNs (Non Registered Parameter Numbers) directly supported by Yoshimi

Unless stated otherwise, Data LSB range is 0 to 127.

NRPN MSB | NRPN LSB | Function
--- | --- | ---
4 | 0 - 3 | System Effect Number
8 | 0 - 7 | Insertion Effect Number
64 | 0 | Direct Part Control
64 | 1 | Vector Control
64 | 2 | System Settings
96 | 0 | Load Instrument From History
96 | 1 | Load Patchset From History
96 | 2 | Load Scale From History
96 | 3 | Load State From History
96 | 4 | Load Vector From History
96 | 5 | Load MIDI Learn List From History

The following don't currently use data bytes. Some sequencers allow them to be omitted.

NRPN MSB | NRPN LSB | Function
--- | --- | ---
65 | 0 | Solo Disabled
65 | 1 | Solo Row type
65 | 2 | Solo Column type
65 | 3 | Solo Loop type
65 | 4 | Solo Two Way type
65 | 5 | Solo Channel type
66 | 0 - 119 | Solo type's controller
68 | 68 | Normal shutdown, exit 0
68 | 69 | Fast shutdown, exit 16 (does not check or save settings)

### NRPN Data Values

System / Insertion Effects
If Data MSB bit 6 is set (MSB >= 64) then LSB decides the effect type:

0 - Off
1 - Reverb
2 - Echo
3 - Chorus
4 - Phaser
5 - AlienWah
6 - Distortion
7 - EQ
8 - DynFilter
This must be done before making a parameter change (unless already set).
For System effects, if Data MSB bit 5 is also set (MSB >= 96) then it sends the designated system effect to system effect 2 - 4, represented by MSB 96 to 98. The actual range depends on which effect you are sending from. You can't send one to itself, or a lower numbered one. LSB then sets the amount of the effect to pass on.
For Insertion effects, if Data MSB bit 5 is also set (MSB >= 96) then LSB decides the part that the effect will be sent to:
0 to highest active part.
126 - Master Output
127 - Off
This must be done before making a parameter change to insertion effects (unless already set).
Otherwise Data MSB decides which parameter of the currently selected effect will be changed and Data LSB sets the actual value. This will be in the range 0 - 127 unless noted otherwise.
The parameters for each effect type are as follows:
Reverb
0 - Volume or Dry/Wet
1 - Pan
2 - Reverb Time
3 - Initial Delay
4 - Initial Delay Feedback
5 - reserved
6 - reserved
7 - Low Pass
8 - High Pass
9 - High Frequency Damping (64 - 127) 64 = no damping
10 - Reverb Type (0 - 2) Random/Freeverb/Bandwidth
11 - Room Size)
16 - Preset (0 - 12)
Echo
0 - Volume or Dry/Wet
1 - Pan
2 - Delay
3 - Delay between left and right
4 - Left/Right Crossing
5 - Feedback
6 - High Frequency Damp
16 - Preset (0 - 8)
17 - BPM Mode for delay (0 - 1) off/on
Chorus
0 - Volume or Dry/Wet
1 - Pan
2 - LFO Frequency
3 - LFO Randomness
4 - LFO Type (0 - 1) Sine/Triangle
5 - LFO Stereo Difference
6 - LFO Depth
7 - Delay
8 - Feedback
9 - Left/Right Crossing
10 - reserved
11 - Mode (0 - 1) Add/Subtract
16 - Preset (0 - 9)
17 - BPM Mode for frequency (0 - 1) off/on
Phaser
0 - Volume or Dry/Wet
1 - Pan
2 - LFO Frequency
3 - LFO Randomness
4 - LFO Type (0 - 1) Sine/Triangle
5 - LFO Stereo Difference
6 - LFO Depth
7 - Feedback
8 - Number of stages (0 - 11)
9 - Let/Right Crossing
10 - Mode (0 - 1) Add/Subtract
11 - Phase
12 - Hypersine (0 - 1) off/on
13 - Distortion
14 - Analog (0 - 1) off/on
16 - Preset (0 - 11)
17 - BPM Mode for frequency (0 - 1) off/on
AlienWah
0 - Volume or Dry/Wet
1 - Pan
2 - LFO Frequency
3 - LFO Randomness
4 - LFO Type (0 - 1) Sine/Triangle
5 - LFO Stereo Difference
6 - LFO Depth
7 - Feedback
8 - Delay (0 - 100)
9 - Left/Right Crossing
10 - Phase
16 - Preset (0 - 3)
17 - BPM Mode for frequency (0 - 1) off/on
Distortion
0 - Volume or Dry/Wet
1 - Pan
2 - Left/Right Crossing
3 - Drive
4 - Level
5 - Type (0 - 13)
Atan
Asym 1
Power 1
Sine
Quants
Zigzag
Limit
LimitU
LimitL
Ilimit
Clip
Asym 2
Power 2
Sigm
6 - Invert the signal (0 - 1) no/yes
7 - Low Pass
8 - High Pass
9 - Mode (0 - 1) mono/stereo 10 - PreFilter (0 - 1) distortion first/filter first
16 - Preset (0 - 5)
DyneFilter
0 - Volume
1 - Pan
2 - LFO Frequency
3 - LFO Randomness
4 - LFO Type (0 - 1) Sine/Triangle
5 - LFO Stereo Difference
6 - LFO Depth
7 - Filter Amplitude
8 - Filter Amplitude Rate Change
9 - Invert the signal (0 - 1) no/yes
16 - Preset (0 - 4)
17 - BPM Mode for frequency (0 - 1) off/on
EQ This effect is an exception in the way it's managed. It also has no presets.
0 - Gain
The others change individual EQ bands using the following formulae:
10+N*5 - Band's filter type (0 - 9)
Off
Lp1
Hp1
Lp2
Hp2
Bp2
N2
Pk
LSh
HSh
11+N*5 - Band's filter frequency
12+N*5 - Band's filter gain
13+N*5 - Band's filter Q (bandwidth or resonance)
14+N*5 - reserved
Where N represents the band being adjusted (starting from zero)
Back to NRPN types
Back to NRPN Data values Back to top
Direct Part Control
Data MSB is the control to be managed, and LSB the value to set.
0 - Part number (this must be set first)
1 - Program Change
2 - Controller number (0 - 119)
3 - Controller value
4 - Channel number for this part
(0 - 15) select for all messages
(16 - 31) select for note off only
(32 - 47) mute
5 * - Audio destination (0 - 2) main/part/both
8 - Send part output the System effect 1
9 - Send part output the System effect 2
10 - Send part output the System effect 3
11 - Send part output the System effect 4
64 * - Key shift (28 - 100) gives -36 to +36
* requires the part to be enabled
Vector Control
Data MSB Options:
0 - X sweep CC
1 - Y sweep CC
2 - Enable X features
3 - Enable Y features
Data LSB Features:
1 = fixed as Volume
2 = default is Pan
4 = default is Filter Cutoff (Brightness)
8 = default is Mod Wheel
18 = Reversed Pan
36 = Reversed Filter Cutoff
72 = Reversed Mod Wheel
Setting the sweep CC for X enables vector control. It also sets, but doesn't enable the default X features.
Setting the sweep CC for Y sets, but doesn't enable the default Y features.
If you don't enable any features not a lot will happen! The numbers are chosen so they can be combined. So, 5 would be Volume + Brightness and 19 would be Volume + Reversed Pan
Additional Settings

MSB | LSB
--- | ---
4 | x1 instrument ID
5 | x2 instrument ID
6 | y1 instrument ID
7 | y2 instrument ID

IDs are instruments from the current bank.

MSB | LSB
--- | ---
8 | Alternate CC for X feature 2
9 | Alternate CC for X feature 4
10 | Alternate CC for X feature 8
11 | Alternate CC for Y feature 2
12 | Alternate CC for Y feature 4
13 | Alternate CC for Y feature 8

These additional controls for changing the actual feature actions are unique to NRPNs. They are not available to either the GUI or the CLI.

System Settings

Data MSB | Data LSB | Function | Notes
--- | --- | --- | ---
2 | 28 - 100 | Master key shift | shift = LSB - 64
7 |  | Master volume
64 - 79 | 28 - 100 | Channel key shift | channel = MSB - 64, shift = LSB - 64
80 | 0, 32, 127 | CC for Root path | 127 disables
81 | 32, 0, 127 | CC for Bank path | 127 disables
82 |  | Enable program change | less than 64 disables
84 |  | Set CC control for extended program change | greater than 119 disables
85 | 16, 32, 64 | Set the number of available parts
86 | 0 | Save all dynamic settings

Loading from History Lists
For all of these, the Data LSB is the list index number in the range 0 - 24. However, if there aren't that many entries in the list, for those that don't exist an error will be reported.
For instruments, the Data MSB is the part number to load to. If a value greater than 63 is given, the instrument will be loaded to the last part number seen by the NRPN system. If none were seen, the command will be ignored.
For Vectors, the Data MSB is the base channel to install it on. If a value greater than 15 is set, it will be loaded to the base channel it was originally saved from.
For all of the others Data MSB should be set to zero.

Back to Direct Part Back to NRPN types
Back to Vectors Back to NRPN Data values
Back to top