Ambika SysEx patch request message

Hi,

I am trying to send a patch request in order to receive the current patch settings from Ambika. I am sending 0xF0 0x00 0x21 0x02 0x00 0x04 0x17 0x00 0xF7, but Ambika does not react to that. MIDI input filter is set to “…”. It might be that I don’t understand the role of payload and checksum correctly for this case?!

Thanks, ilmenator

You’re missing a 0x00 0x00 (checksum). If the payload is empty, it’s checksum is null. It still needs to be transmitted.

Well, now I am sending F0 00 21 02 00 04 17 00 00 00 F7 but Ambika does not send SysEx. Is there any other setting within Ambika that could influence its behavior?

So is the payload non-existant or is it 0x00?

non existant.

@pichenettes Can you please send me a valid SysEx string that makes Ambika send its patch bytes for the current part? The only reaction I get is that the SysEx string is echoed at Ambika’s MIDI out…

The documentation gives the command number in decimal. In hexa, this is F0 00 21 02 00 04 11 00 00 00 F7

Thanks.

Depending on what MIDI output mode is set, Ambika reacts differently to this command.

For “thru”, I get:
005273E7 6 – F0 Buffer: 11 Bytes System Exclusive
SYSX: F0 00 21 02 00 04 11 00 00 00 F7
005273ED 2 – F0 Buffer: 119 Bytes System Exclusive
SYSX: F0 00 21 02 00 04 01 00 00 01 00 00 00 00 00 00 00 02
SYSX: 02 00 0F 04 00 0C 02 00 00 00 01 0F 00 00 00 00 00 00
SYSX: 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 01 08
SYSX: 00 00 00 00 02 08 01 04 03 0C 00 00 02 07 00 00 00 00
SYSX: 00 00 02 08 00 00 02 08 00 00 02 0F 00 00 00 00 00 00
SYSX: 02 08 06 04 02 08 00 00 03 0F 00 00 00 00 00 00 04 08
SYSX: F0 00 21 02 00 04 11 00 00 00 F7
00527438 2 – F0 Buffer: 235 Bytes System Exclusive
SYSX: F0 00 21 02 00 04 01 00 00 01 00 00 00 00 00 00 00 02
SYSX: 02 00 0F 04 00 0C 02 00 00 00 01 0F 00 00 00 00 00 00
SYSX: 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 01 08
SYSX: 00 00 00 00 02 08 01 04 03 0C 00 00 02 07 00 00 00 00
SYSX: 00 00 02 08 00 00 02 08 00 00 02 0F 00 00 00 00 00 00
SYSX: 02 08 06 04 02 08 00 00 03 0F 00 00 00 00 00 00 04 08
SYSX: 00 00 00 00 00 00 00 00 00 01 00 00 00 03 00 02 00 00
SYSX: 00 03 00 03 00 00 00 04 00 00 00 00 00 04 00 01 00 00
SYSX: 00 05 00 06 00 00 00 06 00 0C 00 00 00 0B 00 0C 00 00
SYSX: 00 0C 00 06 00 00 00 02 01 02 03 0F 00 0E 01 02 01 00
SYSX: 01 00 00 04 02 00 00 06 00 04 01 00 00 03 00 04 00 00
SYSX: 00 04 00 05 00 00 00 05 00 0B 00 00 00 0B 00 0C 00 00
SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09 06
SYSX: F7

For “sequencer”, I get:
0052F518 6 – F0 Buffer: 11 Bytes System Exclusive
SYSX: F0 00 21 02 00 04 11 00 00 00 F7
0052F568 2 – F0 Buffer: 235 Bytes System Exclusive
SYSX: F0 00 21 02 00 04 01 00 00 01 00 00 00 00 00 00 00 02
SYSX: 02 00 0F 04 00 0C 02 00 00 00 01 0F 00 00 00 00 00 00
SYSX: 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 01 08
SYSX: 00 00 00 00 02 08 01 04 03 0C 00 00 02 07 00 00 00 00
SYSX: 00 00 02 08 00 00 02 08 00 00 02 0F 00 00 00 00 00 00
SYSX: 02 08 06 04 02 08 00 00 03 0F 00 00 00 00 00 00 04 08
SYSX: 00 00 00 00 00 00 00 00 00 01 00 00 00 03 00 02 00 00
SYSX: 00 03 00 03 00 00 00 04 00 00 00 00 00 04 00 01 00 00
SYSX: 00 05 00 06 00 00 00 06 00 0C 00 00 00 0B 00 0C 00 00
SYSX: 00 0C 00 06 00 00 00 02 01 02 03 0F 00 0E 01 02 01 00
SYSX: 01 00 00 04 02 00 00 06 00 04 01 00 00 03 00 04 00 00
SYSX: 00 04 00 05 00 00 00 05 00 0B 00 00 00 0B 00 0C 00 00
SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09 06
SYSX: F7

