Jump to content

OLED Scribble Strip Mixing Console


Barrylimestone
 Share

Recommended Posts

Hi people, 

This is my first post here, excuse my ‘noobism’.

Experience & Idea

I have so far built a few Midi Controllers using the Opendeck Firmware, which is incredible, using Arduinos! 
However, I have a project I’m undertaking which is requires me to actually build/code something from scratch, namely he creation of a midi OLED ‘Scrible strip’ for my mixing console. I ran into this forum, and thought someone here might be able to give me some good suggestions. Basically, it would be cool if people could tell me how realistic and possible the ideas below are using the Midibox environment and hardware, and what additional hardware and parts would be required. 

Main Hardware Issues?
I will be building the oled displays into the new armrest I’m making, in combination with an Opendeck powered Nextion Touchscreen, an RGB led strip for colour grouping, as well as some other midi controllers that are built into a custom blind plate in an empty section. Managing to get track names to display on the OLED screens from Pro Tools (seeing it uses the HUI protocol), is probably very difficult, so until I figure this out, I might just create a sort of sketch which will allow me to manually upload and save projects with different track names. I’m also considering switching to Reaper, seeing the ‘industry leading’ DAW that I’m using, turns out to… be not very leading…. In fact, it’s incredibly restrictive and behind in relation to many features ….. (even though I have existing experience with it, and I acknowledge the fact that the editing/recording functions are great).
However, before I get into the coding part, I need to figure out some hardware issues etc. first! From my research I discovered that using 60 OLED screens is a bit more difficult than I realised at first, however, I want one for every channel and FX return, so.
I know that L2C sensors (or in this case screens) require unique bus/address names, meaning only two can be connected at once to a regular Arduino. However, the screens I bought from Aliexpress apparently also support SPI, so in case it’s easier to do using that, I could if required. Because I need I/O expansion, I also got a bunch of these multiplexers for L2C screens, but, I don’t know if I can daisy chain several of them to get up to the required 60 screen…. I also saw another solution (links can all be found down below), but it’s very expensive compared to the multiplexers I already bought for 50 cents each from Aliexpress.

Main Question/Request


My question is, does anyone have existing projects, pictures, resources, tips,  etc., in relation to what I’m trying to do??? If you do, please leave a comment!!

To emphasise, I just want to know what hardware (how many cores, what additional parts) I require to make my oleds work, the coding is another story. I realise this is most likely way too difficult, but I know someone on Fiverr who could do this for me if I can't figure it out. Also, if I have the armrest built and ready to go, the actual functionality can be figured out over a period of months/years.


THANKS SO MUCH FOR READING!!!

 

This is the hardware I have/found, maybe it doesn't even work with the midibox hardware, seeing it was all mentioned on arduino forums etc.

The multiplexers I ordered:

TCA9548A 1 Te 8 I2C 8-Way Multi-Channel Expansion Board I2C Module Development Board 

https://nl.aliexpress.com/item/1005002119364351.html?srcSns=sns_Copy&spreadType=socialShare&bizType=ProductDetail&social_params=20110529165&aff_fcid=b7cda54ed29c4fd1b3ab33cdc7b684b1-1616411560435-04776-_mNUNvCP&tt=MG&aff_fsk=_mNUNvCP&aff_platform=default&sk=_mNUNvCP&aff_trace_key=b7cda54ed29c4fd1b3ab33cdc7b684b1-1616411560435-04776-_mNUNvCP&shareId=20110529165&businessType=ProductDetail&platform=AE&terminal_id=4e01d68b78b8479dbe64fcfbc85e350f


The OLEDS I have (x 60)

0.96" oled display module white 12864 LED screen 6 pin SPI IIC interface for arduino STM32 51 sd1306 driver NEW diy OLED display

https://nl.aliexpress.com/item/32831626321.html?srcSns=sns_Copy&spreadType=socialShare&bizType=ProductDetail&social_params=20111002978&aff_fcid=baf5213ee6cd49979522f3e8e7a78b70-1616411527313-09228-_mO1fwfZ&tt=MG&aff_fsk=_mO1fwfZ&aff_platform=default&sk=_mO1fwfZ&aff_trace_key=baf5213ee6cd49979522f3e8e7a78b70-1616411527313-09228-_mO1fwfZ&shareId=20111002978&businessType=ProductDetail&platform=AE&terminal_id=57299dda1b744d10a59e2facf0e23bc0


