Page 1 of 2
Posted: 09-08-18 5:34 am
by Montelion2004
Is there a way to do something like this in Synthesia? ... cucinotta/
It's like the PianoMaestro.
I tried it, but Synthesia is way better for learning piano than MuseScore.
Any ideas?

Posted: 09-08-18 6:28 am
by Nicholas
The "Finger-based channel" key light mode (under Settings --> [your virtual MIDI port] --> Key Lights) is designed specifically to support this kind of thing. It'll take a little bit of adaptation of their Arduino code, but all of the upcoming-note information is nicely exposed using that setting.

Posted: 09-08-18 7:19 am
by Montelion2004
Arduino doesn't show up as a MIDI instrument!
What can I do? :?:

Posted: 09-10-18 3:01 am
by Nicholas
You'll probably need some app that pretends to be a virtual MIDI device and can write to the Arduino's serial port. Or you could update the Arduino's boot loader to behave like a physical USB-MIDI device. (The Arduino-compatible Teensy boards have this built in and available just by changing a drop-down menu option. I know this because I just used one to do something rather similar.) :D

In any event, some programming will be involved somewhere -- either on the Arduino or computer side -- to get this up and running. Synthesia isn't compatible with that MuseScore feature out of the box.

Posted: 09-10-18 6:27 am
by Montelion2004
Ok. Thanks!

Posted: 10-22-18 1:42 pm
by GeorgeProfenza
Nicholas' suggestion is great: Teensy is pretty easy to do MIDI with.

Additionally, if you have a Leonardo / Yun or another Atmega 32u4 based micro-controller you can use

For Uno you might be able to get away with Hairless MIDI and their MIDI/Serial support software:

Might be able to get away on an Uno with LUFA too, but it's not as straight forward as the previously mentioned options: (MIT license)

Posted: 10-22-18 3:32 pm
by Montelion2004
Thanks! I don't know why but I couldn't install the MIDI bootloader, and I couldn't find any alternative.

Posted: 10-09-19 11:15 pm
by Astinsa
Has anything come of it?

Posted: 10-12-19 8:09 am
by Montelion2004
Nope. I gave up one year ago, and never tried again. Maybe one day I'll be able to finish this project...
Sadly I'm a procrastinator...

Posted: 04-19-20 1:45 pm
by thiagolr
I'm working on it, but I'm still waiting for some parts that I bought on ebay! =)

I will make a post here about the progress later!

Posted: 04-19-20 2:08 pm
by Montelion2004
That's great! :D

Posted: 05-12-20 1:04 am
by lenz
Hello. I made an implementation of the Arduino RGB Strip for an application on android. But I need a little help to finish the project to the end, I was engaged in the analysis of the protocol and did not fully understand how the program indicates the duration of pressing the keys?
P.S. Sory for my bad English.

Posted: 06-04-20 5:00 am
by Nicholas
Sorry for the wait on this.

In MIDI the duration isn't usually specified. Instead of a single event with a start/end time, MIDI notes are sent in two separate events: the "Note On" event when the note (or key light in this case) should begin. Then a "Note Off" event when it should end.

Does that help?

Posted: 06-09-20 12:32 pm
by thiagolr

Would it be possible to have some extra information from Synthesia for RGB lights?

- which color is selected for each hand/channel (maybe using a custom SysEx message?)
- different led light channels for each hand/channel


Posted: 06-11-20 5:36 am
by Nicholas
Hmm, this might get a little tricky because you can technically use all the colors on each hand. Each track lets you choose per-hand colors independently. Combined with the hand splitting tool (or just a song with lots of tracks), and you can get some arbitrary combinations.

In the "Finger-Based Channel" mode, right now the Note On messages don't use the 7 bits of the velocity parameter for anything particularly useful. So we've got some room to add data without sending any additional messages. If we assume that Synthesia only has six colors (which has been true for 13 years but won't be forever), we could fit both the original note channel and the note's color in those 7 bits.

That scheme would break once more arbitrary colors were allowed.

Can you think of anything useful you'd use the original note channel for? If not, we could dedicate all 7 of those bits to the color, which gives a lot of room for future flexibility in the number of available colors.

Posted: 06-13-20 1:16 pm
by thiagolr
I can't think of anything useful, the idea to add the color to the velocity data is very interesting.

With 7 bits with have room for 128 predefined colors, which is more than enough for this purpose!

If you decide to do this (with the current 6 colors), I can test it here on a dev preview!

Posted: 07-20-20 1:39 pm
by Nicholas
Instead of going the predefined color route, I was thinking more along the lines of just doing a "7 bit hue" or maybe a "6 bit hue with 1 bit toggle for 'bright' or 'dark'". Either 128 or 64 hues would be more than enough for anything I'd ever expect to offer a choice between.

Heck, even 32 different hues is plenty and we could reserve the last two bits for future use. :lol: We talked about the ceiling on the number of useful colors a million years ago, over here. If you look at the image linked in qwertyo76's post that follows mine there, 36 shades is already in "holy moly" territory. :D

This solution changes the requirement for implementers from needing to store a big table of pre-selected colors into a simple description: "the H from HSV, starting at 0 and proceeding to 360° linearly as you reach the value 31."

Posted: 07-23-20 1:10 pm
by thiagolr
I agree, it is easier and no one would actually need/use all those colors!

My RGB strip is almost done, it is already functional and is working as expected! I just need to do some "beautification", organize the wires, print a 3D case for the arduino, etc.


Posted: 07-23-20 8:42 pm
by Nicholas
That looks awesome. :D

Posted: 08-26-20 6:25 pm
Have you already updated Synthesia to send color information along velocity parameter ?

My RGB strip also ready, and waiting for your update. :)