For “controller”, I also get:
0053AACD 6 – F0 Buffer: 11 Bytes System Exclusive
SYSX: F0 00 21 02 00 04 11 00 00 00 F7
0053AB1D 2 – F0 Buffer: 235 Bytes System Exclusive
SYSX: F0 00 21 02 00 04 01 00 00 01 00 00 00 00 00 00 00 02
SYSX: 02 00 0F 04 00 0C 02 00 00 00 01 0F 00 00 00 00 00 00
SYSX: 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 01 08
SYSX: 00 00 00 00 02 08 01 04 03 0C 00 00 02 07 00 00 00 00
SYSX: 00 00 02 08 00 00 02 08 00 00 02 0F 00 00 00 00 00 00
SYSX: 02 08 06 04 02 08 00 00 03 0F 00 00 00 00 00 00 04 08
SYSX: 00 00 00 00 00 00 00 00 00 01 00 00 00 03 00 02 00 00
SYSX: 00 03 00 03 00 00 00 04 00 00 00 00 00 04 00 01 00 00
SYSX: 00 05 00 06 00 00 00 06 00 0C 00 00 00 0B 00 0C 00 00
SYSX: 00 0C 00 06 00 00 00 02 01 02 03 0F 00 0E 01 02 01 00
SYSX: 01 00 00 04 02 00 00 06 00 04 01 00 00 03 00 04 00 00
SYSX: 00 04 00 05 00 00 00 05 00 0B 00 00 00 0B 00 0C 00 00
SYSX: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09 06
SYSX: F7

But then, for “full” Ambika answers:
00540FE8 6 – F0 Buffer: 11 Bytes System Exclusive
SYSX: F0 00 21 02 00 04 11 00 00 00 F7
00540FEE 2 – F0 Buffer: 11 Bytes System Exclusive
SYSX: F0 00 21 02 00 04 11 00 00 00 F7

If I then immediately request the same thing again in “full” mode, this is what Ambika sends:
00542F3E 6 – F0 Buffer: 11 Bytes System Exclusive
SYSX: F0 00 21 02 00 04 11 00 00 00 F7
00542F43 2 – F0 Buffer: 119 Bytes System Exclusive
SYSX: F0 00 21 02 00 04 01 00 00 01 00 00 00 00 00 00 00 02
SYSX: 02 00 0F 04 00 0C 02 00 00 00 01 0F 00 00 00 00 00 00
SYSX: 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 01 08
SYSX: 00 00 00 00 02 08 01 04 03 0C 00 00 02 07 00 00 00 00
SYSX: 00 00 02 08 00 00 02 08 00 00 02 0F 00 00 00 00 00 00
SYSX: 02 08 06 04 02 08 00 00 03 0F 00 00 00 00 00 00 04 08
SYSX: F0 00 21 02 00 04 11 00 00 00 F7

Is this how it is supposed to be? I guess it’s not. Also, the SysEx blocks I get in return are not consistent, i.e. everytime the same - if I change the MIDI output mode of Ambika in a different order then the SysEx data blocks may look different. I doubt that this has to do with the MIDI interface I am using, it’s the MIDIbox GM5 which is known to work good even under heavy SysEx load.

Check that there is no MIDI loop in your setup.

There is no loop, this is how my setup looks like: The SysEx request message is sent from an external device, received by GM5 port 5, displayed on MIDIox’s monitor and passed on to the output port 5 of the GM5 again. This is connected to Ambika MIDI in. Ambika MIDI out is connected to GM5 port 1.

I could reproduce a problem with the FULL mode only - which was due to some bytes of the original request message still in the transmit before while the SysEx transfer took place.

Fix here.

Great that you corrected the bug! All SysEx transfers seem to be working now. Thanks!