User Tools

Site Tools


lcd_sysex

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 .

dnttalo.cluster029.hosting.ovh.net_pictures_lcdsysex1.jpg

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 :

dnttalo.cluster029.hosting.ovh.net_pictures_lcdsysex2.jpg

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 )

dnttalo.cluster029.hosting.ovh.net_pictures_lcdsysex3.jpg

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.

dnttalo.cluster029.hosting.ovh.net_pictures_lcdsysex4.jpg

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 :

dnttalo.cluster029.hosting.ovh.net_pictures_lcdsysex5.jpg

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 )

dnttalo.cluster029.hosting.ovh.net_pictures_lcdsysex6.jpg

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.

dnttalo.cluster029.hosting.ovh.net_pictures_lcdsysex7.jpg

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 ;)

dnttalo.cluster029.hosting.ovh.net_pictures_lcdsysex8.jpg

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.

lcd_sysex.txt · Last modified: 2024/04/24 19:04 by ounsatn

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki