Skip to content
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

Support for Synthesia "Piano Lights" MIDI messages #676

Open
Bloodhoundje opened this issue Jan 17, 2022 · 1 comment
Open

Support for Synthesia "Piano Lights" MIDI messages #676

Bloodhoundje opened this issue Jan 17, 2022 · 1 comment

Comments

@Bloodhoundje
Copy link

Describe the solution you'd like
There is alot of Youtube videos of people using 'keyboard lights' aka a lightstrip with WS2812 LEDS that light up when pressing a note on their keyboard. The program Synthesia which is widely used by people who want to learn to play Keyboard/Piano supports a feature called "Lights" where it will indicate what note to press when learning to play a new song.

I would love to see an implementation for this their Lights control in Control-Surface. This would enable a low cost and easy to understand way for anyone who wants to add this feature to their keyboards.

A clear and concise description of what you want to happen.
Here's how it works:
Synthesia helps the user to know what hand to use for what key on they keyboard by indicating this with two colors (Green and Blue)
Synthesia has a special MIDI channel they use for this called "Finger-based channel"

Have the code watch for Note messages, mostly the same as with the "NoteRangeFastLED" example.

The finger(left or right hand to play with) is stored in the message's channel according to the following table.
These are zero-based (despite most MIDI libraries using ones-based counting for channels).
Channel 0 means "we don't know who or what this note belongs to, but light something up anyway". (This could be White as color)
Channel 1-5 is left hand fingers, thumb through pinky. (Green Color)
Channel 6-10 are right hand fingers, thumb through pinky. (Blue Color)
Channel 11 means "left hand, unknown finger". (Green Color)
Channel 12 means "right hand, unknown finger". (Blue Color)

Right now I could not find an easy way with the library to:

  • Read the MIDI channel message
  • Differentiate that if the note is received on channel 0, it lights up a White LED
  • If the note is received on Channel 1-5,11. the LEDS for this light up in Green
  • If the note is received on Channel 6-10,12. the LEDS for this light up in Blue

If an implementation like this could be added. This would open the doors for a huge community that would love this kind of feature without the hassle of running massive scripts on an RPI, using dodgy USB to midi converters or MIDI over bluetooth. A simple Teensy 3.2 would be sufficient to keep everything compact and powerful :-).

Describe alternatives you've considered
Alternatively if there is an option to easily make the selection of chosing a predefined LED color for each channel a note can be received on and being able to read the data from all channels. This would implementing/customizing LED colors etc for this very easy to realize.

Additional context
I have attempted to run through the code/information at hand, but was not able to figure out if what I have described is allready possibly and that I am just overlooking some feature.

Thank you in advance for taking this feature request into consideration.

@Veroledez
Copy link

Hola, la biblioteca trae en ejemplo para leds ws2812, asi como noteled para leds de un solo color. La compatibilidad con synthesia ya esta, solo tienes que buscar en la página o foros de synthesia en que canales envia y en base a eso definir el color a mostrar

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants