Sending patch changes to JV-1080 - Anyone?

This looks promising. Did you see it?

Using MIDI to Select Patches on the JV-1080 | Sweetwater.

saw that but i’m only able to send hex values to it via MT… so 81 10 04… I don’t see how what that post at sweetwater shows equates to sending hex values. It’s like everyone talks in code. can’t simply say, 81 10 05 02… done… it’s always cryptic like that post. annoying. If I ever figure it out i’ll post here but it does not appear that anyone ever in the history of owners of 1080s have ever done this. insane.

Program Change on MIDI CH 1 = C0 nn (where program number is 0-7F hex (0-127 decimail)
Bank Select MSB on MIDI CH 1 = B0 00 nn (where bank is the bank number from 0-7F)
Bank Select LSB on MIDI CH 1 = B0 20 nn

For MIDI channel 2-15 use 1-F as the second nibble of the first byte for instances C1 is Program Change on MIDI CH 2 and CF is Program Change on MIDI Channel 16.

Steve Caldwell
Bome Customer Care

Also available for paid consulting services:

woah… well that’s closer. i got it to change. I figured out C4 for the first part since it’s on channel 5. Now I have to figure out the rest… and B0 00 nn doesn’t help. Again, the disconnect here is, MT is going to send XX XX XX XX… not B0 00 nn 0-7F(10,638Faatartarsauce…). just need an actual example and I can reel it in. So far, I have C4 XX XX XX. I don’t know why this has to be so convoluted… MT sends HEX. All i find on line is stuff like, 10,231 ss(blah blah) … like, ok, how do I send that in hex? how many units? And i’m a .Net developer of 32 years and this just does not line up for me so I know i’m not the only one. At least it changed… to the wrong thing but still. proof of concept. Trying various random values, crashed MT… had to restart so lost my progress. Not going well.

EXAMPLE: To access Patch PR-C: 112 “Cascade” we need the following messages:

  • Controller 0 with a value of 81, Controller 32 with a value of 2, and Program Change 111.
  • Bank number 10,370 and Program Change 111.

For MIDI CH 1 this would be:

B0 00 51 B0 20 02 C0 6F

You could also use the following output from Bome MIDI Translator, which would send the exact same things.

Keep in mind 51 Hex is 81 Decimal, 20 Hex is 32 Decimal and 6F Hex is 111 decimal.

You can find a programmers calculator if you have a PC to do the conversion and there are other conversion tools on the web.

Here is the outgoing log with both MIDI OUT and Outgoing Checked. MIDI OUT is always in Hex and Outgoing is more understanding to humans.

Note-to-Bank-PC.bmtp (982 Bytes)

Steve Caldwell
Bome Customer Care

Also available for paid consulting services:

Now THAT is very helpful! would rather work inside of MT. Like that… and it works. However, last hurdle is, i need a different bank than the example. I see that 10370 is one bank, what are the others? is it just a hit and miss thing or is there some logic to it? I changed for the ch5 and the patch number, but i’m in the wrong bank.

Well the MSB bank will be 0-127 and the LSB bank will also be 0-127. You shift the bits left by 7 to to move and then OR them together to get the result. It is a bit convoluted since you are using Binary, hex and decimal conversion.

So if you want to know the bank number from the LSB MSB and as an example LSB is 5 and MSB is 4.

// get msb << is the left shift operator and we are shifting 7 bits
// (Yield 512 or 200H)
// OR with LSB

// (Yields 517 or 205H) You can enter that in the bank number of the translator

Now if you know the bank number in decimal just enter it into the translator.

If you want to convert it back to msb and lsb

// get msb into qq (shifting right 7 bits)
qq= pp>>7
// get lsb in rr (by ANDing with 127 we strip out the high 7 order bits

MIDI was invented over 20 years ago so to conserve data bandwidth and memory programmers did a lot of bit arithmetic in those days. The standard is old but it still works.

Most documentation either shows the absolute bank number or MSB LSB. Now you have the tools either way they document it.

Steve Caldwell
Bome Customer Care

Also available for paid consulting services:

i don’t understand that at all. i guess i need to start googling midi standards or something. i tried using the 517 and the 205h and neither work so i’m missing something here. really need to wrap my head around the concept of ‘shifting bits’ and a value of x OR x… i will research till it clicks. thanks again for your help Steve.

Well if you moved patches around within your JV-1080 they may show up somewhere else. I don’t see in the manual how they relate MIDI bank numbers to the JV-1080 nomenclature system.

If you want the standards, go to You can create a free user account there, log in and check out the specs and other MIDI implementation documents.

Steve Caldwell
Bome Customer Care

Also available for paid consulting services:

i’ll have to make sure i’m on the correct bank and stay on that bank and the rest will work. the bank portion of that MT setup is ignored by the 1080 from what i can tell.

Then you can set the bank and PC at project start (when project is opened) and then just send Program Change (without bank information) thereafter. Most MIDI devices will ignore a bank change if the Program Change is not the next message after a bank change.

Steve Caldwell
Bome Customer Care

Also available for paid consulting services:

Actually, i’ve given up on sending Bank changes from MT. It does not work for any of my boards or racks. Instead what I will have to do is manually set the bank on each keyboard and rack and make sure I don’t use any patchs outside of that bank. Unfortunate but that’s were I am. Also, my disconnect in understanding how for example, I translate info like …

Message Value
Controller 0 0
Controller 32 0
Program Change 0-99 (0-127) BANK B
Message Value
Controller 0 0
Controller 32 1
Program Change 0-99 (0-127) BANK C
Message Value
Controller 0 0
Controller 32 2
Program Change 0-99 (0-127) BANK D
Message Value
Controller 0 0
Controller 32 3

into a series of hex midi messages like xx xx xx xx…
I can’t find any help anywhere that explains that. Like ANYWHERE on the entire net. Amazing.
I checked out midi stuff from the standard and nothing explains how to bridge that gap.


B0 00 00 - Controller 0 MIDI CH 1 value 0
B0 20 00 - Controller 32 Midi CH1 value 0 (20 is the hex value for decimal 32)
C0 00 - Program Change 0 on MIDI CH 1

Total message 
B0 00 00 B0 20 00 C0 00

B1 00 02 - Controller 0 MIDI CH 2 value 2
B1 20 03 - Controller 32 Midi CH2 value 3
C1 7F - Program Change 127 on MIDI CH 2 (7F is the hex value for 127)

Total message 
B1 00 02 B1 20 03 C1 7F

Steve Caldwell
Bome Customer Care

Also available for paid consulting services:

so ‘Bx’ is a Controller and ‘Cx’ is Program Change?
and B1 indicates Controller on CH2 (zero based… so CH3 would be B2)?
Then, since the unit sees the next bits are from Controller, it expects the next two values to be ‘Controller’ and ‘Value of that controller’?
Likewise, ‘C’ for Program Change (+CH) the unit expects the value to come next?



Right again

Right on.

Steve Caldwell
Bome Customer Care

Also available for paid consulting services:

Summary of MIDI messages from

Unfortunately it shows binary where

0000 = 0
0001 = 1
0010 = 2
00 11 = 3
0100 = 4
0101 = 5
0110 = 6
0111 = 7
1000 = 8
1001 = 9
1010 = A (10)
1011 = B (11)
1100 = C (12)
1101 = D ( 13)
1110 = E (14)
1111 = F (15)

So B5 hex is
1011 0101 - Binary

Could they have made it more complicated :wink:


I feel so smart now. Thanks. I’m off to save the world.

So This is the MIDI standards I would like to learn. Although I have a ‘not so great’ work around on the Bank issue, I will ‘circle back around’ to that eventually and try to dig in to find a way. I think it comes down to the device allowing bank changes. I had a very odd thing happen on the Trinity where the Bank on the display read ‘A’ but the patch stayed the same… on patch ‘B’… so if I want Horns on Bank A Program 22, if i’m currently on Bank B, the bank number will change on the Trinity display to ‘A’ and the program will say 22, but it will list Calipso or something… which is actually on ‘B’. Odd behavior.

Thanks for your help so far, I know I ask a lot here but I have to get at least 3 sets programmed in before we start giggin again. If you were in OK, i’d pay you to come over!


Let me know when the world is safe and maybe I start going out again :wink:

I’m in Portland Oregon so the driver might be a bit far for me.

Not sure what is happing where you missed the patch. probably you had another stray hex digit in there. Anything in the first hex pair that is greater then 7 is a new MIDI message.

Fx - Other (IE System Exclusive, Timing Clock, Active Sensing, Song position, Song Start …)
Ex - Ptich Bend
Dx - Channel Pressure - Aftertouch
Cx - Program Change
Bx - Control Change
Ax - Polyphonic Aftertouch (by note)
9x - Note on
8x - Note off

Steve Caldwell
Bome Customer Care

Also available for paid consulting services:

Dang… that’s more useful insight. I’m writing this down. If only there was a web site thing that could harness all of this information into a single conglomeration of knowledge. My goal is simply to have the fire controlling 4 sets of about 15 songs each. Got a long way to go, but it would be nice to actually have access to going from bank and program to bank and program… also want to stack some stuff. I know of one particular song that i’ll have to stack almost everything to pull it off. I took your advice and have a midi to usb adapter on everything so that’s nice. As I said in the beginning, I need to make sure my achetecture is ‘best practice’ before devoting hours and hours of time in going down the wrong rabbit hole. I think i’m on the right path… just need a few pointers here and there. I’ll probably buy an hour of your time to look over everthing once I have the first set programmed in.

Sounds good. Let me know if you need more help.

Steve Caldwell
Bome Customer Care

Also available for paid consulting services: