def reload_preset(num): s = SyxEncoder() s.start() for magic in syx_ident_magic: s.write(magic) s.start_packet() s.crc_init() s.chunk_init() # preamble s.encode_crc(0x00) s.encode_crc(0x02) # 0x1110 = firmware, 0x2220 = preset # 30xx = load preset xx s.encode_crc(0x30) s.encode_crc(0x00 + num) s.encode_crc_int() s.flush() s.stop() return ''.join(struct.pack("B", x) for x in s._buf)
def json2syx(preset, num): """ Encode json-format preset to SysEx dump for preset number 'num'. """ rotaries = structs.build_rotaries() longsliders = structs.build_longsliders() hsliders = structs.build_hsliders() vsliders = structs.build_vsliders() # # Preamble # data = SyxEncoder() data.start() for magic in syx_ident_magic: data.write(magic) # pad with zeroes until offset 0x21 for i in range(13*2): data.write(0) data.start_packet() data.crc_init() data.chunk_init() data.encode_crc(0x00) # TYPE_MSB data.encode_crc(0x02) # TYPE_LSB # ID: 0x1110 = firmware, 0x2220 = preset data # 30xx = load preset data.encode_crc(0x22) data.encode_crc(0x20) data.encode_crc_int() data.flush() # # Preset header # data.reset_sum_byte() data.encode(syx_preset_start) data.encode(num) data_length = build_data(preset, encoder=None) syx_preset_length_msb = (data_length >> 8) & 0xff syx_preset_length_lsb = data_length & 0xff data.encode(syx_preset_length_msb) data.encode(syx_preset_length_lsb) data.crc_init() # # Preset data # build_data(preset, encoder=data) data.encode(num) # index of this preset data.encode(num) # index of last preset in this SysEx data.encode_sum_byte() data.flush() data.stop() #print "data_length=%s, msb=%s, lsb=%s" % (data_length, hex(syx_preset_length_msb), hex(syx_preset_length_lsb)) return ''.join(struct.pack("B", x) for x in data._buf)