tttapa / Control-Surface

Arduino library for creating MIDI controllers and other MIDI devices.
GNU General Public License v3.0
1.24k stars 139 forks source link

Support for Synthesia "Piano Lights" MIDI messages #676

Open Bloodhoundje opened 2 years ago

Bloodhoundje commented 2 years ago

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:

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 commented 2 years ago

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