-
Notifications
You must be signed in to change notification settings - Fork 142
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
8 SSD1306 0.66 64X48 OLEDS #164
Comments
Yes, this shouldn't be an issue. The OLED examples all use the Adafruit_SSD1306 library, so if that library supports your display, it should work. You can simply change the resolution and the pin configuration. I've successfully used it with both I²C and SPI variants of the SSD1306.
Yes, but there's a caveat: the Adafruit_SSD1306 library allocates a separate buffer for each display you add. This requires huge amounts of RAM if you have many displays. |
Cool!
I would like to keep the code as standard as possible. Would board with larger RAM, such as an Arduino Mega, work? |
It depends on what else you have going on in your sketch. You need 48×64×8 bits of RAM for the display buffers, which is 3 KiB. With the improved SSD1306 library, you only need 384 bytes. I wouldn't recommend an Arduino Mega for MIDI controllers, you can find more info here: https://tttapa.github.io/Control-Surface-doc/Doxygen/d8/d4a/md_pages_MIDI-over-USB.html |
Basically all i want to see are tracknames, maybe the VU. Pan, Solo, Mute, etc i have already on my existing control surface. |
You can try compiling the code for an Arduino Mega, add 3 KiB, and make sure you have at least a couple of hundreds of bytes left for the stack. If you just want some displays, I don't think an Arduino Mega is the best board choice, especially if you want MIDI over USB. |
I think I will go with a Teensy. Out or curiosity, a teensy 3.2 supports 4 usb-to-midi devices. Would I be able to make this 4x with one controler. So 32 display over 4 mackie contollers? I will take it step by step though, first I want to get this working with 1 midi device and 8 screens. But I have 40 faders on my current control surface. |
Or would a better approach be a seperate controller per 8 oleds and rename the controlers? |
Teensy 3.2 even supports 16 USB MIDI cables. You can map them as Mackie Control Extenders in your DAW, for instance (keep in mind that your DAW may limit the number of extenders). The Control Surface library supports up to 16 different USB MIDI cables as well. You can use the third optional cable field of the MIDIAddress class.
I don't think that has any advantage over using a single controller, it's probably more complicated. |
Wow, you are fast in your replies!
The reason i'm asking this, is the choice of controller, if i would use a single controller, i would need more digital pins of all the cs lines. Do you think a teensy 3.5 or 3.6 would be good enough to handle 40 screens? |
40 screens really is a lot, and it would probably require a lot of bandwidth to refresh all of them. For static things like track names, this is not an issue, but for VU meters it could be. You can use shift registers or demultiplexers to handle the cs lines, this would probably require just a small tweak to the SSD1306 library, and it might be worth the $10 you save by using a Teensy 3.2 over a Teensy 3.6. |
Alright, I will start with an Teensy 3.2 and 8 OLEDs and keep you up to date. |
Update. I have now got 2 screens hooked up according to the example. First, only the second screen worked with a shared reset pin. But when i uses 2 seperate reset pins it works. Is this normal behaviour? Or should this be working with 1 shared reset pin? Or could I be using wrong capacitor type and values? Does it need to be ceramic or elco? Also i cannot get tracknames and time to show on the screens. VU, Pan, Rec, Mute and Solo works. I am using Cubase 9.5 pro. Any suggestions? |
Just tried with Reaper and tracknames now showing. Any thoughts on how to get this working with cubase? |
I got 4 Oleds working now. Although its with 4 seperate reset pin. When I try one reset pin and connect them all together only the last screen works, the rest remains black. Its a waste of digital IO pins as i am looking to connect 8. |
If you use an RC circuit for the reset pin you don't have to connect it to an IO pin. If you do want to use an IO pin for the reset line, you can share a single IO pin for all displays, but you have to pass I've never used Cubase, so I'm afraid I can't help you with that. If Cubase fully supports the MCU protocol, it should work, but if Cubase doesn't send the track names, there's no way to display them on the Arduino. You can't really "request" them from the DAW, communication is mostly one way. You could try the Mackie-Control-Universal-Reverse-Engineering.ino to see what Cubase is sending, or you could try a MIDI monitor on your computer. If you figure out how Cubase sends the track names, I can tell you how to receive them with the library, but I can't test it myself, because I don't have Cubase. The text is most likely sent as a SysEx message, you can look for |
That’s some very useful information! I will give it a try. I assume Cubase is fully MCU compatible. But I will use the monitor to see what type of messages it is sending. |
Works! Bit dodgy though, probably need to change the capacitor with a different value. Sometimes one of the screens doesn’t light up, but resetting everything again does the trick. |
By running this code, when I set channnel 1 to trackname "Henk", i get the following result:
|
The format is correct. The problem lies in how the message is displayed by the Control-Surface/src/Display/MCU/LCDDisplay.hpp Lines 78 to 102 in ac37291
This worked for Tracktion and Reaper, but apparently, other DAWs don't always write spaces between channels. For now, you can just remove the check here: Control-Surface/src/Display/MCU/LCDDisplay.hpp Lines 58 to 60 in ac37291
Long-term, I don't know a single solution that would work on all DAWs, if you have any ideas, feel free to let me know! |
Thanks! That makes sense. I noticed a difference with Cubase and Reaper with the output on the monitor, Reaper sends out 3 extra spaces. So I commented out the suggested piece of code and now info is showing up on my screens, but not the correct one yet. Cubase sends out 2 lines per channel, so now i'm seeing at the first screen "Pan", on the 3rd "Left". How can i get the second line to show with MCU::LCDDisplay? Example on how Cubase outputs on Mackie Control. |
There's a constructor that takes an extra Control-Surface/src/Display/MCU/LCDDisplay.hpp Lines 38 to 55 in ac37291
If you pass |
I'm still having some issues with some of the oled not starting every time, its random which ones (can be multiple) they are. Does each OLED needs its own reset RC circuit (capacitor, resistor), or can the share one circuit with all 8 of them? Alternatively:
How do I achieve this? Is there a place in my sketch where I can put this per display or do I have to amend something in another file? |
Does this happen when powering/plugging in the Arduino?
You could do something like this (in your sketch): // Implement the display interface, specifically, the begin and drawBackground
// methods.
class MySSD1306_DisplayInterface : public SSD1306_DisplayInterface {
public:
MySSD1306_DisplayInterface(Adafruit_SSD1306 &display)
: SSD1306_DisplayInterface(display) {}
void begin() override {
// Initialize the Adafruit_SSD1306 display
if (!disp.begin(SSD1306_SWITCHCAPVCC, 0, first))
FATAL_ERROR(F("SSD1306 allocation failed."), 0x1306);
first = false;
// If you override the begin method, remember to call the super class method
SSD1306_DisplayInterface::begin();
}
void drawBackground() override { disp.drawLine(1, 8, 126, 8, WHITE); }
private:
static bool first;
};
bool MySSD1306_DisplayInterface::first = true; |
Both on power-up and reset.
Thanks, that increased the stability a little bit. Though sometimes I have to reset the controller a few times to light them up all at the same time. Could it be that signals are a bit noisy and interfered due to my setup (lots of wires and breadboard)? Or could I have a faulty oled among them which causes the whole lot to have this behaviour? |
I have designed the following PCB:
Any thoughts? |
Sorry, that should be increasing as well, of course. You want to increase the RC time.
Is this using a GPIO pin for the reset line? Did you pass the right pins to the constructors for your displays? When using this approach, you have to leave out the capacitor and the resistor. You could also try adding some delay at the start of your setup, to make sure the displays are out of reset when you start sending data to them. I've never tried more than two displays, so I've never had this problem. You might have more luck asking this question on the Arduino forum, for example? The PCB looks nice, though! |
Yes, while using the GPIO pin, and i have removed the capacitor and resistor. I think such a lot of jumperwires on a breadboard are not the best connections, also when i touch them i see some strange jumping pixels on some of the screens. I think i'll order some PCB's online and see if that makes any difference.
|
@tttapa are you from the Netherlands? |
I'm from Belgium. |
You mean this bit??
I can't believe i've missed this, my bad 🤦 Will give this a try, will let you know if this worked. |
Wow! I'm very impressed! Fantastic work! I have been searching around looking for code to pull plug-in Data from Logic Pro to populate something similar so that I can have an offboard EQ and Compressor that directly communicates with each tracks EQ and Compressor. I would like to use the I2C screens as well to display the EQ and compressor Data such as the Frequency, Gain, Q and Plugin Name if thats possible. Even if it is simply the Plugin Location in the channel strip. I would probably have to keep similar plugins in the same position across the DAW for each track but im okay with that if i can select a track and the EQ and compression data populate a control surface with dynamic displays and rotary encoders. Any ideas where to start or simply... Is this possible? I have a Behringer X-Touch that can display all of that information across the top scribble strips but its worthless on how it is laid out. I would like to replicate that section in a more easy to use control surface that can change depending on the plugin. |
If i'm not mistaken, mackie control sends out 2 lines of display information, 2 lines of 6 or 7 charachters per channel, it all depends on how your DAW is formatting it. Control surface only supports mackie control, so you are stuck with this. If your behringers shows the desired information via the mackie control protocol then control surface should be able to show this too. With some custom logic you can format the text how and where you want to show this. @tttapa Right? The same is true with the vpot rings, it all depends on which information your DAW is sending over the mackie control protocol. I use Cubase and I can switch between pan info and send info, but i haven't tried anything else, because my main focus is tracknames, panning, record, solo and mute. Regarding i2c, I have only worked with SPI and i'm not sure if control surfuce supports I2C even though it uses the adafruit ssd1306 library, i'm sure @tttapa can clarify this. |
The
Indeed: the
You can use I2C, Control Surface simply uses the Adafruit_SSD1306 library. You might have to add the I2C address to the Personally I prefer SPI displays. They have much faster update rates than the I2C variants and you can just control each display with a different CS pin instead of having to worry about using different addresses or I2C multiplexers. |
henkmeid, |
Hello! I've actually spend the last few days working on this and I've made some progress. I've decided to make a a controller PCB and a OLED PCB, which can be interconnected. At the moment I'm designing my final pcb's. I guess this could work with your controller as well, as long as it supports the Mackie control protocol and you know how to use a virtual midi port and something like midi-ox, this isn't too hard. |
Oh that’s great news. Are you available to help me bobble thru this? Anyhow I’ll do what I can. I’d love to see this become a viable product. It’s been requested for years by many. Let me know how to proceed when the time is right. Thank you very much.
Scott
…Sent from my iPhone
On Jan 11, 2022, at 12:44 PM, henkmeid ***@***.***> wrote:
henkmeid,
I have a softube console 1 fader unit, would this unit be something that might work via usb using mackie control. I would ultimately like 10 channels of displays and would be more than willing to pay for them. I think many users of this console woudl be interested. I am not a coder, I have tried a few small arduino/visuino projects but dont have the time with my day gig and studio work. Thank you
Hello!
I've actually spend the last few days working on this and I've made some progress. I've decided to make a a controller PCB and a OLED PCB, which can be interconnected.
At the moment I'm designing my final pcb's.
I guess this could work with you controller as well, as long as it supports the Mackie control protocol and you know how to use a virtual midi port and something like midi-ox, this isn't too hard.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.
You are receiving this because you commented.
|
Can you measure what the pitch is between the channels on your controller? I have a Tascam DM4800 and DM3200 where the pitch is 25mm, this forces me to use 0.66" oled instead of 0.96". If your pitch is greater than 28mm a 0.96mm would fit and you would have a little more screen to fit information in. |
30mm thank you, 10 faders. I’m interested in how this would keep in sync as I switch between banks of 10 channels. Thanks, I’m excited and hope we can work this out.
Scott
…Sent from my iPhone
On Jan 12, 2022, at 12:26 AM, henkmeid ***@***.***> wrote:
Can you measure what the pitch is between the channels on your controller?
I have a Tascam DM4800 and DM3200 where the pitch is 25mm, this forces me to use 0.66" oled instead of 0.96". If your pitch is greater than 28mm a 0.96mm would fit and you would have a little more screen to fit information in.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.
You are receiving this because you commented.
|
I just checked how the softube connects to your DAW, and its via plug in, not as a mackie control universal. This make the virtual midi and splitter solution not workable. However, there might be an option where you can use you softube as a plugin and the screens as a mackie control, but i don't know how this would sync up, it could either work or not work. This has to be tested. Making 10 screens on a pcb and getting it work is not a big problem, but i don't have a softtube so i cannot test the funtion in parallel. |
So I was thinking about this as well. I’m not an expert here. Could this be a completely different system? I’m using Cubase 11pm. So I’m assuming Cubase can drive more than 1 mackie protocol device. As I use the softube and scroll thru the banks if I select a channel the channel is selected in Cubase. Does tha then somehow tell our separate display what to display?
…Sent from my iPhone
On Jan 13, 2022, at 12:55 AM, henkmeid ***@***.***> wrote:
I just checked how the softube connects to your DAW, and its via plug in, not as a mackie control universal. This make the virtual midi and splitter solution not workable. However, there might be an option where you can use you softube as a plugin and the screens as a mackie control, but i don't know how this would sync up, it could either work or not work. This has to be tested. Making 10 screens on a pcb and getting it work is not a big problem, but i don't have a softtube so i cannot test the funtion in parallel.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.
You are receiving this because you commented.
|
The only way to know is to test I guess.
Cubase can handle many MCU at once, that’s not the issue. But getting to line up the displays, banking, etc with the softube would require some testing.
I use cubase, so if you know someone in the Netherlands who could come over with a softube i could test it.
|
@henkmeid Hi can you share you code? |
Very nice. Please keep me in the loop as you progress. Thank you
Scott
…Sent from my iPhone
On Aug 24, 2022, at 1:22 PM, henkmeid ***@***.***> wrote:
Just a little update:
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.
|
Hi, can you share code? |
Hi
Sorry for the late reply
These are the files I used with Studio 1 v3.5, the first one was to test
the functionality using Mackie control.
The second was my final "code" using 9 screens. It's kinda old and not very
efficient cause I don't know C++ but works for me
The icons might not work and I can't find the xbm files I made...good luck
and I hope It helps you.
…On Thu, Sep 29, 2022 at 9:07 PM Trickster-git ***@***.***> wrote:
Hi, can you share code?
—
Reply to this email directly, view it on GitHub
<#164 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AJSCCYFAKTGNVBPM47CA3ILWAXSHDANCNFSM4MEOVTHQ>
.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
|
@henkmeid @rogerarends I have a Tascam US-2400 and use Studio One 4 (thinking of updating it though), I did lots of research all over the internet and tried using some of the coding here, but as I'm not a programmer, I can't make sense of it enough so I can make it work. If any of you guys could help me out, it's just a pain to have such an awesome controller and have to memorize all the channels over and over again when mixing =/ I'd love to work something out with you! All the hardware would be up to me to get and build a decent-looking thing, but I need a list of what exactly to buy and a working code. Hope you all are well! |
https://www.youtube.com/watch?v=XG3-uaSyzLo
instructions on setting up the Tascam US-2400 with Studio one. hope this helps and yes it is an awesome controller, mine got stolen bout 5 years ago.
https://www.youtube.com/c/HomeStudioTrainer
[https://yt3.ggpht.com/JmWUQl-MIN9RoxnkmykIA2ocUnbCNjWJD1V4NLIInOeKvk-R-i7b2vBclfn4ARMm80XratfF=s900-c-k-c0x00ffffff-no-rj]<https://www.youtube.com/c/HomeStudioTrainer>
Home Studio Trainer - YouTube<https://www.youtube.com/c/HomeStudioTrainer>
Are you a beginner at home recording? Are you tired of videos and LIVESTREAMS that assume you already know the basics? Well, you will be treated differently here at Home Studio Trainer, where we ...
www.youtube.com
…________________________________
From: Roberto-OA ***@***.***>
Sent: Saturday, 01 October 2022 18:11
To: tttapa/Control-Surface ***@***.***>
Cc: rogerarends ***@***.***>; Mention ***@***.***>
Subject: Re: [tttapa/Control-Surface] 8 SSD1306 0.66 64X48 OLEDS (#164)
@henkmeid<https://github.com/henkmeid> @rogerarends<https://github.com/rogerarends>
Just as scotthc said, I'd be more than willing to pay for a functioning version of this.
I have a Tascam US-2400 and use Studio One 4 (thinking of updating it though), I did lots of research all over the internet and tried using some of the coding here, but as I'm not a programmer, I can't make sense of it enough so I can make it work.
If any of you guys could help me out, it's just a pain to have such an awesome controller and have to memorize all the channels over and over again when mixing =/
I'd love to work something out with you! All the hardware would be up to me to get and build a decent-looking thing, but I need a list of what exactly to buy and a working code.
Hope you all are well!
Roberto
—
Reply to this email directly, view it on GitHub<#164 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AJSCCYFJAAVFC7MPLP52UW3WBBPCNANCNFSM4MEOVTHQ>.
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
Hey, @rogerarends ! How are you doing? I appreciate your quick answer, but I have no problems with setting up the controller. It works really fine over here! What I need is just a way to not have to look at my computer screen each and every time I do anything while working on a mix, hence these scribble strips. And damn, what a shame about yours! The guys that stole it really really wanted it! It is really clunky, hahah |
Hi
So you would need 24 oleds in total... 12 if you split between 2 channels,
but I would prefer having a screen above each fader. (You also using
smaller screens, I used the 128x64)
The most screens I could get working on a teensy 4 was nine before I had
issues with interference and occasional freezing.
I'm thinking using 3 teensy fours with 8 screens each. First one would be
the coded as the master and the other two as extenders then somehow use the
teensys USB host to send and receive from the tascam.
I successfully used my teensy to pass through my Samson graphite keyboard,
When I have a moment I will dig out my teensy and set it up again. I also
edited the Mackie script in studio one to get everything working the way I
wanted.
Only problem I see is possibly conflict with sending Mackie control data to
both the teensys and the tascam simultaneously , although the teensys would
only receive...
Give me about a week or so get everything working again... Might have to
ask Pieter help with this if we get stuck.
…On Tue, 04 Oct 2022, 15:32 Roberto-OA, ***@***.***> wrote:
Hey, @rogerarends <https://github.com/rogerarends> ! How are you doing?
I appreciate your quick answer, but I have no problems with setting up the
controller. It works really fine over here!
What I need is just a way to not have to look at my computer screen each
and every time I do anything while working on a mix, hence these scribble
strips.
And damn, what a shame about yours! The guys that stole it really really
wanted it! It is really clunky, hahah
—
Reply to this email directly, view it on GitHub
<#164 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AJSCCYCPFZMKWNQ2G4FBMVLWBQWVDANCNFSM4MEOVTHQ>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
I agree completely. Please keep us updated as I’m excited to give it a go with my softube console 1 setup.
…Sent from my iPhone
On Oct 4, 2022, at 9:32 AM, Roberto-OA ***@***.***> wrote:
Hey, @rogerarends ! How are you doing?
I appreciate your quick answer, but I have no problems with setting up the controller. It works really fine over here!
What I need is just a way to not have to look at my computer screen each and every time I do anything while working on a mix, hence these scribble strips.
And damn, what a shame about yours! The guys that stole it really really wanted it! It is really clunky, hahah
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.
|
I'm still working on the hardware, but work is getting in the way. I now have 24 oleds(3 banks of 8 Mackie Controls) working with my Tascam DM 4800, that is an oled per channel, with cubase. But due to the many jumperwires it can be a bit dodgy with the reset procedures of the oleds. So i will now design a pcb were everything is with fixed traces and hopefully this will result in a stable solution. Will post my findings once I get there. Here is a photo of my test earlier with 16 oleds with a DM3200. |
Very good thank you
…Sent from my iPhone
On Oct 4, 2022, at 12:50 PM, henkmeid ***@***.***> wrote:
I'm still working on the hardware, but work is getting in the way. I now have 24 oleds(3 banks of 8 Mackie Controls) working with my Tascam DM 4800, that is an oled per channel, with cubase. But due to the many jumperwires it can be a bit dodgy with the reset procedures of the oleds. So i will now design a pcb were everything is with fixed traces and hopefully this will result in a stable solution. Will post my findings once I get there.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.
|
Thats not a problem, this can easily be done with software. I use LoopBe for virtual midi ports and MidiOX as a midirouter, in my case routing is as follows: Cubase Mackie control: This works pretty good, only be aware that you cannot use the VU meters, this is too much information for MidiOX to handle and everything starts to lag. You have to filter out these specific events in MidiOX. (with this many screens on a single Teensy, the refresh rate is probably too low anyway to be useful). I will make some screenshots when i'm at my audio pc. |
Thanks all you guys for the awesome answers! There is promising stuff coming up from you! @henkmeid That's a beautiful desk! The faders are so authoritative! I changed my TASCAM's for Behringer's X32 when I bought it. It looks less like a starship and more like a music thingy now! =) @rogerarends That's interesting info! Hope you'll be able to make it work! Oh, I didn't explain really well before what my intents are, but I "just" need the OLEDs to tell me the name of the channels inside Studio One and that they keep track of the banking when I change it with the US-2400. |
Hey
I assume you only needed the oleds for Chanel names and levels as you're
using the 2400.
Connected my keyboard and touch daw and was able to send and receive from
both. Just have to finger out the extenders
Let you know soon about the oleds
…On Thu, 06 Oct 2022, 19:00 Roberto-OA, ***@***.***> wrote:
Thanks all you guys for the awesome answers! There is promising stuff
coming up from you!
@henkmeid <https://github.com/henkmeid> That's a beautiful desk! The
faders are so authoritative! I changed my TASCAM's for Behringer's X32 when
I bought it. It looks less like a starship and more like a music thingy
now! =)
@rogerarends <https://github.com/rogerarends> That's interesting info!
Hope you'll be able to make it work!
Oh, I didn't explain really well before what my intents are, but I "just"
need the OLEDs to tell me the name of the channels inside Studio One and
that they keep track of the banking when I change it with the US-2400.
'Just' is between quotes because I know that nothing is ever easy,
principally when talking about tech!
—
Reply to this email directly, view it on GitHub
<#164 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AJSCCYEVLGHIMTOFJVRLTODWB4ATPANCNFSM4MEOVTHQ>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Hey, @rogerarends ! How are you doing, man? Did you ever got things going forward with this? I never actually corrected it, but I just need the channel names, not even metering is necessary. |
Hello,
I ran into this project and i might be suitable for my needs. I have basically 2 questions:
Great project!
The text was updated successfully, but these errors were encountered: