$Id: midibox_tia_sysex_implementation.txt 379 2008-07-06 23:17:18Z tk $

MIDIbox TIA SysEx Implementation
================================

Which Actions are implemented
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

   a) F0 00 00 7E 46 <device-number> 01 <preset-type> <relative-bank-number> <preset-number> F7
      Request a Dump of Preset :
        <preset-type> -> 0x00-Patch / 0x01-Kit / 0x02-Wavetable.
        <relative-bank-number> -> for patch: Absolute bank number,
                                  for kit or wavetable Absolute bank number - (DEFAULT_BS_KBANK_ID*4)
        <preset-number> 0-127 (63 if 32k)
      Sends back:
      valid:
      F0 00 00 7E 46 <device-number> 01 <preset-type> <relative-bank-number> <preset-number> <128 bytes of dump data> <checksum> F7
      valid:
      F0 00 00 7E 46 <device-number> 01 <preset-type> <relative-bank-number> <preset-number> <error-number> F7      
      
   b) F0 00 00 7E 46 <device-number> 02 <preset-type> <relative-bank-number> <preset-number> <128 bytes of dump data> <checksum> F7
      Write a Dump of Preset :
        <preset-type> -> 0x00-Patch / 0x01-Kit / 0x02-Wavetable.
        <relative-bank-number> -> for patch: Absolute bank number,
                                  for kit or wavetable Absolute bank number - (DEFAULT_BS_KBANK_ID*4)
        <preset-number> 0-127 (63 if 32k)
      Sends back:
      F0 00 00 7E 46 <device-number> 02 <preset-type> <relative-bank-number> <preset-number> <error-number> F7

   c) F0 00 00 7E 46 <device-number> 03 F7
      Request a Dump of the whole Bank (128 patches)

   d) F0 00 00 7E 46 <device-number> 05 AH AL F7
      Direct Read of parameter (AH = 0..1, AL = 0..7F)

   e) F0 00 00 7E 46 <device-number> 06 AH AL <value> F7
      Direct Write of parameter (AH = 0..1, AL = 0..7F)

   f) F0 00 00 7E 46 <device-number> 0B <bank> F7
      Change the BankStick (like CC#0)
      Returns F0 00 00 7E 46 <device-number> 0F <bank> F7
      if BankStick not available, bank remains unchanged

   g) F0 00 00 7E 46 <device-number> 0D 02 00 <OSC1 channel> F7
      F0 00 00 7E 46 <device-number> 0D 01 00 <OSC2 channel> F7
      F0 00 00 7E 46 <device-number> 0D 00 00 <OSC3 channel> F7
      Change the MIDI channel
      Value 00 (for Channel #1) .. 0F (for Channel #16) is expected.
      Note that the channels of the oscillators can be changed
      separately. In normal cases, all channels should be set to the
      same value.

      The values are stored in EEPROM, accordingly there must be
      a delay of at least 5 mS between each SysEx command, otherwise
      data gets lost

      The change will take place with the next Patch selection.
      E.g., you could send a program change (e.g. C0 <patch>) after 
      the SysEx commands.

      Example for configuring MIDI channel #16 on TIA1:
      F0 00 00 7E 46 00 0D 02 00 0F F7
      F0 00 00 7E 46 00 0D 01 00 0F F7
      F0 00 00 7E 46 00 0D 00 00 0F F7
      C0 00

   h) F0 00 00 7E 46 <old device-number> 0D 03 00 <new device-number> F7
      Change the device number

   i) F0 00 00 7E 46 <device-number> 0E F7
      Request CC Dump

   j) F0 00 00 7E 46 <device number> 0F F7
      Ping (just sends back the same SysEx string)


bdupeyron.tech@gmail.com
