GM-800 Program change weirdness

Started by bobruz, September 25, 2023, 08:32:45 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

bobruz

I'm using the GM-800 with a Helix unit.
I send PC changes & CC vol #7 changes to GM on MIDI ch1.
Vol function working nicely.

PC changes have some weirdness.
So I send PC 101 change to GM.  If the present scene is 1-128, it responds with correct change.
If present scene is above 128, where most of the User defined scenes are, it ignores the change.

Another weird thing is If I change to 101 correctly.  Then send 102 for next scene.  It ignores that change as well.

Not sure where to go from here.  Any expert have some guidance for me.  I'm usually pretty good with MIDI stuff.
I've had many complex systems before.  This seems like basic thing I'm missing here. DUH!

One other thing.  Is there a setting for the new scene to take on the current expression pedal value.
So if the vol pedal is at 0.  When the new scene loads, it will take on the 0 setting.  Not blast out at whatever
the preset was at.

bobruz

xogmusic

Quote from: bobruz on September 25, 2023, 08:32:45 AMI'm using the GM-800 with a Helix unit.
I send PC changes & CC vol #7 changes to GM on MIDI ch1.
Vol function working nicely.

PC changes have some weirdness.
So I send PC 101 change to GM.  If the present scene is 1-128, it responds with correct change.
If present scene is above 128, where most of the User defined scenes are, it ignores the change.

Another weird thing is If I change to 101 correctly.  Then send 102 for next scene.  It ignores that change as well.

Not sure where to go from here.  Any expert have some guidance for me.  I'm usually pretty good with MIDI stuff.
I've had many complex systems before.  This seems like basic thing I'm missing here. DUH!

One other thing.  Is there a setting for the new scene to take on the current expression pedal value.
So if the vol pedal is at 0.  When the new scene loads, it will take on the 0 setting.  Not blast out at whatever
the preset was at.

bobruz

You probably need to send a bank select (change) message first to select the 2nd bank that contains the next 127 presets. That's the limitation on all midi devices.

I don't know the answer to the 2nd question, you probably can't read the current volume value. Maybe instead you can send a value of 0 for cc#7 to avoid a high output volume or define a default value for volume that you send after the change?
I use a Morningstar MC6-Pro but haven't started connecting the GM-800 to it yet.

Witelite

I can confirm similar behavior for any program changes over 128 presets

As for the second Q, try setting the Assign Hold to "On" (Though I'm not sure this is working)

From the manual ...
OFF When you switch to a different scene, the values for GK VOL, EXP1 and EXP2 are set to the values saved for that scene .
ON When you switch to a different scene, if the parameters assigned to GK VOL, EXP1 and EXP2 are the same as the previous scene, the values stay the same .

ElliotG

Looking at the midi implementation document for the GM-800, the bank select message:
(-)Bank Select (Controller number 0, 32)
Status 2nd Byte 3rd Byte
BnH    00H      mmH
BnH    20H      llH

n = MIDI channel number: 0H - FH (ch.1 - ch.16)
mm = Bank Number (MSB) : 00H - 7FH (0 - 127)
ll = Bank Number (LSB) : 00H - 7FH (0 - 127)
* After this unit starts up, it operates with 00H as the bank number until a bank
select message is received.



admin_shawnb

Yes, the MIDI spec itself doesn't allow values over 127.  It's PC 0-127 for patches 1-128.

I just confirmed you can address patches above 128 by sending a bank select of 1 (using standard bank select CCs 0 & 32), followed by the patch # minus 128. 

So, to get to patch #140, select bank 1 & send PC 12.

gumtown

Some Boss/Roland gear also only use up to patch #100 before a bank change is required and 101 to 128 are 'seen' as 100 or ignored.
Free "GR-55 FloorBoard" editor software from https://sourceforge.net/projects/grfloorboard/

Witelite

Quote from: admin_shawnb on September 25, 2023, 04:34:18 PMYes, the MIDI spec itself doesn't allow values over 127.  It's PC 0-127 for patches 1-128.

I just confirmed you can address patches above 128 by sending a bank select of 1 (using standard bank select CCs 0 & 32), followed by the patch # minus 128. 

So, to get to patch #140, select bank 1 & send PC 12.

Yes but have you confirmed that works. I saw it in the manual as well. The reason I ask is that my GR55 had presets over 128 that were accessed this way (I sent program change and Bank Select Messages through Bandhelper) with no issue.

Sending the exact same commands to the GM 800, I can not access anything past 128. So while the manual says this, I'm not sure it is functioning the same way.

MM

admin_shawnb

#7
Quote from: Witelite on September 25, 2023, 05:49:52 PMYes but have you confirmed that works.

Quote from: admin_shawnb on September 25, 2023, 04:34:18 PMI just confirmed you can address patches above 128 by sending a bank select of 1 (using standard bank select CCs 0 & 32), followed by the patch # minus 128. 

So, to get to patch #140, select bank 1 & send PC 12.

Yes, as noted above.  Confirmed via MIDIOX.

(MSB=0, LSB=1)

Witelite

Quote from: admin_shawnb on September 25, 2023, 05:57:10 PMYes, as noted above.  Confirmed via MIDIOX.

(MSB=0, LSB=1)


Ah, I'll try that. I think the GR55 used MSB to change banks (or at least that's how I had it in Bandhelper) So instead of 0 1 2 for patch 130 it would be 1 0 2.

