Post by tickboxtyrant on May 19, 2013 11:39:37 GMT
Hi Nic Is it possible to include a bank select message with a program change message for a scene change? Roland keyboards require both these messages to access the full range of patches or sounds on their machines. Looking at Roland's midi implementation chart, I'm pretty sure Bank Select has to be the double byte version (Bn, 20h, LSB bank, MSB bank) . This means a program change needs to issue the Bank Select message before the Program change (Cn, ProgNo) to ensure the synth is in the right bank. Cheers Steve
Hi tickboxtyrant, you can use the Stream Byter to achieve this sneakily. Something like:
# send bank select message on program changes received on channel 1 C0 = BX 00 01 +C # bank select msb (01) C0 = BX 20 00 +C # bank select lsb (00) C0 = CX +C # send program change again, *after* the above two
You would add this rule on the output port for the device
You could refine the above and add a range for the program change messages, say the first 16 to bank 1/0, next 16 to bank 2/0 C0 00-0A = BX 00 01 +C etc.
Post by tickboxtyrant on May 19, 2013 12:40:07 GMT
My thinking was to use Scenes in MidiBridge to setup each song completely ( like a Setup on the Roland RD) So the event that triggers the program change is the selection of a Scene - on the iPad screen!. Can I use Scene selection to trigger the Stream Byter? Would be good if possible, because it would allow the setup of many other 'initial controller values' for that song... E.g. Volumes for each patch/ part, chorus on or off, drawbars 6 and 7 at 75%, over drive at 11... etc etc.. This would be a Scene snapshot! It is exactly what the RD 700 SX / GX provides.
Yes, but we need to get the program changes triggered by the scene change to pass through the Stream Byter and generate all those extra events. Let me figure this out and come back with a more complete solution. Part of the problem is that the Program Changes bypass the modules when issued. Need to loopback somewhere judiciously.
OK, that took a lot less time than I thought. Here's what you do.
You create your program change settings on an input (on left) and your Stream Byter triggers on a connected output(s), so when you press the 'load' button on the Scene Panel, the following happens:
- the input port gets connected to the output port - the program change gets issued by the input port - the stream byter on the output port adds the bank select and the extra program change (cause the original one triggers before the bank select)
Now, here is the gotya - turn OFF the Scene channel on the Options pane of the Preferences page so you don't get scene changes being triggered by your program changes.
I also added another rule to block the incoming program change so that the end result order is bank select msb, bank select lsb and program change.
Here is my final ruleset. I made this specific to program zero on channel zero:
# issue bank select 0/0 upon receiving program 0 on channel 1 C0 00 = B0 00 00 +C # add bank select msb C0 00 = B0 20 00 +C # add bank select lsb C0 00 = C0 XX +C # add prog change for after bank select C0 00 = XX +B # block original prog change
Post by tickboxtyrant on May 20, 2013 10:52:11 GMT
Thanks for prompt responses Nic. I scratched my head a bit reading your solution! But then I realised I'd forgotten that the Bank Select message is in fact two! (lsb msb) I suppose 30 years ago having 127 programs to choose from was more than enough, so bank select didn't seem like a priority for Midi. GM changed all that etc.. But really it's a testament to the flexibility of the Midi protocol that its still in use today.