Jump to content

RGB hue sweep


Recommended Posts

  • 1 month later...

@latigid on, @TK : Dudes,such a nice work!! :o just what i wanted to do about the sparkfun buttons.

If i understood good TK told that 64 RGB LED could be driven, and even more?

I am just planning in making a 4x16 RGB BLM for sequencer V4 with sparkfun butons. Other buttons would be "monochrome". ^^

Do you think this kind of led would fit ? http://www.ebay.fr/itm/252197462630?var=551032876050

thanks for your advice,

good evening,


Link to comment
Share on other sites

According to adafruit, there are at least two LEDs with different names that use the same controller (or an equivalent). I think they should work; you should choose the 5mm LED as 8mm is too large. 

At some point I will sell the PCBs to suit (don't buy Sparkfun PCBs unless you want to use common RGB LEDs), price should be about 8 EUR.


If you read through TK.'s code example on svnmios32, he states that driving the LEDs takes up quite a bit of memory but not too much CPU overhead. There is a limit in the chain length in order to guarantee data transmission. I'm pretty sure that the controllers hold the colour value and new data is only required for updates. The advantage of shift registers is the parallel data transmission which allows for a simple serial stream to rapidly clock multiple lines. Disadvantages are the complicated PCB and software matrices, but it does work (BLM 16*16+X).

Bon weekend,


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

Hi again,

Count on me for 4 PCB , that will allow me to make some tests with these 5mm LEDs. The limit was 48 bits in total adressing ?

I am a bit tired right now so i'll check TK code tomorrow =)

merci pour tout et bon weekend aussi =)


Link to comment
Share on other sites

  • 2 weeks later...

The serial input of the WS2812 chip has to be connected to J4B.SC


is it possible to drive a rgb matrix ?

I'm not sure if I understand your question correctly.

Each WS2812 chip drives one RGB LED, by default you can connect up to 64 WS2812 chips, but it's possible to increase the number (with the drawback of higher SRAM consumption). See also http://svnmios.midibox.org/filedetails.php?repname=svn.mios32&path=%2Ftrunk%2Fmodules%2Fws2812%2Fws2812.c

The WS2812 based approach is not based on a LED matrix, it's a serial chain of (cheap) RGB driver chips

Best Regards, Thorsten.

Link to comment
Share on other sites

My words were confusing, i now understand better the principle of serial chain color driving through the code.
So to drive for example 64 LEDs you just need a chain linking them to CORE32 J4B.SC! Wonderful =)
That's pretty nice for PCB routing ^^

I talked about matrixes because that's the way i am going to dispose my LEDs physically.
And the current most efficient way to drive an amount of monochrome LEDs is matrix shift register design.
At the beginning thought there would have kind of differents buses to handle or similar things to shift register design.
And that is very good about default params i was planning to use 64 RGBs APA 106 LEDs =D

Thanks for your answer Thorsten =)
Best Regards,

Edited by Psykhaze
Link to comment
Share on other sites

  • 2 months later...


Here's a souped up version (intended for Programma):

  • All registers on board. 
  • 45 degree styles
  • Room for OLEDs
  • Individual touch sensors, wired to encoder bodies at the moment.

A bit hard to capture the LEDs, but I hope you get the general idea. The touch sensors are set to activate the LEDs and they can be "dimmed" using a MIOS CC value. It's very preliminary for the moment, but eventually the idea is to use the touch sensors to turn on the acceleration function of encoders. That needs a bit of thought though.


  • Like 2
Link to comment
Share on other sites

  • 4 months later...
On 11/10/2015 at 10:51 PM, TK. said:

Today I did some experiments with RGB LEDs, e.g. to evaluate Andy's idea to use a single RGB LED as replacement for LED rings around encoders: http://midibox.org/forums/topic/19619-alternative-to-led-encoder-rings-illuminated-red-green-encoders/


Conclusion: if LED rings should be replaced by RGB LEDs, we need 3 dedicated DOUT pins per LED, makes 48 pins for 16 RGB LEDs = 6 DOUT SRs
Line drivers are not required, since the DOUT SRs are strong enough to drive the LEDs.

Best Regards, Thorsten.


Seeing how it looks like we're going back to a shift register-driven RGB BLM in 8*4 config, I'm curious if you connected any current source/sink in this setup (if you remember).

Link to comment
Share on other sites

  • 4 months later...

Does someone know if it's possible to use the WS2812 as matrix? I'm afraid that there is no parameter called EVENT_RGBLED_MATRIX. So there might be a workaround that I don't know? 

I'm looking for a replacement for the classic encoder led rings and those WS2812 seem to be a great alternative. 


Link to comment
Share on other sites

The datastream for WS2812 is serial and runs separately to J8/9, so matrix events don't make sense. Instead, each LED needs its own EVENT_RGBLED. The current _NG implementation can either change the hue (colour) or the value (brightness) when dimmed=1.

Let me know if you want some PCBs and/or encoders.


Link to comment
Share on other sites

Hm okay. But if I have a strip of 6 LEDs and I want them to show the status of a fader or encoder like a led-bar or led-ring which sends f.e. CC16, how to do that? Or isn't it possible yet? Maybe I could assign different ranges to the LEDs...this is the only workaround I could think of at the moment  

i have another idea for lightning the encoders. So no need for PCBs or encoders. Will share it as soon as I've tested it. ;-)

Edited by FantomXR
Link to comment
Share on other sites

Okay! I got it! 

This code works great:

EVENT_RGBLED	 id=1 type=cc cc=16 rgb=0:5:0 dimmed=1 range=MAP1
EVENT_RGBLED	 id=2 type=cc cc=16 rgb=0:5:0 dimmed=1 range=MAP2
EVENT_RGBLED	 id=3 type=cc cc=16 rgb=0:5:0 dimmed=1 range=MAP3
EVENT_RGBLED	 id=4 type=cc cc=16 rgb=0:5:0 dimmed=1 range=MAP4
EVENT_RGBLED	 id=5 type=cc cc=16 rgb=8:5:0 dimmed=1 range=MAP5
EVENT_RGBLED	 id=6 type=cc cc=16 rgb=5:0:0 dimmed=1 range=MAP6

MAP1/BYTEI  0:0 21:127
MAP2/BYTEI  0:0 21:0  42:127 
MAP3/BYTEI  0:0 42:0  63:127 
MAP4/BYTEI  0:0 63:0  84:127 
MAP5/BYTEI  0:0 84:0  105:127 
MAP6/BYTEI  0:0 105:0 127:127 


Link to comment
Share on other sites

  • 3 weeks later...

Hey people,

I have an idea in mind but I don't know if it's possible to program it. It seems like a challenge.

Let's assume we have a midi-keyboard and a strip of WS2812 on top of the keys. What I want to do is, visualizing the split-zones of the keyboard. My DAW is able to send tons of different values f.e. CC, NoteOn, SysEx, NRPN, and so on.
My first idea was to assign a CC to the LEDs f.e. CC16. If I now send CC64 to the MIDIbox, all LEDs would light up which are <= 64. But what if I only want LED10-LED16 to light up and not the LEDs which are lower than that? 
Another idea: Assign a CC-value to every LED f.e. value 0 = LED1, value 1 = LED2, etc. But that would mean, that A LOT of MIDI data has to be sent to the MIDIbox on patch-change.

So is there anything I overlook? Do you have any other ideas how to address a range of WS2812 LEDs?


Link to comment
Share on other sites

  • 2 months later...

Hey people,

I ordered a new bunch of WS2812B LEDs. The problem: They are not working! I tested them in the same environment as the last bunch, which worked great. But the new LEDs do not.
I at first thought that I received the wrong LEDs. But I doublechecked with an Arduino and they work well on those as well as my old LEDs. 

I tried to replace the pullup with a 470Ohm and a 10k but both is not working.

Any ideas?

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.

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.


  • Create New...