I'm sending MIDI messages to a proprietary turntable that has an LCD screen on it. The normal software sends out updates via MIDI SysEx to display the current tempo on the LCD. The MIDI is being received on a MKL25Z128VLK4, Cortex-M0+/ARMv6-M device. (I did disassemble the firmware .bin after digging in its guts for the type of chip it's using, but the result of that was ~30k lines of assembly) The LCD model number is inaccessible without desoldering
At this point, I can successfully update the screen but I'm having trouble figuring out the pattern from a given number and I'm hoping someone else has experience with this.
Here's what I have found so far:
Setting a single byte to anything from 9-126 results in 00.0
BPM B1 B2 B3 B4
00.0 0 0 0 0
00.0 0 0 0 1
00.0 0 0 0 2
00.0 0 0 0 3
00.0 0 0 0 4
00.0 0 0 0 5
00.0 0 0 0 6
00.0 0 0 0 7
00.0 0 0 0 8
00.0 0 0 0 16
00.0 0 0 0 32
00.0 0 0 0 64
00.1 0 0 0 127
00.1 0 0 1 0
00.3 0 0 2 0
00.4 0 0 3 0
00.6 0 0 4 0
00.8 0 0 5 0
00.9 0 0 6 0
01.1 0 0 7 0
01.2 0 0 8 0
00.0 0 0 16 0
00.0 0 0 32 0
00.0 0 0 64 0
02.4 0 0 127 0
02.5 0 1 0 0
05.1 0 2 0 0
07.6 0 3 0 0
10.2 0 4 0 0
12.8 0 5 0 0
16.3 0 6 0 0
17.9 0 7 0 0
20.4 0 8 0 0
00.0 0 16 0 0
00.0 0 32 0 0
00.0 0 64 0 0
38.4 0 127 0 0
40.9 1 0 0 0
81.9 2 0 0 0
122.8 3 0 0 0
163.8 4 0 0 0
204.8 5 0 0 0
245.7 6 0 0 0
286.7 7 0 0 0
327.6 8 0 0 0
00.0 16 0 0 0
00.0 32 0 0 0
00.0 64 0 0 0
614.4 127 0 0 0
Turning on multiple bytes adds them together with sometimes strange results
40.9 1 0 0 0
00.1 0 0 1 0
41.1 1 0 1 0
81.9 2 0 0 0
00.1 0 0 1 0
82.0 2 0 1 0
I'm wondering if there's some floating point or bitwise maths going on that I'm just not well versed in, and if so what are the real numbers and data types used for the calculations? I feel understanding this is crucial to solving this problem without a massive lookup table or gutting it and writing my own controller