On Mon, July 17, 2006 03:58, Stephen Cameron wrote:
--- Rui Nuno Capela <rncbc(a)rncbc.org> wrote:
[...]
You're probably missing the required Bank
Select control changes (MSB
CC#=0 and LSB CC#=32) which should precede the proper Program Change
message. This is standard MIDI specification, not specific to your
device, and its perfectly stated on the manual page you mentioned.
I'm sure the manual is fine for someone who already knows how
these things work. For me, it left something to be desired. A few
examples would have been a great help.
For the benefit of, well, of probably nobody, maybe
myself when I forget this and have to figure it out again, I will record
what I found out anyway.
The Motif has a couple parameters under the Utility/MIDI menu on the
front panel. There's a setting for the channel on which to recieve basic
messages. Set this to 1. (That means it will recieve them on channel 0,
not 1, oddly enough.) There are settings for BankChange and Patch Change.
Make sure they are "on".
The manual fails to mention what the Bank Change message is
(probably because it is "standard MIDI stuff.") It is 0xB0
(or 0xBn, where n is the channel the device receives basic
messages on.)
It requires TWO bank select commands to select a bank. One
to set the MSB, and one to set the LSB. You can't set them both with one
command (which is what I was trying to do that didn't work.)
0xB0 0x00 0xf3 // 0xB0 0x00 means "set bank MSB" 0xf3 is the
// value to set it to.
0xB0 0x20 0x01 // 0xB0 0x20 means "set bank LSB" 0x01 is the
// value to set it to.
0xC0 0x01 // Patch change to preset 0x01 of the previously
// selected bank MSB/LSB.
That's what a halfway decent explanation looks like, provided
my current understanding is correct. (It's correct enough that my program
works now.)
Looking into the page of the manual, you can see on the Bank Select table
all the available BANK SEL and PROG CHANGE values for your device.
The correct sequences would be:
1. BANK SEL MSB (Control Change #0)
0xB0 0x00 <msb>
2. BANK SEL LSB (Control Change #32):
0xB0 0x20 <lsb>
3. PROG CHANGE:
0xC0 <pc>
Where the <msb>, <lsb> and <pc> values should be taken from the table,
in
manual p.46, columns MSB (HEX), LSB (HEX) and Program No. respectively.
You seem to had it almost there, but 0xf3 doesn't look like a valid value
for <msb>. It's not part of the available bank selections nor its a valid
MIDI data value. Every MIDI data value must be in the 0x00 to 0x7f range
[0,127].
As an example, this looks like being correct to select the 2nd program
patch of the "Normal Voice", "Preset 2" bank:
0xB0 0x00 0x3f 0xB0 0x20 0x01 0xC0 0x01
or, using running-status:
0xB0 0x00 0x3f 0x20 0x01 0xC0 0x01
Note that I'm using MIDI channel address 0 in this example. Depending on
your receive channel, you're ought to try on channel 1, and the above
sequence should be:
0xB1 0x00 0x3f 0xB1 0x20 0x01 0xC1 0x01
Hope this got a bit clearer.
Cheers.
--
rncbc aka Rui Nuno Capela
rncbc(a)rncbc.org