Sysex delay requirements are based on Roland and Yamaha recommendations for message types of either a "reset" condition or a 512 byte "worst" case condition maximum length recommendation. Because the XP-50 and -80 use an internal sequencer resolution of 96 ticks (Parts Per Quarter Note), milisecond delays will be converted to ticks for ease of implementation, along with an initial "standardized" one measure setup at 60 Beats Per Minute. Delay times are being recommended for two reasons: (1) to allow adequate time for being sent, and (2) to allow adequate sysnth processing time. Although the first is easy to determine, the second varies with the synth in use. Sequencer Resolution = 96 PPQN 1st Measure Setup Recommendations Tempo = 60 BPM 128 byte packets should have 20ms delays which converts to 20/1000 = x/96 :: x = 2 ticks [1.92] (according to Roland) 512 byte packets should have 120ms delays which converts to 120/1000 = x/96 :: x = 12 ticks [11.52] (according to Yamaha) Note, since packet sizes are fixed by Roland, some require more than 128 bytes and should be left intact. No packets require more than 512 bytes. Sysex "Data Set 1 [DT1]" "overhead" bytes required are: F0 41 10 6A 12 a1 a2 a3 a4 ... cc F7 [requires 11 bytes setup] where "a1..a4" represent address MSB thru LSB values. "..." represent the actual data packet bytes, and "cc" equals the checksum byte. XP-50 Packets Hex Decimal Packet Size + Overhead ============= === ======= ====================== System Common 52 82 93 Scale Tune 0C 12 23 Performance Common 42 66 77 Performance Part 19 25 36 Patch Common 49 73 84 Patch Tone 0101 129 140 [fixed size - don't split!] Rhythm Common 3A 58 69 For maximum GM/GS/XG compatibility, the folowing order of sysex messages should be sent and allow a 50ms delay for processing, i.e. 50/1000 = x/96 :: x = 5 ticks [4.8]. [asssumes Device ID = 10h] GM System On F0 7E 7F 09 01 F7 GS Reset F0 41 10 42 12 40 00 7F 00 41 F7 XG System On F0 43 10 4C 00 00 7E 00 F7 For maximum JV-1080 and XP-50/80 compatibility, the following sysex messages in order are recommended if used/needed: GM System Off F0 7E 7F 09 02 F7 SYSTEM Bulk Dump PATCH Bulk Dump(s) RHYTHM Kit Bulk Dump(s) PERFORMANCE Bulk Dump(s) TEMP Performance Bulk Dump At the end of each tracks performance data, the following controllers are recommended being sent, or in lieu of a sysex setup, send them at the beginning of the performance setup measure. Controller # Name ============ ==== 120 All Sound Off 123 All Notes Off 121 Reset All Controllers Use data byte values of 0. Note: Active Sensing (FEh) if enabled will do the same at the end of a performance after a 300ms/400ms [Yamaha/Roland] inactive MIDI data flow, however, the use of Active Sensing unnecessarily "clogs" up the MIDI data stream, therefore the above is recommended. Active Sensing is recommend to be turned OFF (SYSTEM/MIDI/TRANSMIT MIDI|Active Sensing OFF). In general a "one" data byte sysex message such as to Disable the Performance Channel: F0 41 10 6A 12 00 00 00 1C 10 54 F7 will require 31250/10=3125 bytes per second that will take 12/3125 = x/1000 (still assuming 60 BPM) :: x = 384 ms :: 384/1000 = x/96 :: x = 37 ticks [36.864]. An overhead of 20ms would be recommended of 2 ticks minimum to be added for a total of 39 ticks.