The I/O expander I discovered which is more expensive

(I saw this, but it’s a bit expensive as I would need 6/7 to connect my 60 LCD):

https://www.ebay.com/itm/IO-Expander/183656868496?hash=item2ac2cd6a90:g:t3sAAOSwmvpcTPrq:rk:10:pf:0

http://www.zevendevelopment.com/

IMG_0978-min.JPG

IMG_0976-min.JPG

IMG_0981 2-min.PNG

IMG_0982-min.PNG

 

 

Edited by Barrylimestone
Link to comment
Share on other sites

"normally" we use here 7 Pin SPI SSD1306 (GND,VCC,D0,D1,RES,DC,CS)

connected like this:

Display-Pinout.png

purple Lines = CS-Lines:

the first (8or?) 16 CS/purple lines you get direct from the Core STM32F4,  > http://www.ucapps.de/mbhp_core_stm32f4.html

the 48 Rest CS-Lines from 595-Dout-Shiftregistors-Pins (6xICs with each 8 Pins) > we call that http://www.ucapps.de/mbhp_dout.html

The Update Rate will be a bit slow - but for Label a static Mixer Desk, it will be ok?

 

custom Bitmaps:

http://wiki.midibox.org/doku.php?id=how_to_create_custom_glcd_fonts_icons_bars_for_midibox_ng

 

@ Labelitself, I myself have a simular thing, but for a Midi>CV Device, i have to label Encoders...

i managed it to save a huge array of "chars" -  like this...:

