Good question. I am also exclusively using chromatic tuning with lights on roots. (Edit: at least on Alpha, on Pico I sometimes used diatonic to trade accents for range)
That said, a scaler and led module sounds like a good idea!
I like the idea with the config file from which scales or light patterns can then be selected in the UI.
Perhaps one could use cent instead of semitones, so one could also experiment with non-western tunings?
So for scales it could look like this
scales: chromatic: 0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100 major: 0, 200, 400, 500, 700, 900, 1000 minor: 0, 200, 300, 500, 700, 800, 1000
For the led-module one could either define colors per scale degree. Which would mean one would need different patterns for e.g. 7 tone scales (like diatonic) or 12 tone scales (like chromatic) to color a “fifth”:
light patterns: root-only: 1:green diatonic-root-and-fifth: 1:green, 5:blue chromatic-root-and-fifth: 1:green, 8:blue
Alternatively a certain cent delta or even a range of cent deltas could be defined to have a certain color.
light patterns: root-only: 0-0:green root-and-fifth: 0-0:green, 700-700:blue
This is assuming that the UI for both scaler and leds would additionally allow to define a root note (midi note number plus perhaps also a “tuning” cent value) - and the scale degrees or cent deltas in the patterns are relative to that.
Edit: The reverse mapping could in these cases be derived from the same specification. (Would need to revert the physical to musical mapping also though, so then leds would have to be implemented in the scaler again as long as no keygroups expose that mapping(?))
Or just with physical key positions as in your proposal. Colors wouldn’t follow transposition or scale changes etc. then but one can paint nice ascii art christmas trees that translate 1:1 into illuminated key trees
Would be all I would need personally.
horizonal-3-c1-root-fifth: r - - - - - - - - - - g - - - - - - - - r - - - -
Edit: What is the input to the scaler or led module? Key numbers? Was thinking about where e.g. the functionality of a fingerer module could be implemented later on (which I was using for the Pico). I guess this shouldn’t go into the scaler but could be a separate module that is used together with/indead of the scaler?