Thanks


Witelite

Here's what I found.

Bandhelpers format was MSB LSB PC

GR55 was MSB and PC. So Preset 130 would be 1 BLANK(which worked) and 1 (as it goes from 0-127 so 1 is effectively the second preset)

GM800 is LSB and PC but if you are using a second bank the MSB seems to be required.  So Preset 130 would be 0 1 1.

Interestingly then to get back to the first 128 patches, you then have to send 0 0 and the PC or it doesn't seem to move.

So while I used blanks in the past with the GR55, you now have to fill in all MSB, LSB and PC to get it to work once you've switched to the second bank.

Make sense?


admin_shawnb

Yes!  The bank change changes banks - sets of patches.   Once sent, you don't actually need to send it again as long as your patches are all in the same bank.  You can think of bank change & patch change as two separate controls... If you need to get back to bank 0, you need to tell it somehow.

MSB 0 and LSB 1 is actually the value 1. (Think of MSB as 10s digits & LSB as 1s...)   But yes, for, uh, reasons, some devices use MSB alone to change banks.

To learn exactly how it works, read the midi implementation chart for that device.  Old school, yes, but helpful.

Witelite

Quote from: admin_shawnb on September 26, 2023, 08:11:19 AMYes!  The bank change changes banks - sets of patches.   Once sent, you don't actually need to send it again as long as your patches are all in the same bank.  You can think of bank change & patch change as two separate controls... If you need to get back to bank 0, you need to tell it somehow.

MSB 0 and LSB 1 is actually the value 1. (Think of MSB as 10s digits & LSB as 1s...)   But yes, for, uh, reasons, some devices use MSB alone to change banks.

To learn exactly how it works, read the midi implementation chart for that device.  Old school, yes, but helpful.