char Label[512][8] = {
{'3','0','3',' ',' ',' ',' ',' '},
{'6','0','6',' ',' ',' ',' ',' '},
{'7','0','7',' ',' ',' ',' ',' '},
{'8','0','8',' ',' ',' ',' ',' '},
{'9','0','9',' ',' ',' ',' ',' '},
{'-',' ',' ',' ',' ',' ',' ',' '},
{'*',' ',' ',' ',' ',' ',' ',' '},
{'/',' ',' ',' ',' ',' ',' ',' '},
{'+',' ',' ',' ',' ',' ',' ',' '},
{'A','M','P',' ',' ',' ',' ',' '},
{'A','M','P',' ','E','N','V',' '},
{'A','M','P',' ','L','F','O',' '},
{'A','M','P',' ','M','S','Q',' '},
{'A','D','S','R',' ',' ',' ',' '},
  ...

with all possible Names - that i could use for Control-Voltage Projects.... i save this on SD-Card, on a .sys file (no PC involved the microcontroller do that)

- in a Patch aka Song i then Recall it like this:

MIOS32_LCD_DeviceSet( 3 );	// select Display 3
MIOS32_LCD_CursorSet(0, 1);	// Select Vertical the second Line, Leftmost Horizontal
MIOS32_LCD_PrintFormattedString("%c%c%c%c%c%c%c%c",	// 8 Chars is max if you use BIG-FONTS
Label[ aout[ENC].sel_label] [0], 
Label[ aout[ENC].sel_label] [1],
Label[ aout[ENC].sel_label] [2],
Label[ aout[ENC].sel_label] [3],
Label[ aout[ENC].sel_label] [4],
Label[ aout[ENC].sel_label] [5],
Label[ aout[ENC].sel_label] [6],
Label[ aout[ENC].sel_label] [7]);

where ENC is the Encoder Number where the LCD is situated.

aout[].sel_label: i save that Var on SD-Card-with the Patch / and load the Patch via Midiprogramchange. // with a given Number you adress a Name...

you can also custom Labels, with ease with 2 additonal Rotary Encoders (while one is the cursor) (and the other one change the Letter), you might need for a UI-for Midibox at least 3 Encoders(with inbuilt pushbuttons) and 1 SSD1306 in order to SAVE and LOAD or ADD Custom Names...

Edited by Phatline
Link to comment
Share on other sites

46 minutes ago, Phatline said:

"normally" we use here th (GND,VCC,D0,D1,RES,DC,CS)

connected like this:

Display-Pinout.png

purple Lines = CS-Lines:

the first (8or?) 16 CS/purple lines you get direct from the Core STM32F4,  > http://www.ucapps.de/mbhp_core_stm32f4.html

the 48 Rest CS-Lines from 595-Dout-Shiftregistors-Pins (6xICs with each 8 Pins) > we call that http://www.ucapps.de/mbhp_dout.html

The Update Rate will be a bit slow - but for Label a static Mixer Desk, it will be ok?

 

custom Bitmaps:

http://wiki.midibox.org/doku.php?id=how_to_create_custom_glcd_fonts_icons_bars_for_midibox_ng

 

@ Labelitself, I myself have a simular thing, but for a Midi>CV Device, i have to label Encoders...

i managed it to save a huge array of "chars" -  like this...:



char Label[512][8] = {
{'3','0','3',' ',' ',' ',' ',' '},
{'6','0','6',' ',' ',' ',' ',' '},
{'7','0','7',' ',' ',' ',' ',' '},
{'8','0','8',' ',' ',' ',' ',' '},
{'9','0','9',' ',' ',' ',' ',' '},
{'-',' ',' ',' ',' ',' ',' ',' '},
{'*',' ',' ',' ',' ',' ',' ',' '},
{'/',' ',' ',' ',' ',' ',' ',' '},
{'+',' ',' ',' ',' ',' ',' ',' '},
{'A','M','P',' ',' ',' ',' ',' '},
{'A','M','P',' ','E','N','V',' '},
{'A','M','P',' ','L','F','O',' '},
{'A','M','P',' ','M','S','Q',' '},
{'A','D','S','R',' ',' ',' ',' '},
  ...

with all possible Names - that i could use for Control-Voltage Projects.... i save this on SD-Card, on a .sys file (no PC involved the microcontroller do that)

- in a Patch aka Song i then Recall it like this:



MIOS32_LCD_DeviceSet( 3 );	// select Display 3
MIOS32_LCD_CursorSet(0, 1);	// Select Vertical the second Line, Leftmost Horizontal
MIOS32_LCD_PrintFormattedString("%c%c%c%c%c%c%c%c",	// 8 Chars is max if you use BIG-FONTS
Label[ aout[ENC].sel_label] [0], 
Label[ aout[ENC].sel_label] [1],
Label[ aout[ENC].sel_label] [2],
Label[ aout[ENC].sel_label] [3],
Label[ aout[ENC].sel_label] [4],
Label[ aout[ENC].sel_label] [5],
Label[ aout[ENC].sel_label] [6],
Label[ aout[ENC].sel_label] [7]);

where ENC is the Encoder Number where the LCD is situated.

aout[].sel_label: i save that Var on SD-Card-with the Patch / and load the Patch via Midiprogramchange. // with a given Number you adress a Name...

you can also custom Labels, with ease with 2 additonal Rotary Encoders (while one is the cursor) (and the other one change the Letter), you might need for a UI-for Midibox at least 3 Encoders(with inbuilt pushbuttons) and 1 SSD1306 in order to SAVE and LOAD or ADD Custom Names...

Thanks for the reply, I will look into all this, I really have to learn more about midi box in general as I mentioned! Have you got any pictures of your rotary label system? I would love to see it!

As you say, refresh rate is really not important, it's not like with automated paramaters, I just want constant tags/labels for a specific session/mix for easy recall .  The rotary UI makes sense as well, allowing for easy selection. So custom labels are possible, but your system doesn't use custom naming and characters with the rotaries, so you can type in a name per track?

Annoyingly, I already bought these 60 OLEDS with 6 pins, which have SCL and SDA, unlike the ones you listed. 

Link to comment
Share on other sites

30 minutes ago, Barrylimestone said:

Thanks for the reply, I will look into all this, I really have to learn more about midi box in general as I mentioned! Have you got any pictures of your rotary label system? I would love to see it!

As you say, refresh rate is really not important, it's not like with automated paramaters, I just want constant tags/labels for a specific session/mix for easy recall .  The rotary UI makes sense as well, allowing for easy selection. So custom labels are possible, but your system doesn't use custom naming and characters with the rotaries, so you can type in a name per track?

Annoyingly, I already bought these 60 OLEDS with 6 pins, which have SCL and SDA, unlike the ones you listed. 

@6 Pins: i also have 8 of them sadly... and i would love to see them working ---maybe someone have expirience with that (change the driver? or pinout? i dont know - maybe someone other can help?)

@ picturen, i made a short video for you... its uploading right now...  will be aviable here in 45 minutes:

its not really a Typing -its "set cursor" "change Letter" "press save", as far as i know you cant connect a normal Keyboard to the Midibox - and i didnt see a driver (usb-host is possible on midibox.... but i dont think there is a driver?)

Edited by Phatline
Link to comment
Share on other sites

Just now, Phatline said:

@6 Pins: i also have 8 of them sadly... and i would love to see them working ---maybe someone have expirience with that (change the driver? or pinout? i dont know - maybe someone other can help?)

@ picturen, i made a short video for you... its uploading right now...  will be aviable here in 45 minutes:

 

This might also be of interest to you, I just discovered this project by @henkmeid Incredibly cool (pictures in the thread on this github page) https://github.com/tttapa/Control-Surface/issues/164 I look forward to seeing your video, I will await the upload time. Thanks for replying again!

Link to comment
Share on other sites

23 hours ago, Phatline said:

i now implemented this custom-Label change... see the first view minutes of this video:

 

Epic, thanks for sharing! As I mentioned, I'm a complete noob, so do I understand correctly when I think your controller basically works by using flashed chips which have apps installed/loaded onto them, and instead of using jumpers etc. and a separate board with I/O, you created a custom PCB with the controller chips and components all integrated into it? Thanks so much for sharing all this! Really cool stuff. Will be rewatching later.

Link to comment
Share on other sites

Thanks so much! I will get the required hardware with the flashed firmware. Oh I see haha, I didn’t see the board in the video which must be on the left. Thanks so much, I will be in touch, I appreciate the help! 
 

no matter what, I might need external power for powering all 60 displays so.

Edited by Barrylimestone
Link to comment
Share on other sites

a dinx4 would also help (for the encoder) - could be solved with the pins onboard too but easer to implementate with a Digital-In-Shiftregister

 

& if you decide to make that project then you could start a "name"list...Labels.ods i can later copy paste this into the code... (my labels in there are not really usefull for you project, but the structure is already for copy paste...)

i hide some tabs in there:

{	'	3	'	,	'	0	'	,	'	3	'	,	'		'	,	'		'	,	'		'	,	'		'	,	'		'	},

so dont overwrite this ’, and }{

Edited by Phatline
  • Like 1
Link to comment
Share on other sites

i made a list for needet hardware:

 

1x this can handle the Encoders and Buttons + 16 Displays : http://ucapps.de/mbhp_dio_matrix.html

1x this can handle 32 Displays: http://ucapps.de/mbhp_dout.html

1x this should handle 8 Displays(+the Discovery board and all the parts of course...) http://ucapps.de/mbhp_core_stm32f4.html

hmm makes 56 Displays. so if you want 64 you add a 595 by yourself with protoboard, or take a nother DIO-Matrix...

1x SD-Card (+Fullsize adapter) of different Fabricates --- very often that one is not working i have 2 of this -and booth are working: https://www.mouser.at/ProductDetail/SparkFun/COM-15107?qs=0lSvoLzn4L%2B%2BrzcqjOiTEA%3D%3D

64x Pinheaders that are sitting strong (or take hotglue) in order to better repear or swap or debug the LCD from your cables

A lot of cables... i dont know how big the desk is, and whats about the cable length is (really dont know where the limit is?!)

And very hard to find - this tiny Screws and Nuts for the LCDs to mount(they are not M3!), if you go ali express then you wait a month or 3...

and like you said a 3.3V Voltageregulator that supply with ease 1.5 to 2A, and psu that deliever that too...

 

Edited by Phatline
  • Like 1
Link to comment
Share on other sites

35 minutes ago, Phatline said:

i made a list for needet hardware:

 

1x this can handle the Encoders and Buttons + 16 Displays : http://ucapps.de/mbhp_dio_matrix.html

1x this can handle 32 Displays: http://ucapps.de/mbhp_dout.html

1x this should handle 8 Displays(+the Discovery board and all the parts of course...) http://ucapps.de/mbhp_core_stm32f4.html

hmm makes 56 Displays. so if you want 64 you add a 595 by yourself with protoboard, or take a nother DIO-Matrix...

1x SD-Card (+Fullsize adapter) of different Fabricates --- very often that one is not working i have 2 of this -and booth are working: https://www.mouser.at/ProductDetail/SparkFun/COM-15107?qs=0lSvoLzn4L%2B%2BrzcqjOiTEA%3D%3D

64x Pinheaders that are sitting strong (or take hotglue) in order to better repear or swap or debug the LCD from your cables

A lot of cables... i dont know how big the desk is, and whats about the cable length is (really dont know where the limit is?!)

And very hard to find - this tiny Screws and Nuts for the LCDs to mount(they are not M3!), if you go ali express then you wait a month or 3...

and like you said a 3.3V Voltageregulator that supply with ease 1.5 to 2A, and psu that deliever that too...

 

Thanks so much for all of the help and the hardware list, I'm just finalising the idea I have (see poorly photoshopped pictures). It doesn't all have to be 100 integrated in the sense that the RGB assignable LEDS can be midi through a different interface with an arduino or something, I the automation mode for the moving faders can be changed by the button. I haven't added rotaries to this yet. Might be easier to make a PCB like you and Henkmeid both did I, saves a lot of cabling and makes it neet and tidy, and jus easy to stuff into the space available within the armrest/space below the existing fader.compressjpeg (1).zip

2.jpg

1-min.jpg

Link to comment
Share on other sites

32 minutes ago, Barrylimestone said:

 It doesn't all have to be 100 integrated in the sense that the RGB assignable LEDS can be midi through a different interface with an arduino or something, I the automation mode for the moving faders can be changed by the button. I haven't added rotaries to this yet. Might be easier to make a PCB like you and Henkmeid both did I, saves a lot of cabling and makes it neet and tidy, and jus easy to stuff into the space available within the armrest/space below the existing fader.

 

 

about RGB-Leds... midibox could do that too... http://www.midibox.org/mios32/manual/group___w_s2812.html , but i dont have much expierence whith them (in sense of codeing...but i have project here were i have to find about them anyway)

 

you change the Faders to motorfaders? (or are they motorfaders anyway?)

there are 32Bit Functions for Motorfaders here... but in the past they used 8bit cores: http://ucapps.de/mbhp_mf_ng.html cant help here, havent done that before.

 

about space: the dinx4 modules doutx4 modules and CoreSTM take a lot of space... when you for example integrate the 595ers on your Display-motherboard you could save some space... still there is the big  core... you could overcome that with dipcore + Dipboard (http://wiki.midibox.org/doku.php?id=dipboardf4)

dipcore has only 2 LCD CS-Lines onboard... so you would a second DIO-Module anyway. ... but if space is no problem... but the overall height wouldnt change on booth variants... so Z=equal, but xy would differ

  • Like 1
Link to comment
Share on other sites

7 hours ago, Phatline said:

 

about RGB-Leds... midibox could do that too... http://www.midibox.org/mios32/manual/group___w_s2812.html , but i dont have much expierence whith them (in sense of codeing...but i have project here were i have to find about them anyway)

 

you change the Faders to motorfaders? (or are they motorfaders anyway?)

there are 32Bit Functions for Motorfaders here... but in the past they used 8bit cores: http://ucapps.de/mbhp_mf_ng.html cant help here, havent done that before.

 

about space: the dinx4 modules doutx4 modules and CoreSTM take a lot of space... when you for example integrate the 595ers on your Display-motherboard you could save some space... still there is the big  core... you could overcome that with dipcore + Dipboard (http://wiki.midibox.org/doku.php?id=dipboardf4)

dipcore has only 2 LCD CS-Lines onboard... so you would a second DIO-Module anyway. ... but if space is no problem... but the overall height wouldnt change on booth variants... so Z=equal, but xy would differ

It has a fadermate motorized system installed. The control for that system is connected to my midi interface (motu). So I don't have to make anything, just want the corresponding track names to show on the OLEDS below basically. Also it's not a double photo, one has the RGB strip in the middle the other at the bottom. Thanks!

 

Will be in touch.

Link to comment
Share on other sites

39 minutes ago, Barrylimestone said:

Could I not use 2 x http://ucapps.de/mbhp_dout.html to support 64 displays? 

 

Also, a lot of links for buying modules seem to be dead? 

yes but you need some encoder... thats why i thougt of the DIO-Matrix (it has DIN+Resistors, + DOUT without resistors>which makes it smaller...) .... so yes 2xDOUTx4 is ok... + a DIN X1 (the one missing extra button can be taken directly from the core... 3 Pushencoder - makes 9 DIN Pins... 8 taken from the DIN register, one diretly from the core)

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...