Before proceeding with this article, you may want to read my article on The architecture of Roland Sound Modules. It has a general overview of the design of typical Roland Sound Modules.

In the typical Roland user's manual, there is a chapter entitled MIDI Implementation. This chapter lists the details of how the unit responds to MIDI messages sent to it, as well as what MIDI messages the unit is capable of generating (if any) and sending to some other MIDI device (such as a sequencer).

I'm now going to walk you through the MIDI Implementation chapter of the Roland JV-90, to show you how to interpret a typical Roland MIDI Implementation chapter. The JV-90 has a built-in multi-timbral sound module which is capable of responding to many different MIDI messages. It also has a keyboard which is capable of generating many different kinds of MIDI messages (to its built-in sound module or other MIDI units). Many Roland sound modules share somewhat similiar architectures, and Roland tends to use the same syntax in its user manuals, so this exercise is applicable to many Roland sound modules. Although the Roland remarks and MIDI particulars I'll be showing you here are specific to the JV-90, you'll likely find many similiarities to the MIDI Implementation chapter in the manual for other Roland modules.

I'll be showing you exactly what is printed in the manual, and then adding my own comments immediately to the left of each line that I've taken from the manual. My comments will have a different color background than the line from the manual. Here's a typical example:

The exact line in the manual:My comment about this line:
Control ChangeThis indicates the start of the sub-section where all of the MIDI controllers are listed.

The MIDI Implementation chapter is divided into 4 main sections.

The first main section is entitled RECEIVE DATA. This is the section that tells what MIDI messages your unit can understand being sent to it by another device, and what it can do with each of those received messages. (ie, This section lists what MIDI messages it can receive and do something with).

The second main section is entitled TRANSMIT DATA. This lists all of the MIDI messages that your unit is capable of generating when you operate it. (ie, It lists all of the MIDI messages that your unit can create and send to other MIDI units). Upon Roland sound modules that can't function as a controller of other devices, or which have no capability to dump their settings to another device, there may be no TRANSMIT DATA section. (ie, The sound module has no capability to generate MIDI messages on its own).

Each of these main sections is divided into subsections, where each subsection is dedicated to a type of MIDI message, starting with "Note Off" type of MIDI messages, and going all of the way to "System Exclusive" (and sometimes "System Realtime" messages such as MIDI Start, Stop, and Clock if the unit has some sort of onboard sequencer or arpeggiator). For example, the first subsection will most likely be entitled "Note Off", and it will list information about what your unit does when it receives or transmits Note Off messages.

Incidentally, an "H" appended to some numeric value means that it is expressed as hexadecimal, not a decimal, number. For example, 7FH means 7F hexadecimal, which is 127 decimal. Use your Windows calculator in scientific mode to easily enter hex values and convert them to decimal, and vice versa).

The third and fourth main sections are dedicated to giving the excruciating details of the JV-90's System Exclusive data dumps. The JV-90 can dump all of its patch, performance, effects, etc, settings over MIDI using System Exclusive messages. Those settings can then be saved upon some storage device. The JV-90 can also accept such a dump to restore its settings to those previously saved values. In fact, every single parameter on the JV-90 which can be changed manually by you from the JV-90's front panel can also be changed over MIDI by sending a System Exclusive message to the JV-90. This System Exclusive message will contain info that tells what parameter to change, and what its new value should be.

1. RECEIVE DATA

This indicates the start of the RECEIVE DATA main section.

Channel Voice Message This indicates that what follows is info about the types of messages that can be broadcast upon particular MIDI channels. Such types of messages are Note Off and On, Aftertouch, Channel Pressure, all of the Controller messages, Program Change, and Pitch Wheel.

Note off Indicates that what follows is how my JV-90 handles Note Off messages it receives.
StatusSecondThird Shows the format for a MIDI Note Off message. There are two versions of it. Both have 3 bytes. The Status is the first byte. The Second is the note number. The third is the velocity amount for the note.



8nHkkHvvH Here's the first version of a Note Off message. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The kk means that it can be any note number within a range of values. The allowable range of values will be shown later. The vv means that it can be any velocity within a range of values. The allowable range of values will be shown later.
9nHkkH00H Here's the second version of a Note Off. It's actually a Note On message with the velocity byte always set to 0.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 can recognize Note Off messages upon any of the 16 MIDI channels).
kk = Note number:00H - 7FH (0 - 127) Indicates that the allowable range for note number is 0 to 127. (ie, The JV-90 can recognize the full range of note numbers).
vv = velocity:00H - 7FH (0 - 127) Indicates that the allowable range for velocity is 0 to 127. (ie, The JV-90 can recognize the full range for note velocity).
In the Performance mode, ignored when the MIDI receive switch is OFF at each Part. This is a comment about how the JV-90 handles MIDI Note Off messages it receives. All this is saying is that if you turn a Part off, it no longer "plays" MIDI Note Off messages. Duh!
In the Rhythm Part, ignored when "ENV Mode" is "NO-SUSTAIN" at each Rhythm Tone. Another comment about how the JV-90 handles MIDI Note Off messages it receives. All this is saying is that unless you set a particular drum sound to sustain, then the drum kit doesn't really concern itself with Note Off messages.

Note on Indicates that what follows is how my JV-90 handles Note On messages it receives.
StatusSecondThird Shows the format for a MIDI Note On message. It has 3 bytes. The Status is the first byte. The Second is the note number. The third is the velocity amount for the note.



9nHkkHvvH The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The kk means that it can be any note number within a range of values. The allowable range of values will be shown later. The vv means that it can be any velocity within a range of values. The allowable range of values will be shown later.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 can recognize Note On messages upon any of the 16 MIDI channels).
kk = Note number:00H - 7FH (0 - 127) Indicates that the allowable range for note number is 0 to 127. (ie, The JV-90 can recognize the full range of note numbers).
vv = velocity:00H - 7FH (0 - 127) Indicates that the allowable range for velocity is 0 to 127. (ie, The JV-90 can recognize the full range for note velocity).
In the Performance mode, ignored when the MIDI receive switch is OFF at each Part. This is a comment about how the JV-90 handles MIDI Note On messages it receives. All this is saying is that if you turn a Part off, it no longer "plays" MIDI Note On messages. Duh!

Control Change Indicates that what follows is how my JV-90 handles Controller messages it receives. This subsection is typically quite long because it is divided up into numerous sub-subsections, where each sub-subsection is a different MIDI Controller, for example Bank Select, Mod Wheel, Pan, Volume, etc.

Bank Select MSB/LSB Indicates that what follows is how my JV-90 handles Bank Select Controller messages it receives (both the coarse message and the fine message).
StatusSecondThird Shows the format for a Bank Select Controller message. There are two messages -- one for coarse adjustment and one for fine adjustment. Both have 3 bytes. The Status is the first byte. The Second is the controller number. The third is the value for the controller.