Yes the GR55 used MSB.A bummer as recreating patches on the GM800 (which I've done) will require new midi commands versus having the two units be interchangeable. But it is what it is. At least I understand it now and hopefully @bobruz does too :)

Thanks

MM

gumtown

This is what all Roland/Boss devices want to see for bank change
patch 100 in Bank 0 (midi channel 1) =
B0 00 00 = bank 0 change   
B0 20 00 = control change (tells unit it is a bank change and not a cc#0 controller)
C0 63    = patch 100

For patch 101 (bank 1, patch 1, channel 1) =
B0 00 01 = bank 1 (cc#0 ,value 1)
B0 20 00 = control change (cc#32, value 0)
C0 00    = patch 1 (pc#1)

Free "GR-55 FloorBoard" editor software from https://sourceforge.net/projects/grfloorboard/

admin_shawnb

#13
Quote from: gumtown on September 26, 2023, 05:10:46 PMThis is what all Roland/Boss devices want to see for bank change
patch 100 in Bank 0 (midi channel 1) =
B0 00 00 = bank 0 change 
B0 20 00 = control change (tells unit it is a bank change and not a cc#0 controller)
C0 63    = patch 100

For patch 101 (bank 1, patch 1, channel 1) =
B0 00 01 = bank 1 (cc#0 ,value 1)
B0 20 00 = control change (cc#32, value 0)
C0 00    = patch 1 (pc#1)

Yeah, but not the GM-800.  That's what caused the confusion above, folks were reasonably expecting similar behavior.

To get to patch 128:
B0 00 00 - MSB 0 - for bank 0
B0 20 00 - LSB 0 - for bank 0
C0 7F - PC 127 for patch 128

To get to patch 129:
B0 00 00 - MSB 0 - for bank 1
B0 20 01 - LSB 1 - for bank 1
C0 00 - PC 0 for patch 1

The GM uses basically the LSB to get the next set of patches, not the MSB.  And the next "bank" is the set above 128.

Setting the MSB to 1 does nothing.

gumtown

Something is wrong with the GM-800 firmware if it works like that.  :P
Free "GR-55 FloorBoard" editor software from https://sourceforge.net/projects/grfloorboard/

Elantric

Quote from: gumtown on September 26, 2023, 09:16:16 PMSomething is wrong with the GM-800 firmware if it works like that.  :P


What Admin_Shawn wrote complies with the GM-800 MIDI Implementation doc
https://www.boss.info/us/support/by_product/gm-800/owners_manuals/c3c6bf8c-23e5-4c22-802a-8ea30ff135f3/

gumtown

This is part of the GM-800 midi implementation doc

n = MIDI channel number : 0H - FH (ch.1 - ch.16)

(-)Bank Select (Controller number 0, 32)
Status 2nd Byte 3rd Byte
BnH 00H mmH
BnH 20H llH
n = MIDI channel number: 0H - FH (ch.1 - ch.16)
mm = Bank Number (MSB) : 00H - 7FH (0 - 127)
ll = Bank Number (LSB) : 00H - 7FH (0 - 127)
* After this unit starts up, it operates with 00H as the bank number until a bank
select message is received.

and
| Program | o | o | | | Change: True Number | 0-127 | 0-127 |Program Number 1-128

So according to that.....
does this work ?

patch 128 in Bank 0 (midi channel 1) =
B0 00 00 = bank 0 change   
B0 20 11 = control change (tells unit it is a bank change and not a cc#0 controller)
C0 7F    = patch 128

For patch 129 (bank 1, patch 1, channel 1) =
B0 00 01 = bank 1 (cc#0 ,value 1)
B0 20 11 = control change (cc#32, value 17)
C0 00    = patch 1 (pc#1)

Free "GR-55 FloorBoard" editor software from https://sourceforge.net/projects/grfloorboard/

admin_shawnb

Yeah, the doc is too broad, it describes the generic midi commands.  Straight out of the midi 1.0 spec.

It's doesn't state how to address specific banks in the GM-800

As far as I can tell, via trial & error, the device only responds to two banks, 0 & 1.  MSB is always 0.  LSB 1 gets you access to patches/scenes 129-150.

Witelite

That is my experience (as @admin_shawnb describes). And it is different than the way the gr55 worked.


admin_shawnb

Going a step further...

You are supposed to be able to select tones for individual parts, by using the MIDI channels specified for each part.  E.g., channel 10 for drums (MIDI standard), Channel 11 for part 1, 12 for part 2, etc.

And, in fact, if you send a PC down channel 11, the tone for part 1 is changed.

However...

If you send a bank select down channel 11, part 1 says "No tone assigned".  There is no way to recover, the patch must be reloaded.  I have tried all variants I could think of (msb vs lsb, msb only, lsb only, etc.) to send a bank select down channel 11, and they basically break that part or do nothing. 

If you have browsed to another bank, e.g., patch 129, via BTS or the GM-800 menu, then PCs will navigate you around that set of 128 patches. 

This, I think, is a bug.


Elantric

#20
Quote from: admin_shawnb on September 27, 2023, 10:30:31 AMGoing a step further...

You are supposed to be able to select tones for individual parts, by using the MIDI channels specified for each part.  E.g., channel 10 for drums (MIDI standard), Channel 11 for part 1, 12 for part 2, etc.

And, in fact, if you send a PC down channel 11, the tone for part 1 is changed.

However...

If you send a bank select down channel 11, part 1 says "No tone assigned".  There is no way to recover, the patch must be reloaded.  I have tried all variants I could think of (msb vs lsb, msb only, lsb only, etc.) to send a bank select down channel 11, and they basically break that part or do nothing. 

If you have browsed to another bank, e.g., patch 129, via BTS or the GM-800 menu, then PCs will navigate you around that set of 128 patches. 

This, I think, is a bug.

Report to Roland Backstage asap
https://www.roland.com/backstage/


admin_shawnb

#21
Hah!  Synchronicity.  Boy, the MSBs and LSBs are odd... 

Using the MSBs and LSBs published by @keitht on this thread:
https://www.vguitarforums.com/smf/index.php?msg=266327

Everything works. 

The first bank uses MSB 71 & LSB 91.  And they DO NOT move forward in a linear fashion, e.g., patch 409 is 71/94/25, but patch 410 is 87/85/1.

Sending any value that does not correspond to this chart causes a "No Tone Assigned'.  Even 71/94/26, which you would think would bring up patch 410...

However, subsequently sending a value from the chart will, in fact, recover.

admin_shawnb

And...  A Duh moment...  This is all documented in Boss's tone list as well:

You cannot view this attachment.

admin_shawnb

Interesting to note that purchased expansion packs have fixed, non-contiguous MSB/LSB assignments as well:

You cannot view this attachment.

bobruz

Hey all!

Thanx for all the great advice and related MIDI info.
I solved my issues. 

PC issue was as described above, a LSB issue.  Helix was sending not sending LSB 1 to get to 129-150.
Vol #7 issue was the Duh moment.  I copied a working patch at some point and wiped out the MIDI info for
the patch.  #7 and channel were no longer defined.  I put in the correct settings and all is working as it should.

Also updated to 1.03 firmware.  The unit had 1.02 in it as received.

Thanx again everyone!
bobruz