On AKF there are 8 Oleds display, and they can be changed via SysEx midi messages. To understand how it work I advise to read the following articles :
https://blog.segger.com/decoding-the-akai-fire-part-3/
https://github.com/TheKikGen/MPC-LiveXplore/wiki/MPC-internal-controller---Midi-aspects
Below are more explanation on how it works.
As i understand AKF Oled are 128×32 pixels .
Each bloc of 7 Pixel are encoded on a 8 Bytes ( octets ) string.
Each byte goes from 00 to 7F (00 to 127 ), do not try over 7F, it will freeze your Oled display.
Following is an example of sysex message
Display letter A on 2nd oled display amidi -phw:0,0,0 -S 'F0 47 7F 40 0B 00 53 02 00 01 00 38 00 3F 7F 73 19 4F 7F 7F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F7'
F0 47 7F 40 : header message 0B : Set Oled Pixel 00 53 : Message Length 02 : Oled display number ( going from 0 to 7 on AKF ) 00 01 : [starty] [endy] ( first row going to 0 to 1, second row 1 to 2 etc.. ) ( there are 4 rows on AKF ) 00 38 : [startx] [endx] 00 3F 7F 73 19 4F 7F 7F : message to display. 00 .... : message continue ( 00 = black/no display ) 7F : message ending footer
Below is a template i used to create my sysex message :
Each column on the picture correspond to a column on the oled. Each column has 8 pixels as on the oled screen.
Example to lit first column ( pixel goes from 1 to 8 , from upper to lower )
you have to lit pixel 2 to pixel 8 , so i do : 1+2+4+8+10+20+40 = 70 + 15 (15 in hex is F ) ⇒ 7F, that's the first Byte.
you have to lit pixel 1 , and this one is lit with a seconde Byte in the message which is 40.
So the final message will be 7F 40 00 00 00 00 00 00
Example to draw the A letter.
The first column is Empty ( black) so first Byte is 0 (00)
The second column is shared with pixels belonging to 2nd Byte, and 3rd Byte. To lit 3rd pixel to 7th pixel you have to lit 1+2+4+8+10 ⇒ 1F , To lit 1st and 2nd pixel you have to do it in the 3rd Byte. So it will be 40+20 ⇒ 60. As we want the horizontal bar from each side of the letter A, we have to add the value 2, so the final value is 62.
Just like this with this 3 Bytes ( 00 1F 62 ) the oled pattern would have been :
amidi -phw:0,0,0 -S 'F0 47 7F 40 0B 00 53 02 00 01 00 38 00 1F 62 00 00 00 00 00 00 00 00 00 00 0 0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0 0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F7'
Then to continue the A, we need to lit the upper of the A (10+20) , and the lower part of right side of the A ( 1+2+4 ) so it gives value 37.
Message is then ( 00 1F 62 37 )
amidi -phw:0,0,0 -S 'F0 47 7F 40 0B 00 53 02 00 01 00 38 00 1F 62 37 00 00 00 00 00 00 00 00 00 0 0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0 0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F7'
And to finish we need to lit the upper part of the right side of the A.
This is done by adding the 5th Byte to the string , it is 8+10+20+40 ⇒ 78
Message is ( 00 1F 62 37 78 )
We add 00 to the end to fill other column with black Final message is ( 00 1F 62 37 78 00 00 00)
amidi -phw:0,0,0 -S 'F0 47 7F 40 0B 00 53 02 00 01 00 38 00 1F 62 37 78 00 00 00 00 00 00 00 00 0 0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0 0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F7'
In this example the A is a bit narrowed, but you can use the one from below which is wider :
Below are some letters i tried to reproduce, i need to finish it ;)
In my message, i dont really compute the Message Length and endx values. I have taken values which are enough long to allow confortable filling, but if you do a longer message you have to consider changing it.