BnH00HmmH Here's the Bank Select message for coarse adjust. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The second byte is always 00. The mm means that the coarse value can be any value within a range of values. The allowable range of values will be shown later.
BnH20HllH Here's the Bank Select message for fine adjust. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The second byte is always 20. The ll means that the fine value can be any value within a range of values. The allowable range of values will be shown later.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 can recognize Controller messages upon any of the 16 MIDI channels).
mm = MSB of bank number:50H - 54H (80 - 84) Indicates the allowable range for coarse value. There are 5 allowable values, 80, 81, 82, 83, and 84. The chart below shows you which one of those coarse values, when used in conjunction with one of the allowable fine values, selects which bank.
ll = LSB of bank number:00H - 7FH (0 - 127) Indicates that the allowable range for the fine value is 0 to 127.
The Bank Select is suspended until receiving a program change. This is a comment about how the JV-90 handles Bank Select messages it receives. All this is saying is that until you actually follow up the Bank Select messages with a Program Change message, the patch doesn't change.
Ignored when "Program bank sel" of the system common is OFF. Another comment about how the JV-90 handles Bank Select messages it receives. All this is saying is that if you go into the "System Common" settings of the JV-90, there's a setting called "Program bank sel". If you set this to off, then the JV-90 ignores Bank Select messages it receives.
In the patch mode, selected a bank of the patch memory. In the performance mode, selected a bank of the performance part memory. And specified the control channel, selected a bank of the performance part memory. If you're in patch mode, and the JV-90 receives a Bank Select, it will use this (in conjunction with a following Program Change message) to select a new patch that the keyboard plays. If you're in Performance mode, and the JV-90 receives a Bank Select, what happens depends upon whether you have the Control Channel enabled and then whether the Bank Select is transmitted on that channel. If so, then the Bank Select is used to change to another Performance among several Banks of Performances. Otherwise, the Bank Select is used to change the patch assigned to one of the Parts in the currently selected Performance. Which part? Well, the part that is assigned to the same MIDI channel as the Bank Select message was sent upon.
The bank number specified as follow. This is just telling you that below this is now a chart that shows you what specific coarse and fine bank numbers to use, in conjunction with what Program Change numbers, to select specific patches in certain components upon the JV-90. For example, what Bank Select fine and coarse numbers do you use, and what Program Change number do you use, to select the first patch in the "Preset B" bank? According to the chart below, that would be a coarse bank number of 81, a fine bank number of 1, and a Program Change number of 65. The article Changing patches over MIDI using Bank Select Controller has a more indepth explanation and example using the below JV-90 Patch chart. The JV-90's use of Bank Select controller is similiar to other Roland Sound Modules, and may help you in understanding how to utilize your own manual's Patch chart.
8001 - 64Internal(#1 - #64)
80065 - 128Data Card(#1 - #64)
8101 - 64JV-80 Preset A(#1 - #64)
81065 - 128JV-80 Preset B(#1 - #64)
8111 - 64Preset A(#1 - #64)
81165 - 128Preset B(#1 - #64)
8121 - 64Preset C(#1 - #64)
81265 - 128Preset D(#1 - #64)
8201 - 64Data Card(#1 - #64)
8301 - 128PCM Card(#1 - #128)
8401 - 128Expansion Board(#1 - #128)
8411 - 128Expansion Board(#129 - #256)

Modulation Indicates that what follows is how my JV-90 handles Modulation Controller messages it receives.
StatusSecondThird Shows the format for a Modulation Controller message. The JV-90 uses only the message for coarse adjustment. It has 3 bytes. The Status is the first byte. The Second is the controller number. The third is the value for the controller.



BnH01HvvH Here's the Modulation message for coarse adjust. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The second byte is always 01. The vv means that the coarse value can be any value within a range of values. The allowable range of values will be shown later.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 can recognize Controller messages upon any of the 16 MIDI channels).
vv = Modulation depth:00H - 7FH (0 - 127) Indicates the allowable range for coarse value. Supports the full coarse range of Mod depth.
The effect of the modulation depends on the value of "Mod1 - 4" of the patch tone. This is a comment about how the JV-90 handles Modulation messages it receives. All this is saying is that the modulation can be set to affect upto 4 different Tone parameters simultaneously, for example the Tone's tuning in order to achieve a vibrato effect, and/or the Tone's filter cutoff to achieve a growl effect, etc.
Ignored when "Receive Modulation" of the system common is OFF. All this is saying is that if you go into the "System Common" settings of the JV-90, there's a setting called "Receive Modulation". If you set this to off, then the JV-90 ignores Modulation messages it receives.

Portamento time Indicates that what follows is how my JV-90 handles Portamento time Controller messages it receives.
StatusSecondThird Shows the format for a Portamento time Controller message. The JV-90 uses only the message for coarse adjustment. It has 3 bytes. The Status is the first byte. The Second is the controller number. The third is the value for the controller.



BnH05HvvH Here's the Portamento time message for coarse adjust. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The second byte is always 05. The vv means that the coarse value can be any value within a range of values. The allowable range of values will be shown later.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 can recognize Controller messages upon any of the 16 MIDI channels).
vv = Portamento time:00H - 7FH (0 - 127) Indicates the allowable range for coarse value. Supports the full coarse range of Portamento time.
You can adjust the portamento time of the patch common. This is a comment about how the JV-90 Portamento time setting. All this is saying is that there is a setting in the "Patch Common" screen to set the default Portamento time for a patch (although the Portamento time can be changed at any time by a Portamento time controller message).
Ignored when "Receive Control change" of the system common is OFF. All this is saying is that if you go into the "System Common" settings of the JV-90, there's a setting called "Receive Control change". If you set this to off, then the JV-90 ignores Portamento time messages it receives.

Volume Indicates that what follows is how my JV-90 handles Volume Controller messages it receives.
StatusSecondThird Shows the format for a Volume Controller message. The JV-90 uses only the message for coarse adjustment. It has 3 bytes. The Status is the first byte. The Second is the controller number. The third is the value for the controller.



BnH07HvvH Here's the Volume message for coarse adjust. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The second byte is always 07. The vv means that the coarse value can be any value within a range of values. The allowable range of values will be shown later.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 can recognize Controller messages upon any of the 16 MIDI channels).
vv = Volume:00H - 7FH (0 - 127) Indicates the allowable range for coarse value. Supports the full coarse range of Volume.
You can adjust the volume of specified channel. This is a comment about Volume controller messages. All this is saying is that this volume controls the volume of all Note messages upon the same channel as the Volume controller is sent upon.
Ignored when "Receive Volume" of the system common is OFF. All this is saying is that if you go into the "System Common" settings of the JV-90, there's a setting called "Receive Volume". If you set this to off, then the JV-90 ignores Volume messages it receives.
In the performance mode, ignored when volume receive switch is OFF at each part. All this is saying is that you can choose to have an individual Part (of a Performance) ignore Volume controller messages (whereas the other Parts in the same Performance perhaps may not). There is such a setting in one of the screens for editing a Performance.
Ignored when "Volume switch" of the patch tone is OFF. All this is saying is that you can choose to have a Tone (used in a patch) itself ignore Volume controller messages (whereas the other Tones in the same patch perhaps may not). There is such a setting in one of the screens for editing a Tone.

Pan Indicates that what follows is how my JV-90 handles Pan Controller messages it receives.
StatusSecondThird Shows the format for a Pan Controller message. The JV-90 uses only the message for coarse adjustment. It has 3 bytes. The Status is the first byte. The Second is the controller number. The third is the value for the controller.



BnH0AHvvH Here's the Pan message for coarse adjust. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The second byte is always 0A. The vv means that the coarse value can be any value within a range of values. The allowable range of values will be shown later.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 can recognize Controller messages upon any of the 16 MIDI channels).
vv = Pan:00H - 7FH (0 - 127) Indicates the allowable range for coarse value. Supports the full coarse range of Pan.
"0" represents left end, "64" represents the center, and "127" represents the right end. This is a comment about Pan controller messages. All this is saying is that a 0 value pans the sound all of the way to the left speaker. 64 pans it center. (And therefore values inbetween 64 and 0 would pan it increasingly to the left). 127 pans it all of the way to the right speaker. (And therefore values inbetween 65 and 127 would pan it increasingly to the right).
Ignored when "Receive Control change" of the system common is OFF. All this is saying is that if you go into the "System Common" settings of the JV-90, there's a setting called "Receive Control change". If you set this to off, then the JV-90 ignores Pan messages it receives.

Expression Indicates that what follows is how my JV-90 handles Expression Controller messages it receives.
StatusSecondThird Shows the format for an Expression Controller message. The JV-90 uses only the message for coarse adjustment. It has 3 bytes. The Status is the first byte. The Second is the controller number. The third is the value for the controller.



BnH0BHvvH Here's the Expression message for coarse adjust. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The second byte is always 0B. The vv means that the coarse value can be any value within a range of values. The allowable range of values will be shown later.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 can recognize Controller messages upon any of the 16 MIDI channels).
vv = Expression:00H - 7FH (0 - 127) Indicates the allowable range for coarse value. Supports the full coarse range of Expression.
The effect of the expression depends on the value of "Exp1 - 4" of the patch tone. This is a comment about how the JV-90 handles Expression messages it receives. All this is saying is that the expression can be set to affect upto 4 different Tone parameters simultaneously, for example the Tone's tuning in order to achieve a vibrato effect, and/or the Tone's filter cutoff to achieve a growl effect, etc.
Ignored when "Receive Control change" of the system common is OFF. All this is saying is that if you go into the "System Common" settings of the JV-90, there's a setting called "Receive Control change". If you set this to off, then the JV-90 ignores Expression messages it receives.

Hold 1 Indicates that what follows is how my JV-90 handles Hold 1 Controller messages it receives.
StatusSecondThird Shows the format for a Hold 1 Controller message. It has 3 bytes. The Status is the first byte. The Second is the controller number. The third is the value for the controller.



BnH40HvvH Here's the Hold 1 message. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The second byte is always 40. The vv means that the coarse value can be any value within a range of values. The allowable range of values will be shown later.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 can recognize Controller messages upon any of the 16 MIDI channels).
vv = Control value:00H - 7FH (0 - 127) 0 - 63 = OFF 64 - 127 = ON Indicates the allowable range. Any value from 0 to 63 means that the Hold pedal is off. Any value from 64 to 127 means Hold pedal is on.
Notes played can be sustained for as long as the time that elapses between turning hold on and turning hold off. All this is saying is that notes get sustained for as long as the Hold 1 pedal is on. Duh!
Ignored when "Receive Control change" of the system common is OFF. All this is saying is that if you go into the "System Common" settings of the JV-90, there's a setting called "Receive Control change". If you set this to off, then the JV-90 ignores Hold 1 messages it receives.
In the rhythm part (part8), ignored when "ENV mode" is "NO - SUSTAIN" at each rhythm tone. All this is saying is that for any drum sound that you set to "NO SUSTAIN", then the Hold 1 pedal has no effect upon the drum sound (ie, can't be used to sustain the drum sound).
Ignored when "Hold - 1 switch" of the patch tone is OFF. All this is saying is that you can choose to have a Tone (used in a patch) itself ignore Hold 1 controller messages (whereas the other Tones in the same patch perhaps may not). There is such a setting in one of the screens for editing a Tone.

Portamento Indicates that what follows is how my JV-90 handles Portamento (On/Off) Controller messages it receives.
StatusSecondThird Shows the format for a Portamento Controller message. It has 3 bytes. The Status is the first byte. The Second is the controller number. The third is the value for the controller.



BnH41HvvH Here's the Portamento message. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The second byte is always 41. The vv means that the coarse value can be any value within a range of values. The allowable range of values will be shown later.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 can recognize Controller messages upon any of the 16 MIDI channels).
vv = Control value:00H - 7FH (0 - 127) 0 - 63 = OFF 64 - 127 = ON Indicates the allowable range. Any value from 0 to 63 means that the Portamento is off. Any value from 64 to 127 means Portamento is on.
Switched over "Portamento sw" of patch common. This is a comment about how the JV-90 handles received Portamento messages. All this is saying is that the Portamento On/Off controller message overrides the default setting in the patch common screen for whether portamento is turned on or off.
Ignored when "Receive Control change" of the system common is OFF. All this is saying is that if you go into the "System Common" settings of the JV-90, there's a setting called "Receive Control change". If you set this to off, then the JV-90 ignores Portamento messages it receives.

Effect1 depth (Reverb send level) Indicates that what follows is how my JV-90 handles Effect1 Controller messages it receives. The JV-90 uses this controller to turn the reverb on or off.
StatusSecondThird Shows the format for a Effect1 Controller message. It has 3 bytes. The Status is the first byte. The Second is the controller number. The third is the value for the controller.



BnH5BHvvH Here's the Effect1 message. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The second byte is always 5B. The vv means that the coarse value can be any value within a range of values. The allowable range of values will be shown later.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 can recognize Controller messages upon any of the 16 MIDI channels).
vv = Control value:00H - 7FH (0 - 127) 0 - 63 = OFF 64 - 127 = ON Indicates the allowable range. Any value from 0 to 63 means that Reverb is off. Any value from 64 to 127 means Reverb is on.
In the patch mode, switched over reverb switch of the system common. This is a comment about how the JV-90 handles received Effect1 messages. All this is saying is that, when you're in patch play mode, the Effect1 controller message overrides the default setting in the system common screen for whether reverb is turned on or off for the patch.
In the performance mode, switched over reverb switch of the performance. Each part (of a performance) has a default setting for whether its reverb is turned on or off. The Effect1 controller message overrides this default setting.
Ignored when "Receive Control change" of the system common is OFF. All this is saying is that if you go into the "System Common" settings of the JV-90, there's a setting called "Receive Control change". If you set this to off, then the JV-90 ignores Effect1 messages it receives.

Effect3 depth (Chorus send level) Indicates that what follows is how my JV-90 handles Effect3 Controller messages it receives. The JV-90 uses this controller to turn the Chorus on or off.
StatusSecondThird Shows the format for a Effect3 Controller message. It has 3 bytes. The Status is the first byte. The Second is the controller number. The third is the value for the controller.



BnH5DHvvH Here's the Effect1 message. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The second byte is always 5D. The vv means that the coarse value can be any value within a range of values. The allowable range of values will be shown later.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 can recognize Controller messages upon any of the 16 MIDI channels).
vv = Control value:00H... 7FH (0 - 127) 0 - 63 = OFF 64 - 127 = ON Indicates the allowable range. Any value from 0 to 63 means that Chorus is off. Any value from 64 to 127 means Chorus is on.
In the patch mode, switched over chorus switch of the system common. This is a comment about how the JV-90 handles received Effect3 messages. All this is saying is that, when you're in patch play mode, the Effect3 controller message overrides the default setting in the system common screen for whether chorus is turned on or off for the patch.
In the performance mode, switched over chorus switch of the performance. Each part (of a performance) has a default setting for whether its chorus is turned on or off. The Effect3 controller message overrides this default setting.
Ignored when "Receive Control change" of the system common is OFF. All this is saying is that if you go into the "System Common" settings of the JV-90, there's a setting called "Receive Control change". If you set this to off, then the JV-90 ignores Effect3 messages it receives.

RPN MSB/LSB Indicates that what follows is how my JV-90 handles Registered Parameter Number Controller messages it receives (both the coarse message and the fine message). See the article Registered and Non-registered Parameter Number controllers for more information on using Data Entry in conjunction with RPN or NRPN.
StatusSecondThird Shows the format for an RPN Controller message. There are two messages -- one for coarse adjustment and one for fine adjustment. Both have 3 bytes. The Status is the first byte. The Second is the controller number. The third is the value for the controller (ie, the low or high bits of the parameter number).



BnH65HmmH Here's the RPN message for coarse adjust. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The second byte is always 65. The mm means that the coarse value can be any value within a range of values. The allowable range of values will be shown later.
BnH64HllH Here's the RPN message for fine adjust. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The second byte is always 64. The ll means that the fine value can be any value within a range of values. The allowable range of values will be shown later.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 can recognize Controller messages upon any of the 16 MIDI channels).
mm = MSB of the specified parameter by RPN The Registered Parameter numbers that the JV-90 recognizes will be listed later in the manual.
ll = LSB of the specified parameter by RPN The Registered Parameter numbers that the JV-90 recognizes will be listed later in the manual.

Data entry MSB/LSB Indicates that what follows is how my JV-90 handles Data entry (slider) Controller messages it receives (both the coarse message and the fine message). See the article Registered and Non-registered Parameter Number controllers for more information on using Data Entry in conjunction with RPN or NRPN.
StatusSecondThird Shows the format for an Data entry Controller message. There are two messages -- one for coarse adjustment and one for fine adjustment. Both have 3 bytes. The Status is the first byte. The Second is the controller number. The third is the value for the controller (ie, the low or high bits of a value for some RPN or NRPN).



BnH06HmmH Here's the Data entry message for coarse adjust. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The second byte is always 06. The mm means that the coarse value can be any value within a range of values.
BnH26HllH Here's the Data entry message for fine adjust. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The second byte is always 26. The ll means that the fine value can be any value within a range of values.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 can recognize Controller messages upon any of the 16 MIDI channels).
mm = MSB of the value of the parameter specified with RPN The "high" bits of the value for some RPN.
ll = LSB of the value of the parameter specified with RPN The "low" bits of the value for some RPN.

** RPN ** The chart that follows lists all of the Registered Parameter Numbers that the JV-90 understands. It understands 4 RPNs -- Pitch Range, Fine Tuning, Coarse Tuning, and RPN Reset. The values of any of these 4 RPN settings can be changed with Data entry controller messages.
RPNData entryDescriptionThe chart had 3 columns. The first shows you the coarse and fine controller numbers to send (via the 2 RPN controllers) in order to select this Parameter. The second shows you the allowable range of coarse and fine values to which you can set this Parameter (using the 2 Data Slider controllers). The last column tells you what the parameter is, gives additional info about its range of allowable values, and any remarks about the Parameter.

MSB LSBMSB LSB

00H 00HmmH --Pitch bend sensitivityThis is the Parameter to set the range of the pitch wheel.
mm : 00H - 0CH (0 - 12 semitones)You can set its value anywhere between 0 and 12, where 0 means no pitch wheel transpose at all, and 12 gives you the maximum range of up and down an octave. For example, a 2 gives you a range up and down a whole step.
ll : IgnoredThe Data Slider fine controller is not used to set pitch range. Only the Data Slider coarse controller (ie, 06) is used to set the range.
(Up to one octave)As noted, the maximum value is 12, which gives a range of up and down an octave.
* You can adjust "Bend range up" and "Bend range down" at the same timeWhen you send a value for Pitch bend range, it sets both the amount that the wheel transposes up as well as down by the same amount. In other words, you can't set it to transpose up an octave, but down only a whole step.
* In the Rhythm part, this message is not recognized.You can't set the pitch wheel transpose range for the drum part. You can set it only for the other parts of a performance (and each part has its own range setting), or a patch.
00H 01HmmH llHFine tuningThis is the Parameter to set the Master tuning in cents.
mm, ll : 20H, 00H - 40H, 00H - 60H, 00H (-50 - 0 - +50 cents)You can set its value a maximum of 50 cents up or down. For -50 cents, you send a coarse value of 20 and fine value of 00. For centered tuning (ie, 0 offset), send coarse = 40 and fine = 00. For +50 cents, send coarse = 60 and fine = 00.
* In the patch mode, adjusted the master tune.When in patch play mode, you set the master tune. (ie, When you switch patches, the same tuning setting will stick until you set a different value for Fine tuning).
* In the performance mode, adjusted fine tune for each part.In performance play, each part has its own Fine tuning setting. So although all of the patches you use with that part will be fine tuned by this amount, those same patches used with other parts will not be.
* In the performance mode, specified control channel, changed the master tune.In performance play, if you've got the control channel enabled, and you send RPN and Data Sliders on that channel, THEN it sets the master tune. In other words, all parts will be fine tuned by that amount. Otherwise, you'd have to fine tune each part separately.
00H 00HmmH --Coarse tuningThis is the Parameter to set the Master transpose in half steps. I prefer to call this parameter "Transpose Amount".
mm : 10H - 40H - 70H (-48 - 0 - +48 semitones)You can set its value up or down a maximum of 48 half steps. For -48 steps, you send a coarse value of 10. For centered tuning (ie, 0 transpose), send coarse = 40. For +48 half steps, send coarse = 70.
ll : IgnoredThe Data Slider fine controller is not used to set Transpose Amount. Only the Data Slider coarse controller (ie, 06) is used to set the Transpose Amount.
* In the patch mode, this message is not recognized.When in patch play mode, this message doesn't change the Transpose Amount. You can't set this parameter over MIDI when in patch play mode.
* In the performance mode, adjusted coarse tune for each part.In performance play, each part has its own Transpose Amount setting. So although all of the patches you use with that part will be transposed by this amount, those same patches used with other parts will not be.
7FH 7FH-- --RPN resetThis is sort of a non-existant Parameter. When you select this parameter, all it means is that any subsequent Data Slider controllers will be ignored. That way, you won't accidentally have them change any one of the above 3 Parameters that can be changed via Data Slider controllers.
mm, ll : IgnoredLike I said, the whole point of selecting this Parameter is just to force the JV-90 to ignore all subsequent Data Slider messages.
* Return to no specified parameter of RPN. Current setting value is no change.This pigeon english is struggling to tell you what I just did above. Honest.

Program Change Indicates that what follows is how my JV-90 handles Program Change messages it receives. The JV-90 uses this message in conjunction with Bank Select controllers to change patches.
StatusSecond Shows the format for a Program Change message. It has 2 bytes. The Status is the first byte. The second is the program number.


CnHpp Here's the Program Change message. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The pp means that the value can be any value within a range of values. The allowable range of values will be shown later.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 can recognize Program Change messages upon any of the 16 MIDI channels).
pp = Program number:00H - 7FH (prog.1 - prog.128) Indicates the allowable range. The full range of program numbers is supported. Note that program #1 is sent in the Program Change message as a 0 value.
Ignored when "Receive Program change" of the system common is OFF. All this is saying is that if you go into the "System Common" settings of the JV-90, there's a setting called "Receive Program change". If you set this to off, then the JV-90 ignores Program Change messages it receives.
When the JV-90 receives a program change on a part receive channel while in the performance mode, it changes the patches of that part: the new patch value being the program number plus 1. If the JV-90 receives the program change on the control channel, it changes the performance. Pretty self-explanatory. In patch mode, Program Change changes to another patch. In performance play mode, each Part has its own patch assignment. So you can use a Program Change message to change the patch for each part individually. If you got the control channel enabled, and you send the Program Change on that channel, then it changes to another Performance instead.

Channel Pressure Indicates that what follows is how my JV-90 handles Channel Pressure messages it receives. The JV-90 can use this message for a variety of purposes from adjusting the volume of notes while they are being sustained, to adding vibrato, etc.
StatusSecond Shows the format for a Channel Pressure message. It has 2 bytes. The Status is the first byte. The second is the pressure amount.


DnHvv Here's the Channel Pressure message. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The vv means that the value can be any value within a range of values. The allowable range of values will be shown later.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 can recognize Channel Pressure messages upon any of the 16 MIDI channels).
vv = Pressure value:00H... 7FH (0 - 127) Indicates the allowable range. The full range of Channel Pressure is supported.
The effect of Channel pressure depends on the value of "After1 - 4" of the patch tone. This is a comment about how the JV-90 handles Channel Pressure messages it receives. All this is saying is that the pressure amount can be set to affect upto 4 different Tone parameters simultaneously, for example the Tone's tuning in order to achieve a vibrato effect, and/or the Tone's filter cutoff to achieve a growl effect, etc.
Ignored when "Receive Aftertouch" of the system common is OFF. All this is saying is that if you go into the "System Common" settings of the JV-90, there's a setting called "Receive Aftertouch". If you set this to off, then the JV-90 ignores Channel Pressure messages it receives.

Pitch bend change Indicates that what follows is how my JV-90 handles Pitch Wheel messages it receives.
StatusSecondThird Shows the format for a Pitch Wheel message. It has 3 bytes. The Status is the first byte. The Second is the coarse pitch change. The third is the fine pitch change.



EnHmmHllH Here's the Pitch Wheel message. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The mm means that the coarse value can be any value within a range of values. The allowable range of values will be shown later. The ll means that the fine value can be any value within a range of values. The allowable range of values will be shown later.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 can recognize Pitch Wheel messages upon any of the 16 MIDI channels).
mm, ll = Pitch bend change:00H, 00H - 7FH, 7FH (-8192 - 0 - +8191) Indicates the allowable range. Supports the full range for Pitch Wheel.
Ignored when "Receive Pitch bend" of the system common is OFF. All this is saying is that if you go into the "System Common" settings of the JV-90, there's a setting called "Receive Pitch bend". If you set this to off, then the JV-90 ignores Pitch Wheel messages it receives.

Channel Mode Message This indicates that what follows is info about the types of messages that can change the JV-90's MIDI modes. This subsection is sort of out of place since these are all controller messages that can be broadcast upon particular MIDI channels. They really should have been listed under the Controller messages.

Reset All Controllers Indicates that what follows is how my JV-90 handles a Reset All Controllers message it receives. This message is used to reset several other Controllers to their default values.
StatusSecondThird Shows the format for a Reset All Controllers message. It has 3 bytes.



BnH79H00H Here's a Reset All Controllers message. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The second byte is always 79 and the third byte is always 00.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 can recognize Controller messages upon any of the 16 MIDI channels).
Received this message. The controllers is set the following. Ouch! More pigeon english! All this is saying is that the following chart shows you which Controllers are reset by a Reset All Controllers message, and what their default values are.
ControllerValue The chart lists the Controller's name on the right, and its respective default value on the left.

Modulation0 (off) The Mod wheel is reset to its minimum position.
Volume127 (maximum) Volume is reset to maximum.
Pan64 (center) Pan is reset to center.
Expression0 (off) Expression is reset to minimum (ie, no effect applied).
Hold10 (off) The Hold pedal is released. (ie, Notes stop sustaining).
Channel pressure0 (off) Channel pressure is reset to minimum (ie, no effect applied).
Pitch bend change+/- 0 (center) The Pitch Wheel is reset to center position.
RPNNo specified parameter None of the Registered Parameter Numbers are reset by a Reset All Controllers message. For example, the Pitch Wheel Bend Range isn't reset to its default state (ie, when the unit was turned on).

Local control Indicates that what follows is how my JV-90 handles a Local control message it receives. This message is used to turn the keyboard on or off (ie, have it directly play its internal sound module or not).
StatusSecondThird Shows the format for a Local control message. It has 3 bytes.



BnH7AHvvH Here's a Local control message. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The second byte is always 7A. (The JV-90 manual has a typo and shows it incorrectly as 7B). The third byte is a 0 for "off" or 127 for "on".
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 can recognize Controller messages upon any of the 16 MIDI channels).
vv = value:00H, 7FH (0, 127) 0=OFF 127=ON See above.

All notes off Indicates that what follows is how my JV-90 handles an All notes off message it receives. This message is used to turn off all sustaining notes (although if the Hold1 controller is still on, they won't stop sounding).
StatusSecondThird Shows the format for an All notes off message. It has 3 bytes.



BnH7BH00H Here's an All notes off message. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The second byte is always 7B, and the third byte is always 00.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 can recognize Controller messages upon any of the 16 MIDI channels).
When this message is recognized, all the notes which have been turned on by MIDI note on message are turned off.Yeah, I already told you that above.

OMNI OFF Indicates that what follows is how my JV-90 handles an OMNI OFF message it receives. This message is normally used to allow a unit to not respond to all 16 MIDI channels. But, the JV-90 merely uses it as if it were nothing more than an All notes off message.
StatusSecondThird Shows the format for an OMNI OFF message. It has 3 bytes.



BnH7CH00H Here's an OMNI OFF message. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The second byte is always 7C, and the third byte is always 00.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 can recognize Controller messages upon any of the 16 MIDI channels).
Recognized as All notes off.I already told you that above too.

OMNI ON Indicates that what follows is how my JV-90 handles an OMNI ON message it receives. This message is normally used to allow a unit to respond to all 16 MIDI channels. But, the JV-90 merely uses it as if it were nothing more than an All notes off message.
StatusSecondThird Shows the format for an OMNI ON message. It has 3 bytes.



BnH7DH00H Here's an OMNI ON message. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The second byte is always 7D, and the third byte is always 00.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 can recognize Controller messages upon any of the 16 MIDI channels).
Recognized as All notes off.Guess what? I already told you that above.

MONO Indicates that what follows is how my JV-90 handles a MONO Controller message it receives. This message is used to set the sound module in monophonic state (ie, plays only 1 note at a time). In the JV-90's case, this is referred to as "Solo mode", and each part (of a Performance) can be set to solo mode individually. When in solo mode, a part's portamento and legato settings become effective. Otherwise, they are ignored.
StatusSecondThird Shows the format for a MONO controller message. It has 3 bytes.



BnH7EHvvH Here's a MONO controller message. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The second byte is always 7E. The third byte can be any value in a range of values. The allowable range is shown later.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 can recognize Controller messages upon any of the 16 MIDI channels).
vv = number of mono:0H - FH (0 - 16) Normally this value determines how many voices you wish the JV-90 to stack. But only a value of 1 here is honored.
Switched over "Assign mode" of patch common. All this is saying is that you have a default "Assign mode" setting in the patch common screen. You can set a patch to play in Solo mode, or not, but this message overrides that default setting.
Recognized as All notes off, and set MODE4 (M = 1) at each part. Besides changing a part to "Solo mode", it also turns off all notes that the part may have been sustaining up to that point. Also, what is being said here is that, no matter how many voices you tell the JV-90 to stack, it always uses only 1 voice when it receives a MONO controller message.

POLY Indicates that what follows is how my JV-90 handles a POLY Controller message it receives. This message is used to set the sound module in polyphonic state (ie, plays more than 1 note at a time). In the JV-90's case, this is referred to as "Poly mode", and each part (of a Performance) can be set to poly mode individually. When in poly mode, a part's portamento and legato settings are ignored.
StatusSecondThird Shows the format for a POLY controller message. It has 3 bytes.



BnH7FH00H Here's a POLY controller message. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The second byte is always 7F and the third byte is always 00.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 can recognize Controller messages upon any of the 16 MIDI channels).
Switched over "Assign mode" of patch common. All this is saying is that you have a default "Assign mode" setting in the patch common screen. You can set a patch to play in Poly mode, or not, but this message overrides that default setting.
Recognized as All notes off, and set MODE3 at each part. Besides changing a part to "Poly mode", it also turns off all notes that the part may have been sustaining up to that point.

System Realtime message This indicates that what follows is info about System Realtime types of messages. Such messages include MIDI Clock, MIDI Time Code quarter-frame messages, Song Select, etc. The JV-90 ignores all of them except Active Sense.

Active sensing Indicates that what follows is how my JV-90 handles an Active Sense message it receives. Read the article What's Active Sense? for an indepth explanation of what Active Sense MIDI messages are and what they do.
Status Shows the format for an Active Sense message. It is 1 byte.

FEH The byte is always FE.
When the JV-90 receive "Active sensing"... blah blah blah This is just an explanation of what Active Sense messages do. Read my above article instead.

System Exclusive Message Indicates that what follows is the general format for a JV-90 System Exclusive message. There are many permutations of it since a variety of System Exclusive messages can be sent to the JV-90 to alter nearly any parameter that you can change from the front panel. The details for constructing those messages will be excruciatingly detailed in a later section entitled Exclusive communications. Right here, you're shown the general form of all SysEx messages that the JV-90 recognizes, but some of the "data" fields will have different values depending upon which parameter you're trying to change.
StatusData All this chart is showing you is that a System Exclusive message starts with a F0 byte, then has one or more data bytes following the F0, and finally ends with an F7. That's the MIDI standard for System Exclusive. Hopefully you already know this if you're going to be screwing around with System Exclusive messages.

F0HiiH ddH ....... eeH Don't worry about this ii, dd, ee stuff. All it means is that, according to the MIDI standard for System Exclusive, there can be any number of data bytes here, each set to any value within an allowable range (ie, 0 to 127).
F7H And then of course, there's a final F7 byte.
F0H: System exclusive Whereas the above showed you the MIDI standard for a System Exclusive message, now you're going to see the Roland general form. In Roland SysEx, after the opening F0 byte, the first data byte is always a Manufacturer ID of 41.
ii = Manufacturer ID: 41H (65) Roland's Manufacturer ID is always the first data byte after the F0, and is always 41.
dd .....ee = Data: 00H - 7FH (0 to 127) All this means is that there can be any number of data bytes here, each set to any value within the range 0 to 127.
F7H: EOX (End of exclusive) There's that final F7 byte.
Ignored when "Receive Exclusive" of the system common is OFF. All this is saying is that if you go into the "System Common" settings of the JV-90, there's a setting called "Receive Exclusivee". If you set this to off, then the JV-90 ignores System Exclusive messages it receives.


2. TRANSMIT DATA

This indicates the start of the TRANSMIT DATA main section. This is divided into subsections exactly like the RECEIVE DATA main section. In other words, it typically begins with a NOTE OFF subsection. But here, the info is about how the unit creates Note Off messages. For example, the info here will tell you what range of Note numbers the unit's keyboard is capable of generating, as well as what range of velocities, for Note Off messages. Roland units that have no built-in controller, such as rackmount modules, may not be able to generate MIDI messages, and therefore the manual will omit this section.

Channel Voice Data This indicates that what follows is info about the types of messages that the JV-90 can generate upon particular MIDI channels. Such types of messages are Note Off and On, Aftertouch, Channel Pressure, all of the Controller messages, Program Change, and Pitch Wheel.

Note off Indicates that what follows is how my JV-90 keyboard generates Note Off messages.
StatusSecondThird Shows the format for a MIDI Note Off message. (Note that the JV-90 generates real Note Off messages, rather than using Note On with 0 velocity). It has 3 bytes. The Status is the first byte. The Second is the note number. The third is the velocity amount for the note.



8nHkkHvvH Here's a Note Off message. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The kk means that it can be any note number within a range of values. The allowable range of values will be shown later. The vv means that it can be any velocity within a range of values. The allowable range of values will be shown later.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 keyboard can generate Note Off messages upon any of the 16 MIDI channels).
kk = Note number:00H - 7FH (0 - 127) Indicates that the allowable range for note number is 0 to 127. (ie, The JV-90 keyboard can generate the full range of note numbers. Even though it only has 76 keys, the keyboard can be "transposed" to generate any range of MIDI note numbers).
vv = velocity:00H - 7FH (0 - 127) Indicates that the allowable range for velocity is 0 to 127. (ie, The JV-90 keyboard can generate the full range for note velocity).
In the Performance mode, not transmit when the MIDI transmit switch is OFF at each Part. This is a comment about how the JV-90 keyboard generates MIDI Note Off messages. All this is saying is that the keyboard generates Note Offs only for those MIDI Parts that have their MIDI transmit switch set to on. For example, assume that MIDI Part 1 is assigned to MIDI channel 1 and has its transmit siwtch on. Part 2 is assigned to channel 2 and has its transmit switch off. When you play the JV-90 keyboard, it generates Note Off messages only upon channel 1.

Note on Indicates that what follows is how my JV-90 keyboard generates Note On messages.
StatusSecondThird Shows the format for a MIDI Note On message. It has 3 bytes. The Status is the first byte. The Second is the note number. The third is the velocity amount for the note.



9nHkkHvvH The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The kk means that it can be any note number within a range of values. The allowable range of values will be shown later. The vv means that it can be any velocity within a range of values. The allowable range of values will be shown later.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 keyboard can generate Note On messages upon any of the 16 MIDI channels).
kk = Note number:00H - 7FH (0 - 127) Indicates that the allowable range for note number is 0 to 127. (ie, The JV-90 can recognize the full range of note numbers).
vv = velocity:00H - 7FH (0 - 127) Indicates that the allowable range for velocity is 0 to 127. (ie, The JV-90 keyboard can generate the full range for note velocity).
In the Performance mode, not transmit when the MIDI transmit switch is OFF at each Part. This is a comment about how the JV-90 keyboard generates MIDI Note On messages. All this is saying is that the keyboard generates Note Ons only for those MIDI Parts that have their MIDI transmit switch set to on. For example, assume that MIDI Part 1 is assigned to MIDI channel 1 and has its transmit siwtch on. Part 2 is assigned to channel 2 and has its transmit switch off. When you play the JV-90 keyboard, it generates Note On messages only upon channel 1.

Control Change Indicates that what follows is how my JV-90 generates Controller messages. The JV-90 is capable of generating several types of controller messages. What follows is info about each type of controller it generates.
The function of the Modulation lever is determined by control number 1 (modulation). This is a comment about the JV-90's Modulation lever. All this is saying is that it is hardwired to being controller number 1.
The function of the Hold1 pedal is determined by control number 64 (hold1). This is a comment about the JV-90's Hold1 pedal (jack). All this is saying is that it is hardwired to being controller number 64.
Control numbers 0 - 95 can be assigned to Pedal1, Pedal2, and C1. This is a comment about the other jacks and levers upon the JV-90. All this is saying is that they aren't hardwired to a particular controller number (like the Mod lever and Hold pedal jack are). So, you can change the function that these control. For example, you can take the C1 lever and assign it to controller number 07. That's the controller for Volume. So when you move the C1 lever, it generates MIDI Volume controller messages (and can therefore change the volume of the patch that the keyboard is playing). Or, you can assign the C1 lever to controller number 0A. That's the controller for Pan. So when you move the C1 lever, it now generates MIDI Pan controller messages instead (and can therefore change the pan position of the patch that the keyboard is playing). You can assign the C1 lever to any controller number in the range 0 to 95. See the chart Defined MIDI controllers for a list of all of the defined controller numbers, and what they control. (But note that the JV-90's built-in module responds only to a few of the defined controllers -- only those that were listed under "Control change" in the RECEIVE DATA section. So too, the Pedal 1 and Pedal 2 jacks can be assigned to any of those controller numbers. But note that the Pedal 1 jack can only set a controller to either the value 0 (ie, the pedal is released) or 127 (ie, the pedal is pressed down). Unlike the C1 lever or Pedal 2 jack, the Pedal 1 jack can't generate values inbetween 0 and 127.
StatusSecondThird Shows the format for a Controller message that the JV-90 can generate when the controller number is 0 to 63 or 70 to 95. It has 3 bytes. The Status is the first byte. The Second is the controller number. The third is the value for the controller.



BnHccHvvH The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The cc means that the controller number can be any number within the range of 0 to 63 or 70 to 90. The vv means that the value can be any number within a range of values. The allowable range of values will be shown later.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 can generate Controller messages upon any of the 16 MIDI channels).
cc = Control number: 0H - 3FH, 46H - 5FH (0 - 63, 70 - 95) Indicates the allowable range for controller number. The JV-90 can have its lever and/or pedals assigned to any controller number in the range of 0 to 63 or 70 - 95.
vv = Control value:00H - 7FH (0 - 127) Indicates the allowable range for the controller value. The JV-90 supports full controller range for controller numbers 0 to 63 or 70 to 95.
StatusSecondThird Shows the format for a Controller message that the JV-90 can generate when the controller number is 64 to 69. It has 3 bytes. The Status is the first byte. The Second is the controller number. The third is the value for the controller.



BnHccHvvH The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The cc means that the controller number can be any number within the range 64 to 69. The vv means that the value can be any number within a range of values. The allowable range of values will be shown later.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 can generate Controller messages upon any of the 16 MIDI channels).
cc = Control number: 40H - 45H (64 - 69) Indicates the allowable range for controller number. The JV-90 can have its lever and/or pedals also assigned to any controller number in the range of 64 to 69.
vv = Control value:00H, 7FH (0, 127) Indicates the allowable range for the controller value. The JV-90 sends only the value 0 (ie, Off) or 127 (ie, On) for controller numbers 64 to 69. It doesn't send any of the inbetween values, even if you're using a lever.
Control change messages will not be transmitted when the following parameter are set:. This is a comment about the JV-90's generation of controller messages. If you set some lever or pedal to use one of the following control numbers, and yet set that controller number to OFF in the TRANSMIT MIDI screen, then the JV-90 does not generate MIDI messages (although the levers or pedals may still affect the built-in sound module).
Control numberTRANSMIT MIDI The chart lists the Controller number on the right, and its respective TRANSMIT MIDI screen setting on the left.

0, 32 (Bank select)Bnk=OFF If you set a lever/pedal to transmit Bank select coarse or fine, but set TRANSMIT MIDI screen's Bnk setting to OFF, then no such MIDI messages are generated.
1, 32 (Modulation)Mod=OFF If you set a lever/pedal to transmit Modulation coarse or fine, but set TRANSMIT MIDI screen's Mod setting to OFF, then no such MIDI messages are generated.
7, 39 (Volume)Vol=OFF If you set a lever/pedal to transmit Volume coarse or fine, but set TRANSMIT MIDI screen's Vol setting to OFF, then no such MIDI messages are generated.
2 - 6, 8 - 31, 34 - 38, 40 - 95C.C=OFF If you set a lever/pedal to transmit one of these controller numbers, but set TRANSMIT MIDI screen's C.C setting to OFF, then no such MIDI messages are generated.

Program Change Indicates that what follows is how my JV-90 generates Program Change messages (as you manually push the Group, Patch, and other buttons that change between patches.
StatusSecond Shows the format for a Program Change message. It has 2 bytes. The Status is the first byte. The second is the program number.


CnHpp Here's the Program Change message. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The pp means that the value can be any value within a range of values. The allowable range of values will be shown later.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 can generate Program Change messages upon any of the 16 MIDI channels).
pp = Program number:00H - 7FH (prog.1 - prog.128) Indicates the allowable range. The full range of program numbers is supported. Note that program #1 is sent in the Program Change message as a 0 value.
Not transmit when "Transmit Program Change" of the System Common is OFF. This is a comment about the JV-90's generation of Program Change messages. In the System Common screen, there is a setting called "Transmit Program Change", and if you set this to OFF, then the JV-90 generates no MIDI Program Change messages when you manually switch patches.

Channel Pressure Indicates that what follows is how my JV-90 keyboard generates Channel Pressure messages.
StatusSecond Shows the format for a Channel Pressure message. It has 2 bytes. The Status is the first byte. The second is the pressure amount.


DnHvv Here's the Channel Pressure message. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The vv means that the value can be any value within a range of values. The allowable range of values will be shown later.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 keyboard can generate Channel Pressure messages upon any of the 16 MIDI channels).
vv = Pressure value:00H... 7FH (0 - 127) Indicates the allowable range. The full range of Channel Pressure is supported.
Not transmit when "Transmit Aftertouch" of the System Common is OFF. This is a comment about the JV-90's generation of Channel Pressure messages. In the System Common screen, there is a setting called "Transmit Aftertouch", and if you set this to OFF, then the JV-90 generates no MIDI Channel Pressure messages when you press harder/softer on the keys.

Pitch bend change Indicates that what follows is how my JV-90 Pitch lever generates Pitch Wheel messages.
StatusSecondThird Shows the format for a Pitch Wheel message. It has 3 bytes. The Status is the first byte. The Second is the coarse pitch change. The third is the fine pitch change.



EnHmmHllH Here's the Pitch Wheel message. The n means that the Status byte's channel can be any value within a range of values. The allowable range of values will be shown later. The mm means that the coarse value can be any value within a range of values. The allowable range of values will be shown later. The ll means that the fine value can be any value within a range of values. The allowable range of values will be shown later.
n = MIDI Channel:0H - FH (ch1 - ch16) Indicates that the allowable range for MIDI channel is 0 to 15. (ie, The JV-90 pitch lever can generate Pitch Wheel messages upon any of the 16 MIDI channels).
mm, ll = Pitch bend change:00H, 00H - 7FH, 7FH (-8192 - +8191) Indicates the allowable range. Supports the full range for Pitch Wheel.
Not transmit when "Transmit Pitch bend" of the System Common is OFF. This is a comment about the JV-90's generation of Pitch Wheel messages. In the System Common screen, there is a setting called "Transmit Pitch bend", and if you set this to OFF, then the JV-90 generates no MIDI Pitch Wheel messages when you move the pitch lever.

System Realtime message This indicates that what follows is info about System Realtime types of messages. Such messages include MIDI Clock, MIDI Time Code quarter-frame messages, Song Select, etc. The JV-90 does not generate any of those except Active Sense.

Active sensing Indicates that what follows is how my JV-90 generates Active Sense messages.
Status Shows the format for an Active Sense message. It is 1 byte.

FEH The byte is always FE.
This message transmit at about 300 milli-second interval. If the JV-90 hasn't been generating any other MIDI messages for awhile, it starts sending an Active Sense byte every 300 milli-seconds.

System Exclusive Message Indicates that what follows is the general format for a JV-90 System Exclusive message. There are many permutations of it since the JV-90 can generate a variety of System Exclusive messages when it dumps various parameter settings over MIDI. The details for constructing those messages will be excruciatingly detailed in a later section entitled Exclusive communications. Right here, you're shown the general form of all SysEx messages that the JV-90 generates, but some of the "data" fields will have different values depending upon which parameter(s) is being dumped.
StatusData All this chart is showing you is that a System Exclusive message starts with a F0 byte, then has one or more data bytes following the F0, and finally ends with an F7. That's the MIDI standard for System Exclusive. Hopefully you already know this if you're going to be screwing around with System Exclusive messages.

F0HiiH ddH ....... eeH Don't worry about this ii, dd, ee stuff. All it means is that, according to the MIDI standard for System Exclusive, there can be any number of data bytes here, each set to any value within an allowable range (ie, 0 to 127).
F7H And then of course, there's a final F7 byte.
F0H: System exclusive Whereas the above showed you the MIDI standard for a System Exclusive message, now you're going to see the Roland general form. In Roland SysEx, after the opening F0 byte, the first data byte is always a Manufacturer ID of 41.
ii = Manufacturer ID: 41H (65) Roland's Manufacturer ID is always the first data byte after the F0, and is always 41.
dd .....ee = Data: 00H - 7FH (0 to 127) All this means is that there can be any number of data bytes here, each set to any value within the range 0 to 127.
F7H: EOX (End of exclusive) There's that final F7 byte.
Refer to section 3, 4. All this is saying is that you should also read the sections entitled "Exclusive communications" and "Parameter Address Map". These give the excruciating details of the JV-90's System Exclusive capabilities.

What follows here are the "Exclusive communications" and "Parameter address map" sections. These are covered in another article entitled Roland System Exclusive Implementation.